advantech webaccess培训- 08第八章 脚本_第1页
advantech webaccess培训- 08第八章 脚本_第2页
advantech webaccess培训- 08第八章 脚本_第3页
advantech webaccess培训- 08第八章 脚本_第4页
advantech webaccess培训- 08第八章 脚本_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Advantech WebAccess 培训教程第八章脚本2007年6月培训目标这一章节将向您介绍WebAccess 脚本功能。培训结束时您将掌握以下知识:了解什么是脚本,脚本的功能、性能等编写TCL脚本编写VB脚本 编写JAVA脚本用脚本控制动画在脚本运行时查错1.什么是脚本脚本是一种简单的编程语言,用于快速开发简单的控制流程,脚本文件也是一种可执行文件,但是与普通的exe可执行文件不同的是,它内部不是经过编译的二进制码,而是可以用记事本查看的文本,它执行时需要由脚本引擎边解释边执行,因此,脚本文件的执行速度比exe文件要低很多。为了简单,脚本不支持复杂的数据结构和运算,只能实现一些简单的逻

2、辑和运算。一个脚本的例子如下:if a=b then c=d;这段脚本的含义就是如果变量a等于变量b,则让变量c等于变量d的值。2.脚本的功能和性能脚本虽然简单,但是也可以完成大多数的工业控制所需的功能,例如条件判断,循环执行某段代码,数算,字符串运算,甚至可以操作数据库和调用其他可执行程序(*.exe)来完成更加复杂的功能。WebAccess中的脚本还可以执行WebAccess特有的指令,来完成取WebAccess点值和给WebAccess点赋值的操作。如上一节所述,因为脚本文件是由脚本引擎边解释边执行,因此运行速度上会和exe文件有较大差距,根据电脑硬件配置不同,脚本执行的速度在每秒几十行

3、到二三百行之间。因此,建议写脚本时,内容最好在100行以内。3.如何进入脚本编辑器在监控节点属性页面点击“开始绘图”链接,进入绘图页面,然后在图上点鼠标右键,在弹出菜单中选择“原文文件”命令,就会弹出“原文设定”对话框1.2.在“原文设定”对话框中,可以选择脚本类型,中间那个大的输入窗口就是编辑脚本的地方,右边列出了脚本运行关键字、可用函数、已建立的点的列表,运算符等,双击其中的条目就可以自动把 所选内容插入到脚本中3. 我们开始用TCL脚本编写空调控制脚本:在该脚本中我们使用几个本地点来控制风机运转动画 和空气流动动画4. 我们先熟悉以下在脚本中使用的WebAccess的指令:a. SETV

4、AL: 给指定点赋值语法:SETVAL TagName=Value其 中 : TagName:点名称Value:点值注意:等号两边不能有空格,因为TagName=Value是 作为一个参数传给SETVAL指令的,若其中有空格则 会被当成由空格分割的多个参数,因而导致语法错误。b. GETVAL: 取指定点的当前值语法:GETVAL TagName其中:TagName:点名称注意:该指令返回的结果是字符串格式,若在VB脚本和Java脚本 中使用,则必须进行合适的类型转换。c. %LOOPPLUS:令指定点循环累加,加到最高输出值时自动返回 最低输出值重新累加。语法:SETVAL TagName=

5、%LOOPPLUS n其 中 : TagName:点名称n:累加量d. %ROTATEPLUS: 令指定点循环累加,加到最高输出值时自动重新累加,该指令与LOOPPLUS的区别在于该指令更适合做旋转动画, 因为该指令在TagName加到最高输出值时,不一定返回最低输出值, 而是在最低输出值的基础上加上累加量未加完的部分,如:当前值 为98,最高输出值为100,最低输出值为0,累加量为5,则下次累加的结果不是0,而是3。语法:SETVAL TagName=%ROTATEPLUS n参数:同%LOOPPLUSe. %LOOPMINUS: 令指定点循环减小语法:SETVAL TagName=%LOO

6、PMINUS n参数:同%LOOPPLUSf. %ROTATEMINUS:令指定点循环减小,与%LOOPMINUS的区别同%ROTATEPLUS与%LOOPPLUS语法:SETVAL TagName=%ROTATEMINUS n参数:同%LOOPPLUSg. %PLUS:将指定点加上一个值,作用类似与SETVAL TagName=GETVAL TagName + n语法:SETVAL TagName=%PLUS n参数:同%LOOPPLUSh. %MINUS:将指定点减小一个值,作用类似与SETVAL TagName=GETVAL TagName - n语法:SETVAL TagName=%M

7、INUS n参数:同%LOOPPLUS5. 现在用脚本让风机旋转起来:和风机旋转动画对应的点是本地点“c”,风机旋转的角度对应与c的值,为了让风机转动起来,我们必须让c的值不断的累加, 并到最高量程的时候自动重新开始,我们使用如下指令: SETVAL c=%ROTATEPLUS 8其中8是自定的一个值,这个值越小,风机转动的越慢,反之越快,但这个值也不能太大,否则风机会看起来在反转。6. 现在我们用移动动画模拟空气在风道中流动,我们让表示空气流动的点Air1到Air6按照不同的速度和初始值循环累加,指令如 下:SETVAL Air1=%LOOPPLUS 0.4SETVAL Air2=%LOOP

8、PLUS 0.4SETVAL Air3=%LOOPPLUS 0.4SETVAL Air4=%LOOPPLUS 0.8SETVAL Air5=%LOOPPLUS 0.8SETVAL Air6=%LOOPPLUS 0.57. TCL脚本的内部变量:TCL脚本中可以定义脚本变量,用来暂存某个中间值,语法为: 定义变量:var a给变量赋值5:set a 5使用变量:SETVAL TagName=$a在使用变量时,要在变量前面加$符号,否则该变量名字将被 当成字符串处理,变成了:SETVAL TagName=“a”8. TCL脚本的判断语句: 格式:if then 或if then else 或if

9、then elseif then else 需要注意的地方是 if 和 之间要有一个空格,then 两边要各有一个空格,then 要和if以及后面的 写在同一行,else和elseif 两边也要各有一个空格,else也要和后面的 在同一行,若有elseif,则elseif也要和后面的then在同一行。总之,TCL脚本对空格和换行是很敏感的,若用的不对,就会导致语法错误,当您有时候怎么也找不到错误原因时,很可能 就是某处少了一个空格J9. TCL脚本DebugTCL脚本可以在运行期间捕捉错误,语法如下: catch . err把要捕捉错误的语句放在catch的内,若发生错误,则会跳出catch语

10、句,并把错误信息放到变量err中,可以用 BWSPOOL rn$err指令把错误信息输出到Bwspool.exe中,其中rn表示回车换行。10. TCL脚本的注释TCL的注释是已#开头的字符串,可以跟在语句后面,也可以 单独占一行,如:SETVAL NewAirValve_Value=%MINUS 3关闭新风阀#风机停止时#=室内湿度控制=红色部分为注释11. 我们暂时先讲这些常用的指令,其他指令的说明请参考用户文档。12. 完成的脚本:catch #BWSPOOL rn101010 rnif GETVAL GSwitch=1 then SETVAL c=%ROTATEPLUS 8SETVAL

11、 Air1=%LOOPPLUS 0.4SETVAL Air2=%LOOPPLUS 0.4SETVAL Air3=%LOOPPLUS 0.4SETVAL Air4=%LOOPPLUS 0.8SETVAL Air5=%LOOPPLUS 0.8SETVAL Air6=%LOOPPLUS 0.5#BWSPOOL rn303030rn#1为启动#=冬天室内温度控制=if GETVAL AirPump_State=1 then if GETVAL NewAirTemp_Value = GETVAL RoomTemp_Set then if GETVAL WaterValve_Value = expr 60

12、+rand()*13-6 then SETVAL WaterValve_Value=%PLUS 3if GETVAL NewAirValve_Value = expr 50+rand()*5-2 then SETVAL NewAirValve_Value=%PLUS 3if GETVAL CAirValve_Value = expr 20+rand()*5-2 then SETVAL WaterValve_Value=%MINUS 3if GETVAL NewAirValve_Value = expr 40+rand()*3-1 then SETVAL NewAirValve_Value=%M

13、INUS 3if GETVAL CAirValve_Value = expr 30+rand()*3-1 then SETVAL CAirValve_Value=%MINUS 3SETVAL NewAirTemp_Value=expr GETVAL NewAirTemp_Value-1+rand()*2-0.5SETVAL RoomTemp_Value=expr GETVAL NewAirTemp_Value+rand()*2-0.5 else SETVAL NewAirValve_Value=%MINUS 3SETVAL CAirValve_Value=%MINUS 3SETVAL Wate

14、rValve_Value=%MINUS 3SETVAL Humidifier_State=0#风机停止时关闭新风阀#风机停止时关闭回风阀#风机停止时关闭水阀if GETVAL NewAirValve_Value1 then SETVAL IsOrNotRunning=0#0为停止#=室内湿度控制=if GETVAL Humidifier_State=1 then #启动状态if GETVAL NewAirHum_Value10 then SETVAL NewAirHum_Value=expr GETVAL NewAirHum_Value-1+rand()*2-0.5if GETVAL Room

15、Hum_Value20 then SETVAL RoomHum_Value=expr GETVAL RoomHum_Value-1+rand()*2-0.5#BWSPOOL rn505050rn errBWSPOOL rn$err4.VB脚本和Java脚本 在VB脚本和Java脚本中,WebAccess指令的格式和前面提到的相同,但是这些指令的参数和返回值都是字符串格式,所以用到的时候, 要用cstring()、cInt()、cdbl()之类的函数进行转换。 VB脚本和Java脚本的语法请参考VB脚本和Java脚本的用户文档。 VB脚本的用户文档请参考:/library/default.asp?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论