第五章动画连接与脚本程序北京亚控科技发展有限公司1第五章动画连接与脚本程序本章内容基本动画连接系统脚本自定义脚本概述为了使设计的画面与现场设备情况同步动起来,就要进行动画连接。动画连接主要实现监视与控制功能。所谓动画连接就是建立画面的图素与数据库变量的对应关系,使得变量数值的改变会反应到图形对象的外观的变化,这就是监视;将用户的动作与系统的行为联系起来,以便改变某些监控变量的值或执行一段动作,这就是控制。第一节基本动画连接前面一章我们在讲精灵图和图形模型的制作时已经用到了动画连接了,不同的图素动画连接也不一样。下面我们就有选择的介绍几种动画连接,在这里没有介绍到的动画连接请大家课后参考操作手册自己练习使用。水泵以及阀门的状态指示:本培训工程中有三个水泵,我们以水泵1为例,在水泵上制作一个指示灯来动态显示水泵的启停状态。我们在水泵上面画一个圆作为指示灯的图素,设置画刷属性,属性设置完成后我们设置动画连接,选择右侧连接,点击,如图5-1所示,选择“属性-画刷”图5-1动画连接第五章动画连接与脚本程序北京亚控科技发展有限公司2弹出如图5-2所示动画连接画面,选择变量类型为离散类型变量。图5-2动画连接设置点击选择变量\\local\valve_gate1。然后进行配置,条件为“true”时,选择颜色为绿色,为“false”时,选择颜色为红色。如图5-3所示。配置完成后点击“确定”完成水泵状态的颜色指示设置。同样的方式我们可以设置其他的水泵以及阀门的状态指示。注意关联的变量不要错了。图5-3动画连接设置第五章动画连接与脚本程序北京亚控科技发展有限公司3液位的报警指示:我们做一个原料罐与催化剂罐的液位的报警指示灯。我们利用闪烁与隐含的动画连接来实现。首先画一个圆作为报警灯的图素,然后选择右侧的连接,点击,选择“闪烁—画刷闪烁”,弹出动画连接配置画面,点击选择变量,如图5-4,选择变量\\local\liquid_level,然后点击变量域,选择变量的报警域Alarm,选择完成后点击OK,这样动画连接关联的变量为\\local\liquid_level1.Alarm,然后配置闪烁的速度,闪烁时画刷的颜色改变,配置完成后动画连接如图5-5所示:图5-4选择变量域图5-5画刷闪烁动画连接第五章动画连接与脚本程序北京亚控科技发展有限公司4配置完闪烁动画连接后我们再配置隐含的动画连接,选择右侧的连接,点击连接,选择“基本—可见性”,弹出动画连接对话框,然后选择关联的变量\\local\液位.Alarm。配置条件为真时显示即可。同样的方式设置催化剂罐的液位报警指示。水泵启停控制:我们做一个按钮来控制水泵的启动停止控制,例如控制水泵3,要求是:当前为启动状态时按钮颜色为“绿色”,按钮文本为“停止”,当前为停止状态时按钮颜色为“红色”,按钮文本为“启动”。选择扩展中的按钮。按钮的文本修改是“Caption”属性,按钮的颜色修改是“Background”属性。为了修改“Background”属性,我们需要先定义两个颜色的内部参数。点击画面的空白处,然后选择右侧的“内容”,然后选择“内容”下面的“属性”,点击右键,弹出“添加属性”菜单,添加一个新的属性,如图5-6所示:属性名称为“红色”,类型为“画刷”,默认的颜色选择为“红色”。点击“添加属性”同样的方法增加绿色属性。图5-6增加属性对话框颜色属性定义完成后我们在水泵3的图素旁边画一个按钮,选中按钮,然后选择右侧的“属性”,选“MemberAccess”,改为“true”,保存画面。双击“按钮”,在鼠标左键按下时的脚本编辑对话框。如图5-7所示,在脚本编辑框中编写脚本程序如下:if(\\local\water_pump==1){Button1.Caption=停止;Button1.Background=绿色;\\local\water_pump=0;}else{第五章动画连接与脚本程序北京亚控科技发展有限公司5Button1.Caption=开启;Button1.Background=红色;\\local\water_pump=1;}}图5-7鼠标左键脚本程序点击确定即可完成此脚本程序的编写。这样水泵启停控制就完成了。阀门开闭控制:我们下面也通过按钮做一个控制阀门开闭的功能。这次使用的动画连接方法与前面水泵控制的不同,这个不需要进行脚本程序的编写,直接关联变量然后进行设置即可。通过讲解也给大家提供另外一种实现方式的思路。我们在阀门3旁边做一个按钮,然后修改“Caption”属性为“控制”,完成后选择右侧的“连接”,点击增加连接,选择“值输入—按钮输入”动画连接,弹出如图5-8所示动画连接,表达式类型选择离散类型,选择变量\\local\water_pump,动作选择“触变转换”。下面介绍一下各个操作表示的意思:直接设定:当鼠标按下时将表达式中变量值设置为True;当鼠标弹起时将表达式中变量值设置为False。选择该动作时,数据发送方式中只能选择“鼠标按下时连续发送”方式。取反设定:当鼠标按下时将表达式中变量值设置为False;当鼠标弹起时将表达式中变量值设置为True。选择该动作时,数据发送方式中只能选择“鼠标按下时连续发送”方式。触变转换:当表达式中变量值为True时,则通过鼠标按下动作,将表达式中变量值设置为False;当表达式中变量值为False时,则通过鼠标按下动作,将表达式中变量值设置为True。选择该动作时,数据发送方式中只能选择“鼠标释放时”方式。置位:当鼠标按下时将表达式中变量设置为True。选择该动作时两种数据发送方式都可以选择。第五章动画连接与脚本程序北京亚控科技发展有限公司6置反:当鼠标按下时将表达式中变量设置为False。选择该动作时两种数据发送方式都可以选择。图5-8动画连接设置完成后点击确定即完成了此动画连接的设置。这样阀门开闭控制就完成了。注释文本显示:我们可以利用鼠标的触敏特效来实现当鼠标移动到一个物体上面后显示我们规定好的一串文本提示信息。我们以原料罐为例来说明实现的方式。在“对象—精灵图—Retors-General—SpecialRetors001”,选择右侧的属性窗口,将属性“EnableTooltip”设置为“True”。需要注意的是图素此属性默认值为“False”。选择右侧的连接,选择“F-Level”,输入“液位变量”;添加连接“动作—ToolTip”动画连接,弹出如图5-9所示动画连接对话框图5-9动画连接第五章动画连接与脚本程序北京亚控科技发展有限公司7我们可以在表达式编辑框中直接输入字符串变量或者通过双引号引起来的字符串内容,也可以将字符串内容与非字符串变量结合起来使用。例如我们输入:当前液位高度:+\\local\液位。则在运行系统下,当鼠标移动到原料罐上面后会显示:当前液位高度:67,如图5-10所示:图5-10运行状态显示画面切换:我们在一个工程中会有许多画面,可以通过按钮来实现各个画面的切换。我们前面定义的“监控画面”的大小为1024*700,我们新建一个切换画面,起始位置为Left:0,Top:700,Width:1024,Height:68。新建画面完成后,我们在画面上面做一个按钮,修改按钮的“Caption”属性为“监控画面”,然后选择右侧的“连接”,选择“左键按下”,弹出脚本编写对话框,在脚本编辑区输入:ShowPicture(监控画面);。这样就可以在运行环境下点击此按钮切换到“监控画面”画面了。我们在执行某些功能的时候会经常用到软件系统提供的各种函数,具体函数的意义请参考函数手册。以上介绍了部分动画连接的设置方法,关于其他没有介绍的动画连接请参考KingSCADA3.1用户手册。第二节脚本程序KingSCADA3.1除了在定义动画连接时支持连接表达式,还允许用户编写脚本程序来扩展应用程序的功能,KingSCADA3.1提供的脚本是一种在语法上类似C语言的程序,工程人员可以利用这些程序编写逻辑控制程序,从而增强应用程序的灵活性。一、脚本语法:KingSCADA3.1支持的数据类型、运算符以及控制语句。一、支持的数据类型1、布尔类型:第五章动画连接与脚本程序北京亚控科技发展有限公司8布尔常量:True,False布尔变量:布尔变量的类型符为bool,取值True和False2、整数类型整型常量:十进制整数,如123,-456,0。整型变量:有符号短整型和有符号长整型3、实数类型实型常量:十进制小数形式,如0.123、123.0、0.0。实型变量:单精度实型和双精度实型4、字符串类型字符串常量:使用双引号括起来的若干字符,如“kingview”,“script”等。字符串变量:字符串变量的类型符为String,定义形式如下:stringstr1,str2;5、引用类型定义引用变量:变量类型变量名,如:IntTaga;//定义整型引用变量使用引用变量:a=&intTag;//将引用变量a指向工程中定义的整型变量intTag。6、数组类型一维数组定义:类型说明符[常量表达式]数组名一维数组引用:数组名[下标]二、支持的运算符支持的运算符包括:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等,具体介绍请参见用户手册三、支持的脚本语句支持的脚本语句包括:赋值语句:变量(变量的可读写域)=表达式;跳转语句:Return、Break、Continue分支语句:If语句、switch语句循环语句:while语句、do-while语句、for语句二、脚本分类:KingSCADA3.1脚本从可见性上可以分成全局和局部事件脚本;全局事件脚本包括:1、应用程序脚本:指在工程启动时、关闭时或在程序运行期间周期执行的脚本程序。2、报警事件脚本:指当报警事件产生时执行的脚本程序。第五章动画连接与脚本程序北京亚控科技发展有限公司93、用户事件脚本:指当用户操作事件(包括:用户登录和用户注销)产生时执行的脚本程序。4、数据改变脚本:指链接的变量或变量域,在变量或变量域变化到超出数据字典中所定义的变化灵敏度时,被触发执行的脚本程序。5、事件脚本:指在某件事情发生时、消失时或存在期间周期执行的脚本程序。6、热键脚本:被链接到指定的热键上,工程运行期间,用户随时按下热键都可以执行这段脚本程序。7、自定义函数脚本:提供用户自定义函数,用户可以根据KingSCADA3.1的基本语法及提供的函数自己定义各种功能更强的函数,通过这些函数能够实现工程特殊的需要。8、定时脚本:指在工程运行期间,根据指定的时间,定时触发的脚本程序。局部事件脚本包括:1、画面脚本:指画面打开时、画面关闭/隐含时或画面运行时周期执行的脚本程序。2、画面图素脚本:指鼠标触敏该图素时执行的脚本程序。3、控件的事件脚本:指Windows通用控件和ActiveX控件的事件所触发的脚本程序。三、脚本应用:我们在本章主要介绍前面监控画面动态功能实现所用到的脚本程序,其他脚本程序例如报警事件脚本、用户事件脚本等我们会在以后介绍其他功能的时候来讲解。管道的流动:首先我们要确定管道的流动有那些控制点来控制。例如水泵1、阀门1控制原料罐进料管道的流动状态。当水泵1、阀门1都打开的时候管道就会流动起来。我们在前面定义数据模型时已经定义了液位与阀门、水泵的逻辑关系:液位低于报警低限值时自动开启水泵与阀门开关,高于报警高限值时停止水泵,关闭阀门。我们用事件脚本来实现水流的控制,当水泵与阀门都为true时水流开始,都为false时水流停止。我们选择事件脚本“脚本-自定义脚本-条件事件脚本”,如图5-11所示,在右侧点击“新建”新建一个事件脚本程序,写:\\local\valve_gate==1&&\\local\water_pump==1第五章动画连接与脚本程序北京亚控科技发展有限公司10课后练习:1、熟悉其他动画连接的设置,并实现如下功能:在画面上添加一个风扇,可以控制风扇的旋转。