您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 组态王命令语言-精品文档
第5章用户脚本程序5.1命令语言类型5.2命令语言语法5.3命令语言执行中如何跟踪变量的值5.4在命令语言中使用自定义变量5.5实例——命令语言应用控制5.1命令语言类型命令语言都是靠事件触发执行的,如定时、数据的变化、键盘键的按下、鼠标的点击等。根据事件和功能的不同,包括应用程序命令语言、热键命令语言、事件命令语言、数据改变命令语言、自定义函数命令语言、动画连接命令语言和画面命令语言等。具有完备的词法语法查错功能和丰富的运算符、数学函数、字符串函数控件函数SQL函数和系统函数。各种命令语言通过“命令语言编辑器”编辑输入,在“组态王”运行系统中被编译执行。应用程序命令语言、热键命令语言、事件命令语言、数据改变命令语言可以称为“后台命令语言”,它们的执行不受画面打开与否的限制,只要符合条件就可以执行。另外可以使用运行系统中的菜单“特殊/开始执行后台任务”和“特殊/停止执行后台任务”来控制所有这些命令语言是否执行。而画面和动画连接命令语言的执行不受影响。也可以通过修改系统变量“$启动后台命令语言”的值来实现上述控制,该值置0时停止执行,置1时开始执行。返回下一页5.1命令语言类型1.应用程序命令语言在工程浏览器的目录显示区,选择“文件\命令语言\应用程序命令语言”,则在右边的内容显示区出现“请双击这儿进入应用程序命令语言对话框…”图标,如图5−1所示。双击图标,则弹出“应用程序命令语言”对话框,如图5−2所示。在输入命令语言时,除汉字外,其他关键字,如标点符号必须以英文状态输入。应用程序命令语言是指在组态王运行系统应用程序启动时、运行期间和程序退出时执行的命令语言程序。如果是在运行系统运行期间,该程序按照指定时间间隔定时执行。返回上一页下一页5.1命令语言类型如图5−3所示,当选择“运行时”标签时,会有输入执行周期的编辑框“每……毫秒”。输入执行周期,则组态王运行系统运行时,将按照该时间周期性的执行这段命令语言程序,无论打开画面与否。选择“启动时”标签,在该编辑器中输入命令语言程序,该段程序只在运行系统程序启动时执行一次。选择“停止时”标签,在该编辑器中输入命令语言程序,该段程序只在运行系统程序退出时执行一次。应用程序命令语言只能定义一个。返回上一页下一页5.1命令语言类型2.数据改变命令语言在工程浏览器中选择命令语言—数据改变命令语言,在浏览器右侧双击“新建……”,弹出数据改变命令语言编辑器,如图5−4所示。数据改变命令语言触发的条件为连接的变量或变量的域的值发生了变化。在命令语言编辑器“变量[.域]”编辑框中输入或通过单击“?”按钮来选择变量名称(如:原料罐液位)或变量的域(如:原料罐液位.Alarm)。这里可以连接任何类型的变量和变量的域,如离散型、整型、实型、字符串型等。当连接的变量的值发生变化时,系统会自动执行该命令语言程序。数据改变命令语言可以按照需要定义多个。需要注意是,在使用“事件命令语言”或“数据改变命令语言”过程中要注意防止死循环。例如,变量A变化引发数据改变命令语言程序中含有命令B=B+1,若用B变化再引发事件命令语言或数据改变命令语言的程序中不能再有类似A=A+1的命令。返回上一页下一页5.1命令语言类型3.事件命令语言事件命令语言是指当规定的表达式的条件成立时执行的命令语言。如某个变量等于定值,某个表达式描述的条件成立。在工程浏览器中选择命令语言—事件命令语言,在浏览器右侧双击“新建……”,弹出事件命令语言编辑器,如图5−5所示。事件命令语言有三种类型:发生时:事件条件初始成立时执行一次。存在时:事件存在时定时执行,在“每……毫秒”编辑框中输入执行周期,则当事件条件成立存在期间周期性执行命令语言,如图5−6所示。消失时:事件条件由成立变为不成立时执行一次。事件描述:指定命令语言执行的条件。备注:对该命令语言做一些说明性的文字。返回上一页下一页5.1命令语言类型4.热键命令语言“热键命令语言”链接到工程人员指定的热键上,软件运行期间,工程人员随时按下键盘上相应的热键都可以启动这段命令语言程序。热键命令语言可以指定使用权限和操作安全区。输入热键命令语言时,在工程浏览器的目录显示区,选择“文件\命令语言\热键命令语言”,双击右边的内容显示区出现“新建…”图标,弹出热键命令语言编辑器,如图5−7所示。热键定义,当Ctrl和Shift左边的复选框被选中时,表示此键有效,如图5−8所示。热键定义区的右边为键按钮选择区,用鼠标单击此按钮,则弹出如图5−9所示的对话框。返回上一页下一页5.1命令语言类型在此对话框中选择一个键,则此键被定义为热键,还可以与Ctrl和Shift形成组合键。热键命令语言可以定义安全管理,安全管理包括操作权限和安全区,两者可单独使用,也可合并使用,如图5−10所示。比如:设置操作权限为918。只有操作权限大于等于918的操作员登录后按下热键时,才会激发命令语言的执行。返回上一页下一页5.1命令语言类型5.用户自定义函数如果组态王提供的各种函数不能满足工程的特殊需要,组态王还提供用户自定义函数功能。用户可以自己定义各种类型的函数,通过这些函数能够实现工程特殊的需要。如特殊算法、模块化的公用程序等,都可通过自定义函数来实现。自定义函数是利用类似C语言来编写的一段程序,其自身不能直接被组态王触发调用,必须通过其他命令语言来调用执行。编辑自定义函数时,在工程浏览器的目录显示区,选择“文件\命令语言\自定义函数命令语言”,在右边的内容显示区出现“新建”图标,用左键双击此图标,将出现“自定义函数命令语言”对话框,如图5−11所示。具体的应用请参考组态王使用手册。返回上一页下一页5.1命令语言类型6.画面命令语言画面命令语言就是与画面显示与否有关系的命令语言程序。画面命令语言定义在画面属性中。打开一个画面,选择菜单“编辑/画面属性”,或用鼠标右键单击画面,在弹出的快捷菜单中选择“画面属性”菜单项,或按下Ctrl+W键,打开画面属性对话框,在对话框上单击“命令语言…”按钮,弹出画面命令语言编辑器,如图5−12所示。画面命令语言分为三个部分:显示时、存在时、隐含时。显示时:打开或激活画面为当前画面,或画面由隐含变为显示时执行一次。返回上一页下一页5.1命令语言类型存在时:画面在当前显示时,或画面由隐含变为显示时周期性执行,可以定义指定执行周期,在“存在时”中的“每…毫秒”编辑框中输入执行的周期时间。隐含时:画面由当前激活状态变为隐含或被关闭时执行一次。只有画面被关闭或被其他画面完全遮盖时,画面命令语言才会停止执行。只与画面相关的命令语言可以写到画面命令语言里——如画面上动画的控制等,而不必写到后台命令语言中——如应用程序命令语言等,这样可以减轻后台命令语言的压力,提高系统运行的效率。返回上一页下一页5.1命令语言类型7.动画连接命令语言对于图素,有时一般的动画连接表达式完成不了工作,而程序只需要点击一下画面上的按钮等图素才执行,如点击一个按钮,执行一连串的动作,或执行一些运算、操作等。这时可以使用动画连接命令语言。该命令语言是针对画面上的图素的动画连接的,组态王中的大多数图素都可以定义动画连接命令语言。如在画面上放置一个按钮,双击该按钮,弹出动画连接对话框,如图5−13所示。在“命令语言连接”选项中包含三个选项:按下时:当鼠标在该按钮上按下时,或与该连接相关联的热键按下时执行一次。弹起时:当鼠标在该按钮上弹起时,或与该连接相关联的热键弹起时执行一次。返回上一页下一页5.1命令语言类型按住时:当鼠标在该按钮上按住,或与该连接相关联的热键按住,没有弹起时周期性执行该段命令语言。按住时命令语言连接可以定义执行周期,在按钮后面的“毫秒”标签编辑框中输入按钮被按住时命令语言执行的周期。单击上述任何一个按钮都会弹出动画连接命令语言编辑器,如图5−14所示。其用法与其他命令语言编辑器用法相同。动画连接命令语言可以定义关联的动作热键,如图5−13所示,单击“等价键”中的“无”按钮,可以选择关联的热键,也可以选择Ctrl、Shift与之组成组合键。运行时,按下此热键,效果同在按钮上按下鼠标键相同。定义有动画连接命令语言的图素可以定义操作权限和安全区,只有符合安全条件的用户登录后,才可以操作该按钮。返回上一页5.2命令语言语法命令语言程序的语法与一般C程序的语法没有大的区别,每一程序语句的末尾应该用分号“;”结束,在使用if…else…、while()等语句时,其程序要用花括号“{}”括起来。1.运算符用运算符连接变量或常量就可以组成较简单的命令语言语句,如赋值、比较、数学运算等。命令语言中可使用的运算符以及算符优先级与连接表达式相同,运算符有以下几种。运算符的优先级:下面列出算符的运算次序,首先计算最高优先级的算符,再依次计算较低优先级的算符。同一行的算符有相同的优先级。返回下一页5.2命令语言语法返回上一页下一页5.2命令语言语法2.赋值语句赋值语句用得最多,语法如下:变量(变量的可读写域)=表达式;可以给一个变量赋值,也可以给可读写变量的域赋值。例如:自动开关=1;表示将自动开关置为开(1表示开,0表示关)颜色=2;将颜色置为黑色(如果数字2代表黑色)反应罐温度.priority=3;表示将反应罐温度的报警优先级设为3返回上一页下一页5.2命令语言语法3.IF-ELSE语句IF—ELSE语句用于按表达式的状态有条件地执行不同的程序,可以嵌套使用。语法为:IF(表达式){一条或多条语句;}ELSE{一条或多条语句;}返回上一页下一页5.2命令语言语法需要注意的是,if-else语句里如果是单条语句可省略花括弧“{}”,多条语句必须在一对花括弧“{}”中,ELSE分支可以省略。例1:if(step==3)颜色=”红色”;//上述语句表示当变量step与数字3相等时,将变量颜色置为“红色”(变量“颜色”为内存字符串变量)例2:if(出料阀==1)出料阀=0;//将离散变量“出料阀”设为0状态else出料阀=1;上述语句表示将内存离散变量“出料阀”设为相反状态。If-else里是单条语句可以省略“{}”。返回上一页下一页5.2命令语言语法例3:if(step==3){颜色=”红色”;反应罐温度.priority=1;}else{颜色=”黑色”;反应罐温度.priority=3;}上述语句表示当变量step与数字3相等时,将变量颜色置为“红色”(变量“颜色”为内存字符串变量),反应罐温度的报警优先级设为1;否则变量颜色置为“黑色”,反应罐温度的报警优先级设为3。返回上一页下一页5.2命令语言语法4.While()语句当while()括号中的表达式条件成立时,循环执行后面“{}”内的程序。语法如下:WHILE(表达式){一条或多条语句(以;结尾)}返回上一页下一页5.2命令语言语法需要注意的是,同IF语句一样,WHILE里的语句若是单条语句,可省略花括弧“{}”外,但若是多条语句必须在一对花括弧“{}”中。这条语句要慎用,否则,会造成死循环。例1:while(循环=10){ReportSetCellvalue(实时报表,循环,1,原料罐液位);循环=循环+1;}当变量“循环”的值小于等于10时,向报表第一列的1~10行添入变量“原料罐液位”的值。应该注意使whlie表达式条件满足,然后退出循环。返回上一页下一页5.2命令语言语法5.命令语言程序的注释方法命令语言程序添加注释,有利于程序的可读性,也方便程序的维护和修改。组态王的所有命令语言中都支持注释。注释的方法分为单行注释和多行注释两种。注释可以在程序的任何地方进行。单行注释在注释语句的开头加注释符“//”:例1://设置装桶速度if(游标刻度=10)//判断液位的高低装桶速度=80;多行注释是在注释语句前加“/*
本文标题:组态王命令语言-精品文档
链接地址:https://www.777doc.com/doc-4514290 .html