据对象建立相关性连接来完成的。在系统运行过程中,图形对象的外观和状态特征,由数据对象的实时采集值驱动,从而实现图形的动画效果。
用户窗口中的图形界面是由系统提供的图元、图符及动画构件等图形对象搭制而成的。动画构件是作为一个独立的整体供选用的,每一个动画构件都具有特定的动画功能,一般说来,动画构件用来完成图元和图符对象所不能完成或难以完成的、比较复杂的动画功能,而图元和图符对象可以作为基本图形元素,便于用户自由组态配置,来完成动画构件中所没有的动画功能。
定义动画连接,实际上是将用户窗口内创建的图形对象与实时数据库中定义的数据对象建立对应连接关系,通过对图形对象在不同的数值区间内设置不同的状态属性(如颜色、大小、位置移动、可见度、闪烁效果等),用数据对象的值的变化来驱动图形对象的状态改变,使系统在运行过程中,产生形象逼真的动画效果,因此,动画连接过程就归结为对图形对象的状态属性设置的过程。
在MCGS中,每个图元、图符对象都可以实现11种动画连接方式。利用这些图元、图符对象来制作实际工程所需的图形对象,然后再建立起与数据对象的对应关系,定义图形对象的一种或多种动画连接方式,实现特定的动画功能。这11种连接方式如图5-8:
(1)填充颜色连接 (2)边线颜色连接 (3)字符颜色连接 (4)水平移动连接 (5)垂直移动连接 (6)大小变化连接 (7)显示输出连接 (8)按钮输入连接 (9)按钮动作连接 (10)可见度连接 (11)闪烁效果连接
图5-8 组态属性设置值
为了简化用户程序设计工作量, MCGS将工程控制与实时监测作业中常用的物理器件,如按钮、操作杆、显示仪表和曲线表盘等,制成独立的图形存储于图库中,供用户调用,这些能实现不同动画功能的图形称为动画构件。
在组态时,只需要建立动画构件与实时数据库中数据对象的对应关系,就能完成动画构件的连接,如对实时曲线构件,需要指明该构件运行时记录哪个数据对象的变化曲线;对报警显示构件,需要指明该构件运行时记录哪个数据对象的报警信息。
本课题中需要制作的动画效果的部分包括:
37
(1)车库托盘、车的水平移动,如图5-9所示: (2)车库托盘、车的垂直移动,如图5-10所示: (3)车的可见度,如图5-11所示:
(4)按钮、指示灯的动画连接,如图5-12所示:
图5-9水平动画连接
图5-10 垂直动画连接 图5-11 车可见度动画连接
38
图5-12按钮、指示灯动画连接
5.7控制系统控制流程的研究
5.7.1脚本程序简介
脚本程序是组态软件MCGS中的一种内置编辑语言引擎,能对特定的流程控制程序和操作处理程序提供方便的途径。当某些控制和计算任务通过常规组态方法难以实现时,通常使用脚本语言,能够增强整个系统的灵活性,解决其常规组态方法难以解决的问题。它被封装在一个功能构件里(称为脚本程序功能构件),在后台由独立的线程来运行和处理,可以避免因单个脚本程序错误而导致整个系统的瘫痪。
在MCGS中,脚本语言是一种语法上类似于Basic的编程语言。可以应用在运行策略中,把整个脚本程序作为一个策略功能块执行,也可以在菜单组态中作为菜单的一个辅助功能运行,更常见的用法是应用在动画界面的事件中。MCGS引入的事件驱动机制,与VB或VC中的事件驱动机制类似,比如:对用户窗口,有装载、卸载事件;对窗口中的控件,有鼠标单击事件,键盘按键事件等等。这些事件发生时,就会触发一个脚本程序,执行脚本程序中的操作。但是它较VB或VC在概念和使用上更简单直观,普通用户都能正确、快速地掌握和使用。脚本程序的引入,可简化组态过程,大大提高工作效率,优化控制过程。
5.7.2脚本程序基本语句
由于MCGS脚本程序是为了实现多分支流程的控制及操作处理,因此只包括了几种最简单的语句:赋值语句、条件语句、退出语句和注释语句。所有的脚本程序都可由这四种语句组成,当需要在一个程序行中包含多条语句时,各条语句之间须用“:”分开,程序行也可以是没有任何语句的空行。大多数情况下,一个程序行只包含一条语句,赋值程序行中根据需要可在一行上放置多条语句。 (1)赋值语句
39
赋值语句的形式为:数据对象二表达式。它具体的含义是:把“二”右边表达式的运算值赋给左边的数据对象。
赋值号左边必须是能够读写的数据对象,如:开关型数据、数值型数据、事件型数据以及能进行写操作的内部数据对象。而组对象、事件型数据、只读的内部数据对象、系统内部函数以及常量,均不能出现在赋值号的左边,因为不能对这些对象进行写操作。
赋值号的右边为一表达式,表达式的类型必须与左边数据对象值的类型相符合,否则系统会提示“赋值语句类型不匹配”的错误信息。 (2)条件语句
条件语句有如下三种形式:
IF【表达式】THEN【赋值语句或退出语句] IF [表达式] THEN 【语句】 ENDIF
IF [表达式1 THEN 【语句】 ELSE ENDIF
条件语句中的四个关键字 “IF ”、“THEN ”、 “ELSE”、“ENDIF”不分大小写。如拼写不正确,检查程序会提示出错信息。
条件语句允许多级嵌套,即条件语句中可以包含新的条件语句,MCGS脚本程序的条件语句最多可以有8级嵌套,为编制多分支流程的控制程序提供了可育旨。“IF”语句的表达式一般为逻辑表达式,也可以是值为数值型的表达式,当表达式的值为非0时,条件成立,执行“THEN”后的语句,否则,条件不成立,将不执行该条件块中包含的语句,而是执行该条件块后面的语句。值为字符型的 表达式不能作为“If”语句中的表达式。 (3)退出语句
退出语句为“Exit”用于中断脚本程序的运行,停止执行其后面的语句。一般在条件语句中使用退出语句,以便在某种条件下,停止并退出脚本程序的执行。 (4)注释语句
以单引号‘ ’,开头的语句称为注释语句,注释语句在脚本程序中只起到注释说明的作用,实际运行时,系统不对注释语句作任何处理。
5.7.3脚本语言的编辑
脚本程序编辑环境是用户书写脚本语句的地方。脚本程序编辑环境主要由脚本程序编辑框、编辑功能按钮、MCGS操作对象列表和函数列表、脚本语句和表达式4个部分构成,编辑脚本应该注意的几个方面:
40
(1)脚本程序编辑框是用于书写脚本程序和脚本注释,在编辑的过程中必须遵循MCGS规定的语法结构,否则语法检查不能通过。
(2)用户可以使用编辑功能按钮提供的文本编辑来进行基本操作。表达式语句和表达示符号除了直接手写编译外,还可以用鼠标单击要选的语句和表达式符号,在脚本编辑处光标所在的位置填上语句或表达式的标准格式。
(3) MCGS对象和函数列表以树结构的形式,列出了工程中所有的窗口、策略、设备、变量、系统支持的各种方法、属性、以及各种函数,以供用户快速的查找和使用。
脚本语言编辑环境是在策略组态窗口中创立,单击工具条中的“新增策略行”
图标,增加一策略行,如果策略组态窗口中,没有策略工具箱,单击工具条中的“工具箱”图标,弹出“策略工具箱”,如图5-13:
图5-13工具箱
单击“策略工具箱”中的“脚本程序”,将鼠标指针移到策略块图标上,单击鼠标左键,添加脚本程序构件,同样添加定时器如图5-14:
41