上篇文章我們講到《西門子觸摸屏變量的三種更新方式》:
這篇我們将一個實際案例:現場有台設備想在執行開機過程時觸摸自動跳到執行過程的畫面。
假如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變量的采集模式改成循環連續就可以了。如下圖:
Demo效果如下:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!