本發(fā)明涉及通信領(lǐng)域,特別是涉及一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法和裝置。
背景技術(shù):
ZigBee是在IEEE802.15.4基礎(chǔ)上發(fā)展來的一種無線通訊技術(shù),該技術(shù)主要適用于低成本、低功耗的近距離傳輸中,但在上層應(yīng)用中,ZigBee并沒有一種統(tǒng)一標(biāo)準(zhǔn)可參考。
Modbus RTU協(xié)議是應(yīng)用于電子控制器上的一種通用技術(shù),它已經(jīng)成為一個通用的工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以輕松的連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中的監(jiān)控,但是目前還沒有一種技術(shù)能夠?qū)igBee技術(shù)和Modbus RTU技術(shù)兩者融合在一起,但又不涉及到協(xié)議轉(zhuǎn)換的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明是為了解決現(xiàn)有技術(shù)中的不足而完成的,本發(fā)明的目的是提供了一種無需布線,且網(wǎng)絡(luò)成本低、低功耗和安全可靠,簡易方便的ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法和裝置。
本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法,所述方法包括:ZigBee協(xié)議和Modbus RTU協(xié)議;
S1、數(shù)據(jù)初始化階段,配置ZigBee模塊通訊參數(shù)信息;確定所述Modbus RTU數(shù)據(jù)包位于所述ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置;附加ZigBee協(xié)議的數(shù)據(jù)幀頭和幀尾,形成一包完整的ZigBee協(xié)議數(shù)據(jù)幀;
S2、數(shù)據(jù)發(fā)送階段,通過ZigBee模塊將封裝好的數(shù)據(jù)幀發(fā)向?qū)Ψ降腪igBee模塊;
S3、數(shù)據(jù)接收階段,通過ZigBee模塊接收對方ZigBee模塊傳來的數(shù)據(jù)幀信息;判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾;確定Modbus RTU數(shù)據(jù)在ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置,解析Modbus RTU數(shù)據(jù)。
本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法還可以是:
所述通訊參數(shù)信息包括波特率、通道號、網(wǎng)絡(luò)地址和通訊模式等參數(shù)信息。
在步驟S3之后,ZigBee模塊進(jìn)入休眠狀態(tài),當(dāng)需要再次發(fā)送Modbus命令數(shù)據(jù)時,喚醒所述ZigBee模塊,再次執(zhí)行步驟S2。
判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾包括:判斷所述數(shù)據(jù)是否屬于ZigBee協(xié)議數(shù)據(jù)幀,然后通過所述數(shù)據(jù)長度判斷所述數(shù)據(jù)幀信息是否完整,并判斷所述數(shù)據(jù)幀信息是否被非法修改過。
本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的裝置,包括:
數(shù)據(jù)初始化模塊,用于配置ZigBee模塊通訊參數(shù)信息;確定所述Modbus RTU數(shù)據(jù)包位于所述ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置;附加ZigBee協(xié)議的數(shù)據(jù)幀頭和幀尾,形成一包完整的ZigBee協(xié)議數(shù)據(jù)幀;
數(shù)據(jù)發(fā)送模塊,用于通過ZigBee模塊將封裝好的數(shù)據(jù)幀發(fā)向?qū)Ψ降腪igBee模塊;
數(shù)據(jù)接收模塊,用于通過ZigBee模塊接收對方ZigBee模塊傳來的數(shù)據(jù)幀信息;判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾;確定Modbus RTU數(shù)據(jù)在ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置,解析Modbus RTU數(shù)據(jù)。
本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的裝置還可以是:
所述通訊參數(shù)信息包括波特率、通道號、網(wǎng)絡(luò)地址和通訊模式等參數(shù)信息。
在數(shù)據(jù)接收模塊之后包括:ZigBee模塊休眠喚醒模塊:ZigBee模塊進(jìn)入休眠狀態(tài),當(dāng)需要再次發(fā)送Modbus命令數(shù)據(jù)時,喚醒所述ZigBee模塊,再次執(zhí)行數(shù)據(jù)發(fā)送模塊。
判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾包括:判斷所述數(shù)據(jù)是否屬于ZigBee協(xié)議數(shù)據(jù)幀,然后通過所述數(shù)據(jù)長度判斷所述數(shù)據(jù)幀信息是否完整,并判斷所述數(shù)據(jù)幀信息是否被非法修改過。
本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法,包括數(shù)據(jù)初始化階段,配置ZigBee模塊通訊參數(shù)信息;確定所述Modbus RTU數(shù)據(jù)包位于所述ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置;附加ZigBee協(xié)議的數(shù)據(jù)幀頭和幀尾,形成一包完整的ZigBee協(xié)議數(shù)據(jù)幀;數(shù)據(jù)發(fā)送階段,通過ZigBee模塊將封裝好的數(shù)據(jù)幀發(fā)向?qū)Ψ降腪igBee模塊;數(shù)據(jù)接收階段,通過ZigBee模塊接收對方ZigBee模塊傳來的數(shù)據(jù)幀信息;判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾;確定Modbus RTU數(shù)據(jù)在ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置,解析Modbus RTU數(shù)據(jù)。這樣,通過將Modbus RTU協(xié)議與ZigBee協(xié)議相結(jié)合,在數(shù)據(jù)的發(fā)送端采用在ZigBee傳輸數(shù)據(jù)幀中的數(shù)據(jù)負(fù)載段內(nèi)置標(biāo)準(zhǔn)的Modbus RTU協(xié)議數(shù)據(jù)包,在數(shù)據(jù)的接收端采用相同的方式來解析出對應(yīng)的Modbus RTU協(xié)議數(shù)據(jù)包,實(shí)現(xiàn)數(shù)據(jù)的相互傳輸和交互。本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法和裝置,匯集了兩種協(xié)議的優(yōu)點(diǎn),既保留了ZigBee無線網(wǎng)絡(luò)成本低、低功耗、安全可靠和無需布線的優(yōu)勢,同時又發(fā)揮了Modbus RTU協(xié)議有眾多的應(yīng)用模式等優(yōu)勢,提供了一種簡易、方便的無線通訊模式。
附圖說明
圖1是本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法的流程示意圖。
圖2為本發(fā)明中Modbus RTU協(xié)議數(shù)據(jù)包在ZigBee數(shù)據(jù)幀中的位置示意圖。
圖3為本發(fā)明一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互方法的數(shù)據(jù)發(fā)送流程圖。
圖4為本發(fā)明一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互方法的數(shù)據(jù)接收流程圖。
圖5是本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互裝置的結(jié)構(gòu)示意圖。
圖6是本發(fā)明一種A模塊和B模塊利用ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互裝置的結(jié)構(gòu)示意圖。
圖7是A模塊使用ZigBee幀格式封包的示意圖。
圖8是A模塊接收到的ZigBee幀格式示意圖。
具體實(shí)施方式
下面結(jié)合附圖的圖1至圖8對本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法和裝置作進(jìn)一步詳細(xì)說明。
本發(fā)明的一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的方法,請參考圖1,該方法包括:
首先,ZigBee協(xié)議,是基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗個域網(wǎng)協(xié)議,根據(jù)ZigBee協(xié)議規(guī)定的技術(shù)是一種短距離、低功耗的無線通信技術(shù)。
Modbus RTU協(xié)議是應(yīng)用于電子控制器上的一種通用技術(shù),它已經(jīng)成為一個通用的工業(yè)標(biāo)準(zhǔn),有了它,不同廠商生產(chǎn)的控制設(shè)備可以輕松的連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中的監(jiān)控。
S1、數(shù)據(jù)初始化階段,配置ZigBee模塊通訊參數(shù)信息;確定所述Modbus RTU數(shù)據(jù)包位于所述ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置;附加ZigBee協(xié)議的數(shù)據(jù)幀頭和幀尾,形成一包完整的ZigBee協(xié)議數(shù)據(jù)幀;
優(yōu)選的,所述通訊參數(shù)信息包括波特率、通道號、網(wǎng)絡(luò)地址和通訊模式等參數(shù)信息;
S2、數(shù)據(jù)發(fā)送階段,通過ZigBee模塊將封裝好的數(shù)據(jù)幀發(fā)向?qū)Ψ降腪igBee模塊;
S3、數(shù)據(jù)接收階段,通過ZigBee模塊接收對方ZigBee模塊傳來的數(shù)據(jù)幀信息;判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾;確定Modbus RTU數(shù)據(jù)在ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置,解析Modbus RTU數(shù)據(jù)。
上述流程中,在ZigBee協(xié)議傳輸中,將標(biāo)準(zhǔn)的Modbus RTU協(xié)議數(shù)據(jù)包放在了ZigBee數(shù)據(jù)幀中的負(fù)載數(shù)據(jù)段內(nèi),實(shí)現(xiàn)數(shù)據(jù)的傳輸和交互,將ZigBee協(xié)議和Modbus RTU協(xié)議兩種技術(shù)相融合,實(shí)現(xiàn)了無線通訊的功能。Modbus RTU協(xié)議數(shù)據(jù)包放在ZigBee數(shù)據(jù)幀的RF Data位置,其前面的傳輸控制字是用來指示該包數(shù)據(jù)在整個數(shù)據(jù)塊中的排序位置,在其之前的所有數(shù)據(jù)信息統(tǒng)稱為ZigBee數(shù)據(jù)幀頭,在其之后的數(shù)據(jù)信息統(tǒng)稱為ZigBee數(shù)據(jù)幀尾。
圖2是本發(fā)明Modbus RTU協(xié)議數(shù)據(jù)包在ZigBee數(shù)據(jù)幀中的位置示意圖,在本發(fā)明中,Modbus RTU協(xié)議數(shù)據(jù)包放在ZigBee數(shù)據(jù)幀的RF Data位置,其前面的傳輸控制字是用來指示該包數(shù)據(jù)在整個數(shù)據(jù)塊中的排序位置,在其之前的所有數(shù)據(jù)信息統(tǒng)稱為ZigBee數(shù)據(jù)幀頭,在其之后的數(shù)據(jù)信息統(tǒng)稱為ZigBee數(shù)據(jù)幀尾。
圖3為數(shù)據(jù)發(fā)送流程圖,步驟201是程序開始;
步驟202是ZigBee無線模塊初始化階段,在該階段要配置ZigBee模塊的相關(guān)通訊參數(shù),如波特率、通道號、網(wǎng)絡(luò)地址和通訊模式等參數(shù);
步驟203確定Modbus RTU協(xié)議數(shù)據(jù)包的內(nèi)容,該數(shù)據(jù)包放在ZigBee協(xié)議數(shù)據(jù)幀中RF Data即數(shù)據(jù)負(fù)載段內(nèi),負(fù)載段內(nèi)的數(shù)據(jù)要完全符合Modbus RTU協(xié)議;
步驟204附加ZigBee協(xié)議的數(shù)據(jù)幀頭和幀尾,即附加ZigBee協(xié)議數(shù)據(jù)幀中除RF Data段之外的所有數(shù)據(jù)信息,形成一包完整的ZigBee協(xié)議數(shù)據(jù)幀;
步驟205數(shù)據(jù)的發(fā)送階段;
步驟206數(shù)據(jù)發(fā)送完成之后,該流程結(jié)束,ZigBee無線模塊可進(jìn)入休眠狀態(tài)以節(jié)省功耗。
圖4為數(shù)據(jù)接收流程圖,步驟301是程序開始;
步驟302是數(shù)據(jù)接收階段,ZigBee模塊進(jìn)入休眠狀態(tài),當(dāng)需要再次發(fā)送Modbus命令數(shù)據(jù)時,喚醒所述ZigBee模塊,接收空中傳來有數(shù)據(jù)信息;
步驟303判斷ZigBee協(xié)議數(shù)據(jù)幀頭和幀尾,首先要看該數(shù)據(jù)是否屬于ZigBee協(xié)議數(shù)據(jù)幀,然后通過數(shù)據(jù)長度再判斷該幀信息是否完整,最后根據(jù)校驗和可判斷出該幀信息是否被非法修改過;
步驟304解析Modbus RTU協(xié)議數(shù)據(jù)包,根據(jù)Modbus RTU協(xié)議的規(guī)則來解析該幀信息中的RF Data數(shù)據(jù)段的信息;
步驟305數(shù)據(jù)解析完成之后,接收流程結(jié)束。
優(yōu)選的,在數(shù)據(jù)接收階段之后,ZigBee模塊進(jìn)入休眠狀態(tài),當(dāng)需要再次發(fā)送Modbus命令數(shù)據(jù)時,喚醒所述ZigBee模塊,再次執(zhí)行數(shù)據(jù)發(fā)送階段。
優(yōu)選的,判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾包括:判斷所述數(shù)據(jù)是否屬于ZigBee協(xié)議數(shù)據(jù)幀,然后通過所述數(shù)據(jù)長度判斷所述數(shù)據(jù)幀信息是否完整,并判斷所述數(shù)據(jù)幀信息是否被非法修改過。
例如,利用ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)A模塊與B模塊之間數(shù)據(jù)交互的實(shí)例如下:如圖6所示,
步驟一、A模塊發(fā)送數(shù)據(jù)(Modbus命令)到B模塊;
步驟二、B模塊接收A模塊的數(shù)據(jù),并解析Modbus數(shù)據(jù),生成應(yīng)答幀數(shù)據(jù);
步驟三、B模塊發(fā)送封裝好的應(yīng)答數(shù)據(jù)(Modbus響應(yīng))到A模塊;
步驟四、A模塊接收B模塊的響應(yīng)數(shù)據(jù)并解析。
A模塊使用ZigBee幀格式封包,整個幀格式如圖7所示,RF Data區(qū)域為數(shù)據(jù)區(qū),也就是位于ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置,在該負(fù)載段內(nèi)的位置填充Modbus數(shù)據(jù),假設(shè)Modbus地址為1,使用Modbus命令執(zhí)行寫線圈1操作,將1號線圈設(shè)置為1。填充數(shù)據(jù)如下:01 01 00 00 00 01 FD CA;RF Data之前的內(nèi)容,我們稱之為幀頭,RD Data之后的內(nèi)容,我們稱之為幀尾;B模塊接收到A模塊的ZigBee協(xié)議幀后,解析出數(shù)據(jù)域,也就是Modbus數(shù)據(jù),根據(jù)Modbus協(xié)議來解析Modbus命令數(shù)據(jù),并根據(jù)解析結(jié)果,再封裝成滿足ZigBee幀格式的響應(yīng)數(shù)據(jù)幀,發(fā)往到A模塊。
A模塊接收到的ZigBee幀格式如圖8所示,Receive Data為接收數(shù)據(jù)區(qū)。如果B模塊解析成功,那么B模塊在此區(qū)域填充的數(shù)據(jù)應(yīng)該是:01 01 01 01 90 48;A模塊校驗接收到的B模塊數(shù)據(jù),判定此次通訊是否成功,若校驗出錯或者不滿足Modbus響應(yīng)幀格式,則解析錯誤。以上就是一個完整的利用ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)A模塊與B模塊之間數(shù)據(jù)交互的實(shí)例。
本發(fā)明還提供了一種ZigBee和Modbus RTU協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互的裝置,如圖5所示,所述裝置包括:數(shù)據(jù)初始化模塊510:用于配置ZigBee模塊通訊參數(shù)信息;確定所述Modbus RTU數(shù)據(jù)包位于所述ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置;附加ZigBee協(xié)議的數(shù)據(jù)幀頭和幀尾,形成一包完整的ZigBee協(xié)議數(shù)據(jù)幀;數(shù)據(jù)發(fā)送模塊520:用于通過ZigBee模塊將封裝好的數(shù)據(jù)幀發(fā)向?qū)Ψ降腪igBee模塊;數(shù)據(jù)接收模塊530:用于通過ZigBee模塊接收對方ZigBee模塊傳來的數(shù)據(jù)幀信息;判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾;確定Modbus RTU數(shù)據(jù)在ZigBee協(xié)議數(shù)據(jù)幀中數(shù)據(jù)負(fù)載段內(nèi)的位置,解析Modbus RTU數(shù)據(jù)。優(yōu)選的,所述通訊參數(shù)信息包括波特率、通道號、網(wǎng)絡(luò)地址和通訊模式等參數(shù)信息。優(yōu)選的,在數(shù)據(jù)接收模塊530之后包括:在數(shù)據(jù)接收模塊之后包括:ZigBee模塊休眠喚醒模塊:ZigBee模塊進(jìn)入休眠狀態(tài),當(dāng)需要再次發(fā)送Modbus命令數(shù)據(jù)時,喚醒所述ZigBee模塊,再次執(zhí)行數(shù)據(jù)發(fā)送模塊520。優(yōu)選的,判斷ZigBee協(xié)議數(shù)據(jù)幀的幀頭和幀尾包括:判斷所述數(shù)據(jù)是否屬于ZigBee協(xié)議數(shù)據(jù)幀,然后通過所述數(shù)據(jù)長度判斷所述數(shù)據(jù)幀信息是否完整,并判斷所述數(shù)據(jù)幀信息是否被非法修改過。
上述僅對本發(fā)明中的幾種具體實(shí)施例加以說明,但并不能作為本發(fā)明的保護(hù)范圍,凡是依據(jù)本發(fā)明中的設(shè)計精神所作出的等效變化或修飾或等比例放大或縮小等,均應(yīng)認(rèn)為落入本發(fā)明的保護(hù)范圍。