基于Si1000的無線M-Bus通信系統(tǒng)
摘要:儀表總線M-Bus協(xié)議是專門為消耗量計(jì)量儀表設(shè)計(jì)的通信標(biāo)準(zhǔn)。無線M-Bus是M-Bus的一個(gè)無線通信標(biāo)準(zhǔn),無需布線。在布線困難的地方,可以選用無線M-Bus進(jìn)行通信。本文介紹了基于Si1000的無線M-Bus通信系統(tǒng)主/從節(jié)點(diǎn)的硬件系統(tǒng)及軟件系統(tǒng),并對(duì)無線M-Bus系統(tǒng)中低功耗的實(shí)現(xiàn)進(jìn)行了探討。
關(guān)鍵詞:無線M-Bus;Si1000;低功耗
引言
有線M-Bus是專為家用儀表數(shù)據(jù)傳輸而設(shè)計(jì)的總線制系統(tǒng),它是一個(gè)層次化的系統(tǒng),由主設(shè)備、若干從設(shè)備和一對(duì)連接線組成。有線M-Bus的提出滿足了公用事業(yè)儀表組網(wǎng)和遠(yuǎn)程抄表的需要,同時(shí)可以滿足遠(yuǎn)程供電需求,在智能小區(qū)的自動(dòng)抄表系統(tǒng)中有廣泛應(yīng)用。可是有線M-Bus系統(tǒng)在網(wǎng)絡(luò)布線施工過程中往往需要破墻掘地,破壞周圍的環(huán)境。因此無線應(yīng)用給它在競爭中帶來優(yōu)勢,易于安裝和維護(hù),不會(huì)對(duì)周圍環(huán)境造成影響。無線M-Bus是專門用于水表、氣表、熱能表、電表和數(shù)據(jù)集中器之間的數(shù)據(jù)無線傳輸?shù)囊粋€(gè)通信標(biāo)準(zhǔn),它正廣泛被歐洲市場所接受。
現(xiàn)在大多數(shù)儀表都是用電池進(jìn)行供電的,因此對(duì)于低功耗的要求比較高。為了延長電池的使用壽命,本文選用低功耗芯片Si1000組建一個(gè)無線M-Bus通信系統(tǒng),并對(duì)Si1000的低功耗性能問題及在軟硬件上的實(shí)現(xiàn)進(jìn)行了分析。
1 無線M-Bus
無線M-Bus標(biāo)準(zhǔn)規(guī)定了儀表和集中器之間的通信。圖1給出了一個(gè)簡單的無線M-Bus通信系統(tǒng),其中集中器作為主節(jié)點(diǎn),儀表作為從節(jié)點(diǎn)。
主節(jié)點(diǎn)和從節(jié)點(diǎn)之間的通信,定義了3種不同的通信模式:
①S-mode靜止模式。S1-mode是從儀表到其他系統(tǒng)單元的單向通信;S1m-mode如同S1,但是數(shù)據(jù)采集裝置不能進(jìn)入低功耗模式;S2-mode是儀表和其他系統(tǒng)單元之間的雙向通信。
②T-mode頻繁傳送模式。T1-mode是從儀表到其他系統(tǒng)單元的單向通信;T2-mode是儀表和其他系統(tǒng)單元之間的雙向通信。
③R-mode是頻繁接收模式。R2-mode是儀表和其他系統(tǒng)單元之間的雙向通信。
當(dāng)儀表能夠和集中器直接進(jìn)行通信時(shí),其他系統(tǒng)單元就是圖1中的集中器??墒窃趯?shí)際應(yīng)用中,從節(jié)點(diǎn)儀表有時(shí)不能直接與主節(jié)點(diǎn)集中器進(jìn)行通信,那么就需要路由節(jié)點(diǎn)來轉(zhuǎn)接它們之間的數(shù)據(jù),此時(shí)的系統(tǒng)單元就是高性能網(wǎng)關(guān)。
2 無線M-Bus收發(fā)系統(tǒng)設(shè)計(jì)
2.1 無線M-Bus收發(fā)系統(tǒng)原理
儀表抄讀無線收發(fā)系統(tǒng)原理框圖如圖2所示。無線數(shù)據(jù)的收發(fā)由無線微控制器Si1000實(shí)現(xiàn)。主節(jié)點(diǎn)Si1000內(nèi)部的發(fā)送模塊將數(shù)據(jù)進(jìn)行編碼處理,以特定的格式經(jīng)天線發(fā)送給接收模塊。從節(jié)點(diǎn)Si1000內(nèi)部的接收模塊接收到有效數(shù)據(jù)后,Si1000內(nèi)部的微處理器通過擴(kuò)展接口讀取外部儀表的數(shù)據(jù),并進(jìn)行相應(yīng)的調(diào)整、轉(zhuǎn)換處理后通過射頻發(fā)送給主節(jié)點(diǎn)。主節(jié)點(diǎn)通過GPRS與集抄中心進(jìn)行通信。
由于采用的是無線微控制器,主/從節(jié)點(diǎn)發(fā)送/接收模塊不需要使用傳統(tǒng)的MCU+RF模塊的設(shè)計(jì)方式,只需要一片Si1000就可以完成射頻通信。
2.2 射頻部分
Si1000作為Si10xx系列的成員之一,在極精簡的5 mm×7 mm封裝中結(jié)合了8051內(nèi)核、工作頻段為240~960 MHz高穿透力的EZRadioPRO RF收發(fā)器、64 KB的Flash和10位ADC。Si1000系列提供優(yōu)越的RF性能,具有最高輸出功率、接收靈敏度以及最低功耗的喚醒轉(zhuǎn)換等特性。該無線微控制器在工作模式下有最低的電流消耗(160μ/MHz),在休眠模式下,以內(nèi)部低頻振蕩器(LFO)作為頻率源的RTC工作時(shí),消耗電流低至315nA。在深度休眠模式下,僅需25 nA工作電流,且不會(huì)丟失RAM數(shù)據(jù)。圖3給出了射頻部分硬件原理圖。
從節(jié)點(diǎn)中,儀表與芯片Si1000的UART串口引腳P0.4/TX和P0.5/RX相連。主節(jié)點(diǎn)芯片Si1000的UART串口引腳P0.4/TX和P0.5/RX與集中器進(jìn)行連接,集中器內(nèi)部MCU串口通過RS232與GPRS模塊相連,借助移動(dòng)網(wǎng)和Internet實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸。圖中可編程負(fù)載電容是可集成的,L1~L6和C1~C5的值是由頻率帶寬、天線阻抗和供給電壓決定的。
無線收發(fā)模塊的通信是以數(shù)據(jù)包的形式發(fā)送的,無線發(fā)送程序負(fù)責(zé)寫入數(shù)據(jù),參考無線M-Bus通信協(xié)議,為數(shù)據(jù)加上前導(dǎo)碼、同步字、數(shù)據(jù)載荷長度及CRC校驗(yàn)字節(jié),形成數(shù)據(jù)包將其發(fā)送出去。為保證接收到數(shù)據(jù)的正確性,無線接收程序負(fù)責(zé)接收數(shù)據(jù)包并檢驗(yàn)CRC字節(jié)。
2.3 無線M-Bus協(xié)議棧實(shí)現(xiàn)
協(xié)議棧如圖4所示。物理層定義了位是如何編碼和傳輸?shù)摹F調(diào)制解調(diào)器的特性(碼率、前導(dǎo)碼和同步字)和RF參數(shù)(調(diào)制、中心頻率和頻率偏移)。物理層是通過硬件和嵌入式軟件結(jié)合來實(shí)現(xiàn)的,EZRadioPRO實(shí)現(xiàn)了所有RF和調(diào)制解調(diào)器的功能。MbusPhy.c模塊提供SPI接口、編碼/解碼、塊的讀/寫和數(shù)據(jù)包處理,并且管理收發(fā)器的狀態(tài)。
無線M-Bus數(shù)據(jù)鏈路層是在MbusLink.c模塊上實(shí)現(xiàn)的。M-Bus應(yīng)用程序編程接口由公共函數(shù)組成,這些公共函數(shù)可以從主線程的應(yīng)用層調(diào)用,MbusLink模塊也實(shí)現(xiàn)了數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層規(guī)定了數(shù)據(jù)的格式,為數(shù)據(jù)加上頭文件和循環(huán)冗余校驗(yàn),并且將數(shù)據(jù)從應(yīng)用程序TX緩沖區(qū)復(fù)制到MbusPhy TX緩沖區(qū)。
Si1000的射頻芯片為發(fā)送和接收提供了一個(gè)64字節(jié)FIFO。在數(shù)據(jù)鏈路層實(shí)現(xiàn)了數(shù)據(jù)包的發(fā)送和接收,數(shù)據(jù)包發(fā)送和接收流程圖如圖5所示。
在發(fā)送時(shí),計(jì)算編碼字節(jié)的總數(shù)。如果編碼字節(jié)總數(shù)(包括前導(dǎo)碼)小于64字節(jié),那么將整個(gè)數(shù)據(jù)包寫到FIFO,并且只有包發(fā)送中斷有效。大多數(shù)短包將在一個(gè)FIF0轉(zhuǎn)移中被發(fā)送。如果編碼字節(jié)的數(shù)量大于64字節(jié),那么需要多次FIFO轉(zhuǎn)移發(fā)送數(shù)據(jù)包。將前64個(gè)字節(jié)寫到FI FO,包發(fā)送中斷和TX FIFO幾乎空中斷有效,把TXFIFO幾乎空閾值設(shè)置為10字節(jié)。在每一個(gè)nIRQ之前,讀取狀態(tài)2寄存器。首先檢查包發(fā)送位,如果數(shù)據(jù)包沒有被完全發(fā)送,那么將編碼數(shù)據(jù)接下來的32字節(jié)寫到FIFO,重復(fù)上述過程直到所有編碼字節(jié)都被寫到FIFO,并且包發(fā)送中斷發(fā)生。
在接收時(shí),最初只有同步字中斷是有效的。接收同步字后,同步字中斷無效且FIFO幾乎滿中斷有效。FIFO幾乎滿閾值設(shè)置到2字節(jié),首個(gè)FIFO幾乎滿中斷用于確認(rèn)這兩個(gè)長度字節(jié)何時(shí)已收到。一旦接收到這個(gè)長度,那么解碼這個(gè)長度且計(jì)算出編碼字節(jié)的數(shù)目,然后將RXFIFO幾乎滿閾值設(shè)置到54字節(jié),RX FIFO幾乎滿中斷和有效數(shù)據(jù)包中斷有效。在接收到一個(gè)有效數(shù)據(jù)包中斷后,MCU等待接收FIFO幾乎滿中斷,然后從接收FIFO讀取32字節(jié)。重復(fù)上述過程直到全部字節(jié)有效載荷被接收。在CRC錯(cuò)誤的情況下,MCU將復(fù)位接收FIFO并丟棄數(shù)據(jù)包。
3 無線M-Bus系統(tǒng)低功耗的實(shí)現(xiàn)
為了延長電池的使用壽命,Si1000在工作過程中并不是一直運(yùn)行的。當(dāng)沒有數(shù)據(jù)要發(fā)送時(shí),Si1000處于休眠狀態(tài),其內(nèi)部的MCU和射頻都是關(guān)閉的,只有定時(shí)器在工作。經(jīng)過一定時(shí)間后,內(nèi)部MCU喚醒偵聽載波,判斷是否有數(shù)據(jù)需要它來發(fā)送,當(dāng)有數(shù)據(jù)需要發(fā)送時(shí),Si1000發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)完成后,關(guān)閉MCU和射頻。這樣重復(fù)進(jìn)行,只有數(shù)據(jù)發(fā)送時(shí)它才進(jìn)行工作,否則一直處于休眠狀態(tài),這樣就大大延長了電池的使用壽命。
結(jié)語
無線M-Bus是一種專門用于各種消費(fèi)類型儀表的遠(yuǎn)程讀數(shù)或讀取相關(guān)信息的通信標(biāo)準(zhǔn)。將無線M-Bus與Si1000應(yīng)用到各種消費(fèi)儀表上,可將數(shù)據(jù)收集并傳到中心集中器,然后通過GPRS傳送到集抄中心進(jìn)行相應(yīng)的處理。這樣就可以實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)實(shí)時(shí)采集、巡檢和監(jiān)控等功能。無線M-Bus在我國的應(yīng)用還處于起步階段,但考慮到它在計(jì)量應(yīng)用領(lǐng)域的優(yōu)勢,應(yīng)用前景十分廣闊。