工程上常會在一個(gè)或者數(shù)個(gè)界面中對所有IO點(diǎn)監(jiān)控,很多小伙伴用一一映射的傳統(tǒng)方法來實(shí)現(xiàn),在超小型項(xiàng)目中實(shí)用性較強(qiáng),在稍微大一點(diǎn)的項(xiàng)目中實(shí)現(xiàn)起來效率低還經(jīng)常出錯(cuò)。本文旨在分享有價(jià)值的實(shí)際經(jīng)驗(yàn),供小伙伴們參考。 在實(shí)現(xiàn)監(jiān)控前要新建一個(gè)模板,每個(gè)項(xiàng)目都可以重復(fù)使用,熟悉編程的老鐵可以在半個(gè)小時(shí)到就可以建立好模板。 如果不考慮建模板的時(shí)間,在西門子博圖中操作三到五分鐘內(nèi)就可以建立對數(shù)千點(diǎn)IO的監(jiān)控,效率和準(zhǔn)確率比普通一一映射的方法提高幾十倍甚至上百倍。 本模板關(guān)鍵要理解多路復(fù)用變量、文本列表,和變量的數(shù)值更改事件中線性縮放,雖然很常用用法,所以把這一方法的思路建立起來更重要。本文通過西門子精簡面板實(shí)現(xiàn)這一功能,其他型號的觸摸屏也可以用類似思路實(shí)現(xiàn),能支持腳本語言的觸摸屏,通過優(yōu)化后實(shí)現(xiàn)效率會更高。 模板建立思路:建立一個(gè)下拉列表,可以根據(jù)下拉列表選擇要監(jiān)控的IW/QW地址,得到一個(gè)中間變量IQ_Address,再通過IW[IQ_Addres]和 QW[IQ_Addres]來獲取指定IO地址的狀態(tài)字,同時(shí)根據(jù)IQ_Adress變量變化后設(shè)置每個(gè)顯示文本(符號IO域)對應(yīng)的過程變量。 先來看一下效果,選擇不同監(jiān)控地址: 監(jiān)控畫面“第一頁” 監(jiān)控畫面“第二頁” 話不多說如何建立模板? 一: 需要建立三種關(guān)鍵變量,分別是: ①要監(jiān)控的IW/QW地址的變量:IQ_Address,并建立“更改數(shù)值”的“事件”,分別對變量文本0-文本15進(jìn)行線性縮放:Y=aX+b,即文本0-15變量的值Y=8*IQ_Address+文本變量編號,按下圖方法; ②輸入輸出狀態(tài)字:輸入狀態(tài),輸出狀態(tài); ③符號IO域的過程變量:文本0-文本15。 創(chuàng)建IQ_Address變量事件 HMI變量 輸入輸出狀態(tài)是一個(gè)Word型變量,Word可以一次監(jiān)控16點(diǎn),當(dāng)然也可以是DWord型,文本過程變量要設(shè)置成32個(gè)就可以,以后在大屏上方便使用。 二:需要建立三個(gè)文本列表,分別是: 選擇:選擇要監(jiān)控對應(yīng)的IQAddress名稱列表 輸入:PLC輸入的符號地址列表 輸出:PLC輸出的符號地址列表 選擇-文本列表 三:界面設(shè)置: ①復(fù)制輸入輸出各16個(gè)圓形,按照下圖改變外觀屬性,第一個(gè)圓形的單個(gè)位設(shè)置為0,第二個(gè)圓形的單個(gè)位為1,依次類推。 圖形設(shè)置 ②復(fù)制輸入輸出各16個(gè)符號IO域,按照下圖改變外觀屬性,第一個(gè)IO域過程變量設(shè)置為0,第二個(gè)IO域過程變量設(shè)置為1,依次類推。輸入的符號IO域的內(nèi)容文本列表全部選擇輸入,輸出的符號IO域的內(nèi)容文本列表全部選擇輸出。 符號IO域設(shè)置一 ③ 按下圖設(shè)置符號IO域選擇下拉列表。 符號IO域設(shè)置二 至此模板大公告成。后面只需要將PLC中IO變量列表復(fù)制到觸摸屏的輸入/輸出文本列表中,前提是注意復(fù)制方法,連續(xù)的地址一起復(fù)制,如I0.0-I3.0,這樣在文本列表中對應(yīng)的值是連續(xù)的, I8.0-I11.0也可以一起復(fù)制,在粘貼之前將第一個(gè)值設(shè)置成64,關(guān)系要滿足文本列表的值=8*字節(jié)數(shù)+位數(shù),其他品牌的觸摸屏操作可能沒有這么方便,效率會低一些。如果EXCEL玩得溜的老鐵可以先在EXCEL中將文本列表整理出來,再復(fù)制到列表中,效率還會大大提高。 輸入輸出-文本列表 有網(wǎng)友按步驟測試過,在仿真后圓形顯示前八位與后八位反了,解決思路是將高低字節(jié)轉(zhuǎn)換,實(shí)現(xiàn)方法是將圓形的外觀顯示對應(yīng)變量單個(gè)位0-7與8-15交換一下;還有剛進(jìn)入頁面時(shí)所有文本顯示一樣,本質(zhì)上是沒有觸發(fā)線性縮放事件,解決方式是把變量更改中的所有線性縮放拷貝到監(jiān)控頁面的加載事件中,讓所有線性線性縮放事件在進(jìn)入監(jiān)控頁面時(shí)執(zhí)行一次。 |
|