01-WinCC VBS脚本的概述
本系列VBS内容、结构等均来自于WinCC自带的帮助文档,经过多年使用的经验对文档进行发散解析,以便更深入的了解相应的内容。因当前在WinCC中虽然不使用脚本基本也可以完整的实现WinCC的功能,但是为了提高组态的效率,充分发挥WinCC的可扩展性更能,如操作记录的制作、报表的制作、批量实现某个画面中的对象属性动态化等。
本系列只讨论有关VBS在WinCC中的应用,无法在WinCC中使用的内容,不做记录。
一、VBS在WinCC中的作用
VBS即为Visual Basic的缩写,在WinCC中,VBScript (VBS) 提供运行时图形运行系统的变量和对象访问,并允许执行独立于画面的动作,比如以下几种:
1、变量的读写操作,在WinCC运行的时候,VBS可以对变量进行读写操作,这样可以在产生动作或者属性变更时,出发相应的VBS脚本对指定变量的值进行读取或者写入操作;
比如,在按钮的单击鼠标事件中,加入一下脚本,用来读取“TagTest”变量的值,并且将其使用弹窗输出。
dim Val set Val=hmiruntime.tags("TagTest") Val.read Msgbox Val.value
2、对WinCC中的对象进行操作,可以使用VBS对WinCC中对象的属性动态化,同时也可以在对象的事件中来触发动作;
比如,在WinCC的一个画面中,有一个指示灯,其名称为Sng,那么可以分别创建两个按钮,当按下按钮1的时候,Sng的背景颜色变为绿色,当按下按钮2的时候,Sng背景颜色变为红色,并且每次变化之后,都要有弹窗提醒当前Sng的背景颜色。
'在按钮1的单击鼠标事件中,写下如下VBS脚本 dim obj set obj=screenitems("Sng") obj.backcolor=vbgreen set obj=nothing '在按钮2的单击鼠标事件中,写下如下VBS脚本 dim obj set obj=screenitems("Sng") obj.backcolor=vbred set obj=nothing '在Sng的事件中,找到属性主题→颜色→背景颜色→更改处,添加以下脚本 if value=vbgreen then msgbox "当前指示灯颜色为绿色!" elseif value=vbred then msgbox "当前指示灯颜色为红色!" end if
3、单独触发动作,VBS可以独立于画面系统单独触发动作,如定时向数据库或Excel中写入数据;
如每当整点的时候,即弹出一个弹窗,报一下当前的事件。
'在WinCC全局脚本的动作中,创建以下脚本动作,触发器设置为每分周期触发 dim HNow,MNow,SNow HNow=hour(now()) MNow=minute(now()) SNow=second(now()) if HNow=0 and MNow=0 and SNow=0 then Msgbox Now(),vbExclamation, "当前时间:" end if
二、VBS在WinCC中的使用位置
1、VBS可以在WinCC的全局脚本中使用,如全局动作或标准模块,这些过程可以独立于画面系统进行单独动作;
2、在画面中使用,在WinCC的所有可以触发事件的属性或者可以动态化内容的对象属性均可以使用,如颜色变化后触发某个动作,值超过某个限值之后更改背景颜色等;
3、在用户自定义的菜单或者工具中,在WinCC中可以自定义菜单栏和工具栏,这些自定义的菜单栏或者工具栏,也可以触发VBS脚本;
可在 WinCC 的以下位置使用 VBS。
注:与“菜单和工具栏”相关联的经过更改的 VB 脚本只有在重新启动运行系统后才会被更新,如果在运行系统中更改“菜单和工具栏”的属性,则更改只会在下列情况下起作用:
① 在画面更改后(如果组态更改不影响基本画面)。
② 装载另一组态文件并重新装载已修改的组态文件时。
浙公网安备 33010602011771号