(華東理工大學(xué)化工過程先進(jìn)控制與優(yōu)化教育部重點(diǎn)實(shí)驗(yàn)室,上海 200237)
無線設(shè)備無需布網(wǎng)和維護(hù)成本,適用于高腐蝕、難布線等場合。但現(xiàn)在工廠的通信體系完整,重新開發(fā)無線化成本高、時(shí)間緊,因此需將無線數(shù)據(jù)傳輸與現(xiàn)有協(xié)議相結(jié)合。
文獻(xiàn)[1]利用ZigBee設(shè)備的IEEE地址與其Modbus地址進(jìn)行綁定,并通過無線透傳的方式實(shí)現(xiàn)Modbus通信。
文獻(xiàn)[2]將ZigBee技術(shù)與Modbus相結(jié)合,并應(yīng)用在電力監(jiān)控系統(tǒng)中,對方法進(jìn)行了有效的證實(shí)。
文獻(xiàn)[3]~[4]則采用Modbus有線/無線混合傳輸方式,使用的無線技術(shù)分別為ZigBee和IEEE 802.15.4。
文獻(xiàn)[5]提出了WIA網(wǎng)絡(luò)與Modbus協(xié)議結(jié)合的透明傳輸概念,但未對網(wǎng)絡(luò)的傳輸過程以及如何實(shí)現(xiàn)做具體描述。
本文將WIA-PA無線技術(shù)[6]和Modbus協(xié)議相結(jié)合,利用透明機(jī)制傳輸,對系統(tǒng)中的主機(jī)設(shè)備、從機(jī)設(shè)備的通信數(shù)據(jù)包封裝、互聯(lián)后的通信流程及實(shí)際應(yīng)用做詳細(xì)的介紹。
透明傳輸概念是指在傳輸過程中,傳輸設(shè)備不對所傳輸?shù)臄?shù)據(jù)進(jìn)行任何處理,不對數(shù)據(jù)包作任何修改的傳輸方式[7]。本文利用WIA-PA的應(yīng)用層,通過透明傳輸機(jī)制進(jìn)行標(biāo)準(zhǔn)Modbus協(xié)議的數(shù)據(jù)傳輸。設(shè)計(jì)要求傳輸包將完整的Modbus協(xié)議報(bào)文封裝在WIA-PA網(wǎng)絡(luò)的通信協(xié)議應(yīng)用層的報(bào)文部分;而物理層、MAC層、網(wǎng)絡(luò)層采用WIA-PA網(wǎng)絡(luò)標(biāo)準(zhǔn)[8],將報(bào)文傳輸?shù)絎IA-PA網(wǎng)絡(luò)的終端;將應(yīng)用層報(bào)文解析后,直接將Modbus包投遞到設(shè)備,完成透明傳輸。
為加快開發(fā)速度和減少成本費(fèi)用,主機(jī)利用原先的有線Modbus主站,在連接RS- 485的端口上連接WIA網(wǎng)關(guān)相應(yīng)端口。WIA-PA無線網(wǎng)關(guān)采用WIAPA-GW1498,自身可支持RS- 485接口,可與具有RS- 485通信協(xié)議的總線進(jìn)行通信。
從機(jī)設(shè)備的設(shè)計(jì)主要是串口通信部分的設(shè)計(jì)。從機(jī)設(shè)備的通信使用無線模塊傳輸代替原先的有線傳輸。無線模塊可采用WIAPA-M1800通信模塊,模塊提供一個(gè)由數(shù)據(jù)收發(fā)管腳TX和RX組成的串口接口。通過該接口模塊可進(jìn)行無線網(wǎng)絡(luò)發(fā)送與接收串口數(shù)據(jù)。串口參數(shù)如表1所示。
表1 串口參數(shù)
微處理器與無線模塊之間的所有報(bào)文全部以HDLC包格式成幀,對應(yīng)每個(gè)命令成一幀。HDLC包格式如表2所示。
表2 HDLC包格式
無線模塊的Network ID、設(shè)備MAC地址、設(shè)備Join Key和廣播信道在初始化時(shí)根據(jù)主機(jī)設(shè)備的網(wǎng)關(guān)進(jìn)行設(shè)定,一旦設(shè)定便不能更改,否則無法進(jìn)入WIA-PA網(wǎng)絡(luò)[9]。在通信編程中需要用到兩個(gè)命令號,分別是數(shù)據(jù)透明上傳命令號0x17和數(shù)據(jù)透明下傳命令號0x18。
比較Modbus兩種傳輸模式,RTU模式幀結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)相對簡單,而且不需要轉(zhuǎn)換,適合封裝在WIA-PA協(xié)議幀的數(shù)據(jù)域內(nèi)。RTU模式中每個(gè)字節(jié)有11位,包含1位起始位、8位數(shù)據(jù)位、1位奇偶校驗(yàn)位和1位停止位。數(shù)據(jù)位要求先發(fā)最低有效位,可無校驗(yàn)位[10]。
RTU模式的報(bào)文幀最大為256 B,由發(fā)送設(shè)備將帶有起始和停止標(biāo)記的幀打包入Modbus報(bào)文。報(bào)文采用循環(huán)冗余檢驗(yàn)。在RTU模式下,報(bào)文幀被時(shí)長至少為3.5個(gè)字符時(shí)間的空閑間隔區(qū)分。整個(gè)報(bào)文幀必須以連續(xù)的字節(jié)流發(fā)送,而且若兩個(gè)字節(jié)之間的空閑間隔大于1.5個(gè)字符時(shí)間,則報(bào)文被認(rèn)為不完整,將被接收方丟棄[11]。由于此設(shè)計(jì)的波特率采用9 600 bit/s,Modbus要求這兩個(gè)字符時(shí)間必須嚴(yán)格遵守。
通過軟件編程將Modbus RTU幀裝入WIA-PA報(bào)文發(fā)送,或?qū)odbus RTU幀從收到的WIA-PA報(bào)文中解析出來,串口設(shè)置為UART數(shù)據(jù)通信。硬件上,將設(shè)備微處理器的RXD和TXD與無線模塊的TXD和RXD連接。從機(jī)設(shè)備的串口通信便設(shè)計(jì)完成。
WIA-PA與Modbus互聯(lián)后,每個(gè)從機(jī)設(shè)備要有兩個(gè)地址。一個(gè)是Modbus的地址,用于Modbus設(shè)備的尋址;另一個(gè)是無線模塊的地址,用于WIA-PA網(wǎng)絡(luò)的尋址。當(dāng)從機(jī)設(shè)備加入網(wǎng)絡(luò)時(shí),網(wǎng)關(guān)添加了一張關(guān)于從機(jī)設(shè)備Modbus地址和WIA-PA地址的地址映射表[12]。
當(dāng)網(wǎng)關(guān)需要向某臺從機(jī)設(shè)備無線發(fā)送帶有Modbus報(bào)文時(shí),需要根據(jù)映射關(guān)系找到Modbus地址對應(yīng)的WIA-PA網(wǎng)絡(luò)中無線模塊的地址,才能通過無線網(wǎng)絡(luò)發(fā)到終端從機(jī)設(shè)備上。
主機(jī)對從機(jī)進(jìn)行一次Modbus命令配置的流程與從機(jī)響應(yīng)主機(jī)一次請求命令的流程如圖1所示。
圖1 主機(jī)配置與從機(jī)響應(yīng)流程
數(shù)據(jù)通信采用Client/Service方式傳輸,Modbus采用主從方式收發(fā)數(shù)據(jù)。當(dāng)主機(jī)需要發(fā)送請求數(shù)據(jù)幀時(shí),按照表3所示的含有RTU請求幀的WIA-PA數(shù)據(jù)請求幀將報(bào)文打包后無線發(fā)出,從機(jī)接收報(bào)文并進(jìn)行相應(yīng)的處理。
某些功能碼需要從機(jī)向主機(jī)發(fā)送一個(gè)應(yīng)答幀,以通知從機(jī)執(zhí)行情況或者相應(yīng)寄存器的狀態(tài),或者回傳相關(guān)錯(cuò)誤碼等信息。應(yīng)答碼則按照表3所示的含有RTU應(yīng)答幀的WIA-PA數(shù)據(jù)應(yīng)答幀將報(bào)文打包,并回傳給主機(jī)。
表3 含有RTU數(shù)據(jù)幀的WIA-PA幀
本文將設(shè)計(jì)方案應(yīng)用于無線溫度變送器和無線Modbus主站的實(shí)時(shí)溫度測量通信。其中無線溫度變送器為從機(jī)設(shè)備,與無線網(wǎng)關(guān)相連的Modbus主站和上位機(jī)為主機(jī)設(shè)備。溫度變送器是工業(yè)現(xiàn)場常用的儀表,它接收熱電偶或熱電阻的輸入信號,進(jìn)入極低功耗的A/D轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換,實(shí)現(xiàn)溫度值的測量。
為保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,發(fā)送、接收數(shù)據(jù)的工作要在中斷中執(zhí)行。若Modbus無線主站需要獲取的Modbus地址是0x55的無線溫度變送器所測的溫度值,即讀取溫度值所在寄存器的值。通信過程大致如下。
① 主站首先根據(jù)Modbus與WIA-PA網(wǎng)絡(luò)地址映射表,找到地址0x55對應(yīng)的WIA-PA無線模塊的16位短地址24-00-00-01-00-00-00-09。然后按Modbus命令“讀輸入寄存器”的格式:功能碼0x04、起始地址0x0008、輸入寄存器數(shù)量0x0002、計(jì)算校驗(yàn)值,得到請求命令幀7E-01-28-24-00-00-01-00-00-00-09-55-04-00-08-00-02-DD-FD-64-DD-7E。最后經(jīng)網(wǎng)關(guān)傳至儀表。
② 無線模塊收到主站發(fā)來的命令幀,微處理器響應(yīng)中斷后,進(jìn)入中斷服務(wù)程序。中斷服務(wù)程序須在報(bào)文剛接收時(shí)設(shè)置好接收緩沖區(qū),將整個(gè)報(bào)文放入其中。
③ 報(bào)文接收完整后,將報(bào)文中WIA-PA協(xié)議的包頭、命令號、CRC校驗(yàn)值、包尾拆掉,僅保留Modbus數(shù)據(jù)命令幀,然后賦到如下幀結(jié)構(gòu)中,以便做進(jìn)一步的功能處理。其中,加入的數(shù)據(jù)域長度是方便檢查發(fā)送數(shù)據(jù)的完整性。
typedef struct{
unsigned char Address;
//MB目標(biāo)地址
unsigned char Function;
//MB功能代碼
unsigned char Data[MB_FRAME_SIZE];
//MB請求/應(yīng)答數(shù)據(jù)
unsigned int Length;
//不發(fā)送,字節(jié)長度
unsigned int CRCResult;
//MB CRC校驗(yàn)
}MB_FRAME;
④ 對功能碼、本機(jī)地址或廣播地址、CRC校驗(yàn)、接收數(shù)據(jù)超幀等信息進(jìn)行異常檢驗(yàn)。對于異常結(jié)果,返回功能碼和異常碼,主機(jī)收包并解析,對命令請求做相應(yīng)修改后再發(fā)送。
⑤ 若檢驗(yàn)無異常,則開始進(jìn)行正常處理,讀取8、9兩個(gè)寄存器中的值,加上字節(jié)數(shù)0x04。然后將它們放入Modbus的應(yīng)答幀數(shù)據(jù)域內(nèi),本機(jī)地址和功能碼不變。經(jīng)過CRC校驗(yàn)后,裝入WIA-PA數(shù)據(jù)域內(nèi),按WIA-PA打包后發(fā)給無線模塊,無線模塊將其送往網(wǎng)關(guān)。
⑥ 網(wǎng)關(guān)收到數(shù)據(jù)包(7E-01-40-24-00-00-01-00-00-00-09-55-04-04-E3-00-41-F6-D3-69-B2- 53-7E)后,拆包提取Modbus報(bào)文(55-04-04-E3-00-41-F6-D3-69),并通過RS- 485接口送至Modbus主站,主站顯示儀表溫度。一次無線通信完成。
應(yīng)用結(jié)果表明,WIA-PA與Modbus互聯(lián)后的無線溫度變送器與WIA-PA無線網(wǎng)絡(luò)完全兼容,通信功能符合標(biāo)準(zhǔn)的要求,可實(shí)時(shí)進(jìn)行溫度采集和請求應(yīng)答,實(shí)現(xiàn)了遠(yuǎn)距離傳輸,且在瞬時(shí)溫度影響下也能正常工作。此外,儀表使用智能自組織網(wǎng)絡(luò)技術(shù),數(shù)據(jù)可靠性高達(dá)99%以上,能適應(yīng)溫度測量的基本要求,功耗低,無線傳輸安全性高,證明了設(shè)計(jì)方案的可行性。
隨著無線技術(shù)在工業(yè)領(lǐng)域的逐步推廣,WIA-PA技術(shù)必將與越來越多的工業(yè)通信網(wǎng)絡(luò)或現(xiàn)場總線進(jìn)行互操作。本文介紹的WIA-PA與Modbus互聯(lián)的透明傳輸機(jī)制,在對具體技術(shù)進(jìn)行分析的同時(shí),給出了實(shí)現(xiàn)的設(shè)計(jì)方案和具體應(yīng)用。設(shè)計(jì)方法具有一定的通用性,除了可以用在各種需要Modbus協(xié)議的無線WIA-PA設(shè)備上,還適用于WIA-PA與其他工業(yè)通信技術(shù)的互聯(lián),其設(shè)計(jì)原理可謂是相通的。此外,應(yīng)用中的無線溫度變送器因其使用環(huán)境惡劣、無需網(wǎng)絡(luò)布線、安裝成本低、入網(wǎng)即可使用以及易擴(kuò)展和升級等優(yōu)點(diǎn),具有很好的應(yīng)用前景。
[1] 涂煊,彭瑜,周怡颋,等.Modbus通信協(xié)議的紫蜂無線傳輸網(wǎng)絡(luò)的研究[J].自動化儀表,2007,28(7):10-13.
[2] 周惠椒,譚喜堂,朱琴躍,等.ZigBee無線通信技術(shù)在電力監(jiān)控系統(tǒng)中的應(yīng)用[J].低壓電器,2011(18):36-41.
[3] 劉桂臣,陽憲惠.Modbus報(bào)文有線/無線混合傳輸?shù)膶?shí)現(xiàn)[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2008,48(S2):1844-1847.
[4] Guarese G B M,Sieben F G,Webber T,et al.Exploiting Modbus protocol in wired and wireless multilevel communication architecture[C]//Computing System Engineering(SBESC),2012 Brazilian Symposium,2012:13-18.
[5] 曾鵬,肖金超,張瓊.WIA網(wǎng)絡(luò)與MODBUS網(wǎng)絡(luò)互聯(lián)設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表標(biāo)準(zhǔn)化與計(jì)量,2009(4):35-38.
[6] 彭瑜.工業(yè)無線標(biāo)準(zhǔn)WIA-PA的特點(diǎn)分析和應(yīng)用展望[J].自動化儀表,2010,31(1):1-9.
[7] Gao Jun,Lai Wuwen,Wu Yaping,et al.Protocol study of ZigBee serial transparent transmission with voltage detection function[C]//Wireless Communications,Networking and Mobile Computing(WiCOM),the 7th International Conference,2011:1-4.
[8] Liang Wei,Zhang Xiaoling,Yang Xiao,et al.Survey and experiments of WIA-PA specification of industrial wireless network[J].Wireless Communications & Mobile Computing,2010,11(8):1197-1212.
[9] Tang Zhong,Cheng Mengjin,Zeng Peng,et al.Real-time communication in WIA-PA industrial wireless networks[C]//Computer Science and Information Technology(ICCSIT),the 3rd IEEE International Conference,2010:600-605.
[10]Morris T,Vaughn R,Dandass Y.A retrofit network intrusion detection system for Modbus RTU and ASCII industrial control systems[C]//System Science(HICSS),the 45th Hawaii International Conference,2012:2338-2345.
[11]Kuang Jian,Wang Guibao,Bian Jiali.A Modbus protocol stack compatible with RTU/TCP frames and embedded application[C]//Advances in Intelligent and Soft Computing,Springer-Verlag Berlin Heidelberg,2012:765-770.
[12]邢偉偉,白瑞林,孟偉.ZigBee無線網(wǎng)關(guān)在Modbus通信中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(29):81-84.