郭曉寧,尹劍侖,龐杰鋒,崔龍衛(wèi),王群偉,魏新
(許繼電氣股份有限公司,河南 許昌 461000)
在工業(yè)和電力系統(tǒng)保護(hù)控制領(lǐng)域,裝置的液晶顯示及按鍵處理是一種重要的人機(jī)交互方式?,F(xiàn)場運行人員需要通過液晶顯示終端查看裝置狀態(tài)、讀取或整定裝置定值,進(jìn)行遙控、遙調(diào)等操作。由于電力二次設(shè)備的應(yīng)用場景不同,通常需要根據(jù)不同的主機(jī)程序定制不同的顯示終端程序。
傳統(tǒng)保護(hù)裝置的液晶顯示終端與裝置本體共用中央處理器(CPU),與裝置本體緊密聯(lián)系在一起,所以顯示終端常常依賴于主機(jī)程序,當(dāng)主機(jī)程序因升級或非標(biāo)需求修改時,顯示終端程序往往也需要同步修改,既增加了新的開發(fā)任務(wù)又增加了測試任務(wù)[1-4]。因此如何利用有限的資源來實現(xiàn)保護(hù)裝置多樣化顯示需求是一個關(guān)鍵問題。
本文提出的通用顯示終端自帶CPU,應(yīng)用程序不依賴主機(jī)獨立編譯。主機(jī)程序升級或變化時,顯示終端可以自適應(yīng)處理,不僅降低了裝置的開發(fā)成本與維護(hù)成本,也解決了顯示終端的通用性問題。
本文設(shè)計的保護(hù)裝置通用顯示終端的硬件系統(tǒng)框圖如圖1所示,由人機(jī)控制單元、液晶顯示單元和液晶結(jié)構(gòu)模組3 部分構(gòu)成[5-7]。
圖1 硬件系統(tǒng)框架圖Fig.1 Framework of the hardware in system
人機(jī)控制單元采用ARM-MCU作為中央處理器,運行速度最高可達(dá)168 MHz。該控制單元包含3.3 V主電源回路和3.3V通信回路2個獨立電路,主電源回路為顯示終端提供電能,通信電路提供一路JTAG調(diào)試口、一路RJ45面板調(diào)試口、一路RS-232串行通信接口。JTAG調(diào)試口為顯示終端程序的燒寫口,RJ45面板調(diào)試口可與主機(jī)CPU透傳連接調(diào)試工具,RS-232為與主機(jī)的串行通信接口。
液晶顯示單元由液晶顯示器和觸摸屏組成,液晶顯示器使用分辨率為240×160像素的單色液晶[8]。液晶結(jié)構(gòu)模組主要由鍍絡(luò)噴漆金屬件和不銹鋼板組成,用于連接人機(jī)控制單元和液晶顯示單元,并將其固定于預(yù)定的安裝位置。
本通用顯示終端軟件設(shè)計,從模塊化設(shè)計層次考慮,可分為五大模塊:界面圖形繪制、界面服務(wù)模塊、通信模塊、菜單信息、字庫文件,軟件系統(tǒng)框架結(jié)構(gòu)如圖2所示。
圖2 軟件系統(tǒng)框架圖Fig.2 Framework of the software in system
人機(jī)菜單完成一個完整功能包括界面圖形顯示、菜單內(nèi)容顯示,漢字顯示,并通過界面服務(wù)操作與主機(jī)通信,完成信息交互。
本軟件設(shè)計從任務(wù)處理層次考慮可分為兩大任務(wù):界面服務(wù)任務(wù)和通信任務(wù)。界面服務(wù)任務(wù)負(fù)責(zé)響應(yīng)人機(jī)交互信息處理,通信任務(wù)負(fù)責(zé)響應(yīng)人機(jī)與主機(jī)的信息交互。
本顯示終端采用許繼自主研發(fā)工具mkPBT進(jìn)行界面圖形繪制,mkPBT可提供多種圖形編輯控件,每個圖形編輯控件能夠根據(jù)自身特點調(diào)用其相應(yīng)的響應(yīng)函數(shù)完成相應(yīng)功能操作。界面圖形繪制時只需將所需控件拖拽到相應(yīng)位置,設(shè)置好坐標(biāo)位置和尺寸大小即可。并且每個控件有自己的獨立屬性,如編輯框是否允許編輯,列表框可設(shè)置行數(shù)、列數(shù),在使用時可靈活設(shè)置。
保護(hù)裝置的人機(jī)菜單雖然多樣化,但圖形繪制時編輯框和列表2種控件使用較多,以主界面菜單和定值菜單為代表。
主界面圖形繪制,是直接將編輯框控件拖拽至界面相應(yīng)位置,輸入相應(yīng)名稱即可,如圖3所示,需要說明的是圖中u,i,f等幾個電量符號為固定顯示部分,不需要與主機(jī)交互,而時間和電量值是實時刷新的,需要從主機(jī)讀取。
圖3 主界面菜單Fig.3 Menu of the main interface
定值菜單繪制,只需要拖拽列表控件并設(shè)置好行列數(shù)及行高和列寬即可,如圖4所示,列表菜單里的內(nèi)容從主機(jī)讀取。使用mkPBT的圖形繪制功能繪制界面可以無須根據(jù)頁面寬度、高度計算出每個控件對應(yīng)的坐標(biāo)位置,也無須通過編寫代碼畫出列表的每條列線和行線[9]。
圖4 定值菜單Fig.4 Setting menu
界面服務(wù)包括點亮發(fā)光二極管(LED)燈、畫面顯示、響應(yīng)按鍵操作、處理畫面任務(wù)。界面服務(wù)流程圖如圖5所示,從任務(wù)處理層次考慮界面服務(wù)模塊在上電初始化屏保、初始化液晶顯示器(LCD)顯示、初始化LED指示燈、顯示主畫面后,循環(huán)進(jìn)行鍵盤消息處理、液晶刷新任務(wù)、處理畫面任務(wù)、處理LED任務(wù)。初始化完成后顯示出主畫面,隨后響應(yīng)按鍵操作可進(jìn)入下級菜單。
畫面任務(wù)是界面服務(wù)處理的核心,是與主機(jī)通信的橋梁。從畫面任務(wù)處理層次考慮菜單可分為瀏覽類菜單和整定類菜單,瀏覽類菜單只需要讀取量值,如遙測、遙信菜單,整定類菜單除需要讀取量值外還需要支持修改操作,如定值、壓板菜單。處理畫面任務(wù)包括對于瀏覽類菜單量值讀取,及整定類菜單響應(yīng)修改操作后顯示修改結(jié)果提示的畫面。
圖5 界面服務(wù)流程圖Fig.5 Flow chart of interface service
處理畫面任務(wù)是通過郵件方式進(jìn)行信息交互,在多任務(wù)的操作系統(tǒng)中此種方式是最有效也是最容易實現(xiàn)的。郵件方式是指把在多任務(wù)間傳遞的數(shù)據(jù)放在一個緩沖區(qū)中,在任務(wù)間傳遞數(shù)據(jù)時只傳遞數(shù)據(jù)緩沖區(qū)的指針。這樣任務(wù)1發(fā)送郵件到任務(wù)2只需要發(fā)送數(shù)據(jù)緩沖區(qū)的指針,任務(wù)2接收郵件時也只需讀取數(shù)據(jù)緩沖區(qū)的指針[10]。
畫面任務(wù)流程圖如圖6所示。(1)當(dāng)響應(yīng)按鍵操作進(jìn)入某個菜單畫面時,處理畫面任務(wù)會收到來自菜單界面的郵件命令,判斷該菜單需要進(jìn)行讀信息還是修改信息操作后,會向主機(jī)通信模塊發(fā)送讀或?qū)懨钹]件。(2)主機(jī)通信模塊接收到郵件后組織下發(fā)讀信息或?qū)懶畔笪牟⑾蛑鳈C(jī)發(fā)送。(3)主機(jī)通信模塊收到主機(jī)的回復(fù)報文并解析報文后,向處理畫面任務(wù)發(fā)送可進(jìn)行讀信息或?qū)懶畔⒚钹]件。(4)處理畫面任務(wù)收到郵件后,對于瀏覽類菜單將量值信息刷新,對于整定類菜單顯示修改成功或修改失敗的畫面。
圖6 畫面任務(wù)流程圖Fig.6 Flow chart of interface task
本文設(shè)計基于RS-232串口通信的顯示終端與主機(jī)通信系統(tǒng),采用 Modbus規(guī)約,利用 Modbus規(guī)約可擴(kuò)展的特點,將菜單按類型劃分,同一類型菜單報文功能碼相同,同一功能碼的報文格式相同,這樣下發(fā)報文和解析報文簡單方便[11-12]。
人機(jī)菜單的信息刷新和修改通過串口通信方式與主機(jī)交互,通信框架如圖7所示。通信任務(wù)主要分為郵件處理和報文處理,當(dāng)接收到來自界面服務(wù)的讀或?qū)戉]件命令時組織下發(fā)報文到主機(jī),當(dāng)收到來自主機(jī)的報文時解析報文并向界面服務(wù)發(fā)送郵件。
通信模塊任務(wù)優(yōu)先級高于界面服務(wù)處理任務(wù),當(dāng)有通信任務(wù)時先處理通信任務(wù)。
圖7 通信框架圖Fig.7 Framework of communication
從數(shù)據(jù)處理層次考慮,顯示終端的數(shù)據(jù)處理流程如圖8所示,主要分為瀏覽類菜單和整定類菜單的數(shù)據(jù)處理。
圖8 數(shù)據(jù)處理流程圖Fig.8 Flow chart of data processing
瀏覽類菜單只需要讀取數(shù)據(jù),圖中虛框內(nèi)為瀏覽類菜單數(shù)據(jù)處理。整定類菜單除需要讀取數(shù)據(jù)外還支持修改操作。
菜單信息指列表類菜單的序號、名稱、簡稱、單位,這些對于相同的主機(jī)程序是固定不變的,讀取后放在全局?jǐn)?shù)組里。裝置上電讀取主機(jī)循環(huán)冗余校驗(CRC)并判斷CRC是否變化,若CRC變化說明主機(jī)程序變化需要重新從主機(jī)讀取。菜單模型信息從主機(jī)讀取而不在人機(jī)程序定義,可以解決由于主機(jī)程序因升級或非標(biāo)需求,某些定值或遙信開入等,個數(shù)需要增減或名稱需要修改,人機(jī)程序也必須做相應(yīng)修改的問題。這樣一個顯示終端程序可以適用不同的主機(jī)程序,解決了顯示終端的通用性問題。
在刷新菜單模型時需要進(jìn)行漢字顯示,本文使用將二進(jìn)制字庫文件包含到顯示終端片內(nèi)FLASH中的方法。顯示某個漢字時只需將該漢字某種編碼如GB2312編碼通過公式換算,計算出該漢字在字庫文件中的偏移量[13],根據(jù)偏移量找到其相應(yīng)點陣信息位置,取出該漢字的相應(yīng)字庫點陣信息如16號字為32個字節(jié),有了點陣信息即可完成該漢字顯示。使用此種方法任何漢字都能顯示,可以解決因主機(jī)程序升級漢字變化時,顯示終端需要更新字庫的問題,從而也解決了顯示終端的通用性問題。
當(dāng)響應(yīng)按鍵操作進(jìn)入某個菜單時,根據(jù)菜單屬于瀏覽菜單還是整定菜單進(jìn)行畫面任務(wù)處理,對于瀏覽類菜單,首先刷新菜單模型信息,然后再由畫面任務(wù)處理與主機(jī)通信讀取菜單量值信息存于界面內(nèi)存并顯示。
對于整定類菜單,首先進(jìn)行讀取菜單量值并顯示,若進(jìn)行菜單數(shù)據(jù)修改時,數(shù)據(jù)修改后輸入密碼按確認(rèn)鍵操作后將有畫面任務(wù)處理與主機(jī)通信告知主機(jī),主機(jī)判斷修改是否合理并反饋畫面任務(wù)后,顯示修改正確或修改失敗畫面。
本文提出的保護(hù)裝置通用人機(jī)設(shè)計方案,以通用性設(shè)計為前提,不依賴于保護(hù)裝置本體,自帶CPU獨立控制液晶的數(shù)據(jù)信息顯示及按鍵響應(yīng),基于RS-232的串行接口與保護(hù)裝置本體進(jìn)行通信,已通過中國電力科學(xué)研究院檢測,并成功應(yīng)用于配網(wǎng)配電終端保護(hù)裝置中,為保護(hù)裝置通用顯示終端的推廣與應(yīng)用提供了借鑒和使用基礎(chǔ)。