网站首页 > 资源文章 正文
上篇文章我们讲到《西门子触摸屏变量的三种更新方式》:
- 根据命令
- 循环连续
- 循环使用(默认)
这篇我们将一个实际案例:现场有台设备想在执行开机过程时触摸自动跳到执行过程的画面。
假如PLC有个执行开机的变量M0.0,当M0.0为1的时候,自动切换画面。初次想这个应用很简单,就是使用在变量管理器中的M0.0的数值更改事件,当M0.0变化时,触发一个VB脚本,脚本中判断M0.0为1的时候,激活画面就可以了。
注意:
变量的数值更改事件——只要触摸屏内存中变量的值有变化则触发事件。
变量的数值事件
VB脚本
新的精智面板有弹出画面,侧滑,我这里做了三个不同类型画面的展示效果。
创建“激活画面”,“弹出画面_1”,以及启动从左侧滑入画面,并放置控件。
Sub PopupScript()
If SmartTags("%M0.0")=True Then
ActivateScreen "激活画面",0
End If
?
If SmartTags("%M0.1")=True Then
ShowPopupScreen "弹出画面_1",50,50,hmiOn, hmiBottom, hmiMedium
End If
?
?
If SmartTags("%M0.2")=True Then
ShowSlideInScreen "从左侧滑入画面",hmiOn
End If
End Sub
问题
一切都按照我们想的做好了后,在PLC中触发M0.0,但是界面并不会切换。假如怀疑是由于M0.0的更改信号时,触摸屏没有收到这个变化导致的,我们做一个圆,通过背景色来显示M0.0的状态,你会发现M0.0的状态是有变化的,且这时界面也能正常切换了。但是如果又删掉引用M0.0的控件后,界面又变成不会切换了。
这是怎么回事呢?这就是我们上篇文章讲到的,西门子触摸屏的变量更新方式默认是循环使用的,只有当前界面中有使用到时才会去读取,由于我们的主界面中没有使用到M0.0,因此触摸屏不会去与PLC通讯查询M0.0的状态。这样做是为了减少每次通讯变量的数量,提高通讯的质量和效率。PLC中数据改变时M0.0在触摸屏内存中的值并没有刷新(因为没有用到),就不会触发M0.0的数值更改事件,从而导致VB脚本并没有被执行。
如何实现我们想要的效果呢,在每个界面上都引用M0.0这个变量显然不是个好的办法。这就需要将M0.0变量的采集模式改成循环连续就可以了。如下图:
本文暂时没有评论,来添加一个吧(●'◡'●)