基于Zigbee網(wǎng)絡(luò)的多源數(shù)據(jù)傳輸方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及無線數(shù)據(jù)傳輸領(lǐng)域,具體涉及一種基于Zigbee網(wǎng)絡(luò)的多源數(shù)據(jù)傳輸 方法。
【背景技術(shù)】
[0002] Zigbee,在中國被譯為"紫蜂",一種新興的短距離、低功耗、低成本、低復(fù)雜度、自 組織的無線通信技術(shù),與藍(lán)牙類似,主要適合用于自動控制和遠(yuǎn)程控制領(lǐng)域,可以嵌入各種 設(shè)備。
[0003]目前,在Zigbee網(wǎng)絡(luò)中,傳感器的類型較多,傳統(tǒng)的數(shù)據(jù)傳輸方式是一種傳感器 對應(yīng)一種傳輸方法,即針對每種不同類型的傳感器,將該傳感器采集的數(shù)據(jù)通過特定協(xié)議 封裝后,再傳輸?shù)胶蠖朔?wù)器,這種數(shù)據(jù)傳輸方式難以適應(yīng)多源傳感器,而且增加了后端服 務(wù)器解析數(shù)據(jù)時的復(fù)雜度。
【發(fā)明內(nèi)容】
[0004] 針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種基于Zigbee網(wǎng)絡(luò)的多 源數(shù)據(jù)傳輸方法,實現(xiàn)多源傳感器信息的統(tǒng)一傳輸,提高對多源傳感器的適應(yīng)性,降低后 端服務(wù)器解析數(shù)據(jù)時的復(fù)雜度。為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:一種基于 Zigbee網(wǎng)絡(luò)的多源數(shù)據(jù)傳輸方法,包括以下步驟:
[0005] S1.發(fā)送端采集傳感器的數(shù)據(jù),并按照通用幀的格式進(jìn)行處理:通用幀包括數(shù)據(jù) 域,將采集數(shù)據(jù)加載到通用幀的數(shù)據(jù)域中,并對加載后的通用幀的數(shù)據(jù)域的幀頭、幀尾分 別進(jìn)行替換處理,封裝成若干第一數(shù)據(jù)幀,將所有第一數(shù)據(jù)幀按照采集數(shù)據(jù)的順序進(jìn)行排 列;
[0006] S2.發(fā)送端按照第一數(shù)據(jù)幀的排列順序,依次判斷每個第一數(shù)據(jù)幀的長度是否> 32字節(jié),若是,則轉(zhuǎn)到步驟S3 ;若否,則將該第一數(shù)據(jù)幀命名為第二數(shù)據(jù)幀,轉(zhuǎn)到步驟S4 ;
[0007] S3.發(fā)送端按照采集數(shù)據(jù)的順序,對第一數(shù)據(jù)幀進(jìn)行分割,再按照通用幀的格式重 新組幀、排列,得到若干第二數(shù)據(jù)幀,每個第二數(shù)據(jù)幀的長度< 32字節(jié),轉(zhuǎn)到步驟S4 ;
[0008] S4.發(fā)送端按照第二數(shù)據(jù)幀的排列順序,依次對第二數(shù)據(jù)幀進(jìn)行幀校驗,得到若干 第三數(shù)據(jù)幀,轉(zhuǎn)到步驟S5 ;
[0009] S5.發(fā)送端按照第三數(shù)據(jù)幀的排列順序,依次傳輸?shù)谌龜?shù)據(jù)幀,轉(zhuǎn)到步驟S6 ;
[0010] S6.接收端依次接收第三數(shù)據(jù)幀,對接收到的第三數(shù)據(jù)幀依次進(jìn)行檢測操作:當(dāng) 接收端檢測到第三數(shù)據(jù)幀的數(shù)據(jù)域的幀頭時,判斷是否檢測到第三數(shù)據(jù)幀的數(shù)據(jù)域的幀 尾,若是,則轉(zhuǎn)到步驟S7 ;若否,則重復(fù)執(zhí)行步驟S6 ;
[0011] S7.接收端對第三數(shù)據(jù)幀的數(shù)據(jù)域中經(jīng)過替換處理的數(shù)據(jù)進(jìn)行還原操作,并存儲, 直至接收端接收到所有的第三數(shù)據(jù)幀,并經(jīng)過檢測操作、還原操作,最終得到發(fā)送端采集的 數(shù)據(jù)。
[0012] 在上述技術(shù)方案的基礎(chǔ)上,所述通用幀的格式為:幀頭+幀標(biāo)識+當(dāng)前幀幀內(nèi)序號 +當(dāng)前幀幀內(nèi)剩余數(shù)+從節(jié)點短地址+數(shù)據(jù)域+CRC校驗+幀尾。
[0013] 在上述技術(shù)方案的基礎(chǔ)上,步驟S1具體包括以下步驟:
[0014] S101.發(fā)送端采集傳感器的數(shù)據(jù),將采集數(shù)據(jù)分割成若干條子數(shù)據(jù);
[0015] S102.發(fā)送端按子數(shù)據(jù)的排列順序,將子數(shù)據(jù)依次加載到對應(yīng)通用幀的數(shù)據(jù)域 中;
[0016] S103.發(fā)送端對數(shù)據(jù)域的幀頭、幀尾分別進(jìn)行替換處理,封裝成若干第一數(shù)據(jù)幀, 將所有第一數(shù)據(jù)幀按照采集數(shù)據(jù)的順序進(jìn)行排列。
[0017] 在上述技術(shù)方案的基礎(chǔ)上,步驟S3中,所述得到若干第二數(shù)據(jù)幀的過程為:將第 一數(shù)字幀的數(shù)據(jù)域中的子數(shù)據(jù)分割成若干條分?jǐn)?shù)據(jù),按照分?jǐn)?shù)據(jù)的排列順序,將分?jǐn)?shù)據(jù)依 次加載到對應(yīng)通用幀的數(shù)據(jù)域中,得到若干第二數(shù)據(jù)幀。
[0018] 在上述技術(shù)方案的基礎(chǔ)上,步驟S1中,所述對加載后的通用幀的數(shù)據(jù)域的幀頭、 幀尾分別進(jìn)行替換處理的過程為:當(dāng)加載后的通用幀的數(shù)據(jù)域的幀頭、幀尾中存在Oxff或 Oxfe時,將加載后的通用幀的數(shù)據(jù)域的幀頭、幀尾中的Oxff替換為Oxfe0x00,將Oxfe替 換為OxfeOxfl。
[0019] 在上述技術(shù)方案的基礎(chǔ)上,步驟S7中,所述對第三數(shù)據(jù)幀的數(shù)據(jù)域中經(jīng)過替換 處理的數(shù)據(jù)進(jìn)行還原操作的過程為:將第三數(shù)據(jù)幀的數(shù)據(jù)域中經(jīng)過替換處理的數(shù)據(jù)中的 Oxfe0x00 還原為Oxff,將OxfeOxfl還原為Oxfe。
[0020] 在上述技術(shù)方案的基礎(chǔ)上,步驟S5中,所述傳輸?shù)谌龜?shù)據(jù)幀的過程為:發(fā)送端每 次只發(fā)送一個第三數(shù)據(jù)幀:發(fā)送端包括串口、發(fā)送芯片和天線,發(fā)送端通過串口將第三數(shù)據(jù) 幀傳遞給發(fā)送芯片,發(fā)送芯片通過天線依次將第三數(shù)據(jù)幀的單個字節(jié)發(fā)送給接收端,直至 發(fā)送芯片將第三數(shù)據(jù)幀的所有字節(jié)發(fā)送完畢。
[0021] 在上述技術(shù)方案的基礎(chǔ)上,步驟S5還包括以下步驟:所述發(fā)送端設(shè)置第一安全時 間,若發(fā)送端傳輸?shù)谌龜?shù)據(jù)幀的時間 > 第一安全時間,則發(fā)送端結(jié)束傳輸?shù)谌龜?shù)據(jù)幀。
[0022] 在上述技術(shù)方案的基礎(chǔ)上,步驟S6還包括以下步驟:所述接收端設(shè)置第二安全時 間,若接收端接收第三數(shù)據(jù)幀的時間 > 第二安全時間,則接收端停止接收第三數(shù)據(jù)幀。
[0023] 在上述技術(shù)方案的基礎(chǔ)上,所述第二安全時間為20毫秒。
[0024] 與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
[0025] (1)本發(fā)明將傳感器的數(shù)據(jù)加載到通用幀的數(shù)據(jù)域中,并對加載后的通用幀的數(shù) 據(jù)域的幀頭、幀尾分別進(jìn)行替換處理,封裝成若干第一數(shù)據(jù)幀。這種方式將多源傳感器信息 按照通用幀的格式進(jìn)行統(tǒng)一處理,提高多源傳感器的適應(yīng)性;采用隧道傳輸方式,將統(tǒng)一處 理后的多源傳感器信息傳輸?shù)浇邮斩耍ê蠖朔?wù)器),降低后端服務(wù)器解析數(shù)據(jù)時的復(fù)雜 度。
[0026] (2)本發(fā)明中,針對傳感器的類型不同,對應(yīng)的傳感器信息的格式不同,設(shè)計了不 定長的通用幀,這種可變字長的傳輸協(xié)議,適應(yīng)多種傳感器信息的傳輸,即多源數(shù)據(jù)的傳 輸,尤其適應(yīng)在水文及倉庫貨物信息傳輸過程中,因傳感器多樣導(dǎo)致的數(shù)據(jù)長度不可控的 情形。
[0027] (3)本發(fā)明中,當(dāng)加載后的通用幀的數(shù)據(jù)域的幀頭、幀尾中存在Oxff或Oxfe時, 將加載后的通用幀的數(shù)據(jù)域的幀頭、幀尾中的Oxff替換為Oxfe0x00,將Oxfe替換為Oxfe Oxfl,這是因為數(shù)據(jù)域的其他部分也可能存在Oxff或Oxfe,對加載后的通用幀的數(shù)據(jù)域的 幀頭、幀尾進(jìn)行替換處理,可以防止出現(xiàn)錯誤辨識數(shù)據(jù)域的幀頭、幀尾的現(xiàn)象。
[0028] (4)本發(fā)明在發(fā)送數(shù)據(jù)幀前,依次判斷每個第一數(shù)據(jù)幀的長度是否>32字節(jié),若 第一數(shù)據(jù)幀的長度<32字節(jié),則將第一數(shù)據(jù)幀命名為第二數(shù)據(jù)幀,若第一數(shù)據(jù)幀的長度 >32字節(jié),則對第一數(shù)據(jù)幀進(jìn)行分割,再按照通用幀的格式重新組幀、排列,得到若干長度 <32字節(jié)的第二數(shù)據(jù)幀,保證每個第二數(shù)據(jù)幀的長度均<32字節(jié),從而保證數(shù)據(jù)幀傳輸過 程的可靠性。
【附圖說明】
[0029] 圖1為本發(fā)明實施例中基于Zigbee網(wǎng)絡(luò)的多源數(shù)據(jù)傳輸方法的流程示意圖;
[0030] 圖2為圖1中步驟S1的流程示意圖。
【具體實施方式】
[0031] 以下結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0032] 參見圖1所示,本發(fā)明實施例提供一種基于Zigbee網(wǎng)絡(luò)的多源數(shù)據(jù)傳輸方法,包 括以下步驟:
[0033] S1.發(fā)送端采集傳感器的數(shù)據(jù),并按照通用幀的格式進(jìn)行處理:通用幀包括數(shù)據(jù) 域,將采集數(shù)據(jù)加載到通用幀的數(shù)據(jù)域中,并對加載后的通用幀的數(shù)據(jù)域的幀頭、幀尾分別 進(jìn)行替換處理,封裝成若干第一數(shù)據(jù)幀,將所有第一數(shù)據(jù)幀按照采集數(shù)據(jù)的順序進(jìn)行排列。
[0034] 其中,通用幀的格式為:幀頭(3字節(jié))+幀標(biāo)識(1字節(jié))+當(dāng)前幀幀內(nèi)序號(1字 節(jié))+當(dāng)前幀幀內(nèi)剩余數(shù)(1字節(jié))+從節(jié)點短地址(2字節(jié))+數(shù)據(jù)域(n< 18字節(jié))+CRC校 驗(2字節(jié))+幀尾(3字節(jié)),n為正整數(shù)。為了實現(xiàn)不同的功能,通用幀的格式可以不同。
[0035] 對加載后的通用幀的數(shù)據(jù)域的幀頭、幀尾分別進(jìn)行替換處理的過程為:當(dāng)加載后 的通用幀的數(shù)據(jù)域的幀頭、幀尾中存在Oxff(-個字符)或Oxfe(-個字符)時,將加載后 的通用幀的數(shù)據(jù)域的幀頭、幀尾中的Oxff替換為Oxfe0x00 (兩個字符),將Oxfe替換為 OxfeOxfl(兩個字符)。這是因為數(shù)據(jù)域的其他部分也可能存在Oxff或Oxfe,對加載后的 通用幀的數(shù)據(jù)域的幀頭、幀尾進(jìn)行替換處理,可以防止出現(xiàn)錯誤辨識數(shù)據(jù)域的幀頭、幀尾的 現(xiàn)象。
[0036] 參見圖2所示,步驟S1包括以下步驟:
[0037] S101.發(fā)送端采集傳感器的數(shù)據(jù),將采集數(shù)據(jù)分割成若干條子數(shù)據(jù);
[0038]S102.發(fā)送端按子數(shù)據(jù)的排列順序,將子數(shù)據(jù)依次加載到對應(yīng)通