还剩43页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第4章宏指令和脚本第4章宏指令和脚本本章要点在组态软件的监控界面中,有时需要执行一些比较复杂的功能和操作,这需要借助于宏指令或脚本来实现宏指令是以一条指令的形式来完成一个任务,该任务包含一个或多个功能或操作,这些功能和操作组合在一起组成“宏”指令在WebAc__ss中,宏指令主要用于“按钮”、功能键等中,以“按钮”来执行的宏指令,又称为按钮宏指令脚本是一种基本的计算机程序,将按照一定格式编写的程序,包括组合在其中的“宏”指令,通过计算机扫描执行,返回输出结果,实现预定的功能和操作由于脚本是一段计算机的程序,组成这一段程序的形式和内容更加灵活、多样,长短根据需要而定,因此其功能更强大
4.1宏指令宏指令通常应用于创建监控的按钮、功能键、系统点等,实现切换监控界面、打开对话框、__认可等,以及WebAc__ss提供的标准页面中__记录、趋势、点详情等操作按钮宏指令能够执行WebAc__ss许多复杂的宏指令,但是“按钮”设置菜单中宏指令的输入栏长度有限,当需要执行宏指令的长度大于“按钮”菜单中指令栏的长度时,可使用顶部绘图工具菜单的“宏指令文件”编写一个宏指令文件保存,然后在“按钮”菜单中使用调用宏指令文件的____XEC宏指令执行该宏指令文件功能键宏指令是宏指令的一个子集,能够执行计算机键盘的F1-F
10、Ctrl、Shift、Alt等功能键,系统点(%DAQ)能够通过宏指令打开,例如GOTOPOINTDTL=点名称在工业自动化控制系统的界面设计中,应用最多的是按钮宏指令,本节在建立按钮的过程中,说明按钮宏指令使用方法
4.
1.1常用按钮宏指令WebAc__ss的宏指令有一百多条,这些宏指令可以执行许多监控界面的操作功能,建立工程的监控页面时,不同的使用要求要求使用不同的宏指令按钮宏指令是在建立按钮时使用的宏指令,经常使用的按钮宏指令只有10条左右,其中赋值宏指令SETVAL是使用最多的按钮宏指令通过SETVAL宏指令,在操作按钮时对变量点进行赋值在本节中主要介绍以下常用的按钮宏指令:表4-1常用按钮宏指令表1常用按钮宏指令功能1SETVAL点名称=数值执行宏指令对关联点进行赋值/SETVAL按钮宏指令SETVAL结束标记2MCREXEC@文件名.mcr执行一条宏指令文件,该宏指令文件已经存在,如果客户端不存在,将从监控节点上下载3SCREXEC@文件名.scr执行一个脚本文件,该脚本文件已经存在,如果客户端不存在,将从监控节点上下载4AL__CK认可所有点的__5AL__CKS点开始点结束点认可指定点的__6SCRLOOP@文件名.scr循环执行一个脚本文件,该脚本文件已经存在,如果客户端不存在,将从监控节点上下载直到SCRSTOP结束循环在辅助指令中可以指定循环的频率和次数,用逗号分开例如SCRLOOP@control.scr
3.010表示对control.scr脚本文件3秒一次,循环执行10次/SCRLOOP按钮宏指令SCRLOOP结束标志SCRSTOP连续循环指令SCRLOOP停止指令,执行SCRSTOP按钮宏指令后,停止循环7SLEEP秒数延迟处理程序的时间,当执行该指令时,停止执行其他的按钮宏指令,等指定的延迟秒数达到后再启动执行其他按钮宏指令8WINEXEC路径\程序名.exe执行Windows的EXE或BAT文件,通过按钮宏指令执行一些Windows系统下文件,例如打开PLC的编程软件等9ZOOMXYSize指定屏幕上页面的放大位置和倍数(0~1),需要放大页面的位置由XY指定,左面为0,右面为1;下面为0,上面为1,中间是
0.5;Size是一个比例值,1是全屏,
0.5是2倍屏幕;
0.33是3倍屏幕10USERLOGIN用户名=__以新的用户和__登录,在监控页面上以其他的用户名和__登录,以取得其他的权限一般登录使用后,需要和USERLOGOUT配套使用,恢复原来的使用权限USERLOGOUT取消当前用户登录11GOTOVIDEO=摄象机名.vdo全屏方式打开指定的摄象机显示窗口该摄象机的显示必须首先在WebAc__ss中设定和配置12GOTOGRAPH=页面名称切换到指定的页面,便于翻页,浏览其他的页面按钮宏指令的SETVAL对关联点进行赋值,无论该点是开关量或者是数字模拟量,但是所赋的值必须在该关联点的数值范围内赋值宏指令SETVAL还可以对文本点输入一段字符或者取另外一个点的值(用“@点__ilto:用@点名称”的方式)赋值给关联点在按钮宏指令的命令栏中,如果一行宏指令栏目中还需要执行其他宏指令,需要使用/SETVAL结束前一条赋值宏指令,然后可以接其他按钮宏指令在一行中存在多条宏指令时,要用逗号(,)分开格式如下“SETVALA点=1,/SETVAL,SETVALB点=0”按钮宏指令中,由于一行中不能超过75个字符,若长度超过,可采用调用“宏指令文件”或“脚本文件”的方法赋值指令SETVAL除了赋值常数外,还可配合下面辅助指令对关联点进行各种操作表4-2辅助指令表2辅助指令功能1)SETVAL点名称=%REVERSE将关联点的数值取反赋值,对开关量点从0变1状态或者将1变0状态;对模拟量按照数值的百分比进行变换,即25%变成75%或者将75%变成25%2)SETVAL点名称=%PLUS3或SETVAL点名称=%PLUS5%或SETVAL点名称=%PLUS@点名称用于模拟量点,对关联点的数值进行加/减,加到最大值时停止加法或减到最小值时停止减法加/减的数可以固定数(例如3)、百分比(例如5%)或者取至其他点的数值(例如@点名称)3)SETVAL点名称=%MINUS3或SETVAL点名称=%MINUS5%或SETVAL点名称=%MINUS@点名称4)SETVAL点名称=%LOOPPLUS1或SETVAL点名称=%LOOPPLUS4%或SETVAL点名称=%LOOPPLUS@点名称用于模拟量点,对关联点的数值进行加/减法,加到最大值返回最小值或者减到最小值返回最大值进行循环加/减的数可以固定数(例如1)、百分比(例如4%)或者取至其他点的数值(例如@点名称)5)SETVAL点名称=%LOOPMINUS1或SETVAL点名称=%LOOPMINUS4%或SETVAL点名称=%LOOPMINUS@点名称6)SETVAL点名称=%ROTATEPLUS6或SETVAL点名称=%ROTATEPLUS2%或SETVAL点名称=%ROTATEPLUS@点名称用于模拟量点,对关联点数值进行+/-法,加到最大值返回最小值+1或减到最小值返回到最大值-1即最大值和最小值是重叠的,比如圆中0度和360度+/-的数可以固定数(例如1)、百分比(2%)或其他点的数值(@点名称)7)SETVAL点名称=%ROTATEMINUS6或SETVAL点名称=%ROTATEMINUS2%或SETVAL点名称=%ROTATEMINUS@点名常用按钮宏指令的应用以赋值宏指令SETVAL为例,如果在风扇例子中,按钮作为电动机的启动、停止控制使用时,按钮赋值宏指令SETVAL只需要对关联点进行置0或置1操作即可但是在需要对电动机进行无级调速控制时,可在控制面板上增加加速和减速按钮,加速按钮使用“SETVAL点名称=%PLUS3”,减速按钮使用“SETVAL点名称=%MINUS3”在宏指令中的“点名称”代表电动机转速的关联点,该点是一个模拟量点;“3”表示按钮每按一次,关联点增加或减少数值3模拟量点的大小和增/减的数值大小是成比例关系的宏指令“LOOPPLUS”适合于循环变化的应用,例如在显示零件在传输带上运动的动画时,一个个零件在传输带上从起点(关联点值为零)开始排列直到__点(关联点最大值),设传输带上共有25个零件,按一下按钮,关联点加4%,零件__1次,__25次后重新循环在表示旋转动画时,宏指令采用“ROTATEPLUS”或“ROTATEMINUS”,例如在风扇动画表现中,如果要求有加速和减速按钮,能够改变风扇转速,可以将风扇动画的关联点设置为赋值点,有脚本连续加减而将加速和减速按钮的关联点设置成加/减值的点名称(@点名称),当通过加速和减速按钮改变加/减数值时,连续运转的风扇每次程序扫描的加/减数值也不同,从而实现调速的动画效果只是“@点名称”数值大小和风扇的转速成反比
4.
1.2其他宏指令WebAc__ss还有许多其他宏指令,可分成以下几大类表4-3功能类宏指令表3按钮宏指令功能
一、弹出框DIALOG类13DIALOGALMGROUP__群组列表14DIALOGALMSUMONOFF__摘要高级选项(__过滤)15DIALOGDLOGTRD数据记录趋势列表16DIALOGFPLGROUP面板群组列表17DIALOGGRAPH图列表18DIALOGLOGIN用户登录对话框19DIALOGPOINTINFO点信息对话框20DIALOGPOINTGOTO点转到对话框21DIALOGRCPVALCHG=修改处方预置值22DIALOGREALTRD实时趋势列表23DIALOGRECIPE配方列表24DIALOGSELTAG=实时趋势有效点列表25DIALOGSELTAGD=数据记录点列表26DIALOGTAGVALCHG=改变数值对话框27DIALOGVIDEO全屏显示视频列表28DIALOGZOOM缩放对话框
二、打开页面GOTO类29GOTOACTIONLOG打开运行记录显示界面30GOTOALARMLOG打开__记录显示界面31GOTOALMGRAPH=打开指定点或参考点__图表32GOTOALMGROUP=打开__群组列表33GOTOALMSUM__RY打开__摘要显示界面34GOTOBLOCKDTL=打开指定点或参考点区块详情显示界面35GOTODLOGTRD=打开指定的数据记录显示界面36GOTODLOGXYP=以X-Y轴打开指定的数据记录显示界面37GOTOFPLGROUP=打开指定的面板群组显示界面38GOTOOVERVIEW=打开指定的概观显示界面39GOTOPOINTDTL=打开指定的点详情显示界面40GOTOREALTRD=打开指定的实时趋势显示界面41GOTOREALXYP=以X-Y轴打开指定的实时趋势显示界面42GOTORECIPE=打开指定的配方显示界面43GOTOtool=WebAc__ss浏览或ViewDAQ工具菜单44GOTOSTATION打开设备通讯状态显示界面45GOTOURL=http//url打开URL或Web网页46GOTOURL=daq连接到另一个监控节点47GOTOURL=daq video=连接到监控节点上的视频设备48GOTOURL=daq webctrl=连接到监控节点上的设备49GOTOURL=__ilto打开邮件服务程序50GOTOURL=vdo以IP地址在浏览器中打开该视频设备51GOTOUSRPRG打开___程序显示界面52GOTO@TAG打开指定点或参考点相关显示界面53GOTOALMGRA打开最新__点显示界面
三、关闭CLOSE____类54CLOSEALL关闭ViewDAQ内所有显示群组55CLOSECUR关闭当前显示群组56CLOSEDEP关闭当前显示窗口的附属显示群组57CLOSEDSP关闭指定显示群组58CLOSEOTH关闭其他显示群组59CLOSEURL关闭Web浏览器弹出窗口60CLOSETOP关闭当前显示
四、邮件__IL类61__ILHOST=指定__TP邮件服务器62__ILPORT=定义端口号63__ILSU__ECT=仅发送E__il的标题64__ILFROM=定义邮件发送方地址65__ILTO=定义邮件接收方地址66__ILTO_ADD=添加一个邮件发送方地址67__ILCC=定义邮件抄送方地址,以副本形式发送68__ILCC_ADD=添加一个邮件抄送方地址69__ILBCC=定义密件抄送方地址,以副本形式发送70__ILBCC_ADD=添加一个加密邮件抄送方地址71__ILBODY=输入E__il邮件内容第一行72__ILBODY_ADD=E__il添加另一行文本字符串73__ILSEND发送E__il74/__IL按钮宏指令__IL结束标记
五、DDE数据DDE____类75DDEEXECUTE发送指令串至DDEServer应用程序中/DDEEXECUTE按钮宏指令DDEEXECUTE结束标记76DDEPOKE发送数据串至DDEServer应用程序中/DDEPOKE按钮宏指令DDEPOKE结束标记77DDEREQUESTDDEServer程序中数值返回WebAc__ss/DDEREQUEST按钮宏指令DDEREQUEST结束标记
六、__数据记录SHIFTDTRD类78SHIFTDTRDLEFT左移趋势图,显示记录数据79SHIFTDTRDLEFTMOST趋势图__最左端(起始时间)8SHIFTDTRDRIGHT右移趋势图,显示记录数据81SHIFTDTRDRIGHTMOST趋势图__最左端(当前时间)
七、SQL数据库SQL____类82SQLDIRECT执行SQL数据库命令/SQLDIRECT按钮宏指令SQLDIRECT结束标记83SQLPREPARE将SQL指令堆入栈中,成为整体命令行/SQLPREPARE按钮宏指令SQLPREPARE结束标记84SQLEXECUTE执行SQLPREPARE栈中完整的命令行
八、其他85ACTLOGP打印运行记录86ALMLOGP打印__记录87DAQPOP打开堆栈的显示界面88DAQPREV切换到前一个显示界面__DSPNEW@关闭当前ViewDAQ,弹出新窗口或群组90DSPPOPUP@不关当前ViewDAQ,弹出新窗口或群组91DSPPOPUPDEP@不关当前ViewDAQ,弹出附属新窗口92HI__ACK打开前一个显示界面93HISFORW打开由HI__ACK返回的显示界面94LOGACT增加记录一条用户定义的文本/LOGACT按钮宏指令LOGACT结束标记95LOGALM__记录中增加一条用户定义的文本/LOGALM按钮宏指令LOGALM结束标记上述宏指令可用于按钮,也可以用于功能键等其他领域其他宏指令在按钮中的基本使用方法和常用的按钮宏指令相同,以上述ACTLOGP打印运行记录为例,建立按钮过程中,在按钮“按下”命令栏中选择“ACTLOGP0100”表示执行该指令时将执行从0行开始到第100行的运行记录打印在按钮命令行输入宏指令时,可从“宏指令”列表中直接选取;如果采用计算机键盘输入,除了应注意输入命令拼写的正确性,格式的正确性,包括是否有空格等,还应当注意采用大写方式的键入命令的字母,否则不能正确执行该宏指令在宏指令后接的其他辅助指令,也必须采用大写输入其他宏指令的使用方法,可参考WebAc__ss软件中的(英语)帮助文件
4.
1.3宏指令的应用宏指令的应用举例,以前一章的风扇模拟演示控制为例,从电气控制线路设计考虑,所控制的全部是开关量;从界面的模拟演示效果考虑,增加风扇旋转动画,监控的效果更精彩风扇的模拟旋转需要增加一个模拟量,该模拟量受控于风扇的开关量,即按钮将风扇打开后,该模拟量按照一定时间间隔增加,表现为风扇风叶的旋转,当加到最大值时,风页旋转一周,返回初始值按停止按钮后,该模拟量停止增加,表现为风扇风叶的停止风扇风叶的模拟演示旋转中,模拟量增加的时间间隔非常重要,时间间隔越小,风叶旋转动画的效果越好,一般小于
0.1秒就比较好;影响风叶旋转动画效果的另一个因素是每一次时间间隔中模拟量的增量,增量小速度慢,动画的连续性好;增量大速度快,动画的连续性变差,模拟量在0-100变化时,采用1-5的增量比较合适在本例中,由于没有采用脚本程序,因此必需采用其他措施实现风扇的模拟量增量的连续增加,表现连续旋转动画风扇模拟演示控制宏指令制作过程如下
1、建立工程、建立监控节点,建立点,由于是模拟演示没有外接设备,因此全部采用内部点,需要建立“常数点”中数字量点和“累算点”,其他的点根据需要建立;
2、数字量点包括“启动”、“停止”和“风扇”,状态为0/1;
3、“累算点”为“风扇rotate”;图4-2图4-2建立动画内部点本例中的“累算点”实现风叶的旋转动画,该“累算点”的“来源点”为按钮控制的“风扇”输出的开关量由于“风扇”输出开关量一般是0/1状态,而“累算点”的累算频率最小是1秒,应此动画效果比较缓慢,通过调整“累算点”的最高量程和最高输出的范围(默认为100),可改变风扇速度,本例改为60此外需要将“累算点”的界限值也改为60,否则计数到60不会返回到
04、绘图,建立动画;在绘图页面上输入“启动”、“停止”两组文字,分别制作两个按钮,按钮命令栏分别输入宏指令如图4-3图4-3按钮宏指令启动和停止“按钮“的向下宏指令,分别对“启动”点和“停止”点设置数值,两者相反;按钮的向上宏指令,对风扇输出设置数值,两者相反;指示灯采用“图例”中的图形进行“颜色”动画制作,排列后进行“初始颜色”动画;风扇采用“窗口小部件”中的图形,图4-4,输入关联点“风扇”,“确认”完成图4-4建立风扇“窗口小部件”中的风扇动画,风叶在旋转时会变色,如果不需要变色,鼠标点风扇图形的中间,在弹出“动画列表”中选第3项颜色动画,图4-5,再选择“初始颜色”保存即可图4-5修改动画属性完成按钮、指示灯和风扇的绘图和动画后,在页面内进行调整各个图形之间的位置和大小,“排列”、“对齐”完成制作,图4-6图4-6绘图、建立动画
5、下载、启动节点、启动监控
6、操作监控页面中的按钮,观察风扇的旋转运行在监控页面中操作“启动”按钮,观察风扇旋转时,发现风叶旋转比较慢,1秒钟变化一次,1分钟旋转一周,这是由于“累算点”的属性限制的,在“累算点”计算频率每秒1次的限制下,将“累算点”的最高量程和最高输出的范围该为30,同时将“累算点”的界限值也改为30,风扇的转速提高1倍,但是每次的转角增大了1倍,因此显得动画连贯性较差,转一周变化30次动画的速度和连贯性是一对矛盾,在采用“累算点”的情况下,受“累算频率”的限制,这一对矛盾无法兼顾,因此在设计中,根据页面监控的要求,在一定范围内调整要改善风叶的旋转动画效果,可采用“脚本”程序实现动画,“脚本”程序的执行,根据对“图表参数”中的“脚本____间隔”的设置(图3-13),将每次扫描“脚本”程序的时间缩短,改变执行“脚本”程序的周期,将动画关联的开关量点与旋转模拟量点的速度关系每次都进行一次更新,改善动画速度和变化连贯性的效果“脚本____间隔”设置的最小值单位为1,等效为
0.025秒但是“脚本____间隔”和脚本程序的长度有关,比较长而复杂的脚本,设置值应比较大,否则不能保证程序完整扫描、执行脚本程序命令和大多数宏指令有相同的名称,命令的作用也基本相同,但使用及格式有一些差别
4.2脚本程序脚本语言是一种比较简单的计算机程序语言,可以使用一些计算机语言进行编程这些计算机程序之所以被称为脚本,是因为脚本程序不需要进行编译,在完成编程并保存和下载了源代码后,就可以运行了脚本程序的源代码文件是开放式、简单文本格式的文件,在计算机扫描程序时,逐条执行脚本程序在脚本程序中,可以有多段程序组成,每段程序可执行一个__的操作,整段程序组成一个复合功能脚本程序执行一个操作主要使用赋值语句,通过改变某个点的值或状态达到操作的目的赋值语句主要分为无条件赋值和有条件赋值,无条件赋值在计算机每次扫描到该条程序指令时都执行一次输出;有条件赋值则不相同,在计算机扫描到该段程序指令时,先判别该指令前面的条件是否满足,条件满足执行输出,条件不满足执行不输出在计算机工作过程中,一般先扫描程序,按照程序前后顺序逐条进行读取、运算,然后输出在计算机程序结构中,有一种程序格式称为“If-Then-Else”条件语句,该程序在计算机扫描过程中,先判别程序流程需要的条件是否满足,才执行输出结果;如果不满足执行其他的输出结果或不输出例如在控制一个电灯的程序中,必须判别开关是否打开,才能使输出结果灯亮,否则灯不亮或者执行其他的操作这种“If-Then-Else”(条件-结果-或者)的程序格式,特别是“If-Then”的简单条件语句格式,在可编程控制器(PLC)编程中大量应用典型的“If-Then-Else”条件语句流程图如下图4-1“If条件”语句在按钮宏指令中的应用,体现为按钮按下即为条件,条件满足后宏指令的“Then执行”是输出按钮宏指令中没有“Else”,但由于按钮有按下和弹起两钟状态,可以执行按下、弹起两行按钮宏指令而且每一行中均可以执行多条宏指令,每条宏指令之间要用逗号分开,但一行只能容纳75个字符如果一行的按钮宏指令长度不够,在按钮的命令行中还可以执行宏指令文件或脚本文件,即执行一段简单的计算机程序在脚本程序中,“If-Then-Else”条件控制流程可以得到充分的应用,一种常用的脚本程序格式就是“If”条件→“Then”赋值→否则“Else”执行其他操作或者不进行操作脚本程序分为全局脚本和本地脚本文件两大类型,全局脚本文件在监控系统运行后在整个系统中中心,本地脚本文件仅仅在该页面打开的条件下才执行该本地脚本文件在WebAc__ss中可采用VB、J__A和TCL语言编写脚本程序,在本节中主要介绍TCL脚本语言,TCL是“工具控制语言(ToolControlLanguage)”的缩写TCL脚本语言中包括指令、关键字、运算符等组成每一条程序在脚本中也可以使用许多宏指令,除了没有括号,大多数脚本宏指令和按钮宏指令的功能是相同的
4.
2.1脚本程序的运行环境WebAc__ss的脚本程序主要在两种环境中运行
1、全局脚本全局脚本在整个监控节点中,__于任何显示页面进行运行系统的监控功能运行,就执行全局脚本,与页面的打开、关闭无关
2、本地脚本仅在指定页面打开时或被页面中的某个按钮操作时才运行本地脚本主要在客户端程序上运行,当指定页面打开时,本地脚本就会被下载至浏览器的客户端上运行,关闭该页面时,本地脚本就终止运行全局脚本主要对整个系统的__进行操作,例如控制过程中,突发的某些__进行处理,当__发生时,无论当前监控的页面和该__是否有关,都按照全局脚本的程序执行操作由于监控系统和全局相关的__主要是__、记录等__,这些功能在WebAc__ss中已经有专门的系统功能进行处理,因此除非有特殊要求,一般的监控系统中,全局脚本不一定需要本地脚本负责当前页面的__处理,由于各种控制要求不同,本地脚本的应用比较广,以前例的风扇监控界面中,需要脚本程序的主要有风页的旋转动画中模拟量在启动后变化,左边三相交流电动机的电气控制线路原理图的颜色、旋转和__动画等全局脚本和本地脚本有三种运行方式
1、登录时当全局脚本开始运行或本地脚本的页面被打开时,执行一次脚本程序,主要用于初始化设备的监控状态;
2、运行时监控系统正常运行时或本地脚本的页面打开期间,连续循环运行脚本程序,执行设备生产过程的监控;
3、退出时当全局脚本将停止运行或本地脚本的页面被关闭时,执行一次脚本程序,主要用于恢复正常的停机状态这3种类型的脚本必须根据系统的控制要求分别编写、命名,本地脚本在“设置图表参数”菜单中分别选择在相应的栏目中,执行各自不同的功能一般无特殊要求,可以不使用登录时或退出时的脚本程序,仅仅执行运行时的脚本程序,本节主要介绍运行时的脚本程序综上所述,根据脚本程序的运行环境,可以把脚本分为全局脚本和本地脚本2大类,该两类脚本还可进一步分为登录时、退出时和运行时脚本3小类
4.
2.2脚本文件的建立无论是全局脚本还是本地脚本,均可在网络绘图页面的“功能(快捷)菜单”中的“工具”→“脚本文件”或本地绘图页面的顶部“工具”→“脚本文件”或“设置图表参数”菜单选登录时、退出时和运行时(图3-13)任意一栏的“编辑”建立,图4-7图4-7建立脚本设定界面“脚本设定”界面可分为顶部、左边、右边3个区域
1、顶部区域的左边脚本文件的名称栏,可新建一个新文件名或打开一个脚本文件;
2、顶部的右面是“新的”、“保存”和“退出”3个功能键;左边区域包括上、中、下3个部分
1、上部的脚本语言选择,包括TclScript、VBScript、JScript选项;
2、中间是脚本的程序输入区域;
3、__是脚本程序编程中的“__”、“粘贴”等常用工具按键;右边区域分为上部和下部2部分,
1、上部是编写脚本程序时的功能选择区,有“运行”、“关键字”、“函数”、“I/O点”、“Daq点”、“Loc点”、“运算符”和“区域”共8个按键,
2、下部则是选择了上部功能键后对应该功能的具体内容例如在图4-7中,下部框中显示脚本程序中可使用的各种宏指令需要使用这些指令时,直接用鼠标点选建立脚步文件的步骤
1、先在顶部脚本文件栏输入新建的脚本文件名,例如“FAN”;
2、光标移入程序输入区,在右边选“运行”下面选“SETVAL”,接着在“I/O点”中选风扇,然后在程序区直接键入“=1”;完成后“保存”→“退出”;
3、在“设置图表参数”中,将“FAN”脚本文件选择在“运行时”后“确认”;
4、“另存BGR”→“下载”启动“核心程序”→“启动监控”观察风扇运行
4.
2.3全局脚本的设置全局脚本通过绘图页面中的“工具”→“脚本文件”打开的脚本编辑器进行编写,完成脚本文件编程后进行命名保存然后返回到监控节点,在上方菜单中选择“全局脚本”,在打开的菜单中进行设置和选用,图4-8图4-8监控节点上部的“全局脚本”WebAc__ss全局脚本的设置菜单共有8组(图4-8中显示了2组),每组都有对全局脚本的“描述”、“开始脚本”、“脚本运行中”和“停止脚本”共4个选项的设置根据监控工程的需要进行选用运行全局脚本的选择,在设置菜单的右面,选择系统中已有的脚本文件列表填入相应的栏目在“脚本运行中”栏目中,需要设置脚本执行间隔时间(该设置以
0.025秒为一个单位),选择全局脚本每隔多少时间进行一次扫描全局脚本的设置步骤登录WebAc__ss工程节点后,在监控节点中__上方的“全局脚本”,弹出“全局脚本”的设置页面后进行操作
1.“描述”栏内根据需要添加一些对该脚本的必要说明;
2.“开始脚本”栏内根据需要添加在脚本文件列表中选择的脚本文件;
3.“脚本文件运行中”栏内根据控制要求添加在脚本文件列表中选择的脚本文件;
4.在脚本运行中,输入一个执行脚本的时间间隔,每
0.025秒为一个单位,如10=
0.25秒、2400=60秒=1分,默认为20=
0.5秒
5.“停止脚本”栏内根据需要添加在脚本文件列表中选择的脚本文件
6.在状态栏中选择是否“允许”、“禁止”或“没使用”该组脚本文件
7.根据控制的要求,选择是否需要第2组或第3组脚本文件
8.完成脚本配置或,点上部的“提交”,完成全局脚本配置在全局脚本中本地点是无法使用的,如果需要将本地脚本文件转换为全局脚本时,必须先将使用的本地点转换为内部的常数点
4.
2.4本地脚本的设置和全局脚本不同的是,本地脚本是建立在当前监控页面基础上的控制文件,因此只有该页面打开时才能够运行本地脚本的建立和设置在绘图页面上方工具栏的“设置图表参数”中进行,图4-9图4-9本地脚本编程无论是网络或者本地绘图,建立本地脚本均可从上方工具栏的“设置图表参数”中进行,在打开的“图表参数”菜单中,本地脚本也分为“登录时”、“运行时”和“退出时”3种形式,分别在该页面打开时执行一次;打开后始终反复运行和退出时执行一次编写本地脚本程序时,先选择编那一种类型的本地脚本程序,将光标点在那一栏中,输入本地脚本的文件名,然后点该栏目的“编辑”进入本地脚本程序的“脚本设定”界面选择在“运行时”栏目中输入新建的脚本程序名,然后“编辑”进入“脚本设定”进行脚本程序的编写“运行时”的本地脚本,将按照一定的时间间隔进行扫描并执行输出脚本扫描的时间间隔在“图表参数”的底部进行设置,底部有两项设置栏目,一项是“图表____间隔”设置,另一项则是“脚本____间隔”设置“图表____”设置的是动画表现的时间,“脚本____”设置的是脚本的扫描时间这两项设置都是以
0.025秒为单位进行变化,默认值20代表
0.5秒更新一次如果脚本程序主要是为动画设计的,这两项设置最好相同,因为如果图表____短,脚本____长或者反之,动画效果都是迟钝的如果将这两个参数都调到最小,对比较短小、简单的脚本,可以达到最好的动画效果但是对比较复杂的、较长的脚本程序,由于脚本程序是不经过编译的,计算机必须边扫描、边编译,比较费时,一旦扫描时间不够,就可能会出现程序不能完整扫描的问题因此合适的____间隔设置,应通过程序调试最后确定
4.
2.5TCL脚本程序的语法WebAc__ss的TCL脚本程序作为一种计算机语言,有一定程序语法,包括在程序指令中的大、小写、括号、变量等TCL脚本指令以空格作为分隔的字符组成第一组字母表示该指令的名称,空格后的字符表示该指令其它的参数每条TCL命令可采用新增一行或者在同一行中使用分号隔开使用分号,能够允许在同一行中并存多条TCL指令在TCL脚本语言中,指令的关键字可以大写或小写,运行指令的字母必须大写TCL指令的基本表达方式运行指令参数参数参数(根据指令决定几个参数);这是一种无条件的赋值语句的形式,执行赋值、运算等操作例如setx8将X点设置为8表示两个参数之间传送数据,将数字8送到x中保存再如EXPR2000+9计算2000加9的值表示计算2000与9的和,返回结果为2009条件赋值语句的基本表达式关键字{[运行指令参数]运算符参数}……;在指令中的括号是为了将各个功能及参数分开,根据需要,该表达式可以形成几组相加WebAc__ss的TCL脚本语言中的常用符号和变量
1、@取某点的值常用于将某点的值传给另一个点@功能与GETVAL类似例如SETVALsp1=@sp2将sp2值传送到sp1执行将点sp2内存储的数值__给点sp1中保存
2、$取变量点的值用于脚本的变量运行,与@不同$只定义在脚本内部的变量
3、中括号[]在中括号中包含一个插入的运行指令,例如使用前一个运行指令返回的结果作为后一个运行指令中的参数时,需要使用到中括号例如seta2将数字2传送到asetb[expr$a*16]计算2乘16传到b在执行运行指令时,先将2赋值给a,然后执行中括号中插入的乘法命令,最后将执行运算的结果32赋值给b,得到b=
324、引号“”在引号“”中可以将多个运行指令等单元,组成一个单一参数后赋值给一个运行指令多种符号包括@、%、$、空格和中括号都能在引号“”中使用例如setx10X←10例如sety1Y←1例如setz“$x+$yis[expr$x+$y]”z←x+y并显示文本执行第1条和第2条运行指令,将数值10赋值给x;数值1赋值给y,然后执行第3条运行指令后,将一个文本字符串10+1is11值给z变量在引号中的所有单元都被认为是一个单一的字运行指令和变量在引号中能够执行但输出的是替换的结果引号本身不是运行指令,但是如果引号不完整,将使程序出错
5、大括号{}大括号{}也可将多个单元组成一个组合单元和引号相似,大括号同样可以将多个单元组成一个参数,但大括号中的参数不被立刻解释它与引号不同之处,在大括号中不执行结果的替换,将上例中的引号改为大括号后执行例如setz{$x+$yis[expr$x+$y]}仅显示z中的字符串,不执行运算执行将整个{$x+$yis[expr$x+$y]}字符赋给变量z大括号和引号的应用,当参数包含固定信息时可使用大括号例如SETVAL{FAN=%ROTATEPLUS12}点FAN每次加12循环变化执行大括号内的累加式计算,可用于风扇回转速度,变量是固定的12;再如SETVAL{FAN=%ROTATEPLUS$dx}点FAN每次加变量dx值大括号内的累加式计算值是变量点dx的值
6、反斜线\反斜线通常被用于引用特殊字符,例如,\n是引入新的一行也常被用于“关闭”包含特殊意义的$符、引号和大括号WebAc__ss的TCL脚本程序通常由5个部分组成
1.关键字WebAc__ss脚本中的关键字是脚本程序的判别条件,和脚本程序的其他部分组合成“条件赋值”中的判别条件;
2.运行是脚本程序的基本组成部分,执行一个宏指令的指定操作和WebAc__ss定义的按钮宏指令很相似;
3.运算符包含加、减、乘、除、大于、小于、等于、不等于等简单的数学运算符号以及和括号、大括号等组合符号;
4.点和区域包括各种I/O点、Daq点、Loc点和相关的I/O点区域值及最高量程、__界限、__类型等动画关联点;
5.函数包含许多高级运算函数sin、cos、round、log等组成TCL脚本程序,根据脚本程序控制的需要,由上述5个部分按照语法组成脚本程序,实现监控页面动画需要的功能脚本程序在上述5个部分中根据控制需要采用其中的部分单元,按照TCL语法结构组成脚本程序在WebAc__ss的脚本程序中,采用条件赋值语句结构进行编程,可以采用If-Then-Eles赋值语句格式在TCL脚本中,采用If-Then-Eles条件语句主要可分为2-3个单元的组成一条指令条件赋值语句If-Then-Eles组成单元
1、If条件部分包括关键字、运行(宏)指令、运算符和点组成条件部分;
2、Then赋值部分包括运行的宏指令、点、运算符和函数组成赋值部分;
3、Eles否则赋值部分包括运行的宏指令、点、运算符和函数组成有些程序可以没有Eles部分;有些程序还可以增加ElesIf作为下一个条件判别WebAc__ss脚本将这2-3个部分组合,成为一段可执行的脚本程序例如判别如果开关打开,电灯就亮,否则电灯就关的If-Then-Eles脚本程序如下例如#开灯控制以#开始的功能注释if{[GETVAL开关]==1}then{电灯=1}else{电灯=0}条件判别开关是否打开开关打开条件成立,使电灯亮否则使电灯关本段程序结束在编写脚本程序中,特别要注意字符、大小括号、空格等,不能少、不能出错,否则将无法执行这段程序,甚至影响下一段程序的运行条件语句If-Then-Else程序结构的一种常见的变化形式是If-Then形式,省略了Else,因为整个控制程序除了上一条If-Then程序,接着还有下一条If-Then程序,同样在下一个条件满足时,执行输出或停止输出,可以替代Else的作用另一种复杂的变化形式是If-Then-ElseIf的组合,在Eles中又增加了一个其他If条件判别,这些条件语句形式变化和组合,可满足不同的控制要求在脚本中,还可利用“运算符”,在条件中进行逻辑组合、判别或其他运算等,组成比较复杂的控制要求WebAc__ss的TCL脚本程序在“设置图表参数”→“脚本设定”中编辑,图4-10图4-10脚本编写
4.
2.6TCL脚本关键字WebAc__ss脚本语言的关键字是TCL程序中控制程序流向的节点,当一条或几条运行指令组成一段程序后,该段程序是否在本次扫描中执行,取决于程序关键字所制定的条件是否满足,例如在If-Then-Eles条件语句中,计算机扫描中根据If后的运行指令取得的数据与符号判别的结果,选择是执行Then后面的程序,还是执行Eles后面的程序脚本语言中的关键字,和前面介绍的宏指令一样也有许多种类型,根据控制需要选择相应的关键字和运行宏指令配合使用在编程操作中,只要双击该关键字,即可输入到脚本程序编辑器中,并且自动生成该关键字的语法格式也可以在计算机键盘上手工键入关键字,但在输入时注意字母的大小写、空格、括号等方面的格式要求在脚本程序中,括号的正确使用也是一个很重要的内容,在WebAc__ss的脚本程序中,括号的使用和一般使用大括号、中括号、小括号的使用顺序不同,在TCL脚本程序中,中括号通常用于运行指令,因此往往是用在最里面;小括号用于运算的组合,经常用于中间位置;大括号是几个单元的组合,应用于除关键字以外的其他指令、符号和点组成的段外,通常处于包含中括号、小括号的最外层在脚本程序中,括号的应用格式一般如下例如IF{[GETVALA]<=1[GETVALB]>=0}THEN{SETVALC=@X}括号的使用上述程序执行先判别A是否小于等于1,同时判别B是否大于等于0,如果两个条件同时满足,将X中的数值传送给C注意在上述脚本程序中括号的使用顺序是,大括号、小括号、中括号,即{([])}在条件语句中,各种括号,配合其他关键字break、catch、Expr、For等组成各种功能控制的脚本程序在“脚本设定”编辑器中打开的关键字界面,如图4-11图4-11关键字列表TCL脚本语言关键字列表表4-4TCL脚本语言关键字表4关键字/功能例子1Break与for、foreach或while指令搭配使用,返回一个产生中断的TCL_BREAK代码中断循环、执行下代码2Catchcatch{if{[GETVALFAN_START101]=
0.5}then{SETVAL{rotatefan101=%ROTATEPLUS12}}}检测运行脚本时错误返回值0=OK1=error3Continuecontinue使用于for、foreach或while循环指令中跳转到下一次循环4Elseif{[GETVALAMLITUDE][GETVALAMOUT]}then{SETVAL{AMLITUDE=%LOOPPLUS@tag1}}else{SETVAL{AMLITUDE=@AMPOUT}}若if为“否”时,执行else后的程序5Elseifif{[GETVALAMPL]0}then{SETVAL{AMPL=%LOOPPLUS10}}elseif{[GETVALAMPL][GETVALAMPI]}then{SETVAL{AMPL=%LOOPPLUS@tag1}}else{SETVAL{AMPL=@AMPI}}若if为“否”同时elseif为“是”时,执行elseif后的程序6ExprSETVALtag2=[expr{GETVALtag1}+{GETVALtag2}]计算表达式7Forfor{setx0}{$x10}{incrx}{SETVAL“tag2=$x”}重复执行程序段8Foreachsetx{}foreach{ij}{abcdef}{lappendx$j$i}SETVALtext1=$x将一个或多个列表中值循环赋予多个变量9For__tsetvariable255SETVALtext50=[for__t“Thenumber%disequalto0x%02X”$variable$variable]指定一个字符串格式%s字符串%d十进制整数%f实数%e以科学表示%x十六进制%c字符表4续1关键字/功能例子10Ifif{[GETVALAMPLITUDE]0}then{SETVAL{AMPLITUDE=%LOOPPLUS10}}判断条件成立后,执行程序11Setsettemp5给脚本变量赋值12StringSETVALtext1=[stringindex“SeeSpotrun.”4]操作及比较字符串13Switchswitch$x“ONE”{SETVALtext6=1}“TWO”{SETVALtext6=2}“default”{SETVALtext6=none}判断条件是否满足,若满足则执行相关语句14Procprocpower{basep}{setresult1while{$p0}{setresult[expr$result*$base]setp[expr$p-1]}return$result}SETVALtag1=[power26]SETVALanswr=[power[GETVALbasetag][GETVALpwrtag]]SETVALanswr2=[power[GETVALbtag2][GETVALptag2]]创建一个Tcl子程序15Returnprocpower{basep}{setresult1while{$p0}{setresult[expr$result*$base]setp[expr$p-1]}return$result}SETVALtag1=[power26]在程序中返回某数值16Whilesetx0while{$x10}{SETVALtagx=$xincrx}当条件符合时重复运行脚本表4续2关键字/功能例子17Scansetlist1{}lappendlist
177.
187.210catch{SETVAL____og1=[scan$list1“%f”]}catch{scan$list1“%1\$f%2\$f%3\$f”num1num2num3SETVAL____og2=$num2SETVAL____og3=$num3}分析字符串,从中选出需要的元素%s字符串%d十进制整数%f实数%e科学记数法表示的实数%x十六进制%c字符18Upvarproc__tp_begin{svar}{upvar1$varcur}建立变量连接,使数据可在不同子程序间传递在脚本语句中,关键字catch是一个辅助调试指令,在脚本编程过程中,有时候由于不小心,将脚本程序中的字母或者大小写、空格、括号等打错,都会使脚本程序不执行,特别是长的脚本程序,很难找出错误之处这时候,用catch能够方便找出错误的程序段在关键字的使用例子中,主要介绍了关键字的基本应用方法,在实际使用中,对关键字的某些条件、数值和格式有都具体的规定,可参考WebAc__ss使用手册或帮助文件
4.
2.6TCL脚本运行指令脚本运行指令,在“脚本设定”编辑界面中,按“运行”键,显示运行菜单下的所有运行宏指令如前所叙,脚本中使用的大部分宏指令和按钮宏指令相比较,除格式外,例如按钮宏指令具有括号外,其功能基本相似,可以参考按钮宏指令,图4-12图4-12运行(宏)指令列表TCL脚本运行(宏)指令列表表4-5TCL脚本运行指令表表5运行指令功能例子1AL__CK认可所有__AL__CK2AL__CKS“Tagname00”认可指定点__AL__CKS“__100”AL__CKS“@Tag00”AL__CKS“@__WB207”AL__CKS“@arraytagfirstlast”AL__CKS“@%TALMSUM407”3BWSPOOL记录脚本出错的文本BWSPOOL$err4CLOSEURLTagname关闭浏览器弹出窗口CLOSEURLtarget15DAQPOP打开堆栈顶部页面DAQPOP6DAQPREV打开前一个显示画面DAQPREV7DAQPUSH将当前页面存入堆栈DAQPUSH8DDEEXECUTE发送字符串到DDE服务器DDEEXECUTE“Server|topic!item=字符串”9DDEPOKE发送数据传送到DDE服务器setx[GETVALtext50]DDEPOKE“EX__L|Sheet1!REALDATA=$x”10DDEREQUESTDDE服务器的值返回到“点”DDEREQUEST“text70=EX__L|Sheet1!REM”11DSPNEW页名称.dsp关闭当前本地显示窗口,弹出一个新页面或显示群组DSPNEWWork.dsp12DSPPOPUP页名称.dsp不关闭当前显示窗口,弹出一个新页面或显示群组DSPPOPUPdual.dsp13DSPPOPUPDEP在主窗口中,弹出一个新的子显示窗口或显示群组DSPPOPUPDEP__al
2.dsp14DSPPOPUPTOP弹出新的子显示窗口,总在最前DSPPOPUPTOPalm.dsp15GETVALTag得到Ta__的值可用符号$、@setx[GETVALTag10]16GOTOALMGRA改变当前显示的__值17GOTODAQ改变当前页面显示值18GOTOTAG改变当前页面到包含指定点的页面19HI__ACK切换至上一次的显示页面HI__ACK20HISFORW切换至上一次执行该指令前的页面HISFORW21LOGACT在运行记录中插入指定文本LOGACT{textstring}22LOGALM在__记录中插入指定文本LOGALM{textstring}23__ILTo=接收地址发送e__il,有多种形式__ILTo=THT@Advantech.com__ilto:To=THT@Advantech.com24MCISEND将声音(W__、MIDI)类文件的MCI指令串发送给多媒体设备MCISENDopenapplause.midtypesequen__raliasmidiwaitMCISENDplaymidi25MCREXEC文件名执行宏指令并下载或更新该文件MCREXECshutdown.mcr表5续1运行指令功能例子26RCPCLOSE关闭用RCPOPEN指令打开的配方RCPCLOSE27RCPOPEN打开指定配方RCPOPENSTARTUP.RCP^AHU1^Startup128RCPDOWNLOAD下载指定配方,打开配方RCPDOWNLOADPAINT.RCP^Mixer1^SkyBLUE29RCPS__E30RCPSCALE按比例缩放配方当前值setx1[GETVALFACTOR1]RCPSCALE$x131RCPUPLOADS_F232SCANSCREEN更新当前画面I/O点SCANSCREEN33SCANTAG更新选中当前扫描I/O点SCANTAG01_DO_0334SCREXEC执行脚本并下载该文件SCREXECsour__in.scr35SCRLOOP循环执行外部脚本文件连续循环执行SCRLOOPplaywarning.scr每3秒循环执行SCRLOOPplaywarning.scr
3.00循环执行20次SCRLOOPplaywarning.scr
3.02036SCRSTOP停止SCRLOOP循环操作SCRSTOP37SENDCMD发送宏命令到其他节点38SENDPTZ发送摄象机变焦点39SENDVDO发送视频__在显示页面的视频窗口SENDVDOA1=atoplc#ip=
67.
94.
27.13port=040SETVAL设置点值(符号@、%等)SETVALSP1=@SP241SLEEP指定时间S延缓处理进程SLEEP10(延迟10秒处理后继程序)42SQLDIRECT执行一条SQL数据库的指令SQLDIRECT“USESESSION1”43SQLEXECUTE将多条SQLPREPARE指令合并成一个指令执行参考按钮宏指令44SQLPREPARE将一个较长的SQL指令语句分割为多句SQL45TONATIVE软件不同版本字符格式替换46TOUTF8BWSPOOL[TONATIVE[stringrange[TOUTF8{1234567压力值}]3end]]47USERLOGIN改变当前登录的用户USERLOGINtom=12348USERLOGOUT注消当前登录用户USERLOGOUT49USERPOP返回到上一个由USERPUSH指令使用用户堆栈USERLOGINtom=123USERPUSHSLEEP100USERPOP50USERPUSH将当前用户进入堆栈中51WINEXEC执行一个Windows程序WINEXECpath\program.exe52ZOOMxysize放大显示页面(size是1/XX)ZOOM{.
68.
9.33}(放大3倍)ZOOMreset恢复原来页面ZOOMreset
4.
2.7TCL脚本运算符在WebAc__ss脚本程序中经常要使用逻辑和数学运算,在2个变量之间通过运算符进行选定的运算类型,将结果输出TCL脚本语言的运算符按照逻辑和数学运算的功能,执行这些基本的运算操作TCL脚本语言运算符列表表4-6TCL脚本运算符表6运算符功能说明1+加加法及正数运算符都不支持字符串操作2-减减法及负数3*乘乘法4/除除法5~位运算非位运算非仅适用于整数操作6!逻辑非7%求余求余运算符对象仅限于整数8左移仅对整数操作有效9右移仅对整数操作有效,包含对符号位__10小于左数据右数据比较后产生一个布尔型值条件成立,返回1不成立,返回011大于左数据右数据12=小于等于左数据=右数据13=大于等于左数据=右数据14==等于左数据==右数据15!=不等于左数据!=右数据16位与运算点A点B仅适用于整数操作17|位或运算点A|点B(键盘:shift+\)18^位异或运算点A^点B(键盘:shift+6)19逻辑与左数据右数据仅适用于布尔型和数字型整数或浮点数20||逻辑或左数据||右数据21xy:z简式If-then-elseX值非0,执行结果为Y值,否则为Z值22$23[]中括号24{}大括号25双引号26;27\28#运算符一般处于两个运算数值或变量的之间,运算结果可赋值、输出或作为关键字的判别依据多个数值或变量与多个运算符可以组合成一个控制算式运算符菜单在“脚本设定”菜单的右上方打开,然后用鼠标在右__的列表中双击选定运算符调入左边的脚本编辑器中使用,图4-13图4-13运算符运算符也可以在左面的脚本编辑器中直接用计算机键盘输入,输入过程中注意运算符与变量之间的空格和键盘的输入格式,有些中文的符号不被WebAc__ss认可运算符的具体应用可参考各个例题
4.
2.8TCL脚本函数TCL脚本语言提供多种数学函数运算,可在脚本程序中对各个点的数值进行各种运算脚本语言函数的应用菜单通过“脚本设定”中打开,图4-14图4-14脚本函数WebAc__ss的脚本函数的运算包括整数、浮点数等多种形式TCL脚本函数列表表4-7TCL脚本函数表(部分)表7函数功能1absarg返回变量arg的绝对值,变量arg为整数或浮点数2doublearg变量arg为浮点数返回,否则将arg转换为浮点数后返回转换后的值3intarg变量arg为整数则返回,否则将arg转换为整数后返回转换后的值4rand返回一个0-1之间随机产生的浮点数5roundarg变量arg为整数返回该值,否则“四舍五入”后返回转换后的值6srandarg变量arg须为整数类型,函数在传入arg后,配置随机数的种子关于函数类型、溢出和精确度所有在计算中出现的整数类型与C语言中的long类型一致,所有的浮点数类型都与C语言中的double类型一致当字符串转换为浮点类型时,会产生指数溢出,同时TCL会产生错误在将整数转换为字符串时,上溢出的产生大多可根据本地计算机中的C语言库来判断通常浮点数的上溢和下溢由硬件设备决定必要时,系统会自动将整数、浮点数和字符串做相应的转换在进行算术运算时,数字使用默认为整数,除非运算中出现浮点数例如整数运算浮点数运算Expr5/4Returns1whileExpr5/
4.0Expr5/{[stringlength“abcd”]+
0.0}BothReturns
1.
254.
2.9TCL脚本基本应用WebAc__ss监控页面制作过程,先建立工程和监控节点,建立通讯端口和设备以及各种内、外部点,包括演示动画的中间点,然后开始绘图,建立图形的各种动画,最后点“设置图表参数”→“运行时”,键入脚本“文件名”编辑,进入“脚本设定”,开始程序设计,图4-15图4-15脚本程序设计界面根据监控系统页面设计的要求,进行脚本程序编写,根据不同的控制要求,直接用鼠标__右面的功能菜单,在下面的列表中直接选相应的命令,双击后进入左边的脚本编辑器中例如在上述启动风扇的电气控制例子中,是典型的“If-Then-Else”格式,操作步骤如下
1、选“关键字”中的“if”,双击后“if”指令及相应指令格式进入脚本编辑器中;
一、if{}then{(空行)}双击“关键字”中的“if”
2、鼠标光标移入if后的大括号{|}中;在“运行”中选“GETVAL”,双击后“GETVAL”指令及相应指令格式进入脚本编辑器中;
二、if{[GETVAL]}then{(空行)}大括号{|}中双击“运行”中的“GETVAL”
3、鼠标光标移入if{[GETVAL]|}右大括号和中括号之间,在“运算符”中选“==”符号,双击进入右大括号和中括号中间;
三、if{[GETVAL]==}then{(空行)}大括号{[GETVAL]|}中双击“运算符”中的“==”
4、在鼠标光标的当前位置,即“==”符号后,直接键入“1”,成为{[GETVAL]==1};
5、光标移入[GETVAL]的中,靠右中括号“]”,在“I/O点”中选“启动”双击进入;
四、if{[GETVAL启动]==1}then{(空行)}在{[GETVAL]|}中双击“I/O点”中的“启动”
6、将鼠标光标移到下面的空行,在“运行”中选“SETVAL”;在“I/O”中选“风扇”;直接在后面键入“=1”完成风扇启动控制的脚本程序
五、if{[GETVAL启动]==1}then{SETVAL风扇=1}在下一空行中双击“运行”中的“SETVAL”;“I/O”中选“风扇”;键入“=1”风扇的停止控制脚本程序按照上述同样的方法进行操作,只是将按钮“启动”点改为“停止”,将最后的赋值“风扇=1”改为“风扇=0”风扇的启动、停止控制程序如下
六、if{[GETVAL启动]==1}then{SETVAL风扇=1}在风扇启动脚本程序后,按照相同的方法输入风扇停止的脚本程序if{[GETVAL停止]==1}then{SETVAL风扇=0}完成风扇的脚本控制程序后,保存脚本,在“脚本设定”的__设置“图表____间隔”和“原文____间隔”,在本例中均将默认的“20”改为“1”,即以
0.025秒时间间隔执行一次脚本程序和画面动画更新,图4-16图4-16设置脚本的时间间隔在自动化生产设备的监控中,掌握好脚本的“If-Then-Else”条件语句的编程是非常重要的一般在开始脚本编程时,需要先画出控制流程,定义好各个流程之间的关系,然后再进行脚本的编程WebAc__ss脚本语句其他指令格式及应用,可参考下面10个应用的小例子例题一判断点1和点2的误差,并赋值catch{if{[exprabs[GETVALsp1]-[GETVALsp2]]=10}then{SETVALsp1=@sp2__ilto:sp1=@sp2}}#当点tag1与点tag2相差大于等于10时,将点tag2的值传递给点tag1例题二风扇得电后,模拟风叶的旋转,风叶模拟量点的数值范围0-35,时间间隔为40,1秒catch{if{[GETVAL风扇输出]=
0.5}then{SETVAL{风叶=%ROTATEPLUS2}}}#使用LOOPMINUS循环变化,模拟风页的反向转动catch{if{[GETVAL风扇反向]=
0.5}then{SETVAL{风叶=%LOOPMINUS1}}}#ROTATEPLUS模拟风页转动,该脚本与前风扇控制脚本相配,组成典型的监控程序比较上述两段风叶的旋转效果,除了旋转方向相反外,转速也不同,反向的速度慢一半,此外仔细观察后可以发现,反向转动时在零位置时有停顿现象,这是执行ROTATE和LOOP指令的差别,ROTATE的最大值和最小值是重复的,适用与旋转类的动画,而LOOP不重复例题三动态改变转轮旋转速度,speed转速变量范围设为1-10,旋转角度设定值范围为0-100if{[GETVALINC]=
0.5}then{SETVAL{speed=%PLUS1}}if{[GETVALDEC]=
0.5}then{SETVAL{speed=%MINUS1}}SETVAL{转轮=%ROTATEPLUS@speed}#INC是转速的加速按钮(0/1);DEC是减速按钮(0/1)例子中,转轮改变旋转速度通过改变speed点的值实现,当按INC按钮时,speed的值增加,但最大为10(时间间隔设置为20,
0.5秒)因此转轮旋转时的每一次执行程序的增量增加,动画的旋转速度变快;当按DEC按钮时,speed的值减小,但最小为1,因此转轮旋转时的每一次执行程序的增量减少,动画的旋转速度变慢加速INC按钮、减速DEC按钮执行的脚本语句是有条件赋值语句,而转轮转动执行的是无条件赋值语句例题四设置一个文本量点的显示值SETVAL文本量点=hello将文本hello传送到文本量点文本量点及其内部赋值的文字,可作为监控页面的工作状态指示,例如在上述风扇控制的脚本例题中,可增加一个文本量点,并根据风扇是否通电的状态对该文本量点进行“运转”或“停止”的赋值if{[GETVAL启动]==1}then{SETVAL风扇=1}if{[GETVAL停止]==1}then{SETVAL风扇=0}#原来启动、停止风扇的脚本程序if{[GETVAL风扇]==1}then{SETVAL显示=运转}else{SETVAL显示=停止}#新增加显示工作状态的脚本程序例题五加法“运算符”的使用#点1(tag1)和点2(tag2)分别给予赋值,执行加法后送到点2SETVALtag2=[expr[GETVALtag1]+[GETVALtag2]]例题六对AMPLITUDE点的值与区域值进行比较,当AMPLITUDE的当前值大于等于其最高输出值AMPLITUDE.OUTPHI时,将点tag1的值加入到点tag2中#AMPLITUDE是一个模拟量点,AMPLITUDE.OUTPHI该点的最高输出量程if{[GETVALAMPLITUDE]=[GETVALAMPLITUDE.OUTPHI]}then{SETVALtag2=[expr[GETVALtag1]+[GETVALtag2]]}例题七发送______ILhost=Advantech.com__ILport=25__ILsu__ect=@SU__ECT__ILfrom=TomHwang__ILto=info@Advantech.com__ILto_add=supportl@Advantech.com__ILcc=tcacrter@Advantech.com__IL“body_add=Tom”__ILsend#多种方式发送e__il邮件的格式例题八脚本程序扫描的奇、偶次产生脉冲输出if{[GETVAL脉冲]==1}then{SETVAL脉冲=0}else{SETVAL脉冲=1}#本次扫描中,如果脉冲等于1,则将其设置为0;反之,如果脉冲不等于1,则将其设置为1;下次扫描执行相反的操作这个程序表面很简单,和例题四的文本量显示非常相似,但由于程序是对同一个变量进行判断和输出,因此每扫描一次,改变一次状态,形成奇、偶次扫描产生的脉冲输出将该段脚本程序保存为一个Plus.scr的脚本文件,进行脚本程序扫描的检验检验可以本地脚本程序进行运行或者作为按钮宏指令程序进行运行如果Plus.scr作为运行时本地脚本文件,将时间间隔设置为10-40(
0.5-2秒),在页面上绘制一个颜色动画,启动监控后,观察颜色动画的运行效果;如果不将Plus.scr作为运行时本地脚本文件,在页面上绘制一个图形作为颜色动画并制作一个按钮执行宏指令SCREXEC@Plus.scr启动监控后,操作按钮,观察图形颜色动画的闪烁运行效果由于Plus.scr脚本程序依靠系统扫描程序的奇、偶次产生脉冲输出,因此脉冲周期受本地脚本文件设置的“脚本____间隔”影响,对一些需要响应快的其他脚本程序可能带来不良影响,因此使用时必要考虑两者关系或者在Plus.scr脉冲产生脚本程序中增加Sleep宏指令延迟执行扫描的奇、偶次执行例题九利用秒时钟执行3秒后进行播放一个声音文件,60秒后重复执行setnow[GETVAL%ATMSECOND]setlastplay[GETVAL____og1]#使用系统的秒时钟取当前值if{[expr$now-$lastplay]=3}then{SETVAL____og1=$nowMCISEND{playwarnfrom1}}#3秒后,执行播放宏指令if{$now=1}then{SETVAL____og1=$now}#当超过60秒(返回到1秒时),重新设置点____og1该脚本程序可实现反复播放一个声音文件的功能例题十显示调试脚本程序的错误信息如果需要调试yourscript.scr脚本文件,显示调试中的错误信息建一个显示错误文本类型本地点text70,长度为70个字符;再建一个与点text70相关联的文本显示动画;以宏指令SCREXEC@debug
1.scr制作一个按钮脚本命名为debug
1.scr使用宏指令SCREXEC调用脚本yourscript.scr并调试它使用catch指令捕获错误,并把产生的错误信息存入变量err中,以文本方式显示catch{SCREXECyourscript.scr}errSETVALtext70=$err#判断yourscript.scr脚本错误,并以文本显示
4.
2.10脚本程序Debug功能WebAc__ss可使用TclScript、VBScript、Jscript三种脚本语言在编辑状态下,默认这三种脚本语言都不具有Debug功能但在WebAc__ss系统内部嵌入Debug功能的宏指令和关键字,只需将该宏指令和关键字加入到脚本程序中,可对三种脚本程序实现Debug功能
1、TclScript脚本Debug编译TclScript脚本程序具有结构简单、编程方便的特点,编程后不需要编译即可运行但是不经过编译的程序,如果其中存在结构错误,将无__确执行WebAc__ss的Debug脚本编译功能能够指出TclScript脚本程序中的错误使用Debug编译TclScript程序方法如下catch{(需要编译的脚本程序)}errBWSPOOL$err#检测Tcl程序中的错误启动监控节点的核心程序,进入监控页面后,如果编译的脚本程序中存在语法结构错误,Debug将错误记录在WebAc__ss\node\Bwspool.exe中,打开Bwspool.exe文件,将各种记录的错误显示,图4-17图4-17Bwspool文件记录的错误需要说明Debug是按照扫描程序中检查到的错误记录到Bwspool.exe文件中显示的,因此只要在扫描,同一个错误会重复记录显示为了避免Debug中的重复记录显示,可将需要编译脚本程序以按钮宏指令的方式执行Debug检查的错误,是脚本程序中的语法结构错误,即使是空格、括号、大小写等都能够检测并记录显示,但是有些非语法错误是无法检测、记录和显示的例如赋值输出语句中的某些错误,脚本程序可以不执行,但是Debug中不提示和记录
1.1WebAc__ss的Debug编译也可检查任何一个I/O点或中间变量点的值正确与否并显示,Debug编译程序结构如下catch{(需要编译的脚本程序)}errBWSPOOL$errBWSPOOL[GETVALtagname]#检查点的值正确与否在检测程序的最后一条指令中的tagname是需要检查的点的名称
1.2:Debug编译还可检查、显示程序中的一个字符串,Debug编译程序结构如下catch{(需要编译的脚本程序)}errBWSPOOL$errBWSPOOL“\r\n”BWSPOOL[GETVALtagname]BWSPOOL“\r\n”BWSPOOL“Textstring”#检查字符串检测程序的最后二条指令中的“\r\n”是换行显示;最后一条指令中的Textstring是需要检查的字符串名称
1.3:如果需要Debug编译显示程序中定义的内部变量值,Debug编译程序结构如下catch{(需要编译的脚本程序)}errBWSPOOL$errBWSPOOL“\r\n”BWSPOOL$variable#编译内部变量值最后一条指令中的variable是需要检查的内部变量点WebAc__ss的TCL脚本程序的Debug功能是一种程序调试的辅助方法
2、VBScript脚本Debug编译
2.1:WebAc__ss用VBScript语言编写脚本程序后,同样可使用Debug编译检测、显示任何一个I/O点或中间变量点的值正确与否,Debug编译程序结构如下BWSPOOLGETVALTagname#检测VB程序中的点名称
2.2使用Debug编译检测、显示一个字符串的Debug编译程序结构如下BWSPOOL“Textstring”#检测VB程序中的字符串
2.3:使用Debug编译检测、显示内部定义变量值的Debug编译程序结构如下BWSPOOLvariable#检测VB程序中variable的内部变量点
3、Jscript脚本Debug编译
3.1:WebAc__ss用Jscript语言编写脚本程序后,也可使用Debug编译检测、显示任何一个I/O点或中间变量点的值正确与否,Debug编译程序结构如下BWSPOOLGETVALTagname#检测Jscript程序中的Tagname的点名称
3.2使用Debug编译检测、显示一个字符串的Debug编译程序结构如下BWSPOOL“Textstring”#检测Jscript程序中Textstring字符串名称
3.3:使用Debug编译检测、显示内部定义变量值的Debug编译程序结构如下BWSPOOLvariable#检测Jscript程序中variable的内部变量点WebAc__ss的Debug编译更多应用方法可参考软件帮助
4.3综合应用在上一章的绘图与动画的应用举例中,介绍了风扇的监控页面的绘图与动画的初步制作,本节在此基础上,进一步介绍宏指令和脚本的应用,完成风扇的监控页面的完整制作按照风扇的监控页面的设计,左边是电气控制原理图,右边是操作和监控面板,顶部是界面功能按钮及装饰图下面分别说明其设计、制作过程
4.
3.1电气控制原理图的动画脚本程序风扇的电气控制原理图本身是一张静态的图,经过动画制作成为可以进行颜色、旋转和__的动态图形,表现工作过程和线路的通电状态
1、按照上一章的动态规划和动画关联点的分配,进行主电路控制流程的设计图4-18图4-18主电路脚本控制流程在动画规划和关联点的分配中,电源总开关是手工操作的,因此不需要脚本程序去控制其他的电器根据需要,由脚本程序按照控制要求执行主电路的3路电源脚本控制流程是类似的,只要改变关联点的名称即可,因此不再绘出其他2路的控制流程图模拟热继电器工作是在第2路熔断器FU12损坏时发生作用
2、按照控制流程,设计主电路脚本程序#主线路颜色1if{[GETVALSQ]==1[GETVALFU1]==0[GETVALFU11]==0}then{SETVALL1=1}else{SETVALL1=0}#主线路颜色2if{[GETVALSQ]==1[GETVALFU1]==0[GETVALFU12]==0}then{SETVALL2=1}else{SETVALL2=0}#热继电器if{[GETVALFU12]==1[GETVALKM]==1}then{SETVAL{FRmn=%PLUS1}}if{[GETVALFRmn]=99}then{SETVALFR=1SETVALFRmn=0}#主线路颜色3if{[GETVALSQ]==1[GETVALFU1]==0[GETVALFU13]==0}then{SETVALL3=1}else{SETVALL3=0}#主线路颜色L11if{[GETVALL1]==1[GETVALKM]==1}then{SETVALL11=1}else{SETVALL11=0}#主线路颜色L21if{[GETVALL2]==1[GETVALKM]==1}then{SETVALL21=1}else{SETVALL21=0}#主线路颜色L31if{[GETVALL3]==1[GETVALKM]==1}then{SETVALL31=1}else{SETVALL31=0}
3、辅助电路控制流程的设计图4-19图4-19辅助电路控制流程
4、按照辅助电路控制流程,设计辅助电路的脚本程序#副线路颜色0if{[GETVALL3]==1[GETVALFU2]==0[GETVALFU22]==0}then{SETVAL0=1}else{SETVAL0=0}#副线路颜色1if{[GETVALL1]==1[GETVALFU2]==0[GETVALFU21]==0}then{SETVAL1=1}else{SETVAL1=0}#副线路颜色2if{[GETVAL1]==1[GETVALFR]==0}then{SETVAL2=1}else{SETVAL2=0}#副线路颜色3if{[GETVAL2]==1[GETVAL__1]==0}then{SETVAL3=1}else{SETVAL3=0}#副线路颜色4if{[GETVAL__2]==1||[GETVALKM]==1[GETVAL3]==1}then{SETVAL4=1}else{SETVAL4=0}
4.
3.2操作面板的脚本程序
1、操作面板的脚本控制流程的设计图4-20图4-20操作面板脚本流程
2、按照操作面板控制流程编写脚本程序#停止if{[GETVAL3]==0||[GETVAL0]==0}then{SETVALKM=0}#启动if{[GETVAL__2]==1[GETVAL0]==1[GETVAL3]==1}then{SETVALKM=1SETVALS12=1}#加速if{[expr[GETVALKM][GETVALS12]]==1}then{SETVAL{M11=%PLUS1}}#减速if{[GETVALS12]==1[GETVALKM]==0}then{SETVAL{M11=%MINUS1}}#减速停止if{[GETVALM11]==0[GETVALS12]==1}then{SETVALS12=0}#旋转if{[GETVALS12]==1}then{SETVAL{M10=%LOOPPLUS@M11}}
4.
3.3框架显示的脚本程序监视窗口包括左边一个框架动画和右边一个风扇动画,框架动画类似于一个幻灯片,有一幅幅的图形,但图形的播放次序可根据关联点的状态而排列风扇设计了8幅框架动画
1、框架显示的控制流程图4-21图4-21风扇框架动画控制流程8幅框架图形以文字为主第1幅初始状态先打开电源总开关,再按启动按钮将这些文字图形分别保存为DFM格式图形文件,在框架中根据动画关联点D1的数值进行切换第2幅提醒总电源开关没有开,电动机无法运行第3幅正常运行点主熔断器、副熔断器、热继电器模拟故障第4幅__一主熔断器烧断,__主熔断器模拟更换第5幅__二副熔断器烧断,__副熔断器模拟更换第6幅__三热继电器过载保护,__热继电器模拟复位第7幅等待开机电气控制线路正常,可以起动电动机第8幅复合__主熔断器烧断,热继电器过载保护
2、按照框架控制流程编写图形切换脚本程序if{[GETVALSQ]==0[GETVAL__2]==0}then{SETVALD1=0}elseif{[GETVAL0]==1[GETVAL3]==1[GETVALKM]==0}then{SETVALD1=6}if{[GETVALSQ]==0[GETVAL__2]==1}then{SETVALD1=1}if{[GETVALKM]==1}then{SETVALD1=2}if{[GETVALL1]==0||[GETVALL2]==0||[GETVALL3]==0[GETVALSQ]==1}then{SETVALD1=3}if{[GETVALL1]==1[GETVAL1]==0}then{SETVALD1=4}if{[GETVALL3]==1[GETVAL0]==0}then{SETVALD1=4}if{[GETVAL1]==1[GETVALFR]==1}then{SETVALD1=5}if{[GETVALSQ]==1[GETVALL2]==0[GETVALFR]==1}then{SETVALD1=7}将上述主电路、辅助电路、操作面板和框架显示脚本组合成风扇动画脚本程序
4.
3.4监控页面的集成在前面章节中,从组态软件的绘图、动画到宏指令、脚本等基本知识,结合风扇监控页面中局部画面及功能的设计、制作,介绍了WebAc__ss的基本功能和使用方法在本节中结合上述例子,完成风扇监控页面工程在进行风扇监控页面制作的过程中,可以从建立工程节点、监控节点,新建设备和点等基础开始,特别是新建点时必须注意和上述动画,脚本的关联点的名称、属性、数值范围相配然后再开始绘图、动画、脚本、宏指令等一步步进行也可以从上一章的图3-78的绘图、动画基础上进行脚本和宏指令组合,完成风扇监控页面的制作限于篇幅,本例采用在前述各种脚本动画的基础上完成在遇到关联点不同时,通过修改、编辑的方法完成本例中需要的动画关联点序点名称状态点属性说明100/1内部点辅助电路颜色动画关联点213243546L10/1内部点主电路颜色动画关联点7L28L39L1110L2111L3112S120/1内部点风扇旋转状态指示灯13__10/1内部点(*)停止按钮14__2启动按钮15FU10/1内部点主熔断器(3相)16FU110/1内部点(*)主熔断器17FU1218FU1319FU20/1内部点副熔断器(2路)20FU210/1内部点(*)副熔断器21FU2222SQ0/1内部点(*)总电源开关23FR0/1内部点(*)热继电器24KM0/1内部点(*)接触器25D10/1/2/3/4/5/6/7内部点框架动画关联点26M100-2400内部模拟点风扇旋转模拟关联点27M111-120内部模拟点风扇变速控制点28FRmn0-100内部模拟点热继电器模拟故障点29NOP0内部点初始颜色群组点由于本例是一个模拟的风扇电动机电气控制线路,因此动画关联点全部采用内部点,否则带(*)的点需要采用外部的I/O点和实际的设备发生通讯连接,同时在脚本程序也必须要进行调整,删除某些模仿外部电器的动作的脚本程序在图3-78绘图、动画基础上,将图4-3中的按钮宏指令改为对现在的按钮关联点__1和__2进行操作,图4-22图4-22修改启动、停止按钮宏指令将左边的风机通电指示灯的关联点和右边风页旋转指示灯的关联点分别改为KM和S12;操作的方法,用鼠标点图形的中心,在弹出菜单中选颜色动画后修改关联点;将电源总开关的关联点改为SQ,方法同上;将右边的加速、减速的直方图动画和显示当前旋转速度的文本显示栏中动画关联点全部改为M11;上述关联点的改变均采用鼠标分别点图形中心方法进行修改,图4-23图4-23用鼠标点图形中心修改关联点鼠标点风扇动画的中心,修改风扇风叶旋转的关联点为M10点按照框架动画显示的图形大小绘8个矩形,在每个矩形内部按照上述框架需要显示的文字内容,分别输入8段文字,每段文字分为2-3行排列、对齐,适当调整大小后和矩形群组后,分别保存为D1-D
8.dfm文件;然后修改原来框架动画的关联点为D1,鼠标点动画属性菜单的“框架”,进入框架状态的菜单,重新选择、定义对应数字0-7状态下的各个dfm文件,本例中依次选D1-D8的dfm文件,保存后完成框架动画的修改,图4-24图4-24修改框架动画风扇电气控制线路原理图动画的关联点和脚本程序相同,不用修改,但是需要增加一些电器操作按钮增加的电器操作按钮包括总电源开关SQ、总的主熔断器及3个单独主熔断器的修复按钮、总的副熔断器及2个单独副熔断器的修复按钮、热继电器模拟操作开关、接触器调试开关、启动、停止操纵按钮开关等,这些调试按钮开关的宏指令均采用翻转REVERSE操作其格式按钮向下的宏指令“SETVAL点名称=%REVERSE”该宏指令执行将点的原来状态变成相反的状态,例如“0”→“1”或“1”→“0”完成上述修改后,可进行整个监控页面动画的初步调试在调试前,各个动画之间暂不必进行面板、初步颜色等群组功能,因为初步调试主要完成动画、脚本、宏指令之间的配合和协调,调试中可能需要修改一些图形及动画的参数和关联点名称,暂时不进行群组可方便操作完成初步调试后,进行整理监控页面的各个图形的位置、大小、层之间的关系最后再按照设计方案,分功能块将各个部件进行面板、初步颜色等群组在风扇监控页面中,还需要完成和其他页面的翻页转换,根据总体设计,在页面的上方设置4个翻页按钮,分别为按钮1实验按钮可进入和外部PLC控制器连接的控制页面按钮2返回按钮回到系统的初始页面按钮3车床按钮可进入另一个车床的监控页面按钮4退出按钮执行ALT_F4关闭监控系统翻页按钮在按钮向下时,均执行翻页宏指令“GOTOGRAPH=页名称.bgr”完成全部风扇监控制作后,页面如图4-25图4-25风扇监控页面PAGE-45-。