力控指南第五章动作脚本文档格式.docx
- 文档编号:17418079
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:24
- 大小:519.69KB
力控指南第五章动作脚本文档格式.docx
《力控指南第五章动作脚本文档格式.docx》由会员分享,可在线阅读,更多相关《力控指南第五章动作脚本文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
Show()
ELSE
Hide()
ENDIF
5、点击“保存〞,如c变量没有事先定义,则出现对话框如下:
6、点击“确认〞,进入变量定义对话框:
7、定义变量c为中间变量。
并在画面上建立一个变量输入/显示对象,在运行系统下可以设置和显示变量c的值。
8、“运行〞系统,在刚才的窗口下,c变量的初始值是0,矩形是隐藏的,设置c变量的值为100,矩形就显示了出来。
5.3应用程序动作脚本
应用程序动作脚本的作用X围为整个应用程序,可以在这种脚本中调用其他应用程序、完成数值计算等。
若要创建应用程序动作脚本,请选择“特殊功能[S]/动作/应用程序〞菜单命令。
根据执行条件应用程序动作脚本有三种:
进入程序:
在应用程序启动时执行一次。
程序运行周期执行:
在应用程序运行期间周期性的执行。
周期可以指定.
退出程序:
在应用程序退出时执行一次。
1、首先按照第二章步骤定义中间变量c。
2、然后,选择Draw的菜单“特殊功能-应用程序动作〞,打开脚本编辑器:
3、在“进入程序〞脚本区域,输入脚本:
c=0;
在“程序运行周期执行〞脚本区域,输入脚本:
IFc<
=100THEN
c=c+10;
c=0;
4、单击“确认〞。
5、在画面上建立一个变量显示文本对象,在运行系统下可以显示变量c的值。
6、在Draw中点击“运行〞按钮,进入VIEW运行系统,在刚才的画面窗口中观察c变量的变化。
该变量将从0,10,20,….一直到110,然后返回又从0开始。
5.4窗口动作脚本窗口动作脚本的作用X围为窗口。
若要创建窗口动作脚本,请选择菜单命令“特殊功能[S]/动作/窗口〞菜单项。
根据执行条件窗口动作脚本有三种:
进入窗口:
开始显示窗口时执行一次。
窗口运行时周期执行:
在窗口显示过程中以指定周期执行。
退出窗口:
在窗口关闭时执行一次。
5.5数据改变动作脚本数据改变动作脚本以变量的数值改变作为触发事件。
每当变量的数值发生变化时,脚本执行一次。
若要数据改变动作脚本,选择菜单命令“特殊功能[S]/动作/数据改变〞,出现数据改变动作脚本编辑器:
变量名:
在此项中输入变量名或变量名字段。
已定义动作:
这个下拉框中可以列出已经定义了数据改变动作的变量的列表,可以选择其中一个变量以修改脚本。
1、首先按照5.3节示例,定义C变量与其变化规律。
2、在窗口上画一个圆,如图:
3、用鼠标右键单击该图形对象,出现右键菜单。
如图:
4、选择“对象命名〞,定义该圆名称,如“round〞。
5、然后,选择Draw的菜单“特殊功能-动作-数据改变〞,打开对话框如下:
6、定义一个和变量C相应的数据改变动作,脚本如下:
#round.FColor=#round.FColor+5;
上述脚本含义:
只要变量C发生变化,就执行上述语句一次。
也就是说,对象round的填充颜色值有上述变化。
7、单击“确认〞,该C变量对应的数据改变动作已经定义完毕。
8、在Draw中,单击“运行〞,进入VIEW运行状态。
可以看到,名叫“round〞的圆形的填充颜色,随着c值的改变而改变。
5.6键动作脚本
键动作脚本以键盘按键的动作作为触发事件。
若要创建键动作脚本,选择菜单命令“特殊功能[S]/动作/键〞菜单项,出现键动作脚本编辑器:
根据执行条件键动作脚本有三种:
键按下:
在键按下瞬间执行一次。
按键期间周期执行:
在键按下期间循环执行,执行周期取决与“系统参数〞里的“动作周期〞时间参数。
键释放:
在键释放瞬间执行一次。
5.7条件动作脚本
条件动作脚本以变量或逻辑表示式的条件值为触发事件。
当条件值为真时、为真期间、为假时和为假期间执行条件动作脚本。
若要创建条件动作脚本,选择菜单命令“特殊功能[S]/定义动作/条件〞菜单项,出现条件动作脚本编辑器:
名称:
此项用于指定条件动作脚本的名称。
单击后面的“...〞按钮,会自动列出已定义的条件动作脚本的名称。
条件执行的时机有4种:
当条件为真时、为真期间、为假时和为假期间执行脚本。
对于为真期间和为假期间执行的脚本,需要指定执行的时间周期。
说明:
此项用于指定对条件动作脚本的说明。
此项内容可以不指定。
条件选择:
有2种条件,自定义条件和预定义条件。
对于自定义条件,需要在条件对话框内输入条件表达式。
如果要使用预定义条件,选择“预定义〞按钮,这时自定义条件的条件表达式的输入框自动消失,同时显示出“预定义条件〞选择按钮,单击此按钮,出现如下对话框:
预定义条件目前提供了“过程报警〞、“设备故障〞和“数据源故障〞几种类型。
选择某一种条件类型,并具体指定其他条件。
动作:
有2种动作,自定义动作和预定义动作。
对于自定义条件,需要在自定义动作对话框内输入动作脚本。
如果要使用预定义动作,单击按钮“预定义动作〞,出现如下对话框:
预定义动作包含以下几种:
记录:
选择此项后,当条件满足时,将形成事件记录。
标准报警声音:
选择此项后,当条件满足时,系统将发出标准报警声音。
系统报警窗提示:
选择此项后,当条件满足时,系统将显示报警窗口。
弹出提示框:
选择此项后,当条件满足时,系统将弹出一个提示对话框。
打开窗口:
选择此项后,当条件满足时,系统将打开窗口。
要打开的窗口可以指定。
语音提示:
选择此项后,当条件满足时,系统将播放一个语音文件。
语音文件可以指定。
打印:
选择此项后,当条件满足时,系统将把所发生的条件的描述信息输出到打印机上。
以上预定义动作可以同时选择一个或多个。
自定义动作和预定义动作可以同时指定,运行时将同时动作。
注意:
预定义动作不能在条件“为真期间〞或“为假期间〞时选择。
5.8脚本编辑器
在Draw中,各种脚本类型所用的脚本编辑器对话框的形式大体相同,我们以键动作脚本为例来说明脚本编辑器的使用。
菜单
此菜单命令用于将编辑器内的文本内容保存到文本文件中或从文件中读入文本内容。
激活此“保存到文件〔S〕〞命令,弹出对话框:
在输入项“文件名〔〕〞内输入您要保存的文件名称,单击“保存〔S〕〞按钮,编辑器内的文本内容则被保存到指定的文本文件中。
反之亦然。
此菜单中包含一组常用的编辑命令,可用于完成“剪切〞、“复制〞、“粘贴〞、“删除〞、“查找/替换〞、“全部选择〞等操作。
例如:
选择“查找〞菜单,出现“替换〞对话框:
工具按钮
:
一旦输入完脚本,请单击此按钮。
对话框将保存脚本内容然后关闭。
单击此按钮关闭对话框并取消当前输入。
单击此按钮保存脚本内容。
单击此按钮删除编辑器中的全部文本内容。
删除的内容并不保存到剪切板上,删除操作也不能撤消。
选择后进入函数选择列表框:
选择所需的函数,单击“选择〞按钮或者直接双击函数名,函数表达式自动被添加到编辑器中〔当您选择一个函数时,在说明中将自动给出这个函数的帮助信息和用法示例〕。
单击此按钮后出现窗口选择对话框:
选择一个窗口名称后,单击“确定〞按钮或双击窗口名称,窗口选择对话框关闭,在脚本中插入被选择的窗口的名称。
单击此按钮后出现变量选择对话框:
选择一个变量名称后,单击“选择〞按钮,变量选择对话框关闭,在脚本中插入被选择的变量。
单击此按钮后出现字段选择对话框:
选择一个字段后,单击“选择〞按钮或双击字段名称,字段选择对话框关闭,在脚本中插入被选择的字段。
单击这些块功能按钮在当前光标处向脚本插入标准语句块。
单击这些文本按钮在当前光标处向脚本加入以上算术运算符、逻辑运算符、注释符。
5.9动作脚本语言
动作脚本就是用动作脚本语言编写的一段程序。
动作脚本语言是力控开发系统Draw提供的一种自行约定的内嵌式程序语言。
它是一种类似BASIC和C的高级语言。
本节介绍该语言的语法与用法。
动作脚本语言支持赋值、数学运算等基本语法,也可以书写由IF-ELSE-EDIF等语句构成的带有分支结构的程序脚本。
5.9.1表达式
在脚本中所用的句法与通常的四则运算相似。
大多数的表达式可能是如下的形式:
a=32;
//表达式1
a=a+1;
//表达式2
a=(b-c)*32/d;
//表达式3
#rectangle1.fColor=8;
//表达式4
idirect=lic101.pv;
//表达式5
a=rand(10);
//表达式6
每个表达式把等号〔=〕右边表达式的值赋给左边的变量。
表达式以分号(;
)结束。
表达式中操作数必须是常量或变量。
在赋值运算符〔=〕的左边必须是单个变量名。
表达式4“#rectangle1.fColor=8;
〞以符号“#〞开头,表示其后面的有效符号为图形对象名称。
在此例中rectangle1是一个填充矩形的对象名称,fColor是它的属性字段,代表它的填充颜色。
这个表达式的运行结果是将一个名为rectagnle1的填充矩形的填充颜色置为编号为8的颜色。
在这里,我们解释一下图形对象与其属性字段的概念。
在开发系统中,包括从简单图形〔如:
线、矩形等〕到标准图形〔如:
趋势、报警记录等〕都可以视为图形对象。
每一种对象都有一些共同属性和专有属性。
比如:
所有的图形对象都存在着位置坐标属性;
而填充类型的图形对象还有边线颜色或填充颜色等属性。
在运行时,对象的属性可以通过改变其属性字段的值而动态改变。
属性字段的引用格式为“对象名.字段名〞。
当在对象动作脚本中引用对象本身属性字段时,可以用“this〞代表对象本身,即“this.字段名〞。
另外,当表达式中涉与图形对象名称时,图形对象名称必须以“#〞符号开头。
下面给出几个实例:
#Tred1.tr_euhi=100;
//Tred1是一个趋势对象的名称
#Caledar1.Day=29;
//Caledar1是一个ActiveX控件对象的名称
Tag1=#Caledar1.Year;
//Tag1是一个普通变量的名称
表达式5“indirect=lic101.pv;
〞在变量名称前面加上了符号“〞表示这个表达式不是一个赋值操作,是一个变量代换操作。
这个表达式说明,indirect是一个间接变量,经过这种变量代换后,变量indirect和lic101.pv的数值和行为即变为完全一致。
改变indirect的数值就等于改变lic101.pv的值,改变lic101.pv的数值就等于改变indirect的值,这种效果将一直保持,直到indirect变量被代换为其它变量。
表达式6“a=rand(10);
〞中“rand()〞是动作脚本语言提供的一个函数。
力控动作脚本语言提供了内容丰富的函数集,有关函数的内容可查阅参考手册。
5.9.2算术与逻辑运算
Draw提供了基本的赋值、算术运算、逻辑运算功能。
rad=300;
把数值300赋值给变量rad。
Area=3.14*rad*rad;
这是一个面积计算公式。
其结果赋值给代表面积的变量Area。
操作符
除简单的赋值、数学运算外,Draw还支持其它几种对操作数〔操作数包括变量、数字等〕操作的操作符。
单目操作符:
单目操作符是指只允许有一个操作数参与运算的操作符。
~取反
!
逻辑非
双目操作符:
双目操作符是指有两个操作数参与运算的操作符。
*乘
/除
+加
-减
=赋值
%取余
**乘方
^异或
&
按位与
|按位或
逻辑与
||逻辑或
<
小于
=小于等于
==等于
>
不等于
大于
=大于等于
操作符优先级
下面列出了操作符的优先级次序。
第一行操作符为第一级,第二行为第二级等等。
同一行的操作符具有相等的优先级。
操作符由最高优先级向最低优先级次序列出(当操作符优先级相同时运算顺序按表达式从左到右的顺序进行)。
高优先级
()
~,!
**
*,/,%
+,-
>
=,<
<
=
==,<
^
|
AD
OR
低优先级
操作符说明
以上列出的操作符参数可以是数字或变量。
在参数外加括号是可选的,而且操作符名称不区分大小写。
括号():
括号主要用于限制和调整运算次序。
a+b*c运算次序为a+(b*c)
若要先运算a+b,然后再与c相乘。
只需写成(a+b)*c即可。
按位取反(~):
每一个数值变量的值都可以写成一串二进制串。
按位取反就是将这串二进制串的每一位进行取反。
a=7;
乘方(**):
对一个数值型数据进行乘方运算。
a=3**;
a的最后结果为9
加(+),减(-),乘(*),除(/):
这些二元操作符执行基本的数学操作。
加号〔+〕也可以用于连接字符串型变量。
a=“Hello〞+“Draw!
〞;
a的内容是“HelloDraw!
〞
模除(%):
取余是用第一个操作数去除另外一个操作数所得的余数。
a=73%8a的结果为1。
按位与(&
):
参与按位与的两个量都需要是整型的。
按位与的实质是把参与“与〞操作的两个量所对应的二进制进行按位与操作。
a=3&
4a是整型量,a的结果为0
按位或(|)异或(^):
参与按位或和异或的两个量都需要是整型的。
按位或和异或的实质是把参与“或〞操作的两个量所对应的二进制进行按位或或者是异或操作。
a=3|4a是整型量,a的结果为7
a=3^2a的结果为1
数学比较操作符(<
、<
=、>
、>
=、<
、==):
数学比较操作符常常用在IFELSEEDIF等表示判断的语句中,当放在该判断语句中的条件成立时,系统将要执行条件成立时的一串语句,当条件不成立时,系统将执行与条件不成立相对应的语句。
与(&
)、或(||)、非(!
这些操作是对离散量进行操作的。
如果操作数是整型的或者是实型的,它们按照下面的格式进行转化。
实型对离散量的转化:
如果实型是0.0,转化的结果为0。
否则转化的结果为1。
整型对离散量的转化:
如果整型的值为0,转化的结果为0,否则转化的结果为1。
5.9.3程序结构
除了顺序程序结构外,脚本还具有以IF-THEN-ELSE为基础的分支程序结构和循环结构
利用IF-THEN-ELSE语句,您可以构建各种复杂脚本程序。
利用循环语句,则可以创建更为灵活的程序控制。
分支程序结构
下面是IF-THEN-ELSE的一个例子:
IFFliuid_tempture>
98THEN
Flag_Alerm=1;
Out_Message=“温度超高〞
PlaySoud(“Alert.wav〞,0);
Out_Message=“温度正常〞;
EDIF
在这个例子中,当液体温度超过98摄氏度时,报警标志位为1,系统发出声音报警。
否则系统的输出信息为“温度正常〞
每个IF表达式都需要一个ENDIF作为结束标志,即IF与ENDIF是配对使用的。
IF-THEN-ELSE表达式用于在不同条件下执行不同的指令。
下列关系操作符经常用于设置IF-THEN-ELSE表达式的条件:
=小于或等于
=大于或等于
下面举出了一些用IF-THEN-ELSE表达式编写的程序示例:
IF-THEN表达式,无ELSE子句:
98||Fliuid_tempture<
60THEN
Out_Message=“温度不正常〞;
Playsoud(alert.wav);
IF-THEN-ELSE表达式,含一个ELSE子句:
IF-THEN-ELSE表达式,有一个ELSEIF子句和一个ELSE子句:
Out_Message=“温度过高〞;
Playsoud(alert1.wav);
ELSEIFFliuid_tempture<
Out_Message=“温度过低〞;
Playsoud(alert2.wav);
循环结构
力控提供两种循环语句,WHILE循环和FOR循环,循环语句一般配合数组使用。
在变量一章,我们介绍了间接变量的数组概念,这里结合循环语句介绍一下:
在数组元素使用前,首先要对其指向的变量进行指定,然后才可以对其进行各种操作。
否则对数组元素的引用或操作将无意义。
这里是一个数组循环的使用举例:
求数值型变量A,B,C,D,E的最大值。
〔IndirVar为一间接变量〕
IndirVar[0]=&
A;
IndirVar[1]=&
B;
IndirVar[2]=&
C;
IndirVar[3]=&
D;
IndirVar[4]=&
E;
n=0;
Max=IndirVar[0];
WHILEn<
5DO
IF(IndirVar[n]>
Max)THEN
Max=IndirVar[n];
n=n+1;
ENDWHILE
WHILE循环
WHILE的语法为:
WHILE条件表达式DO
执行体
示例:
m=1;
WHILEn<
10DO
m=m*n;
n=n+1;
//n为循环控制变量
FOR循环
FOR的语法为:
FORI=E1TOE2[STEPE3]
NEXT
上述语法结构中的变量或表达式含义如下:
I为循环控制变量,必须为整型,一般应为中间变量,或窗口中间变量。
E1为I的初值表达式。
E2为I的上限。
E3为循环控制变量I的增量表达式。
FORTOSTEPNEXT为FOR循环保留字。
中括号中的STEPE3可以省略,如果没有STEP子句,增量缺省为1。
初值表达式E2,增量表达式E3在进入循环时对其求值一次,循环中不在计算。
示例1:
m=0;
FORI=0TO3
m=m+1;
在上例中,循环次数为3,I每次增量为1。
第一次循环I取值为0。
第二次循环I取值为1。
第三次循环I取值为2。
执行完后m的值为3。
示例2:
FORI=0TO10STEP2
m=m+1;
在上例中,循环次数为5,I每次增量为2。
执行完后m的值为5。
示例3:
FORI=0TOI+10STEPI+2
在上例中,I上限为10,循环增量为2。
循环次数为5,I每次增量为2。
执行完后m的值为10。
多分支结构
多分支语句用来实现多分支选择,它能够根据表达式的值来决定控制的转向,即根据表达式的值,来决定执行几组语句中的其中之一。
IF语句可以实现两路选择,而实际情况却经常需要多分支的选择。
如根据炉膛温度的不同X围〔如320~330;
330~340;
340~350;
...〕,采取不同的处理方案。
通过一条Switch语句可以清晰的对各种情况进行处理。
虽然IF语句嵌套也能实现,但是层数多,不直观,可读性差。
语法:
Switch〔E〕
[Casec-1:
[statements-1]]...
[Casec-i:
[statements-i]]...
[Casec-n:
[statements-n]]...
[Default:
[elsestatements]]
EndSwitch
E,Switch括号内的E为必有参数。
为数值表达式。
当该表达式的值与下面哪一个Case语句中的常量匹配时,就将转向执行那个Case后的语句。
c-1,...,c-n,一般为一常量,也可以是一组分界列表,形式为:
c1,c2,c3,...各分界间以逗号“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指南 第五 章动 脚本
![提示](https://static.bdocx.com/images/bang_tan.gif)