MCGS嵌入版系统对实时数据的处理主要在用户脚本程序和运行策略中完成。
MCGS嵌入版组态软件中的脚本程序是一种类似普通Basic语言的编程脚本语言(Script语言),但与Basic相比,操作更为简单,可以用来编制某些复杂的多分支流程控制程序。利用脚本程序中的三个最基本的程序控制语句(赋值语句、条件语句和循环语句),以及系统提供的各种系统函数和系统变量,可以完全满足用户的实际需要,设计出理想的控制系统。
用户脚本程序可以嵌入到MCGS嵌入版组态软件的许多部件中,包括:
l 运行策略窗口,脚本程序策略块中;
l 用户窗口,按钮控件的脚本程序中;
l 用户窗口,窗口属性中的启动脚本、循环脚本以及退出脚本中;
l 用户窗口,窗口及各个控件的事件组态中。
MCGS嵌入版脚本程序中不能自定义变量,但可以把实时数据库中的数据对象当作全局变量。象使用普通的变量一样,用数据对象的名字直接读写数据对象的值。如:
IF ADdat0 > 100 THEN
DODat1 = 0
ELSE
DODat1 = 1
ENDIF
假定ADdat0是实时数据库中的一个数值型数据对象,它与模拟量输入(AD)接口板的0号通道建立了连接;DODat1是实时数据库中的一个开关型数据对象,其与数字量输出板(DO)接口板的1号通道建立了连接。那么,上段程序的含义是:当AD板0号通道采集进来的数据(经工程转换后)大于100时,DO板的1号通道关闭(输出低电平);反之,DO板的1号通道打开(输出高电平)。
下面给出一个采用脚本程序构件实现“比例-微分-积分”(PID)控制算法的实例。
首先在循环策略块中创建一个策略行,如下图所示。在策略行的条件部分可以控制该算法是否启动,设置循环策略的定时时间为1秒,在策略行的功能部分放置脚本程序构件。
在实时数据库中定义如下数据对象:
对象名称 | 类型 | 初始值 | 注 释 |
ADdat0 | 数值型 | 0 | 和模拟量输入通道建立连接 |
DAdat0 | 数值型 | 0 | 和模拟量输出通道建立连接 |
SetV | 数值型 | 100 | 控制设定值 |
Tempdx | 数值型 | 0 | 用作存储临时数据 |
Tempdx1 | 数值型 | 0 | 用作存储临时数据 |
Tempdx2 | 数值型 | 0 | 用作存储临时数据 |
Pdat | 数值型 | 100 | PID算法中的参数P |
Idat | 数值型 | 20 | PID算法中的参数I |
Ddat | 数值型 | 20 | PID算法中的参数D |
在设备窗口中加入相应的设备构件,指定ADdat0数据对象和设备的模拟量输入通道0建立连接,指定DAdat0数据对象和设备的模拟量输出通道建立连接。
在策略行的脚本程序构件中编制如下所示的脚本程序:
Tempdx = SetV - ADdat0
Tempdx2 = Tempdx2 + Tempdx
IF Idat <> 0 THEN
DAdat0 = Pdat * (Tempdx + Tempdx2 / Idat + Ddat * (Tempdx - Tempdx1))
ELSE
DAdat0 = Pdat * (Tempdx + Ddat * (Tempdx - Tempdx1))
END IF
Tempdx1 = Tempdx
应用系统运行时,每隔一秒钟,执行一次上面的脚本程序,从而进行一次PID调节。在脚本程序中,由设定值和采集进来的实际值计算输出值,而采集和输出的操作,由系统指挥设备构件来完成。
程序设定值和PID参数值可以通过动画构件进行设置,如:在用户窗口中配置四个滑动输入器构件,分别对应于设定值、P参数、I参数和D参数,运行时,用鼠标操作滑块就可随意改变这些参数的值。