摘 要: 物聯(lián)網(wǎng)智能信息橋是一種在物聯(lián)網(wǎng)中實現(xiàn)聯(lián)網(wǎng)設(shè)備之間信息兼容與匹配的橋接設(shè)備,主要具備設(shè)備互聯(lián)、接口匹配、信息打包轉(zhuǎn)換等功能,其中接口匹配包括接口速率匹配、接口協(xié)議匹配及接口校驗匹配等功能。目前可接入的物聯(lián)網(wǎng)絡(luò)設(shè)備沒有統(tǒng)一的標準。通過對物聯(lián)網(wǎng)信息橋的分析和研究,設(shè)計實現(xiàn)了一款物聯(lián)網(wǎng)智能信息橋(簡稱IBOI)用于實現(xiàn)各種設(shè)備的互聯(lián)互通,IBOI成本低、功能強,在江蘇省級和蘇州市級等項目的使用中取得了良好的效果。
關(guān)鍵詞: IBOI; 協(xié)議匹配; 速率匹配; 校驗匹配
中圖分類號:TP393 文獻標志碼:B 文章編號:1006-8228(2013)12-27-03
Design and implementation of intelligent information bridge based on net of things
Cao Zhenhua, Zu Baoming
(SuZhou Institute of TrIBOIe Commerce, Suzhou, Jiangsu 215009, China)
Abstract: Intelligent information bridge is a information compatible device in the Internet of things, which mainly has functions such as equipment interconnection, interface matching, information packed conversion and the interface matching including rate matching, protocol matching and check matching and so on. There is no uniform standard about the accessible equipment. Through the analysis and research on Internet information bridge, an intelligent information bridge(IBOI) is designed, which has been used in Jiangsu provincial, Suzhou municipal level projects and achieved good results.
Key words: IBOI; protocol matching; rate matching; check matching
0 引言
物聯(lián)網(wǎng)智能信息橋(Intelligent information bridge),簡稱IBOI,是一種在物聯(lián)網(wǎng)中實現(xiàn)聯(lián)網(wǎng)設(shè)備之間信息兼容與匹配的橋接設(shè)備,主要具備設(shè)備互聯(lián)、接口匹配、信息打包轉(zhuǎn)換等功能,其中接口匹配包括接口速率匹配、接口協(xié)議匹配和接口校驗匹配等功能。IBOI工作通常包括信息接收、信息轉(zhuǎn)換、信息輸出和參數(shù)調(diào)整四步驟,通過這四個步驟,分別實現(xiàn)參數(shù)校準,接收源信息,轉(zhuǎn)換成目標信息并發(fā)送到輸出接口的任務(wù)。本文以智能電表與無線模塊之間的智能信息橋設(shè)計為例進行介紹。
1 IBOI
1.1 IBOI信息源宿分析
物聯(lián)網(wǎng)技術(shù)的起步是以RFID技術(shù)和條形碼技術(shù)為基礎(chǔ)的,因此物聯(lián)網(wǎng)起初的定義為:把所有物品通過射頻識別(RFID)和條形碼等信息傳感設(shè)備與互聯(lián)網(wǎng)連接起來,實現(xiàn)智能化識別和管理的系統(tǒng)。經(jīng)過若干年的發(fā)展,傳感器技術(shù)迅速崛起,物聯(lián)網(wǎng)中連接的設(shè)備不再局限于RFID技術(shù)和條形碼技術(shù),掛接入物聯(lián)網(wǎng)的設(shè)備種類成倍增加,物聯(lián)網(wǎng)的應(yīng)用領(lǐng)域深入到家庭、企業(yè)、通信等領(lǐng)域,形形色色的設(shè)備都可以被物聯(lián)網(wǎng)連接起來。
隨著物聯(lián)網(wǎng)技術(shù)及其應(yīng)用的迅速發(fā)展,物聯(lián)網(wǎng)設(shè)備研發(fā)企業(yè)和團隊也迅速增多,因此各種物聯(lián)網(wǎng)設(shè)備如雨后春筍般地出現(xiàn),由于社會團體監(jiān)管的滯后,導(dǎo)致各個研發(fā)企業(yè)和團隊的產(chǎn)品雖然能夠百花齊放,卻沒有統(tǒng)一的標準。因此,在具體物聯(lián)網(wǎng)項目在實施的過程中,這些聯(lián)網(wǎng)設(shè)備很難直接進行通信和組網(wǎng),各種設(shè)備的信息輸出接口及內(nèi)容千變?nèi)f化,比如接口有485、232、USB、以太網(wǎng)、IIC、類IIC兩線接口、SPI等數(shù)不勝數(shù),單485接口的設(shè)備又有通信速率為1200、2400、4800、9600直到115200及以上的各種速率不同,即使都是485接口,都是9600速率的,還有校驗方式的不同,如常見校驗方式有奇校驗、偶校驗、CRC校驗等,甚至各廠家有自己的校驗方式,由此推斷,僅485接口的設(shè)備之間就有幾十種接口通信方式??梢奍BOI信息源和信息宿的通信直接互聯(lián)的可行性很小,物聯(lián)網(wǎng)設(shè)備之間通信需要一個高效、簡單易操作和實現(xiàn)需要IBOI的橋接。
1.2 IBOI功能分析
IBOI實現(xiàn)不同接口及不同通信協(xié)議的物聯(lián)網(wǎng)設(shè)備之間接口轉(zhuǎn)換、信息打包及重新校驗等功能,以智能電表無線抄表系統(tǒng)為例,IBOI設(shè)備的作用如圖1所示。
[智能電表][IBOI] [無線
終端] [終端]
圖1 IBOI設(shè)備作用
圖1是典型的無線智能抄表系統(tǒng)功能圖,項目中智能電表選用的是華通機電集團儀器儀表有限公司生產(chǎn)的DDS877型電子式單相電能表,該表符合GB/T 17215.321-2008、DL/T 645-1997《多功能電表通信規(guī)約》對單相靜止式電能表的技術(shù)要求[1-2]。通過查詢技術(shù)說明書可知,其默認通信口為485方式,通信速率為1200、校驗方式為EVEN方式。無線終端采用昆山信德佳電氣科技有限公司生產(chǎn)的WX-110型無線通信模塊,該模塊采用串口232通信口,通信速率為9600,校驗采用ODD方式。顯然,這兩種設(shè)備不能直接連接在一起,必須靠IBOI進行橋接才能通信[3]。
IBOI在本系統(tǒng)中的起到橋梁和翻譯的作用,首先要能對接智能電表的485接口,速率要求為1200,并能讀懂EVEN校驗的數(shù)據(jù)A;還要能將數(shù)據(jù)A翻譯成ODD校驗方式的數(shù)據(jù)B;能對接無線終端設(shè)備的232接口,要求通信速率為9600。
1.3 IBOI現(xiàn)狀及發(fā)展趨勢
IBOI設(shè)備目前在市面上較少出現(xiàn),價格昂貴,動輒數(shù)百或者更貴,而且功能單一。市面上大部分IBOI設(shè)備都是接口類型轉(zhuǎn)換或者速率匹配,而對于協(xié)議匹配、校驗匹配及數(shù)據(jù)重新打包等功能較少出現(xiàn)。
由于物聯(lián)網(wǎng)設(shè)備的大量增加、物聯(lián)網(wǎng)需求的不斷提高及物聯(lián)網(wǎng)設(shè)備接口的日益繁多,在物聯(lián)網(wǎng)設(shè)備接口統(tǒng)一標準缺失的大環(huán)境下,功能強大、價格低廉、易于使用的IBOI設(shè)備成為需求最為旺盛的物聯(lián)網(wǎng)中間件之一,IBOI設(shè)備的出現(xiàn),必將促進物聯(lián)網(wǎng)設(shè)備的進一步豐富,加速物聯(lián)網(wǎng)應(yīng)用的進一步推廣。
2 IBOI模塊的設(shè)計實現(xiàn)
本文以遠程智能無線抄表系統(tǒng)為例,設(shè)計實現(xiàn)了一款I(lǐng)BOI模塊,該模塊可以實現(xiàn)485接口類型物聯(lián)網(wǎng)設(shè)備與433Mhz無線設(shè)備之間的任意數(shù)據(jù)形式通信,該模塊在無線抄表系統(tǒng)中發(fā)揮了總要作用,表現(xiàn)良好。
2.1 485接口電路
IBOI在本系統(tǒng)中的起到橋梁和翻譯的作用,首先要能對接智能電表的485接口,速率要求為1200,并能讀懂EVEN校驗的數(shù)據(jù)A;另外還要能將數(shù)據(jù)A翻譯成ODD校驗方式的數(shù)據(jù)B;最后能對接無線終端設(shè)備的232接口,要求通信速率為9600,整體設(shè)計如圖2所示。
[485接口電路][控制中心] [無線
發(fā)射]
圖2 IBOI整體
485接口電路負責(zé)從設(shè)備的485接口交換數(shù)據(jù)信息,理想的485通信電路部分設(shè)計應(yīng)該與速率和通信內(nèi)容無關(guān),無需程序干預(yù)。
以max485芯片為例,常規(guī)485電路設(shè)計如圖3所示,6腳和7腳為485輸出輸出總線接口,10腳和11腳輸入輸出232TTL信號,2腳和3腳需要用單片機I/O口控制,從而實現(xiàn)信號的收發(fā),需要程序控制,所以使用不靈活。
圖3 485常規(guī)電路設(shè)計
圖3中,當I/O口P1.0為高電平時,max485處于發(fā)送狀態(tài),信號只能從單片機側(cè)發(fā)送到485總線上去,而當I/O口P1.0為低電平時,max485處于接收狀態(tài),信號只能從485總線上接收到單片機側(cè)。
為了解決485電路需要程序干預(yù)控制的缺陷,本文采用如圖4所示的改進電路進行控制。由于RS-485芯片的特性可知,接收器的檢測靈敏度為±200mV,即差分輸入端VA-VB≥+200mV,輸出邏輯1,VA-VB≤-200mV,輸出邏輯0;而A、B端電位差的絕對值小于200mV時,輸出不確定。設(shè)計中使A端電位高于B兩端電位,這樣RXD的電平在485總線不發(fā)送期間呈現(xiàn)惟一的高電平,就不會收到亂字符。
圖4 485改進電路
如圖4所示,在485總線上加上拉和下拉電阻后,不影響總線正常信號。當串口發(fā)送高電平時,NPN三極管導(dǎo)通,使MAX485處于接收狀態(tài),此時總線空閑,但因為485總線被加了上拉和下拉電阻,使總線處于狀態(tài)1,也就等于發(fā)送到總線上的數(shù)據(jù)為1;當串口發(fā)送低電平時,NPN三極管不導(dǎo)通,使MAX485處于發(fā)送狀態(tài), MAX485將低電平發(fā)送到總線上去,也就等于發(fā)送到總線上的數(shù)據(jù)為0;當串口端不發(fā)送數(shù)據(jù)時,TXD引腳處于高電平,也就是說MAX485處于接收狀態(tài),因此不影響485總線上數(shù)據(jù)傳送到串口側(cè),該電路圖利用發(fā)送數(shù)據(jù)的電平狀態(tài)自動控制了MAX485的收發(fā),完成了預(yù)定目標。電路PCB如圖5所示。
2.2 IBOI控制中心設(shè)計
IBOI控制中心需要完成接收數(shù)據(jù)時的接收速率、校驗讀取、重新校驗、數(shù)據(jù)輸出通道的速率調(diào)整等任務(wù)。
對于硬件設(shè)計,本系統(tǒng)中采用飛思卡爾半導(dǎo)體有限公司生產(chǎn)的高性能低成本增強型8位單片機MC9S08AC16作為中心控制芯片,該型單片機最高主頻可以達到40Mhz處理速度,滿足高速數(shù)據(jù)傳輸?shù)囊?;具有兩路獨立全雙工SCI接口,每路SCI模塊可以單獨進行設(shè)置和工作,一個負責(zé)接收數(shù)據(jù),另一路負責(zé)發(fā)送處理完成的數(shù)據(jù),并且這兩個SCI模塊都支持自動校驗功能,通過設(shè)置相關(guān)寄存器完成硬件自動添加和識別校驗信息,支持的校驗方式有ODD和EVEN兩種,這樣可以不必用軟件來校驗,節(jié)約了系統(tǒng)開銷[4]。AC16最小系統(tǒng)及PCB圖如圖5所示。
圖5 IBOI核心控制部分電路圖及PCB
2.3 IBOI軟件設(shè)計
在IBOI系統(tǒng)中,涉及到的軟件設(shè)計包括信息校驗部分、接口驅(qū)動部分、轉(zhuǎn)發(fā)控制部分一級波特率調(diào)整部分。
2.3.1 信息校驗
在IBOI系統(tǒng)中,輸入輸出接口校驗由AC16的SCI模塊自動完成,無需人工校驗,因此在軟件設(shè)計中,只需要在硬件初始化的過程中,設(shè)定校驗方式即可。在AC16單片機中有個SCIxC1寄存器,如圖6所示。
圖6 SCIxC1
在該寄存器中,PE位為校驗使能位,當PE=0(默認)時,模塊不啟動校驗功能,當PE=1時,模塊啟動校驗功能;PT位為校驗方式選擇位,當PT=0(默認)時,模塊采用EVEN校驗方式,當PT=1時,模塊采用ODD校驗方式[5];因此,在本系統(tǒng)中,從電表中獲取信息的接口應(yīng)該設(shè)置PE=1、PT=0,程序如圖7所示。按照同樣的方法,可以設(shè)置SCI2的校驗方式為無校驗,即PE=0、PT=0。
圖7 SCIxC1設(shè)置程序
2.3.2 波特率調(diào)整
在IBOI系統(tǒng)中,輸入輸出接口的波特率由AC16的SCI寄存器設(shè)定,在AC16單片機中由SCIxBDH和SCIxBDL寄存器控制,如圖8所示。
圖8 SCIxSCIxBDH\SCIxBDL
在該寄存器中,SBR0-SBR12控制SCI模塊的波特率,SBR0-SBR12轉(zhuǎn)換成一個參數(shù)數(shù)值BD,那么波特率的計算公式為BANDRATEx=BD/BUSCLK/16,程序如圖9所示。按照同樣的方法可以設(shè)置SCI2的波特率為9600。
圖9 波特率設(shè)置程序
2.3.3 其他軟件設(shè)計
波特率及校驗的問題解決后,剩余的問題就是如何驅(qū)動串口進行轉(zhuǎn)發(fā)數(shù)據(jù),在本系統(tǒng)中,使用中斷的方式對信息進行接收和轉(zhuǎn)發(fā),采用中斷方式可以及時對數(shù)據(jù)進行處理。程序代碼如圖10所示。編寫程序代碼的時候,要按照智能電表的通用協(xié)議接收數(shù)據(jù)。
[interrupt VectorNumber_Vsci1rx void
SCI1_RX_ISR(void)
{ ……
switch(uartState)
{ case 0:
if(temp==0x68)
uartState=1;
break;
case 1:
if(temp==0x81)
uartState=2;
else
uartState=0;
break;
case 2:
if(temp==0x06)
uartState=3;
else
uartState=0;
break;
case 3:
if(temp==0x43)
uartState=4;
else
uartState=0;
break;\case 4:
if(temp==0xC3)
{
SCIDataLen=4; //長度
SCIDataCount=0;
uartState=5;
} else uartState=0;
break;
case 5:
if(SCIDataCount { SCIDataBuffer[SCIDataCount]=temp-0x33; SCIDataCount++; } Else { UART2_SEND_ARRAY(SCIDataBuffer,4); uartState=0; } break; default: uartState=0; break; } } }\] 圖10 IBOI數(shù)據(jù)轉(zhuǎn)發(fā)程序 在DL/T 645-1997《多功能電表通信規(guī)約》中規(guī)定了電表在數(shù)據(jù)通信時的基本格式,以數(shù)據(jù)的十六進制舉例,比如讀電表地址為00 00 00 00 14 02,其總用電量數(shù)據(jù)時發(fā)送的命令為:68 14 02 00 00 00 00 68 01 02 43 C3 EF 16,電表返回數(shù)據(jù)為FE FE 68 14 02 00 00 00 00 68 81 06 43 C3 56 3B 33 33 6A 16,每條信息必須以68開始,以16結(jié)束。在接收數(shù)據(jù)的時候如果只有單點通信,則無需考慮地址,只要解析電表數(shù)據(jù)就可以,對應(yīng)的數(shù)據(jù)位為56 3B 33 33,讀出這四位數(shù)據(jù)后,將四個數(shù)據(jù)分別減去33,將數(shù)據(jù)1234的順序改成4321,即得到數(shù)據(jù)00 00 08 23,因此最后得到電表總用電量為8.23千瓦時。 本例中設(shè)計實現(xiàn)的IBOI模塊,在無線抄表系統(tǒng)中發(fā)揮了重要作用,表現(xiàn)良好。 參考文獻: [1] GB/T 17215.321-2008[S].[國家標準]. [2] DL/T 645-1997《多功能電表通信規(guī)約》[S].[國家標準]. [3] 華通機電集團.DDS877型電子式單相電能表產(chǎn)品說明書[Z].浙江,2010. [4] Freescale.MC68HCS08AC16 datasheet[J].http://www.freescale. com,2012. [5] 王宜懷.嵌入式技術(shù)基礎(chǔ)與實踐(第二版)[M].清華大學(xué)出版社,2011.