新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 需求側(cè)管理型能效監(jiān)測終端的設(shè)計

需求側(cè)管理型能效監(jiān)測終端的設(shè)計

作者:謝旭光 陳迪 時間:2014-02-26 來源:電子產(chǎn)品世界 收藏

  引言

本文引用地址:http://butianyuan.cn/article/233866.htm

  在能效監(jiān)測現(xiàn)場,是主要實現(xiàn)采集物理量(溫度、流量、電量等)的設(shè)備,且是用戶交互的唯一硬件設(shè)備,傳統(tǒng)的等同于能效采集終端,與用戶的交互很少。在能效體系中,作為需求側(cè)的主要設(shè)備,需要承擔(dān)與監(jiān)控主站的雙向交互,以及與用戶的雙向交互任務(wù)。本文研究并實現(xiàn)了一種基于多媒體顯示、具備雙向交互功能的能效監(jiān)測終端,為能效的提供了可靠的實現(xiàn)手段。

  1 硬件設(shè)計

  首先本文從硬件組成上來分析實現(xiàn)能效監(jiān)測終端的細節(jié)。終端由以下幾大核心硬件單元組成:具備多媒體協(xié)處理器的中央處理器Freescale i.mx51、LVDS液晶顯示接口、以太網(wǎng)RJ45、433MHz微功率無線、GPRS接口、基于RS485的數(shù)字通信接口。硬件組成原理如圖1所示。

  如圖1所示,硬件設(shè)計總體包含三部分,即數(shù)據(jù)通信接口部分、核心處理部分、人機交互部分。其中:

  1)數(shù)據(jù)通信接口包含2個RS485串口,用于連接數(shù)字型傳感器;1個R232用于本地維護;1個RJ45以太網(wǎng)接口,用于與后臺主站的遠程連接;1路433MHz的微功率無線通信接口,用于無線數(shù)據(jù)采集;1路GPRS通信接口,用于遠程連接后臺主站。可以看出,為了增強通信適應(yīng)性,終端在前端采集上預(yù)置了多路獨立串口,后端遠程通信預(yù)置了以太網(wǎng)和GPRS接口,而這些接口的基礎(chǔ)均為獨立串口。

  2)核心處理部分由i.mx51、NAND FLASH、SDRAM構(gòu)成最小系統(tǒng),NAND FLASH存儲系統(tǒng)映像和文件系統(tǒng),SDRAM為系統(tǒng)程序執(zhí)行提供內(nèi)存,在系統(tǒng)啟動階段為程序重定向提供運行空間。

  3)人機交互部分由LVDS液晶接口和觸摸控制接口組成,LVDS液晶接口具備很強的抗電磁干擾特性,數(shù)據(jù)防干擾能力強;觸摸屏接口采用在工業(yè)領(lǐng)域應(yīng)用廣泛的電阻式觸摸屏接口,以適應(yīng)復(fù)雜苛刻的現(xiàn)場環(huán)境。

  除以上幾部分,終端電源采用線性電源方案設(shè)計,如圖2所示。

  2 嵌入式軟件設(shè)計

  能效監(jiān)測終端的軟件由啟動程序、嵌入式Linux操作系統(tǒng)層、中間件層、應(yīng)用程序?qū)咏M成。

  2.1 啟動程序bootloader設(shè)計

  啟動程序bootloader是板級嵌入式軟件系統(tǒng)的基礎(chǔ),終端上電執(zhí)行的第一部分程序便是bootloader。實現(xiàn)終端主要硬件接口的驅(qū)動、系統(tǒng)啟動代碼等。系統(tǒng)啟動代碼完成處理器初始化、內(nèi)存初始化、堆??臻g準(zhǔn)備、程序代碼重定向等系統(tǒng)啟動的準(zhǔn)備工作[1]。啟動程序流程如圖3所示:

  以上流程較為特殊的地方在于程序重定向的過程:i.mx51冷啟動后,NAND FLASH控制器中有2K 的SRAM會被用作boot RAM,根據(jù)硬件設(shè)計如果支持從NAND FLASH啟動的話,i.mx51會將NAND FLASH中的前2K的數(shù)據(jù)自動拷貝到NAND FLASH 控制器中的 RAM中,并且自動跳轉(zhuǎn)到該2K RAM的開始地址 0xD0000000開始執(zhí)行。bootloader固件被燒寫到NAND FLASH的0地址處,所以bootloader的前2K代碼被拷貝到0xD0000000。

  2.2 特殊的驅(qū)動程序設(shè)計

  能效監(jiān)測終端的軟件基于Linux系統(tǒng)設(shè)計完成,而典型的Linux系統(tǒng)框架具備常用的串口UART驅(qū)動、FLASH驅(qū)動等。但是對于較為特殊的以太網(wǎng)驅(qū)動、433MHz驅(qū)動,需要做特殊的驅(qū)動程序設(shè)計,特征如下:

  a)本文所研究的能效監(jiān)測終端在以太網(wǎng)通信上有較特殊的要求,因此需做特殊的移植和修改,使得以太網(wǎng)的驅(qū)動支持直接收發(fā)以太網(wǎng)數(shù)據(jù)包?;舅悸窞楸3衷序?qū)動框架不變,(1)加入以太網(wǎng)讀寫接口;(2)修改以太網(wǎng)數(shù)據(jù)發(fā)送接口,截斷原來的發(fā)送數(shù)據(jù)接口;(3)修改以太網(wǎng)數(shù)據(jù)接收接口,使得數(shù)據(jù)接收后不直接向上層遞交而是送入自定義內(nèi)存中。

  b)433MHz的驅(qū)動實現(xiàn)為字符型驅(qū)動,驅(qū)動的工作流程為:初始化設(shè)備即初始化對應(yīng)管腳并使能中斷;按照433MHz的通信協(xié)議構(gòu)建數(shù)據(jù)包并發(fā)送給無線基帶芯片Si4432;當(dāng)Si4432接收到數(shù)據(jù)與協(xié)議包格式不符時,產(chǎn)生中斷,重發(fā)數(shù)據(jù)。

  2.3 GUI中間件

  為了實現(xiàn),顯示交互是終端必備的功能。本文研究實現(xiàn)了基于framebuffer的輕量型GUI中間件,是下一步編寫圖形應(yīng)用程序的基礎(chǔ)。本文實現(xiàn)的輕量型GUI中間件,具有如下的幾個組成部分:

  1)用戶交互模塊,為應(yīng)用程序提供API接口函數(shù),屏蔽了GUI的實現(xiàn)細節(jié)。

  2)對象管理,實現(xiàn)對窗口環(huán)境中的邏輯對象的組織管理。包括對象的添加和刪除,GUI窗口顯示的維護,如窗口切換、焦點切換、對象的隱藏和恢復(fù)等操作引發(fā)的對象屬性的更新,還有對不同控件的各種事件的響應(yīng)。

  3)基本圖形組件,實現(xiàn)了對顯示輸出設(shè)備的操作。一般獨立于具體的設(shè)備驅(qū)動程序,與物理設(shè)備之間形成“設(shè)備抽象層”。

  4)消息驅(qū)動機制,負(fù)責(zé)GUI的消息接收和與其它任務(wù)的通訊以及消息隊列的維護。

  5)定時器及顯存管理,定時器用于向服務(wù)器發(fā)送定時器消息,主要用于消息隊列的管理和定時等。顯存管理主要用于消除顯示過程中出現(xiàn)的屏幕閃爍現(xiàn)象。

  消息驅(qū)動機制是輕量型GUI中間件最大化利用有限資源實現(xiàn)GUI操作的重要手段[3],硬件設(shè)備(比如按鍵)產(chǎn)生動作事件,系統(tǒng)生成消息,消息分發(fā)至對應(yīng)的消息處理任務(wù)。在未收到消息時,消息處理任務(wù)維持消息隊列循環(huán)等待,如圖4所示。

  GUI中間件采用了客戶/服務(wù)器的工作模式,為了減輕服務(wù)器端的負(fù)荷,本文的GUI只是把輸入設(shè)備事件處理和顯示輸出任務(wù)交給服務(wù)器,以此提高執(zhí)行速度[4]。

  應(yīng)用程序調(diào)用GUI中間件的圖形庫、組件庫等,調(diào)用機制與windows的消息響應(yīng)機制類似。如調(diào)用圖表繪制組件,應(yīng)用程序前端顯示刷新組件,應(yīng)用程序后端進入消息循環(huán),等待數(shù)據(jù)處理任務(wù)的消息,實現(xiàn)數(shù)據(jù)的響應(yīng)刷新。

  2.4 應(yīng)用程序及數(shù)據(jù)傳輸協(xié)議

  終端具備三大主體功能:數(shù)據(jù)采集、數(shù)據(jù)處理和存儲、數(shù)據(jù)顯示與通信。借助硬件和底層軟件的支持,應(yīng)用程序?qū)崿F(xiàn)流程如下圖4。

  應(yīng)用程序由圖形顯示模塊、服務(wù)器交互通信模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)分析和存儲模塊、異步數(shù)據(jù)通信模塊等組成。其中,與服務(wù)器采用優(yōu)化的JSON協(xié)議作為基礎(chǔ)協(xié)議,實現(xiàn)數(shù)據(jù)的實時同步更新。

  JSON是一種輕量級的數(shù)據(jù)通信協(xié)議,一定程度上類似XML協(xié)議,但支持的數(shù)據(jù)格式更加廣泛,通信更加高效[2]。終端實現(xiàn)JSON協(xié)議解析,主要依靠兩個解析類實現(xiàn):JSONObject和JSONArray。其中,JSONObject用于把對象型的JSON數(shù)據(jù)轉(zhuǎn)化成JSONObject對象,然后使用get系列方法獲取對象屬性的數(shù)據(jù),最常用的方法是getString;JSONArray用于把數(shù)組型的JSON數(shù)據(jù)轉(zhuǎn)化成JSONArray對象,該類所提供方法和JSONObject類基本相同,只不過其中采用的get系列方法的參數(shù)都是整型,代表數(shù)組型數(shù)據(jù)的位置索引。

  各功能模塊實現(xiàn)為輕量級線程,線程間采用管道、信號量等進行通信。借組MySQL數(shù)據(jù)庫實現(xiàn)對能耗數(shù)據(jù)的存儲。

  終端做為需求側(cè)管理的終端設(shè)備,需要維持與后臺主站的穩(wěn)定網(wǎng)絡(luò)連接,此部分采用獨立的線程負(fù)責(zé)處理網(wǎng)絡(luò)連接,監(jiān)測連接狀態(tài),斷線重連;采用獨立的數(shù)據(jù)收發(fā)線程,避免數(shù)據(jù)的擁塞,提高響應(yīng)的實時性。

  數(shù)據(jù)的變化,均在界面定時器的統(tǒng)一調(diào)度下,進行顯示的同步以及按鍵操作的響應(yīng)。

  3 終端軟件優(yōu)化

  對能效監(jiān)測終端而言,因為其數(shù)據(jù)集中度高,且頻繁進行數(shù)據(jù)通信,因此優(yōu)化軟件實現(xiàn),提高性能是十分重要的工作。結(jié)合實際研發(fā)過程,對所涉及到的軟件優(yōu)化技術(shù)進行介紹:

  1)異步通信優(yōu)化[5]:在能效監(jiān)測終端的數(shù)據(jù)流向中,采集數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至服務(wù)器,通常比較耗時,同時本地顯示的響應(yīng)卻很快。正確的做法是在新的線程中準(zhǔn)備好數(shù)據(jù),然后再通知主線程異步的獲取數(shù)據(jù)并顯示。

  2)避免內(nèi)存泄露[5]:內(nèi)存泄露指的是由于某些原因?qū)е孪到y(tǒng)內(nèi)存過度消耗的問題。在內(nèi)存資源有限的能效監(jiān)測終端中,內(nèi)存泄露尤其重要。避免內(nèi)存泄露的方法在本文所研究的能效監(jiān)測終端軟件中包括:程序邏輯的內(nèi)存泄露,即注意新創(chuàng)建對象在使用完后一定要銷毀,即使設(shè)置為NULL,也不能保證系統(tǒng)垃圾回收器能夠回收這些對象的資源;在存儲數(shù)據(jù)時使用到了數(shù)據(jù)庫,在使用數(shù)據(jù)庫時如果沒有關(guān)閉游標(biāo),將會造成系統(tǒng)運行速度變慢;位圖資源在不使用時,應(yīng)該先調(diào)用recycle方法釋放內(nèi)存,然后再將其設(shè)置NULL。

  4 結(jié)語

  本文對需求側(cè)管理型能效監(jiān)測終端的設(shè)計進行了深入研究。通過對終端的軟硬件進行方案設(shè)計,并最終實現(xiàn)了的軟硬件設(shè)計。在實際應(yīng)用中,需求側(cè)管理型能效監(jiān)測終端,不僅具備能效數(shù)據(jù)采集基礎(chǔ)功能,同時還具備能效數(shù)據(jù)圖形化顯示,遠程監(jiān)控,需求側(cè)響應(yīng)功能,可用于實現(xiàn)依據(jù)能效情況安排生產(chǎn)調(diào)度,實現(xiàn)能效預(yù)警等功能[6]。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉