搬家第三天-71.Wincc V7.3 多重画面窗口嵌套环境下的同类设备交互控制

前面一篇博客记录了如何用下位机FB和背景数据块上载结构变量以及画面窗口变量前缀属性来做同类设备交互控制,节省开发时间。有的时候,我们要控制的画面窗口控件并不在当前画面上,而是在嵌套好几层的画面窗口里面,这时我们在处理画面窗口控件属性时,就需要描述清楚这种嵌套关系了。

     假设有一家集团公司,其第一分厂下属第一车间有4个非常重要的水泵,我们希望在集团公司这个层级页面上就能够直接调出这4个水泵的控制面板,大概是这个样子:

如果按照前面博客介绍的方法,是不能引用到嵌套里层的控件的。项目各画面名字如下:

我们假设总厂总貌的名字叫做NewPdl0,总貌上有一个PictureWindow控件名字叫做PW1,第一分厂画面的名字叫做PW1,第二分厂的画面名字叫做factory2;第一分厂画面上有一个picturewindow控件,控件名字叫做PW2,画面窗体控件PW2装载画面名字叫做PW2,画面PW2表示第一分厂的第一车间,这个画面上也有一个画面窗口控件,控件名字叫做PW3,装载画面名字叫做PW3,画面PW3用于交互控制4个泵。

      画面PW3上放置两个圆,动态表示每个泵的Remote和Fault信号,4个按钮用于操控Auto、Start、Stop信号,每个信号连接变量的定义方法,请参考另外一篇博客:http://blog.sina.com.cn/s/blog_724246b90102wnxg.html

      在画面NewPdl0上有一排按钮,其中4个用于弹出水泵控制面板。泵1按钮的鼠标点击事件中添加以下VBS脚本:

Sub OnClick(ByVal Item)          
Dim PW1,PW3
Set PW1=ScreenItems("PW1")
PW1.PICTURENAME="PW1"  '确保画面窗口PW1装入的是第一分厂画面
Set PW3=HMIRuntime.Screens("NewPdl0.PW1:PW1.PW2").ScreenItems("PW3")
PW3.Visible =False
PW3.TagPrefix="S7$程序(1)/Pump1."
PW3.captiontext="泵1控制"
PW3.Visible =True
End Sub

上面的脚本中Set PW3=HMIRuntime.Screens("NewPdl0.PW1:PW1.PW2").ScreenItems("PW3")
很关键,它描述了这种嵌套关系的画面和控件,“NewPdl0.PW1”表示画面NewPdl0画面上的画面窗口控件PW1,二者之间用圆点.分隔;画面窗口控件PW1装载的是画面PW1,它们之间使用英文冒号:分隔,始终按照这个格式书写:

HMIRuntime.Screens("画面名.画面窗口控件名:画面名.画面窗口控件名:画面名…….画面名").ScreenItems("画面窗口控件名")

无论有多少层级,都是按照这个思路处理,Wincc允许多少层级我不知道,但一般3层结构应该足够了。

PW3先隐藏再显示相当于刷新一下,变量前缀的定义以及标题栏的定义还是和前一篇博客写的一样。

2、3、4#泵的脚本也是类似的,这里就不列举了。

posted @ 2021-01-31 12:52  来自金沙江的小鱼  阅读(2389)  评论(0编辑  收藏  举报