脚本一、脚本程序语言要素1、数据类型开关型值为0或1数值型值在3.4E±38范围内字符型值为最多512字符组成的字符串2、变量及常量变量:脚本程序中,不能由用户自定义变量,也不能定义子程序和子函数。只能对实时数据库中的数据对象进行操作,用数据对象的名称来读写数据对象的值,而且无法对数据对象的其他属性进行操作。可以把数据对象看作是脚本程序中的全局变量,在所有的程序段共用。开关型、数值型、字符型三种数据对象分别对应于脚本程序中的三种数据类型。在脚本程序中不能对组对象和事件型数据对象进行读写操作,但可以对组对象进行处理。常量:开关型常量0或1的数字数值型常量带小数点或不带小数点的数值,如:12.45,100字符型常量双引号内的字符串,如:“OK”,“正常”系统内部变量:MCGS系统定义的内部数据对象作为系统内部变量,在脚本程序中可自由使用,在使用内部变量时,变量的前面必须加“$”符号,如$Date,内部变量的详细资料请参考《用户参考手册》的内部变量一章或在线帮助中的内部变量列表。系统内部函数:MCGS系统定义的内部函数,在脚本程序中可自由使用,在使用内部函数时,函数的前面必须加“!”符号,如!abs(),内部函数的详细资料请参考《用户参考手册》的内部函数一章或在线帮助中的内部函数列表。3、MCGS对象MCGS操作对象包括工程中的用户窗口、用户策略和设备构件,MCGS操作对象在脚本程序中不能当作变量和表达式使用,但可以当作系统内部函数的参数使用,如!Setdevice(设备0,1,””)。4、表达式由数据对象(包括设计者在实时数据库中定义的数据对象、系统内部数据对象和系统内部函数)、括号和各种运算符组成的运算式称为表达式,表达式的计算结果称为表达式的值。当表达式中包含有逻辑运算符或比较运算符时,表达式的值只可能为0(条件不成立,假)或非0(条件成立,真),这类表达式称为逻辑表达式;当表达式中只包含算术运算符,表达式的运算结果为具体的数值时,这类表达式称为算术表达式;常量或数据对象是狭义的表达式,这些单个量的值即为表达式的值。表达式值的类型即为表达式的类型,必须是开关型、数值型、字符型三种类型中的一种。表达式是构成脚本程序的最基本元素,在MCGS其他部分的组态中,也常常需要通过表达式来建立实时数据库与其他对象的连接关系,正确输入和构造表达式是MCGS的一项重要工作。5、运算符算术运算符∧乘方*乘法/除法\整除+加法—减法Mod取模运算逻辑运算符AND逻辑与NOT逻辑非OR逻辑或XOR逻辑异或比较运算符>大于>=大于等于=等于<=小于等于<小于<>不等于6、运算符优先级按照优先级从高到低的顺序,各个运算符排列如下:()最高优先级∧*,/,\,Mod+,—<,>,<=,>=,=,<>NOTAND,OR,XOR二、脚本程序基本语句由于MCGS脚本程序是为了实现某些多分支流程的控制及操作处理,因此只包括了几种最简单的语句:赋值语句、条件语句、退出语句和注释语句。所有的脚本程序都可由这四种语句组成,当需要在一个程序行中包含多条语句时,各条语句之间须用“:”分开,程序行也可以是没有任何语句的空行。大多数情况下,一个程序行只包含一条语句,赋值程序行中根据需要可在一行上放置多条语句。1、赋值语句赋值语句的形式为:数据对象=表达式。赋值语句用赋值号(“=”号)来表示,它具体的含义是:把“=”右边表达式的运算值赋给左边的数据对象。赋值号左边必须是能够读写的数据对象,如:开关型数据、数值型数据、事件型数据以及能进行写操作的内部数据对象。而组对象、事件型数据、只读的内部数据对象、系统内部函数以及常量,均不能出现在赋值号的左边,因为不能对这些对象进行写操作。赋值号的右边为一表达式,表达式的类型必须与左边数据对象值的类型相符合,否则系统会提示“赋值语句类型不匹配”的错误信息。2、条件语句条件语句有如下三种形式:If〖表达式〗Then〖赋值语句或退出语句〗If〖表达式〗Then〖语句〗EndIfIf〖表达式〗Then〖语句〗Else〖语句〗EndIf条件语句中的四个关键字“If”、“Then”、“Else”、“Endif”不分大小写。如拼写不正确,检查程序会提示出错信息。条件语句允许多级嵌套,即条件语句中可以包含新的条件语句,MCGS脚本程序的条件语句最多可以有8级嵌套,为编制多分支流程的控制程序提供了可能。“IF”语句的表达式一般为逻辑表达式,也可以是值为数值型的表达式,当表达式的值为非0时,条件成立,执行“Then”后的语句,否则,条件不成立,将不执行该条件块中包含的语句,开始执行该条件块后面的语句。值为字符型的表达式不能作为“IF”语句中的表达式。3、退出语句退出语句为“Exit”,用于中断脚本程序的运行,停止执行其后面的语句。一般在条件语句中使用退出语句,以便在某种条件下,停止并退出脚本程序的执行。4、注释语句以单引号“'”开头的语句称为注释语句,注释语句在脚本程序中只起到注释说明的作用,实际运行时,系统不对注释语句作任何处理。三、脚本程序应用场合及样例脚本程序在MCGS组态软件中有四种应用场合,分别为:在“运行策略”中的“脚本程序”构件中使用;在窗口中的“标准按钮”属性设置中的“脚本程序”中使用;在“菜单”属性设置中的“脚本程序”中使用;还可以在“用户窗口”属性设置中的“启动脚本”、“循环脚本”、“退出脚本”中使用。在初级教材中我们已经熟悉了“运行策略”中的脚本程序,在本讲中通过对“选择框”构件,定时器函数、字符串函数操作,达到对其它3种场合灵活运用MCGS组态软件中的脚本程序,简化组态过程,提高工作效率,效果图如下:1、脚本程序在“窗口”中的应用具体操作如下:选择框演示程序在MCGS组态软件开发平台上,单击“用户窗口”进入,再单击“新建窗口”按钮,生成“窗口0”,选中“窗口0”,单击“窗口属性”按钮,弹出“用户窗口属性”设置,设置完毕按“确认”按钮,退出。如图:双击“脚本程序”进入“动画组态”环境,从“工具箱”中选中“选择框”,拖放到桌面适当位置,双击“选择框”,弹出“选择框属性设置窗口”对话框,选中“选项类型”中的“其它”,按“确认”按钮退出,如下图:再从“工具箱”中选3次“标签”,放在桌面上,分别为:选择框演示程序,姓名,选择框选择输出。选择框选择输出属性设置如下图:从“工具箱”中单击“常用图符”图标,弹出“常用图符”,选中“凹槽平面”图标,放在桌面适当位置,通过“置于最前面”,“置于最后面”,“向前一层”,“向后一层”,做成立体效果,如上图效果图。在MCGS组态软件开发平台上,单击“用户窗口”选中“脚本程序”窗口,单击“窗口属性”按钮,弹出“用户窗口属性设置”对话框,设置如下图:2、脚本程序在“标准按钮”中的应用计数器操作演示计时器号:系统计时器的序号1—255,MCGS系统内嵌255个系统计时器。我们以1号计数器为例,要求用按钮启动、停止1号计数器,使1号计数器复位,给1号计数器限制最大值。函数的具体应用可以看“在线帮助”。具体操作如下:在MCGS组态软件开发平台上,单击“用户窗口”,再双击“脚本程序”,进入“动画组态”,从“工具箱”中选中5次“标签”,按效果图放置,分别为:1号计数器操作演示,1号计数器计数,1号计数器显示,1号计数器工作状态,1号计数器最大值。再从“工具箱”中选中3次“标签”,按效果图放置,作为“1号计数器计数”、“1号计数器显示”、“1号计数器工作状态显示”在运行时对应显示用,从工具箱”中选中“输入框”,针对“1号计数器最大值”运行时进行输入,属性设置分别如下:我们用按钮来控制“1号计数器”的启动、停止、复位、最大值限制。具体如下:从“工具箱”中选四次“标准按钮”,拖放到桌面适当位置,如效果图,属性设置分别如下:字符串操作演示在实际应用过程中我们经常要用到字符串操作,例如:对西门子200系列PLC中的“V数据存储器”进行处理。输入一个0一9999的某个数,先要把这个数转换为字符串,不足四位字符时,前面补“0”,再对字符串进行分解,分解后先转换为相应的ASCCI码,再用16进制表示。具体操作如下:在MCGS组态软件开发平台上,单击“用户窗口”,再双击“脚本程序”,进入“动画组态”,从“工具箱”中选中3次“标签”,按效果图放置,分别为:字符串操作演示,输入数值,字符串显示。再从“工具箱”中选中“输入框”,放在“输入数值”后面,从“工具箱”中选中“标签”,放在“字符串显示”后面,用于显示字符串。分别设置如图:从“工具箱”中选中3次“标准按钮”,分别拖放到桌面适当位置,如效果图,按钮名分别为:数值转变为字符串,字符串分解为单个字符,字符转为ASCCI码用16进制显示。属性设置分别如下:从“工具箱”中选中“标签”拖放到桌面适当位置,再用“工具条”中的“拷贝”按钮,复制7个,用于分别显示分解的字符及用ASCCI码转换后的16进制数值。可以用“编辑条”中的工具进行处理。属性设置如下,其中:字符串分解2、字符串分解3、字符串分解4属性设置只需要把“显示输出”中的“表达式”中的“字符串分解1”改为相应的“字符串分解2”、“字符串分解3”、“字符串分解4”;其中:数据显示2、数据显示3、数据显示4属性设置只需要把“显示输出”中的“表达式”中的“数据显示1”改为相应的“数据显示2”、“数据显示3”、“数据显示4”即可。3、脚本程序在“菜单”中的应用在MCGS组态软件开发平台上,单击“主控窗口”进入“菜单组态”,在“工具条”中单击“新增菜单项”,产生菜单“操作0”,双击“操作0”菜单,弹出“菜单属性设置”对话框,设置如下图,在“脚本程序”中输入如下:数值输入=689'赋初值定时器1号最大值=60'赋初值!TimerStop(1)'使1号定时器停止工作!TimerReset(1,0)'使1号定时器复位!TimerSetLimit(1,定时器1号最大值,0)'设置1号定时器的上限为60,'运行到60后重新循环运行按“F5”进入运行环境,单击“脚本程序”菜单,打开“脚本程序”窗口,单击“启动1号计数器”按钮,让1号计数器启动运行;单击“数值转变为字符串”按钮、“字符串分解为单个字符”按钮、“字符转为ASCCI码用16进制显示”按钮,则如图显示: