文字顯示變數 幾千個IO狀態顯示 十幾分鐘搞定例項

2021-10-14 18:56:23 字數 2400 閱讀 3921

工程上常會在乙個或者數個介面中對所有io點監控,很多小夥伴用一一對映的傳統方法來實現,在超小型專案中實用性較強,在稍微大一點的專案中實現起來效率低還經常出錯。本文旨在分享有價值的實際經驗,供小夥伴們參考。

在實現監控前要新建乙個模板,每個專案都可以重複使用,熟悉程式設計的老鐵可以在半個小時到就可以建立好模板。

如果不考慮建模板的時間,在西門子博圖中操作三到五分鐘內就可以建立對數千點io的監控,效率和準確率比普通一一對映的方法提高幾十倍甚至上百倍。

本模板關鍵要理解多路復用變數、文字列表,和變數的數值更改事件中線性縮放,雖然很常用用法,所以把這一方法的思路建立起來更重要。本文通過西門子精簡面板實現這一功能,其他型號的觸控螢幕也可以用類似思路實現,能支援指令碼語言的觸控螢幕,通過優化後實現效率會更高。

模板建立思路:建立乙個下拉列表,可以根據下拉列表選擇要監控的iw/qw位址,得到乙個中間變數iq_address,再通過iw[iq_addres]和 qw[iq_addres]來獲取指定io位址的狀態字,同時根據iq_adress變數變化後設定每個顯示文字(符號io域)對應的過程變數。

監控畫面「第一頁」

監控畫面「第二頁」

話不多說如何建立模板?

一: 需要建立三種關鍵變數,分別是:

①要監控的iw/qw位址的變數:iq_address,並建立「更改數值」的「事件」,分別對變數文字0-文字15進行線性縮放:y=ax+b,即文字0-15變數的值y=8*iq_address+文字變數編號,按下圖方法;

②輸入輸出狀態字:輸入狀態,輸出狀態;

③符號io域的過程變數:文字0-文字15。

建立iq_address變數事件

hmi變數

輸入輸出狀態是乙個word型變數,word可以一次監控16點,當然也可以是dword型,文字過程變數要設定成32個就可以,以後在大屏上方便使用。

二:需要建立三個文字列表,分別是:

選擇:選擇要監控對應的iqaddress名稱列表

選擇-文字列表

三:介面設定:

①複製輸入輸出各16個圓形,按照下圖改變外觀屬性,第乙個圓形的單個位設定為0,第二個圓形的單個位為1,依次類推。

圖形設定

②複製輸入輸出各16個符號io域,按照下圖改變外觀屬性,第乙個io域過程變數設定為0,第二個io域過程變數設定為1,依次類推。輸入的符號io域的內容文字列表全部選擇輸入,輸出的符號io域的內容文字列表全部選擇輸出。

符號io域設定一

③ 按下圖設定符號io域選擇下拉列表。

符號io域設定二

至此模板大公告成。後面只需要將plc中io變數列表複製到觸控螢幕的輸入/輸出文字列表中,前提是注意複製方法,連續的位址一起複製,如i0.0-i3.0,這樣在文字列表中對應的值是連續的, i8.0-i11.0也可以一起複製,在貼上之前將第乙個值設定成64,關係要滿足文字列表的值=8*位元組數+位數,其他品牌的觸控螢幕操作可能沒有這麼方便,效率會低一些。如果excel玩得溜的老鐵可以先在excel中將文字列表整理出來,再複製到列表中,效率還會大大提高。

輸入輸出-文字列表

有網友按步驟測試過,在**後圓形顯示前八位與後八位反了,解決思路是將高低位元組轉換,實現方法是將圓形的外觀顯示對應變數單個位0-7與8-15交換一下;還有剛進入頁面時所有文字顯示一樣,本質上是沒有觸發線性縮放事件,解決方式是把變數更改中的所有線性縮放拷貝到監控頁面的載入事件中,讓所有線性線性縮放事件在進入監控頁面時執行一次。

tnsping延時幾千到上萬毫秒

在裝完資料庫,開發人員部署上應用後,反應經常打不開資料庫連線或者連線資料庫超時。後來通過檢查發現tnsping延時較大導致的資料庫連線不上或超時。而且有時tnsping的時候10毫秒或以下,但在使用資料庫客戶端連線的時候tnsping則在上千或上萬毫秒。最後在網際網路上找到相關部落格 按照部落格中的...

Java生成隨機數,幾千年不重複哦

生成隨機數 guid 即globally unique identifier 全球唯一識別符號 也稱作 uuid universally unique identifier 所以guid就是uuid。guid是乙個128位長的數字,一般用16進製表示。演算法的核心思想是結合機器的網絡卡 當地時間 乙...

OpenGL顯示文字 顯示漢字

本文 http blog.sina.com.cn s blog 4ff085000100dew0.html 原則上,顯示中文和顯示英文並無不同,同樣是把要顯示的字元做成顯示列表,然後進行呼叫。但是有乙個問題,英文本母很少,最多只有幾百個,為每個字母建立乙個顯示列表,沒有問題。但是漢字有非常多個,如果...