吳 斌,蔣 鵬,陳蒙蒙
(杭州電子科技大學(xué)信息與控制研究所,浙江杭州310018)
隨著經(jīng)濟(jì)的不斷發(fā)展,能源供應(yīng)與經(jīng)濟(jì)發(fā)展間的矛盾日趨嚴(yán)重。響應(yīng)國家節(jié)能減排號召,降低建筑能耗、實(shí)施建筑節(jié)能是大勢所趨。通過構(gòu)建公共建筑能耗監(jiān)測平臺、采集分析能耗數(shù)據(jù),可有效遏制能源浪費(fèi)與提高能源利用率[1]。構(gòu)建能耗監(jiān)測平臺的關(guān)鍵技術(shù)之一是解決能耗數(shù)據(jù)的采集和傳輸問題。傳統(tǒng)的公建能耗數(shù)據(jù)采集器能實(shí)現(xiàn)能耗數(shù)據(jù)的采集和傳輸問題,但其與計(jì)量基表的通信接口較為單一,只支持M-BUS接口基表或者RS-485接口基表。這導(dǎo)致用戶在基表的選擇方面具有局限性、缺乏自由度,后期基表的維護(hù)更換不夠便捷。為解決這些問題,本文介紹了一種基于M-BUS和RS-485的公建能耗數(shù)據(jù)采集器,可同時(shí)使用M-BUS和RS-485接口類型的基表,能支持市面上絕大多數(shù)基表。
公建能耗數(shù)據(jù)采集器的采集對象為建筑物中的各能耗分項(xiàng),主要包括:用電量、用水量、用熱量、用氣量。數(shù)據(jù)采集器需實(shí)現(xiàn)定時(shí)、集中地采集能耗分項(xiàng)數(shù)據(jù),然后處理并發(fā)送至遠(yuǎn)程數(shù)據(jù)中心。公建能耗數(shù)據(jù)采集器由基表通信接口電路、數(shù)據(jù)遠(yuǎn)傳、數(shù)據(jù)處理等部分組成。其中,基表通信接口電路包括M-BUS接口電路和RS-485接口電路,數(shù)據(jù)遠(yuǎn)傳部分通過GPRS模塊實(shí)現(xiàn),數(shù)據(jù)處理部分通過ARM處理器實(shí)現(xiàn)。M-BUS接口電路和ARM處理器的UART3相連,RS-485接口電路和ARM處理器的UART2相連,GPRS模塊和ARM處理器的UART0相連。整個(gè)系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。
圖1 數(shù)據(jù)采集器硬件結(jié)構(gòu)
基表通信接口電路用于數(shù)據(jù)采集器與基表間的通信,M-BUS、RS-485的接口電路設(shè)計(jì)如下。
M-BUS是專為計(jì)量儀表設(shè)計(jì)的總線通信方式,采用主從異步半雙工方式傳輸數(shù)據(jù)。主站(數(shù)據(jù)采集器)向從站(基表)發(fā)送數(shù)據(jù)時(shí)總線采用電壓調(diào)制方式通信,主站發(fā)送邏輯“1”時(shí),總線輸出24~42V之間的一個(gè)Vmark電壓(本數(shù)據(jù)采集器選定的Vmark電壓為30V),發(fā)送邏輯“0”時(shí),總線電壓會在Vmark基礎(chǔ)上拉低12V;主站接收從站數(shù)據(jù)時(shí)總線采用電流調(diào)制方式通信,從站用輸出恒定的1.5mA電流表示邏輯“1”,邏輯“0”是在邏輯“1”的電流基礎(chǔ)上額外增加11~25mA的電流來表示[2]。由于目前還未開發(fā)出M-BUS主站專用的收發(fā)電路集成芯片,所以需根據(jù)M-BUS規(guī)約自主設(shè)計(jì)收發(fā)電路。本設(shè)計(jì)中的M-BUS主站收發(fā)電路采用三極管、高精度電阻、二極管等模擬器件搭建。發(fā)送電路輸入端、接收電路輸出端的信號均為RS-232電平信號,然后RS-232電平信號通過RS-232電平轉(zhuǎn)換芯片MAX3232與ARM處理器的UART3相連。M-BUS接口電路的原理圖如圖2所示。
圖2 M-BUS接口電路原理圖
圖2中的RSRXD3、RSTXD3分別與MAX3232的RS-232電平端相連;M+、M-與可輸出正負(fù)電壓的穩(wěn)壓電源相連;MBUS+、MBUS與M-BUS總線相連。本M-BUS主站收發(fā)電路可驅(qū)動約120塊M-BUS基表。
RS-485半雙工異步通信總線是一種應(yīng)用廣泛的數(shù)據(jù)總線通信方式,其接口電路設(shè)計(jì)相對簡單,采用常規(guī)設(shè)計(jì)即可。本設(shè)計(jì)中的RS-485收發(fā)器件采用SPX3485,最大可支持32個(gè)節(jié)點(diǎn),該芯片的驅(qū)動器輸入端、接收器輸出端與ARM處理器的串口UART2相連;SPX3485的使能控制端與ARM處理器的P1.31引腳相連,用于控制SPX3485接收狀態(tài)與發(fā)送狀態(tài)間的切換。
數(shù)據(jù)遠(yuǎn)傳部分用于數(shù)據(jù)采集器與遠(yuǎn)程數(shù)據(jù)中心的通信,本設(shè)計(jì)采用GPRS方式實(shí)現(xiàn)遠(yuǎn)程通信。GPRS模塊與ARM處理器的串口UART0相連,ARM處理通過向GPRS模塊發(fā)送AT指令來控制GPRS模塊的數(shù)據(jù)收發(fā),GPRS模塊采用杭州愛賽德科技有限公司的A60T模塊。
數(shù)據(jù)處理部分的核心是ARM處理器,要完成數(shù)據(jù)的采集、處理、及遠(yuǎn)傳任務(wù)。ARM處理器采用NXP公司的工業(yè)級高性能嵌入式處理器LPC2368FBD100,該處理器基于ARM公司的ARM7TDMI內(nèi)核,集成眾多外設(shè),單電源供電,性價(jià)比高,可滿足本設(shè)計(jì)需要[3]。本設(shè)計(jì)中處理器供電電路采用的電源芯片為SPX1117M3-3.3;處理器外接12MHz晶振;復(fù)位電路采用專用復(fù)位芯片MAX811EUS-T;RTC外接32.768kHz晶振。
系統(tǒng)軟件需實(shí)現(xiàn)定時(shí)采集能耗數(shù)據(jù),并通過GPRS模塊發(fā)送能耗數(shù)據(jù)至遠(yuǎn)程數(shù)據(jù)中心,以及響應(yīng)遠(yuǎn)程數(shù)據(jù)中心命令的功能。為提高系統(tǒng)可靠性、實(shí)時(shí)性以及簡化程序設(shè)計(jì),本設(shè)計(jì)在ARM處理器LPC2368FBD100上移植了μC/OS-Ⅱ操作系統(tǒng),并在此基礎(chǔ)上增加了隊(duì)列操作的功能[4,5]。
本設(shè)計(jì)中移植的μC/OS-Ⅱ版本為V2.51,系統(tǒng)每秒時(shí)鐘節(jié)拍數(shù)200,時(shí)鐘片長度5ms,處理器運(yùn)行頻率48MHz。系統(tǒng)任務(wù)主要有:數(shù)據(jù)采集任務(wù),GPRS接收任務(wù),GPRS發(fā)送任務(wù)。任務(wù)間的通信采用信號量實(shí)現(xiàn),如圖3所示。
圖3 任務(wù)間通信
數(shù)據(jù)采集任務(wù)負(fù)責(zé)與計(jì)量基表的通信,并將采集到的能耗數(shù)據(jù)添加到GPRS發(fā)送隊(duì)列中等待發(fā)送。數(shù)據(jù)采集任務(wù)可由RTC中斷服務(wù)函數(shù)喚醒,也可由GPRS接收任務(wù)喚醒。RTC中斷服務(wù)函數(shù)可每15分鐘喚醒一次數(shù)據(jù)采集任務(wù),啟動數(shù)據(jù)采集;GPRS接收任務(wù)則在接收到遠(yuǎn)程數(shù)據(jù)中心的采集指令后喚醒數(shù)據(jù)采集任務(wù),啟動數(shù)據(jù)采集。數(shù)據(jù)采集任務(wù)喚醒后依次調(diào)用讀RS-485基表子程序和讀M-BUS基表子程序,最后喚醒GPRS發(fā)送任務(wù)。數(shù)據(jù)采集任務(wù)的流程如圖4所示。
圖4 數(shù)據(jù)采集任務(wù)流程圖
以讀RS-485基表為例,讀基表程序的關(guān)鍵代碼如下:
程序首先從鏈表上獲取一個(gè)含有基表信息的rs485meter數(shù)據(jù)塊,然后調(diào)用函數(shù)createframe函數(shù)根據(jù)基表信息創(chuàng)建控制幀,最后調(diào)用sendframe函數(shù)將控制幀發(fā)送至總線。任務(wù)在發(fā)送完控制幀后會將自身掛起3s,若3s內(nèi)未收到應(yīng)答信息,則表示通信出錯(cuò),程序?qū)⑦M(jìn)行重傳,且最多重傳3次;若收到應(yīng)答信息,則依次調(diào)用uartread、delleadbyte、checksum函數(shù),對收到的幀進(jìn)行去前導(dǎo)字節(jié)、校驗(yàn)等操作,最后提交數(shù)據(jù)幀到GPRSendQ隊(duì)列并進(jìn)入下一輪循環(huán)。
GPRS通信任務(wù)負(fù)責(zé)通過GPRS模塊建立數(shù)據(jù)采集器到遠(yuǎn)程數(shù)據(jù)中心的通信鏈路并收發(fā)數(shù)據(jù)。GPRS模塊與ARM處理器的串口UART0相連,由ARM處理器通過AT指令控制。由于GPRS模塊在1min中內(nèi)無數(shù)據(jù)發(fā)送會進(jìn)入休眠狀態(tài),因此在遠(yuǎn)程數(shù)據(jù)中心向數(shù)據(jù)采集器發(fā)送斷開連接指令前,GPRS模塊需定期(如50s)發(fā)送心跳包給遠(yuǎn)程數(shù)據(jù)中心以保持GPRS連接。GPRS通信任務(wù)含有一個(gè)數(shù)據(jù)發(fā)送隊(duì)列,所有待發(fā)送數(shù)據(jù)需保存在此隊(duì)列中,通過GPRS接收到的數(shù)據(jù)則作為待處理數(shù)據(jù)直接添加到數(shù)據(jù)處理隊(duì)列中。
本文研究開發(fā)了一種基于M-BUS和RS-485的公建能耗數(shù)據(jù)采集器,詳述其軟硬件系統(tǒng)的設(shè)計(jì)。該數(shù)據(jù)采集器運(yùn)行μC/OS-Ⅱ嵌入式操作系統(tǒng),最大可支持約152塊基表通信,能可靠的采集基表數(shù)據(jù)并通過GPRS發(fā)送至遠(yuǎn)程數(shù)據(jù)中心,具有較強(qiáng)的理論意義和現(xiàn)實(shí)意義。今后的工作重點(diǎn)是降低該數(shù)據(jù)采集器的能耗,完善系統(tǒng)功能,進(jìn)一步增強(qiáng)系統(tǒng)穩(wěn)定性。
[1] 龍惟定.建筑節(jié)能與建筑能效管理[M].北京:中國建筑工業(yè)出版社,2005:3-8.
[2] M-Bus Usergroup.The M-Bus A Documentation Rev[DB/OL].http://www.m-bus.com/files/MBDOC48.PDF,1997 -11 -11.
[3] Nxp Semiconductors.Lpc23xx User Manual[DB/OL].http://www.cn.nxp.com/documents/user_manual/UM10211.pdf,2009 -08 -25.
[4] 邵貝貝.μC/OS-Ⅱ嵌入式實(shí)時(shí)操作系統(tǒng)(第二版)[M].北京:北京航空航天大學(xué)出版社,2003:283-316.
[5] 周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程(第二版)[M].北京:北京航空航天大學(xué)出版社,2005:362-377.