搬家第三天-69.Wincc V7.3 同类设备交互控制处理-结构变量、画面窗口应用
在实际工程中,有时需要在上位机控制多台设备,这些设备有一致的功能、一致的信号,我们没必要为他们一个一个的建立变量和“控制面板”,利用结构变量和画面窗口控件可以省去我们很多工作量。
假设我们有4个行车需要在wincc中控制,为了重点说明这种思路和方法,我们假设每台行车只有remote、auto、start、stop四个变量,为了说明wincc中结构变量的建立,本文不从下位机上载变量,而是在wincc中新建。
1. 打开wincc项目管理器的变量管理,点击“结构变量”在右侧新建一个结构类型“Hangche”,如下图所示
2. 在左侧结构变量下点击刚才新建的结构类型hangche,然后在右侧“结构类型元素”中新建remote、auto、start、stop四个元素,由于4个元素均来自PLC,因此都勾选外部变量,数据类型都是二进制变量。
3. 在Hangche这个结构类型下新建4个结构变量hangche1、hangche2、hangche3、hangche4.
4. 在结构元素变量下,可以看到刚才新建的4个结构变量自动的生成了下面的元素,现在给每一个元素分配地址如图所示。
这样,结构变量就全部建立完毕了,可以看到变量的名称是很规则的形式,这个为我们在画面窗口交互功能模板化的建立提供了便利。
5. WINCC中新建一个画面hangche,宽300,高350,用于行车的控制。在工艺画面添加一个画面窗口,空间名称修改为PW,设置不显示,变量前缀可以不填写,关闭窗口属性选“是”,允许关闭窗口,画面名称hangche。
也可以在画面打打开事件中写入以下脚本:
Sub OnOpen()
Dim PW
Set PW=ScreenItems("PW")
PW.Visible =False
End Sub
这样打开画面时,画面窗口就不会显示了。
6. 在画面上放置4个按钮,按钮分别用于4个行车的控制。
7. 在刚才新建的hangche画面,放入一个圆圈表示每个行车的remote信号,如果行车的remote为1,绿色;为0,红色。
注意“表达式/公式”中填写的'remote'实际上是去掉了前缀的变量,必须加上英文单引号,在检查的时候系统会提醒,不要理会保存退出就是了。
8. 在hangche画面再添加“Auto”、“Manual”、“Start”、“Stop”4个按钮。
9. Auto按钮鼠标点击事件-直接连接让1赋值给"Auto"
10. Manual按钮鼠标点击事件-直接连接让0赋值给“Auto”
注意里面的变量是去掉前缀的,没有加英文单引号。
11. Start按钮按鼠标按左键事件以下VBS代码:
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim start
Set start=hmiruntime.Tags("Start")
start.Write 1
End Sub
释放鼠标左键以下vbs代码
Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim start
Set start=hmiruntime.Tags("Start")
start.Write 0
End Sub
注意里面的变量是去掉前缀的,没有加英文单引号。
12 Stop按钮按左键事件以下VBS代码:
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim stop1
Set stop1=hmiruntime.Tags("Stop")
stop1.Write 1
End Sub
释放鼠标左键以下vbs代码
Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim stop1
Set stop1=hmiruntime.Tags("Stop")
stop1.Write 0
End Sub
注意里面的变量是去掉前缀的。
start和stop按钮鼠标左键操作时,都会产生一个脉冲的类似效果。
13 工艺画面上“行车1”按钮的鼠标点击事件以下VBS代码
Sub OnClick(ByVal Item)
Dim PW
Set PW=ScreenItems("PW")
PW.Visible =False
PW.CaptionText="行车1控制"
PW.TagPrefix="Hangche1."
PW.Visible=True
End Sub
.captiontext是在标题栏显示这个窗口的作用,.TagPrefix是表示窗体内的变量都加上一个前缀,这就是刚才编辑hangche窗体时变量都去掉前缀的原因,窗口先隐藏再显示就类似一个刷新的作用。
14. 工艺画面上“行车2”按钮的鼠标点击事件以下VBS代码
Sub OnClick(ByVal Item)
Dim PW
Set PW=ScreenItems("PW")
PW.Visible =False
PW.CaptionText="行车2控制"
PW.TagPrefix="Hangche2."
PW.Visible=True
End Sub
15.工艺画面上“行车3”按钮的鼠标点击事件以下VBS代码
Sub OnClick(ByVal Item)
Dim PW
Set PW=ScreenItems("PW")
PW.Visible =False
PW.CaptionText="行车3控制"
PW.TagPrefix="Hangche3."
PW.Visible=True
End Sub
16.工艺画面上“行车4”按钮的鼠标点击事件以下VBS代码
Sub OnClick(ByVal Item)
Dim PW
Set PW=ScreenItems("PW")
PW.Visible =False
PW.CaptionText="行车4控制"
PW.TagPrefix="Hangche4."
PW.Visible=True
End Sub