(原創)從崑崙通態觸摸屏讀取ASCII字符串的問題看變量更新機制

前面有一篇文章,探討了崑崙通態觸摸屏讀取S7-1200字符串時,遇到的變量不更新的問題,並給出了變通的解決方案, 。另外一篇文章裡也簡單分析了S7-1200、1500裡字符串的編碼機制,說明了字符串裡也可以包括非ASCII的字符,因此,在上位機進行轉換時,要注意區別對待, 。

後來,我和崑崙通態的技術支持取得聯繫,他們確切告訴我:如果在策略裡進行了變量的訪問,該變量肯定會進行更新的。

我找機會進行了測試,將原來不刷新的變量,用一個無意義的語句讀取了一次,果然更新了,原因我也想明白了:我原來用了組對象將這些通道變量進行了打包,程序利用循環語句,通過序號進行了組內元素的訪問(調用結構見圖1),程序裡並沒有直接訪問變量的語句,後臺並沒有識別出我進行了變量的訪問,因此,沒有更新。

(原創)從崑崙通態觸摸屏讀取ASCII字符串的問題看變量更新機制

圖1 變量的更新和使用框架

我總結了一下觸摸屏內變量的更新機制。為了節省通訊量,提高需要變量的更新速度,觸摸屏(包括各種工控軟件)都有自己的變量更新機制,對於崑崙通態,連接變量有A、B、C、D四種的使用場景(可能還有其他一些需要場景我沒有涉及),其中A是定義為報警和需要週期記錄的變量,這些要在規定的週期內進行更新。B是前臺更新,只有那些處於激活狀態窗口內(用戶能看到的窗口)的變量才需要更新,用戶看不到的窗口內的變量更新了也沒人看。D是程序裡訪問的變量也需要進行更新。但是,崑崙通態忽略了C方式的更新,就是我上邊遇到的情況:程序進行了間接訪問(見下),更新機制沒有發現。

(原創)從崑崙通態觸摸屏讀取ASCII字符串的問題看變量更新機制

圖2 有問題的程序

解決方案:使用前,進行了顯式的讀取。

(原創)從崑崙通態觸摸屏讀取ASCII字符串的問題看變量更新機制

圖2 最終解決方案

小結一下:如何高速、低成本(通訊成本)地進行變量更新是工控軟件一個重要課題,前提是不影響使用。希望崑崙通態後期能改進這個小BUG。

2019年2月10日


說明:

1、本文是實踐經驗,非嚴格論文,與相關產品和理論可能不完全相符。

2、如需控制、三電相關幫助,交流,請關注本人,並加入技術討論QQ群:877456127,那裡有很多熱心同行。


分享到:


相關文章: