《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于ZigBee 技術(shù)的無(wú)線抄表系統(tǒng)設(shè)計(jì)與應(yīng)用
基于ZigBee 技術(shù)的無(wú)線抄表系統(tǒng)設(shè)計(jì)與應(yīng)用
互聯(lián)網(wǎng)
摘要: 1引言現(xiàn)階段,,無(wú)線技術(shù)正飛速地進(jìn)入許多應(yīng)用領(lǐng)域,,與有線設(shè)備相比其具有成本低,、攜帶方便,、無(wú)需布線等優(yōu)點(diǎn),特別...
Abstract:
Key words :

1 引言
現(xiàn)階段,,無(wú)線技術(shù)正飛速地進(jìn)入許多應(yīng)用領(lǐng)域,,與有線設(shè)備相比其具有成本低、攜帶方便,、無(wú)需布線等優(yōu)點(diǎn),,特別適用于手持設(shè)備的通信、電池供電設(shè)備、遙控,、遙測(cè),、小型無(wú)線網(wǎng)絡(luò)無(wú)線抄表" title="無(wú)線抄表">無(wú)線抄表,、門禁系統(tǒng),、小區(qū)傳呼、工業(yè)數(shù)據(jù)采集系統(tǒng),、用戶識(shí)別,、信號(hào)采集、水文氣象監(jiān)控,、無(wú)線數(shù)字語(yǔ)音,、數(shù)字圖像傳輸?shù)认到y(tǒng)的應(yīng)用。
2 系統(tǒng)方案設(shè)計(jì)
(1) 系統(tǒng)整體設(shè)計(jì)
整個(gè)系統(tǒng)按照運(yùn)行流程可分成三部分:終端設(shè)備(多個(gè)),、手持式采集設(shè)備(一個(gè)),、數(shù)據(jù)MIS 系統(tǒng)。終端設(shè)備是采集氣量數(shù)據(jù)的集成設(shè)備,,它負(fù)責(zé)對(duì)氣量的數(shù)據(jù)進(jìn)行采集和控制,,同時(shí)可通過(guò)無(wú)線網(wǎng)絡(luò)傳輸給手持式采集設(shè)備;手持式采集設(shè)備是通過(guò)無(wú)線通道對(duì)終端設(shè)備的數(shù)據(jù)進(jìn)行下載和控制的設(shè)備,;數(shù)據(jù)MIS系統(tǒng)是將手持式設(shè)備中的采集數(shù)據(jù)下載后對(duì)其進(jìn)行管理的軟件系統(tǒng),。
  點(diǎn)擊瀏覽下一頁(yè)
(2) 終端設(shè)備
在用戶端氣表加裝通訊模塊形成終端設(shè)備,,實(shí)現(xiàn)數(shù)據(jù)的讀取和無(wú)線傳輸,。
(3) 手持式采集設(shè)備配置
MPU:PHILIPS P89LV51RD2,低功耗芯片,;
EEPROM:24AA512(64K)用以存放所采集的數(shù)據(jù),;
LCD:MOBI2006 薄型液晶LCD;
鍵盤:設(shè)置4 個(gè)功能鍵,,分別為:上,、下、確認(rèn),、背光,;
RS-232C 接口芯片:MAX232;
無(wú)線模塊:IP•Link1000-B,;
(4) 數(shù)據(jù)庫(kù)MIS系統(tǒng)
其主要功能包括與手持式采集設(shè)備進(jìn)行數(shù)據(jù)交換并存儲(chǔ),,對(duì)數(shù)據(jù)進(jìn)行格式化加工,對(duì)數(shù)據(jù)進(jìn)行通用管理(添加,、刪除,、修改、查詢等)以及根據(jù)客戶需求打印各種報(bào)表。
3 系統(tǒng)硬件結(jié)構(gòu)及連接圖
手持設(shè)備的硬件連接如圖2 所示,,元件主要包括微控制芯片,、片外存儲(chǔ)器、多路復(fù)用器CD4052,、無(wú)線模塊IP•Link1000-B,、串口電平轉(zhuǎn)換芯片MAX232、鍵盤和LED 顯示屏,。
 點(diǎn)擊瀏覽下一頁(yè)
微控制芯片通過(guò)并口連接鍵盤和LED 顯示屏,,片外存儲(chǔ)器EEPROM采用I2C模擬總線方式連接,上位機(jī)和下位機(jī)通訊采用RS-232C 方式,,需使用MAX232 芯片進(jìn)行電平轉(zhuǎn)換,,另因無(wú)線模塊與上下位機(jī)通訊都通過(guò)通用串行口,所以要進(jìn)行串行口擴(kuò)展,,采用多路復(fù)用開(kāi)關(guān)CD4052,。
(1) 數(shù)據(jù)幀定義
數(shù)據(jù)幀是數(shù)據(jù)傳輸協(xié)議中數(shù)據(jù)的規(guī)范格式,數(shù)據(jù)幀結(jié)構(gòu)的定義如表1 所示,。
 點(diǎn)擊瀏覽下一頁(yè)
注:Lead 為幀標(biāo)識(shí)(幀頭),、Command 為命令字、Length 為數(shù)據(jù)長(zhǎng)度,、Load 為數(shù)據(jù),、Checksum為CRC校驗(yàn)碼
(2) 傳輸協(xié)議
上位機(jī)—下位機(jī)采用S-232 串行數(shù)據(jù)傳輸,串行口通信方式為異步串行通信,,信息格式為1 個(gè)開(kāi)始位,、8 位數(shù)據(jù)位、1個(gè)停止位,、無(wú)奇偶校驗(yàn)位,,數(shù)據(jù)傳輸采用“停止—等待”協(xié)議。
數(shù)據(jù)發(fā)送:發(fā)送方將欲發(fā)送的數(shù)據(jù)先進(jìn)行幀格式定義,,先對(duì)數(shù)據(jù)串(命令字+數(shù)據(jù)長(zhǎng)度+數(shù)據(jù))進(jìn)行循環(huán)冗余校驗(yàn)(CRC-16 ),,形成兩個(gè)字節(jié)的校驗(yàn)碼,在數(shù)據(jù)串前添加幀標(biāo)識(shí),,然后附上所得的校驗(yàn)碼,,形成數(shù)據(jù)幀后進(jìn)行發(fā)送,并等待返回信息,。
數(shù)據(jù)接收:接收方在接收數(shù)據(jù)幀時(shí),,先判斷幀標(biāo)識(shí),若錯(cuò)誤,,丟棄當(dāng)前幀并向數(shù)據(jù)源發(fā)重傳命令,;如果正確,,接收“命令”字節(jié)和“數(shù)據(jù)長(zhǎng)度”字節(jié)并判斷數(shù)據(jù)長(zhǎng)度,超出數(shù)據(jù)長(zhǎng)度時(shí)停止接收數(shù)據(jù)并發(fā)重傳命令,,長(zhǎng)度合乎要求時(shí)才進(jìn)行后面數(shù)據(jù)的接收,,以上每個(gè)字節(jié)接收過(guò)程都包含超時(shí)判斷,如果超時(shí)要求數(shù)據(jù)重發(fā),。數(shù)據(jù)接收完畢后進(jìn)行循環(huán)冗余校驗(yàn),,將生成的校驗(yàn)碼與接收到的校驗(yàn)碼比較,相同則通過(guò)校驗(yàn),,數(shù)據(jù)幀正確,,然后進(jìn)行命令字節(jié)判斷并對(duì)數(shù)據(jù)進(jìn)行處理;若未通過(guò)校驗(yàn),,接收方發(fā)重傳命令至發(fā)送方,,要求重新傳輸該幀數(shù)據(jù)。 
發(fā)送端A在啟動(dòng)發(fā)送后等待返回信息,,接收端B接收并校驗(yàn)數(shù)據(jù)后進(jìn)行信息回復(fù),,包括正確報(bào)告或錯(cuò)誤報(bào)告信息,發(fā)送端A 在接收到接收端B 的反饋信息后,,作出相應(yīng)的判斷動(dòng)作,。另外,在得到錯(cuò)誤報(bào)告信息或在規(guī)定時(shí)間內(nèi)沒(méi)有接收到反饋信息時(shí),,發(fā)送端A重新發(fā)送當(dāng)前數(shù)據(jù)幀,,并且記錄重發(fā)次數(shù)。當(dāng)重發(fā)次數(shù)超過(guò)給定值N 時(shí),,停止發(fā)送,,并報(bào)出錯(cuò)信息。
4.2 下位機(jī)與上位機(jī)的通信
下位機(jī)(手持設(shè)備)與上位機(jī)(計(jì)算機(jī))通信采用RS-232C 串口通信,,上位機(jī)對(duì)所接收的數(shù)據(jù)進(jìn)行CRC 檢驗(yàn)判斷,,校驗(yàn)未通過(guò),,要求重傳,,校驗(yàn)通過(guò),數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)庫(kù),。上位機(jī)利用Visual Basic 6.0中的通信控件MSComm開(kāi)發(fā)串行通訊程序,。MSComm 控件提供兩種處理通信的方式:事件驅(qū)動(dòng)方式和查詢方式。事件驅(qū)動(dòng)方式由MSC omm 控件的onComm事件捕獲并處理通信事件和錯(cuò)誤,,其優(yōu)點(diǎn)是程序相應(yīng)及時(shí),、可靠性高;查詢方式是通過(guò)檢查commEvent屬性的值來(lái)判斷事件和錯(cuò)誤,,適合于應(yīng)用程序較小的情況,。
(1) 控件屬性:包括串口初始化屬性設(shè)置,、數(shù)據(jù)讀寫(xiě)操作、狀態(tài)控制,、打開(kāi)/ 關(guān)閉串口,。
(2) 串口初始化屬性設(shè)置
下面結(jié)合初始化程序的實(shí)例來(lái)說(shuō)明屬性的設(shè)置:
MSComm. CommPort = 2 設(shè)置通信端口號(hào);
MSComm. Settings =“1200, M, 8, 1” 設(shè)置波特率為12 00 ,,奇偶校驗(yàn)為標(biāo)記,,8 位數(shù)據(jù)位,1 位停止位,;
MSComm. InputLen = 0 讀取接收緩沖區(qū)的全部代碼,;
MSComm. InputMode = comInputModeBinary 接收的數(shù)據(jù)格式為二進(jìn)制數(shù)據(jù);
MSComm. InBufferSize = 100 設(shè)置接收緩沖區(qū)大小為100字節(jié),;
MSComm. OutBufferSize = 10 設(shè)置發(fā)送緩沖區(qū)的大小為10字節(jié),;
MSComm. OutBufferCount = 0 清除發(fā)送緩沖區(qū);
MSComm. InBufferCount = 0 清除接收緩沖區(qū),;
MSComm. PortOpen = True 打開(kāi)串口(關(guān)閉端口時(shí)值為f a l s e ),;
(3) 數(shù)據(jù)讀寫(xiě)操作
Output 屬性:向發(fā)送緩沖區(qū)寫(xiě)數(shù)據(jù)流,為Variant 型變量,。Output 屬性可以傳輸文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù),,用Output 屬性傳輸文本數(shù)據(jù),須定義一個(gè)包含一個(gè)字符串的Variant,。發(fā)送二進(jìn)制數(shù)據(jù),,則須傳遞一個(gè)包含字節(jié)數(shù)組的Variant 到Output屬性。以下是上位機(jī)向下位機(jī)發(fā)確認(rèn)信號(hào)(ACK)的實(shí)例,。
定義sendata 為Variant,,發(fā)送Output 的值,right()為Byte數(shù)據(jù),,存放要發(fā)送的二進(jìn)制數(shù)據(jù):
Dim sendata As Variant
Dim right(1) As Byte
right (0) = &H5E
sendata = right 二進(jìn)制數(shù)據(jù)變?yōu)閂ariant 格式
MSComm. InBufferCount = 0 接收緩沖區(qū)清空
MSComm. Output = sendata 發(fā)送二進(jìn)制數(shù)據(jù)
Inp ut 屬性:將接收緩沖區(qū)中收到的數(shù)據(jù)讀入變量,,為Variant 型變量。當(dāng)InputMode 屬性值為0 (文本模式)時(shí),,變量中含String 型數(shù)據(jù),,當(dāng)InputMode 屬性值為1(二進(jìn)制模式)時(shí),變量中含B y t e 型數(shù)組數(shù)據(jù),。
InputLen 屬性:確定被Input 屬性讀取的字符數(shù),。設(shè)置InputLen 為0,則讀取緩沖區(qū)中全部的內(nèi)容,。若接收緩沖區(qū)中In putLen 字符無(wú)效,,In put 屬性返回一個(gè)零長(zhǎng)度字符串(“”)。在使用Input 前,,用戶可以選擇檢查InBufferCount 屬性來(lái)確定緩沖區(qū)中是否已有需要數(shù)目的字符,。
InBufferCount屬性:返回接收緩沖區(qū)中已傳到但還未取走的字符個(gè)數(shù),,In teg er 型。設(shè)為0 ,,則清空緩沖區(qū),。
OutBufferCount 屬性:類似于InBufferCount 屬性,為發(fā)送緩沖區(qū)中已傳到但還未取走的字符個(gè)數(shù),,Integer 型,。設(shè)為0 ,則清空緩沖區(qū),。
5 數(shù)據(jù)的循環(huán)冗余校驗(yàn)
在數(shù)據(jù)的無(wú)線傳輸過(guò)程中,,因?yàn)樵肼暤母蓴_數(shù)據(jù)極易出錯(cuò),因此在傳輸時(shí)必須采用可靠的數(shù)據(jù)校驗(yàn)方法,。數(shù)據(jù)校驗(yàn)方法包括奇偶校驗(yàn),,循環(huán)甬余校驗(yàn)等多種校驗(yàn)方法,普遍采用循環(huán)甬余校驗(yàn)方法(CRC),,它能有效地檢測(cè)出傳輸數(shù)據(jù)的錯(cuò)誤,。CRC 的全稱為Cyclic Redundancy Check,它是一類重要的線性分組碼,,編碼和解碼方法簡(jiǎn)單,,檢錯(cuò)和糾錯(cuò)能力強(qiáng),在通信領(lǐng)域廣泛地用于實(shí)現(xiàn)差錯(cuò)控制,。
CRC 校驗(yàn)的基本思想是利用線性編碼理論,,在發(fā)送端根據(jù)要傳送的k 位二進(jìn)制碼序列,以一定的規(guī)則產(chǎn)生一個(gè)校驗(yàn)用的監(jiān)督碼(即CRC 碼)r 位,,并附在信息后邊,,構(gòu)成一個(gè)新的二進(jìn)制碼序列數(shù)共(k + r )位,最后發(fā)送出去,。在接收端,,根據(jù)信息碼和CRC 碼之間所遵循的規(guī)則進(jìn)行檢驗(yàn),以確定傳送中是否出錯(cuò),。
例如,,16 位的CRC 碼產(chǎn)生的規(guī)則是先將要發(fā)送的二進(jìn)制序列數(shù)左移16 位后,再除以一個(gè)多項(xiàng)式,,最后所得到的余即是CRC 碼,,其中B(X)表示n 位的二進(jìn)制序列數(shù),,G(X)為多項(xiàng)式,,Q(X)為整數(shù),R(X)是余數(shù)(既CRC 碼),。
求CRC 碼采用模2 加減運(yùn)算法則,,即是不帶進(jìn)位和借位的按位加減,,這種加減運(yùn)算實(shí)際上就是邏輯上的異或運(yùn)算,加法和減法等價(jià),,乘法和除法運(yùn)算與普通代數(shù)式的乘除法運(yùn)算是一樣,,符合同樣的規(guī)律。生成CRC碼的多項(xiàng)式如下,,其中CRC-16 和CRC-CCITT 產(chǎn)生16 位的CRC 碼,,而CRC-32 則產(chǎn)生的是32 位的CRC 碼。
CRC-16:(美國(guó)標(biāo)準(zhǔn)) G(X)=X16+X15+X2+1
CRC-CCITT:(歐洲標(biāo)準(zhǔn)) G(X)=X16+X12+X5+1
C R C - 3 2 :G (X ) =X 3 2 +X 2 6 +X 2 3 +X 2 2+ X 1 6+ X 1 2+X11+X10+X8+X7+X5+ X4+X2+X1+1
下面以CRC-16 為例:
數(shù)據(jù)以字節(jié)為單位,,待傳送的數(shù)據(jù)排隊(duì),,運(yùn)算區(qū)先存放兩個(gè)字節(jié)的數(shù)據(jù),緩沖區(qū)為一個(gè)字節(jié),,第三個(gè)字節(jié)的數(shù)據(jù)放在緩沖區(qū)內(nèi),,運(yùn)算區(qū)的數(shù)據(jù)按位運(yùn)算,最左邊為標(biāo)志位,,標(biāo)志位左移,,緩沖區(qū)內(nèi)的數(shù)據(jù)也左移一位(運(yùn)算區(qū)內(nèi)為新的16位數(shù)據(jù)),標(biāo)志位與CRC-1 6 多項(xiàng)式的最高位系數(shù)(總為1)比較,,標(biāo)志位為1 則運(yùn)算區(qū)內(nèi)的數(shù)據(jù)位與多項(xiàng)式的后十六位“異或”運(yùn)算,,為零則不運(yùn)算。然后下一位左移,,過(guò)程同上,,直至緩沖區(qū)內(nèi)的八位數(shù)據(jù)全傳輸至運(yùn)算區(qū)內(nèi)為止。這時(shí)第三個(gè)字節(jié)的數(shù)據(jù)運(yùn)算完畢,,將第四個(gè)字節(jié)的數(shù)據(jù)存入緩沖區(qū),,運(yùn)算方法同上。
待數(shù)據(jù)串運(yùn)算完畢后,,后面附加16 個(gè)零進(jìn)行運(yùn)算,,數(shù)據(jù)完全運(yùn)算完成后,運(yùn)算區(qū)的兩個(gè)字節(jié)的數(shù)據(jù)就是生成的CRC校驗(yàn)碼,。將CRC 校驗(yàn)位附在信息碼后作為循環(huán)碼發(fā)送,。
以上是CRC 校驗(yàn)碼的產(chǎn)生過(guò)程。
接收方在接收到數(shù)據(jù)(循環(huán)碼= 數(shù)據(jù)串+ 校驗(yàn)位)后,,再進(jìn)行CRC 校驗(yàn),,最后產(chǎn)生的運(yùn)算區(qū)內(nèi)的數(shù)據(jù)就是待校驗(yàn)的余數(shù),余數(shù)為零則表示接受的數(shù)據(jù)串正確,,否則為錯(cuò),。
CR C 碼以模二除法得到余數(shù),具體實(shí)現(xiàn)方法是用“異或”運(yùn)算實(shí)現(xiàn),。單片機(jī)CRC 檢驗(yàn)子程序如下:
CRC_CHECK:
MOV R3, #00H ,;存儲(chǔ)CRC碼高位
MOV R4, #00H ,;存儲(chǔ)CRC碼低位
CRC0: MOV A, R3
XRL A, @R0 ;R0 為初始值地址
MOV R3, A
MOV R7, #08H ,;8 次比較
CRC1: MOV A, R4
CLR C ,;進(jìn)位標(biāo)志清零
RLC A
MOV R4, A
MOV A, R3
RLC A
MOV R3, A
JNC CRC2
XRL A, #80H ;高字節(jié)異或運(yùn)算
MOV R3, A
MOV A, R4
XRL A, #05H ,;低字節(jié)異或運(yùn)算
MOV R4, A
CRC2: DJNZ R7, CRC1
INC R0 ,;取下一校驗(yàn)字節(jié)數(shù)據(jù)
DJNZ R6, CRC0 ;R6 為欲校驗(yàn)數(shù)據(jù)串的長(zhǎng)度
RET
6 無(wú)線模塊特征說(shuō)明
本系統(tǒng)的無(wú)線數(shù)據(jù)傳輸是基于IEEE802.15.4協(xié)議的ZigBee" title="ZigBee">ZigBee技術(shù),。IEEE 802.15.4無(wú)線數(shù)據(jù)傳輸協(xié)議標(biāo)準(zhǔn)主要規(guī)定了一種短距離,、低功耗、低速率,、低價(jià)位,、高效率、高可靠性的短程無(wú)線網(wǎng)絡(luò)標(biāo)準(zhǔn),。遵循這一標(biāo)準(zhǔn)的技術(shù)被稱作ZigBee 技術(shù),。ZigBee 技術(shù)是一種低速率無(wú)線傳輸技術(shù),采用直序擴(kuò)頻(DS S S ) 技術(shù)來(lái)提高抗干擾能力,,工作頻率為8 6 8MHz ,、915MHz 或2.4GHz,其中2.4GHz 是一個(gè)開(kāi)放的頻率,。該技術(shù)的突出特點(diǎn)是應(yīng)用簡(jiǎn)單,,電池壽命長(zhǎng),有組網(wǎng)能力,,可靠性高以及成本低,。
在ZigBee 的七層協(xié)議中,IEEE802.15.4 只定義了PHY和MAC 層,,實(shí)體層(PHY)規(guī)范確定了在2.4GHz 以250Kbps的基準(zhǔn)傳輸率工作的低功耗展頻無(wú)線電(另有一些以更低數(shù)據(jù)傳播率工作的915 MHz 和868 MHz 的實(shí)體層規(guī)范),,介質(zhì)訪問(wèn)層(MAC)規(guī)范定義了在同一區(qū)域工作的多個(gè)802.15.4無(wú)線電信號(hào)如何共享空中通道。ZigBee兼容性平臺(tái)則在IEEE802.15.4 的基礎(chǔ)上包含了網(wǎng)絡(luò)與安全層,、以及應(yīng)用開(kāi)發(fā)框架(Application Framework)的定義,。ZigBee 技術(shù)主要工作在無(wú)須注冊(cè)的2.4GHz ISM頻段,數(shù)據(jù)速率為20~250Kbit/s,,最大傳輸范圍在10~75m,,典型距離為30m。
系統(tǒng)中無(wú)線模塊采用兼容IEEE 802.15.4 協(xié)議的赫立訊IP•Link1000-B 無(wú)線網(wǎng)絡(luò)收發(fā)模塊,,組網(wǎng)形式為星型網(wǎng)絡(luò),。模塊的工作狀態(tài)由外部設(shè)備控制,外部設(shè)備通過(guò)模塊的UART0接口,采用AT命令或數(shù)據(jù)幀結(jié)構(gòu)的形式對(duì)IP•Link1000-B模塊進(jìn)行配置和操作,。
無(wú)線模塊在使用前先進(jìn)行參數(shù)配置,,包括對(duì)UART0 的波特率,,模塊的網(wǎng)絡(luò)節(jié)點(diǎn),,節(jié)點(diǎn)號(hào)等參數(shù)進(jìn)行設(shè)置,配置結(jié)果保存于模塊內(nèi)部非易失性存儲(chǔ)器中,,然后模塊進(jìn)入數(shù)據(jù)狀態(tài),,準(zhǔn)備數(shù)據(jù)的傳輸。無(wú)線模塊在使用中先處于休眠狀態(tài),,在外部命令作用下進(jìn)入活動(dòng)模式,,數(shù)據(jù)傳輸成功后又回到休眠狀態(tài)。
文中的無(wú)線硬件設(shè)計(jì),、軟件設(shè)計(jì)解決方案經(jīng)測(cè)試運(yùn)行穩(wěn)定,,無(wú)線通信誤碼率低、可靠性高,、安全性好,。文中的軟硬件設(shè)計(jì)方案,可適用于各種單片機(jī),,并且作為無(wú)線通信技術(shù)在相關(guān)領(lǐng)域的推廣和廣泛的運(yùn)用有著較好的參考價(jià)值,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。