(華東理工大學(xué)化工過程先進控制與優(yōu)化教育部重點實驗室,上海 200237)
無線設(shè)備無需布網(wǎng)和維護成本,適用于高腐蝕、難布線等場合。但現(xiàn)在工廠的通信體系完整,重新開發(fā)無線化成本高、時間緊,因此需將無線數(shù)據(jù)傳輸與現(xiàn)有協(xié)議相結(jié)合。
文獻[1]利用ZigBee設(shè)備的IEEE地址與其Modbus地址進行綁定,并通過無線透傳的方式實現(xiàn)Modbus通信。
文獻[2]將ZigBee技術(shù)與Modbus相結(jié)合,并應(yīng)用在電力監(jiān)控系統(tǒng)中,對方法進行了有效的證實。
文獻[3]~[4]則采用Modbus有線/無線混合傳輸方式,使用的無線技術(shù)分別為ZigBee和IEEE 802.15.4。
文獻[5]提出了WIA網(wǎng)絡(luò)與Modbus協(xié)議結(jié)合的透明傳輸概念,但未對網(wǎng)絡(luò)的傳輸過程以及如何實現(xiàn)做具體描述。
本文將WIA-PA無線技術(shù)[6]和Modbus協(xié)議相結(jié)合,利用透明機制傳輸,對系統(tǒng)中的主機設(shè)備、從機設(shè)備的通信數(shù)據(jù)包封裝、互聯(lián)后的通信流程及實際應(yīng)用做詳細的介紹。
透明傳輸概念是指在傳輸過程中,傳輸設(shè)備不對所傳輸?shù)臄?shù)據(jù)進行任何處理,不對數(shù)據(jù)包作任何修改的傳輸方式[7]。本文利用WIA-PA的應(yīng)用層,通過透明傳輸機制進行標準Modbus協(xié)議的數(shù)據(jù)傳輸。設(shè)計要求傳輸包將完整的Modbus協(xié)議報文封裝在WIA-PA網(wǎng)絡(luò)的通信協(xié)議應(yīng)用層的報文部分;而物理層、MAC層、網(wǎng)絡(luò)層采用WIA-PA網(wǎng)絡(luò)標準[8],將報文傳輸?shù)絎IA-PA網(wǎng)絡(luò)的終端;將應(yīng)用層報文解析后,直接將Modbus包投遞到設(shè)備,完成透明傳輸。
為加快開發(fā)速度和減少成本費用,主機利用原先的有線Modbus主站,在連接RS- 485的端口上連接WIA網(wǎng)關(guān)相應(yīng)端口。WIA-PA無線網(wǎng)關(guān)采用WIAPA-GW1498,自身可支持RS- 485接口,可與具有RS- 485通信協(xié)議的總線進行通信。
從機設(shè)備的設(shè)計主要是串口通信部分的設(shè)計。從機設(shè)備的通信使用無線模塊傳輸代替原先的有線傳輸。無線模塊可采用WIAPA-M1800通信模塊,模塊提供一個由數(shù)據(jù)收發(fā)管腳TX和RX組成的串口接口。通過該接口模塊可進行無線網(wǎng)絡(luò)發(fā)送與接收串口數(shù)據(jù)。串口參數(shù)如表1所示。
表1 串口參數(shù)
微處理器與無線模塊之間的所有報文全部以HDLC包格式成幀,對應(yīng)每個命令成一幀。HDLC包格式如表2所示。
表2 HDLC包格式
無線模塊的Network ID、設(shè)備MAC地址、設(shè)備Join Key和廣播信道在初始化時根據(jù)主機設(shè)備的網(wǎng)關(guān)進行設(shè)定,一旦設(shè)定便不能更改,否則無法進入WIA-PA網(wǎng)絡(luò)[9]。在通信編程中需要用到兩個命令號,分別是數(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模式中每個字節(jié)有11位,包含1位起始位、8位數(shù)據(jù)位、1位奇偶校驗位和1位停止位。數(shù)據(jù)位要求先發(fā)最低有效位,可無校驗位[10]。
RTU模式的報文幀最大為256 B,由發(fā)送設(shè)備將帶有起始和停止標記的幀打包入Modbus報文。報文采用循環(huán)冗余檢驗。在RTU模式下,報文幀被時長至少為3.5個字符時間的空閑間隔區(qū)分。整個報文幀必須以連續(xù)的字節(jié)流發(fā)送,而且若兩個字節(jié)之間的空閑間隔大于1.5個字符時間,則報文被認為不完整,將被接收方丟棄[11]。由于此設(shè)計的波特率采用9 600 bit/s,Modbus要求這兩個字符時間必須嚴格遵守。
通過軟件編程將Modbus RTU幀裝入WIA-PA報文發(fā)送,或?qū)odbus RTU幀從收到的WIA-PA報文中解析出來,串口設(shè)置為UART數(shù)據(jù)通信。硬件上,將設(shè)備微處理器的RXD和TXD與無線模塊的TXD和RXD連接。從機設(shè)備的串口通信便設(shè)計完成。
WIA-PA與Modbus互聯(lián)后,每個從機設(shè)備要有兩個地址。一個是Modbus的地址,用于Modbus設(shè)備的尋址;另一個是無線模塊的地址,用于WIA-PA網(wǎng)絡(luò)的尋址。當(dāng)從機設(shè)備加入網(wǎng)絡(luò)時,網(wǎng)關(guān)添加了一張關(guān)于從機設(shè)備Modbus地址和WIA-PA地址的地址映射表[12]。
當(dāng)網(wǎng)關(guān)需要向某臺從機設(shè)備無線發(fā)送帶有Modbus報文時,需要根據(jù)映射關(guān)系找到Modbus地址對應(yīng)的WIA-PA網(wǎng)絡(luò)中無線模塊的地址,才能通過無線網(wǎng)絡(luò)發(fā)到終端從機設(shè)備上。
主機對從機進行一次Modbus命令配置的流程與從機響應(yīng)主機一次請求命令的流程如圖1所示。
圖1 主機配置與從機響應(yīng)流程
數(shù)據(jù)通信采用Client/Service方式傳輸,Modbus采用主從方式收發(fā)數(shù)據(jù)。當(dāng)主機需要發(fā)送請求數(shù)據(jù)幀時,按照表3所示的含有RTU請求幀的WIA-PA數(shù)據(jù)請求幀將報文打包后無線發(fā)出,從機接收報文并進行相應(yīng)的處理。
某些功能碼需要從機向主機發(fā)送一個應(yīng)答幀,以通知從機執(zhí)行情況或者相應(yīng)寄存器的狀態(tài),或者回傳相關(guān)錯誤碼等信息。應(yīng)答碼則按照表3所示的含有RTU應(yīng)答幀的WIA-PA數(shù)據(jù)應(yīng)答幀將報文打包,并回傳給主機。
表3 含有RTU數(shù)據(jù)幀的WIA-PA幀
本文將設(shè)計方案應(yīng)用于無線溫度變送器和無線Modbus主站的實時溫度測量通信。其中無線溫度變送器為從機設(shè)備,與無線網(wǎng)關(guān)相連的Modbus主站和上位機為主機設(shè)備。溫度變送器是工業(yè)現(xiàn)場常用的儀表,它接收熱電偶或熱電阻的輸入信號,進入極低功耗的A/D轉(zhuǎn)換器進行模數(shù)轉(zhuǎn)換,實現(xiàn)溫度值的測量。
為保證數(shù)據(jù)傳輸?shù)膶崟r性,發(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、計算校驗值,得到請求命令幀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)中斷后,進入中斷服務(wù)程序。中斷服務(wù)程序須在報文剛接收時設(shè)置好接收緩沖區(qū),將整個報文放入其中。
③ 報文接收完整后,將報文中WIA-PA協(xié)議的包頭、命令號、CRC校驗值、包尾拆掉,僅保留Modbus數(shù)據(jù)命令幀,然后賦到如下幀結(jié)構(gòu)中,以便做進一步的功能處理。其中,加入的數(shù)據(jù)域長度是方便檢查發(fā)送數(shù)據(jù)的完整性。
typedef struct{
unsigned char Address;
//MB目標地址
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校驗
}MB_FRAME;
④ 對功能碼、本機地址或廣播地址、CRC校驗、接收數(shù)據(jù)超幀等信息進行異常檢驗。對于異常結(jié)果,返回功能碼和異常碼,主機收包并解析,對命令請求做相應(yīng)修改后再發(fā)送。
⑤ 若檢驗無異常,則開始進行正常處理,讀取8、9兩個寄存器中的值,加上字節(jié)數(shù)0x04。然后將它們放入Modbus的應(yīng)答幀數(shù)據(jù)域內(nèi),本機地址和功能碼不變。經(jīng)過CRC校驗后,裝入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報文(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ò)完全兼容,通信功能符合標準的要求,可實時進行溫度采集和請求應(yīng)答,實現(xiàn)了遠距離傳輸,且在瞬時溫度影響下也能正常工作。此外,儀表使用智能自組織網(wǎng)絡(luò)技術(shù),數(shù)據(jù)可靠性高達99%以上,能適應(yīng)溫度測量的基本要求,功耗低,無線傳輸安全性高,證明了設(shè)計方案的可行性。
隨著無線技術(shù)在工業(yè)領(lǐng)域的逐步推廣,WIA-PA技術(shù)必將與越來越多的工業(yè)通信網(wǎng)絡(luò)或現(xiàn)場總線進行互操作。本文介紹的WIA-PA與Modbus互聯(lián)的透明傳輸機制,在對具體技術(shù)進行分析的同時,給出了實現(xiàn)的設(shè)計方案和具體應(yīng)用。設(shè)計方法具有一定的通用性,除了可以用在各種需要Modbus協(xié)議的無線WIA-PA設(shè)備上,還適用于WIA-PA與其他工業(yè)通信技術(shù)的互聯(lián),其設(shè)計原理可謂是相通的。此外,應(yīng)用中的無線溫度變送器因其使用環(huán)境惡劣、無需網(wǎng)絡(luò)布線、安裝成本低、入網(wǎng)即可使用以及易擴展和升級等優(yōu)點,具有很好的應(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報文有線/無線混合傳輸?shù)膶崿F(xiàn)[J].清華大學(xué)學(xué)報:自然科學(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è)計與實現(xiàn)[J].儀器儀表標準化與計量,2009(4):35-38.
[6] 彭瑜.工業(yè)無線標準WIA-PA的特點分析和應(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].計算機工程與應(yīng)用,2011,47(29):81-84.