需求側(cè)管理型能效監(jiān)測(cè)終端的設(shè)計(jì)
引言
本文引用地址:http://www.ex-cimer.com/article/233866.htm在能效監(jiān)測(cè)現(xiàn)場(chǎng),能效監(jiān)測(cè)終端是主要實(shí)現(xiàn)采集物理量(溫度、流量、電量等)的設(shè)備,且是用戶交互的唯一硬件設(shè)備,傳統(tǒng)的能效監(jiān)測(cè)終端等同于能效采集終端,與用戶的交互很少。在能效需求側(cè)管理體系中,作為需求側(cè)的主要設(shè)備,能效監(jiān)測(cè)終端需要承擔(dān)與監(jiān)控主站的雙向交互,以及與用戶的雙向交互任務(wù)。本文研究并實(shí)現(xiàn)了一種基于多媒體顯示、具備雙向交互功能的能效監(jiān)測(cè)終端,為能效的需求側(cè)管理提供了可靠的實(shí)現(xiàn)手段。
1 硬件設(shè)計(jì)
首先本文從硬件組成上來分析實(shí)現(xiàn)能效監(jiān)測(cè)終端的細(xì)節(jié)。終端由以下幾大核心硬件單元組成:具備多媒體協(xié)處理器的中央處理器Freescale i.mx51、LVDS液晶顯示接口、以太網(wǎng)RJ45、433MHz微功率無線、GPRS接口、基于RS485的數(shù)字通信接口。硬件組成原理如圖1所示。
如圖1所示,硬件設(shè)計(jì)總體包含三部分,即數(shù)據(jù)通信接口部分、核心處理部分、人機(jī)交互部分。其中:
1)數(shù)據(jù)通信接口包含2個(gè)RS485串口,用于連接數(shù)字型傳感器;1個(gè)R232用于本地維護(hù);1個(gè)RJ45以太網(wǎng)接口,用于與后臺(tái)主站的遠(yuǎn)程連接;1路433MHz的微功率無線通信接口,用于無線數(shù)據(jù)采集;1路GPRS通信接口,用于遠(yuǎn)程連接后臺(tái)主站。可以看出,為了增強(qiáng)通信適應(yīng)性,終端在前端采集上預(yù)置了多路獨(dú)立串口,后端遠(yuǎn)程通信預(yù)置了以太網(wǎng)和GPRS接口,而這些接口的基礎(chǔ)均為獨(dú)立串口。
2)核心處理部分由i.mx51、NAND FLASH、SDRAM構(gòu)成最小系統(tǒng),NAND FLASH存儲(chǔ)系統(tǒng)映像和文件系統(tǒng),SDRAM為系統(tǒng)程序執(zhí)行提供內(nèi)存,在系統(tǒng)啟動(dòng)階段為程序重定向提供運(yùn)行空間。
3)人機(jī)交互部分由LVDS液晶接口和觸摸控制接口組成,LVDS液晶接口具備很強(qiáng)的抗電磁干擾特性,數(shù)據(jù)防干擾能力強(qiáng);觸摸屏接口采用在工業(yè)領(lǐng)域應(yīng)用廣泛的電阻式觸摸屏接口,以適應(yīng)復(fù)雜苛刻的現(xiàn)場(chǎng)環(huán)境。
除以上幾部分,終端電源采用線性電源方案設(shè)計(jì),如圖2所示。
2 嵌入式軟件設(shè)計(jì)
能效監(jiān)測(cè)終端的軟件由啟動(dòng)程序、嵌入式Linux操作系統(tǒng)層、中間件層、應(yīng)用程序?qū)咏M成。
2.1 啟動(dòng)程序bootloader設(shè)計(jì)
啟動(dòng)程序bootloader是板級(jí)嵌入式軟件系統(tǒng)的基礎(chǔ),終端上電執(zhí)行的第一部分程序便是bootloader。實(shí)現(xiàn)終端主要硬件接口的驅(qū)動(dòng)、系統(tǒng)啟動(dòng)代碼等。系統(tǒng)啟動(dòng)代碼完成處理器初始化、內(nèi)存初始化、堆棧空間準(zhǔn)備、程序代碼重定向等系統(tǒng)啟動(dòng)的準(zhǔn)備工作[1]。啟動(dòng)程序流程如圖3所示:
以上流程較為特殊的地方在于程序重定向的過程:i.mx51冷啟動(dòng)后,NAND FLASH控制器中有2K 的SRAM會(huì)被用作boot RAM,根據(jù)硬件設(shè)計(jì)如果支持從NAND FLASH啟動(dòng)的話,i.mx51會(huì)將NAND FLASH中的前2K的數(shù)據(jù)自動(dòng)拷貝到NAND FLASH 控制器中的 RAM中,并且自動(dòng)跳轉(zhuǎn)到該2K RAM的開始地址 0xD0000000開始執(zhí)行。bootloader固件被燒寫到NAND FLASH的0地址處,所以bootloader的前2K代碼被拷貝到0xD0000000。
2.2 特殊的驅(qū)動(dòng)程序設(shè)計(jì)
能效監(jiān)測(cè)終端的軟件基于Linux系統(tǒng)設(shè)計(jì)完成,而典型的Linux系統(tǒng)框架具備常用的串口UART驅(qū)動(dòng)、FLASH驅(qū)動(dòng)等。但是對(duì)于較為特殊的以太網(wǎng)驅(qū)動(dòng)、433MHz驅(qū)動(dòng),需要做特殊的驅(qū)動(dòng)程序設(shè)計(jì),特征如下:
a)本文所研究的能效監(jiān)測(cè)終端在以太網(wǎng)通信上有較特殊的要求,因此需做特殊的移植和修改,使得以太網(wǎng)的驅(qū)動(dòng)支持直接收發(fā)以太網(wǎng)數(shù)據(jù)包?;舅悸窞楸3衷序?qū)動(dòng)框架不變,(1)加入以太網(wǎng)讀寫接口;(2)修改以太網(wǎng)數(shù)據(jù)發(fā)送接口,截?cái)嘣瓉淼陌l(fā)送數(shù)據(jù)接口;(3)修改以太網(wǎng)數(shù)據(jù)接收接口,使得數(shù)據(jù)接收后不直接向上層遞交而是送入自定義內(nèi)存中。
b)433MHz的驅(qū)動(dòng)實(shí)現(xiàn)為字符型驅(qū)動(dòng),驅(qū)動(dòng)的工作流程為:初始化設(shè)備即初始化對(duì)應(yīng)管腳并使能中斷;按照433MHz的通信協(xié)議構(gòu)建數(shù)據(jù)包并發(fā)送給無線基帶芯片Si4432;當(dāng)Si4432接收到數(shù)據(jù)與協(xié)議包格式不符時(shí),產(chǎn)生中斷,重發(fā)數(shù)據(jù)。
2.3 GUI中間件
為了實(shí)現(xiàn)需求側(cè)管理,顯示交互是終端必備的功能。本文研究實(shí)現(xiàn)了基于framebuffer的輕量型GUI中間件,是下一步編寫圖形應(yīng)用程序的基礎(chǔ)。本文實(shí)現(xiàn)的輕量型GUI中間件,具有如下的幾個(gè)組成部分:
1)用戶交互模塊,為應(yīng)用程序提供API接口函數(shù),屏蔽了GUI的實(shí)現(xiàn)細(xì)節(jié)。
2)對(duì)象管理,實(shí)現(xiàn)對(duì)窗口環(huán)境中的邏輯對(duì)象的組織管理。包括對(duì)象的添加和刪除,GUI窗口顯示的維護(hù),如窗口切換、焦點(diǎn)切換、對(duì)象的隱藏和恢復(fù)等操作引發(fā)的對(duì)象屬性的更新,還有對(duì)不同控件的各種事件的響應(yīng)。
3)基本圖形組件,實(shí)現(xiàn)了對(duì)顯示輸出設(shè)備的操作。一般獨(dú)立于具體的設(shè)備驅(qū)動(dòng)程序,與物理設(shè)備之間形成“設(shè)備抽象層”。
4)消息驅(qū)動(dòng)機(jī)制,負(fù)責(zé)GUI的消息接收和與其它任務(wù)的通訊以及消息隊(duì)列的維護(hù)。
5)定時(shí)器及顯存管理,定時(shí)器用于向服務(wù)器發(fā)送定時(shí)器消息,主要用于消息隊(duì)列的管理和定時(shí)等。顯存管理主要用于消除顯示過程中出現(xiàn)的屏幕閃爍現(xiàn)象。
消息驅(qū)動(dòng)機(jī)制是輕量型GUI中間件最大化利用有限資源實(shí)現(xiàn)GUI操作的重要手段[3],硬件設(shè)備(比如按鍵)產(chǎn)生動(dòng)作事件,系統(tǒng)生成消息,消息分發(fā)至對(duì)應(yīng)的消息處理任務(wù)。在未收到消息時(shí),消息處理任務(wù)維持消息隊(duì)列循環(huán)等待,如圖4所示。
GUI中間件采用了客戶/服務(wù)器的工作模式,為了減輕服務(wù)器端的負(fù)荷,本文的GUI只是把輸入設(shè)備事件處理和顯示輸出任務(wù)交給服務(wù)器,以此提高執(zhí)行速度[4]。
應(yīng)用程序調(diào)用GUI中間件的圖形庫、組件庫等,調(diào)用機(jī)制與windows的消息響應(yīng)機(jī)制類似。如調(diào)用圖表繪制組件,應(yīng)用程序前端顯示刷新組件,應(yīng)用程序后端進(jìn)入消息循環(huán),等待數(shù)據(jù)處理任務(wù)的消息,實(shí)現(xiàn)數(shù)據(jù)的響應(yīng)刷新。
2.4 應(yīng)用程序及數(shù)據(jù)傳輸協(xié)議
終端具備三大主體功能:數(shù)據(jù)采集、數(shù)據(jù)處理和存儲(chǔ)、數(shù)據(jù)顯示與通信。借助硬件和底層軟件的支持,應(yīng)用程序?qū)崿F(xiàn)流程如下圖4。
應(yīng)用程序由圖形顯示模塊、服務(wù)器交互通信模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)分析和存儲(chǔ)模塊、異步數(shù)據(jù)通信模塊等組成。其中,與服務(wù)器采用優(yōu)化的JSON協(xié)議作為基礎(chǔ)協(xié)議,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步更新。
JSON是一種輕量級(jí)的數(shù)據(jù)通信協(xié)議,一定程度上類似XML協(xié)議,但支持的數(shù)據(jù)格式更加廣泛,通信更加高效[2]。終端實(shí)現(xiàn)JSON協(xié)議解析,主要依靠兩個(gè)解析類實(shí)現(xiàn):JSONObject和JSONArray。其中,JSONObject用于把對(duì)象型的JSON數(shù)據(jù)轉(zhuǎn)化成JSONObject對(duì)象,然后使用get系列方法獲取對(duì)象屬性的數(shù)據(jù),最常用的方法是getString;JSONArray用于把數(shù)組型的JSON數(shù)據(jù)轉(zhuǎn)化成JSONArray對(duì)象,該類所提供方法和JSONObject類基本相同,只不過其中采用的get系列方法的參數(shù)都是整型,代表數(shù)組型數(shù)據(jù)的位置索引。
各功能模塊實(shí)現(xiàn)為輕量級(jí)線程,線程間采用管道、信號(hào)量等進(jìn)行通信。借組MySQL數(shù)據(jù)庫實(shí)現(xiàn)對(duì)能耗數(shù)據(jù)的存儲(chǔ)。
終端做為需求側(cè)管理的終端設(shè)備,需要維持與后臺(tái)主站的穩(wěn)定網(wǎng)絡(luò)連接,此部分采用獨(dú)立的線程負(fù)責(zé)處理網(wǎng)絡(luò)連接,監(jiān)測(cè)連接狀態(tài),斷線重連;采用獨(dú)立的數(shù)據(jù)收發(fā)線程,避免數(shù)據(jù)的擁塞,提高響應(yīng)的實(shí)時(shí)性。
數(shù)據(jù)的變化,均在界面定時(shí)器的統(tǒng)一調(diào)度下,進(jìn)行顯示的同步以及按鍵操作的響應(yīng)。
3 終端軟件優(yōu)化
對(duì)能效監(jiān)測(cè)終端而言,因?yàn)槠鋽?shù)據(jù)集中度高,且頻繁進(jìn)行數(shù)據(jù)通信,因此優(yōu)化軟件實(shí)現(xiàn),提高性能是十分重要的工作。結(jié)合實(shí)際研發(fā)過程,對(duì)所涉及到的軟件優(yōu)化技術(shù)進(jìn)行介紹:
1)異步通信優(yōu)化[5]:在能效監(jiān)測(cè)終端的數(shù)據(jù)流向中,采集數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至服務(wù)器,通常比較耗時(shí),同時(shí)本地顯示的響應(yīng)卻很快。正確的做法是在新的線程中準(zhǔn)備好數(shù)據(jù),然后再通知主線程異步的獲取數(shù)據(jù)并顯示。
2)避免內(nèi)存泄露[5]:內(nèi)存泄露指的是由于某些原因?qū)е孪到y(tǒng)內(nèi)存過度消耗的問題。在內(nèi)存資源有限的能效監(jiān)測(cè)終端中,內(nèi)存泄露尤其重要。避免內(nèi)存泄露的方法在本文所研究的能效監(jiān)測(cè)終端軟件中包括:程序邏輯的內(nèi)存泄露,即注意新創(chuàng)建對(duì)象在使用完后一定要銷毀,即使設(shè)置為NULL,也不能保證系統(tǒng)垃圾回收器能夠回收這些對(duì)象的資源;在存儲(chǔ)數(shù)據(jù)時(shí)使用到了數(shù)據(jù)庫,在使用數(shù)據(jù)庫時(shí)如果沒有關(guān)閉游標(biāo),將會(huì)造成系統(tǒng)運(yùn)行速度變慢;位圖資源在不使用時(shí),應(yīng)該先調(diào)用recycle方法釋放內(nèi)存,然后再將其設(shè)置NULL。
4 結(jié)語
本文對(duì)需求側(cè)管理型能效監(jiān)測(cè)終端的設(shè)計(jì)進(jìn)行了深入研究。通過對(duì)終端的軟硬件進(jìn)行方案設(shè)計(jì),并最終實(shí)現(xiàn)了的軟硬件設(shè)計(jì)。在實(shí)際應(yīng)用中,需求側(cè)管理型能效監(jiān)測(cè)終端,不僅具備能效數(shù)據(jù)采集基礎(chǔ)功能,同時(shí)還具備能效數(shù)據(jù)圖形化顯示,遠(yuǎn)程監(jiān)控,需求側(cè)響應(yīng)功能,可用于實(shí)現(xiàn)依據(jù)能效情況安排生產(chǎn)調(diào)度,實(shí)現(xiàn)能效預(yù)警等功能[6]。
評(píng)論