最近我在开发一个博图WINCC项目,用于VBS脚本用的特别多,所以,当中遇到很多个问题,也花费了我大量的精力,也学到了很多知识。借助这个平台我陆续把这些宝贵的经验知识分享出来,希望能当做大家平时的项目参考。
上位机项目中,利用弹出窗口做对象的操作和监视是比较常用的做法。一方面是因为对象的数据量比较大且多,如果全部做在根画面上,显然太乱,另一方面也是为了组态方便和操作便利。
通常,这种弹出窗口是用修改窗口中变量的前缀方式实现的。具体如下:在根画面中新建一个窗口,同时,新建一个画面。在画面中建立对象的各种数据和方法,比如IO域和按钮等,但是,链接的变量只保留前缀后面的内容。比如:一个按钮的变量A的结构为:对象名称.start,这里只保留".start"。但是,中间我遇到一个问题一直没解决,有种描述状态的变量“对象名称.status",第一个“s”必须是大写的“S”。接着,开始写对接窗口和画面脚本。
脚本:
Dim HMIObject,ObjText
Set HMIObject = HMIRuntime.Screens("Start screen").ScreenItems("Popup") '//引用窗口对象
HMIObject.TagPrefix = Prefix '//前缀
HMIObject.ScreenName = PopupName '//窗口的画面名称
HMIObject.Visible=True '//显示画面
HMIObject.Activate '//激活画面
Set HMIObject = Nothing '//释放对象
Set ObjText = HMIRuntime.Screens("Start screen.Popup:" & PopupName).ScreenItems("Caption1")'//引用标题1对象
ObjText.text=Caption1 '//赋值标题1
Set ObjText = Nothing '//释放对象
Set ObjText = HMIRuntime.Screens("Start screen.Popup:" & PopupName).ScreenItems("Caption2") '//引用标题2对象
ObjText.text=Caption2 '//赋值标题2
Set ObjText = Nothing '//释放对象
当时,我遇到过一个问题,就是用了SmartTags("")做Start screen.Popup:" & PopupName,所以,一直没有成功。记住:字符串拼接只能在HMIRuntime的对象中使用。
最后,在根画面中的对象上做事件,调用该Sub,并给参数实例化即可。
弹出窗口变量声明.jpg
调用子过程.jpg