《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 多路隔離的Modbus協(xié)議轉換器的設計
多路隔離的Modbus協(xié)議轉換器的設計
2016年電子技術應用第10期
吳志杰,王新霞,孔凡敏,李 康
山東大學 信息科學與工程學院,山東 濟南250100
摘要: 在工業(yè)領域中,基于Modbus RTU協(xié)議的設備被廣泛應用,可主控機不能通過以太網(wǎng)隔離控制多路設備。設計了一種協(xié)議轉換器以解決上述問題,并可用手機端控制設備。本設計以ARM和HLK-RM04為基礎,完成Modbus RTU數(shù)據(jù)向TCP數(shù)據(jù)的轉換,并用SLIP協(xié)議打包數(shù)據(jù),使用ADM2587E實現(xiàn)物理隔離,利用Delphi語言開發(fā)了上位機軟件控制設備。本設計已在水蓄冷控制系統(tǒng)中得到了運用,工程應用前景廣闊。
中圖分類號: TP336
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.019
中文引用格式: 吳志杰,王新霞,孔凡敏,等. 多路隔離的Modbus協(xié)議轉換器的設計[J].電子技術應用,2016,42(10):77-79.
英文引用格式: Wu Zhijie,Wang Xinxia,Kong Fanmin,et al. Design of multiple isolated Modbus protocol converter[J].Application of Electronic Technique,2016,42(10):77-79.
Design of multiple isolated Modbus protocol converter
Wu Zhijie,Wang Xinxia,Kong Fanmin,Li Kang
School of Information Science Engineering,Shandong University,Jinan 250100,China
Abstract: In the industry system, the equipment based on Modbus RTU protocol is widely used,but master control machine doesn′t control multiple equipment isolated through Ethernet. This paper designed a protocol converter in order to solve this problem. Also,it was viable to use the mobile phone to control the equipment. This protocol converter was based on the ARM and HLK-RM04. The Modbus RTU data was converted into TCP data by using the converter. This converter used SLIP protocol to pack the data and ADM2587E to isolate multiple equipment. PC software was also developed,which used Delphi to control the equipment. This design has been applied in the water storage air conditioning control system,and it has a broad prospect in engineering application.
Key words : ARM;HLK-RM04;ADM2587E;Modbus;SLIP;Delphi;multiple isolated;protocol conversion

0 引言

    隨著控制、計算機、通信、網(wǎng)絡等技術的發(fā)展,Internet正在把全世界的計算機系統(tǒng)和通信網(wǎng)絡逐漸集成起來,形成信息高速公路,形成公用數(shù)據(jù)網(wǎng)絡,而在此基礎上,傳統(tǒng)的工業(yè)控制領域也正經(jīng)歷一場前所未有的變革,開始向網(wǎng)絡化方向發(fā)展,形成新的控制網(wǎng)絡[1]。以太網(wǎng)作為一種具有高速數(shù)據(jù)傳輸能力的網(wǎng)絡成為了大多數(shù)工業(yè)控制網(wǎng)絡的選擇,而將控制系統(tǒng)中需要用到的各種儀器接入以太網(wǎng)進行集中隔離控制成為一項重要的課題。在水蓄冷控制系統(tǒng)中大多數(shù)底層的電子設備的接口為RS485接口,通信協(xié)議為Modbus RTU,本文設計了一種多路隔離的協(xié)議轉換器來解決這個問題,并可拓展為用手機通過WiFi來控制設備。

1 轉換器涉及通信協(xié)議介紹

1.1 Modbus RTU協(xié)議

    Modbus串行鏈路協(xié)議包括RTU模式和ASCII模式,本設計用到的為Modbus RTU模式。

    Modbus RTU的幀格式有兩種:一種是主機發(fā)起的查詢和命令從設備的格式,另一種是從設備收到主機命令后的應答格式。兩種格式在大多數(shù)情況下相同,如表1所示。

ck2-b1.gif

    從機地址:地址信息為1 B,表示要接收命令或發(fā)出應答響應的從設備的地址。從設備的地址的合法范圍是0~247(十進制),主機將要查詢或命令的從設備地址信息放入從機地址區(qū)內,選擇對應的從設備,而從設備將自己的地址信息放入從機地址區(qū)內來響應主機,告訴主機是誰作出響應。

    功能碼:功能碼為1 B,表示主機要求從設備進行何種操作,或者從設備應答的數(shù)據(jù)為何種操作下得到的數(shù)據(jù)。在控制系統(tǒng)中經(jīng)常用到的讀取從設備狀態(tài)的功能碼有:0x01,0x02,0x03,0x04;用來設定從設備狀態(tài)的功能碼有0x05和0x06。Modbus協(xié)議的各常用功能碼對應功能如表2所示。

ck2-b2.gif

    數(shù)據(jù)域:數(shù)據(jù)信息的字節(jié)數(shù)根據(jù)功能碼而異,表示主機對從設備的狀態(tài)的設定,或者主機讀取的從設備寄存器數(shù)據(jù)。當主機設定線圈或者寄存器時,命令格式的數(shù)據(jù)域和圖1一樣,而如果要讀取狀態(tài)時,則數(shù)據(jù)域的第一段為狀態(tài)數(shù)據(jù)的個數(shù)。數(shù)據(jù)的格式為高字節(jié)在前,低字節(jié)在后。

    校驗碼:校驗碼為2 B,RTU模式下使用CRC校驗碼,是由發(fā)送設備輸出的數(shù)據(jù)計算得到,在接收數(shù)據(jù)時先用同一方法再算一次CRC,若相同則接收,若不同則丟棄,以此來校驗傳輸?shù)臄?shù)據(jù)是否有誤。

1.2 Modbus over TCP協(xié)議

    基于Modbus over TCP協(xié)議的設備可以直接接入以太網(wǎng),無需經(jīng)過協(xié)議轉換器,本系統(tǒng)中只有少數(shù)設備是基于該協(xié)議的,因此不做詳細介紹。

1.3 SLIP協(xié)議

    SLIP協(xié)議是一種在串行線路上傳輸數(shù)據(jù)的協(xié)議,如果使用SLIP協(xié)議來進行通信,則目標IP地址和源IP地址都必須已知[2]。SLIP協(xié)議是鏈路層協(xié)議,只能和TCP/IP一起使用。由于本設計可以接入3個RS-485接口的設備,只有一個輸出數(shù)據(jù)的串口,3路數(shù)據(jù)可能同時發(fā)送,所以需要一種對數(shù)據(jù)打包的協(xié)議來實現(xiàn),而設備只需接入以太網(wǎng)進行監(jiān)控,并且TCP/IP提供了很好的可靠性保證,所以SLIP協(xié)議能很好地滿足這個需求。

    SLIP協(xié)議定義了2個特殊的字符:END(0xC0)和ESC(0xDB)。需要打包的數(shù)據(jù)在開頭和結尾加入一個END字符,END字符標志著數(shù)據(jù)的開始和結束。如果傳輸?shù)臄?shù)據(jù)中包含END字符,就會造成錯誤的接收和結束,所以引入ESC字符來防止這種情況的發(fā)生。傳輸原始數(shù)據(jù)中存在的END字符轉換為ESC(0xDB)或ESC-END(0xDC),而存在的ESC字符則轉換為ESC(0xDB)或ESC-ESC(0xDD)[3]。SLIP協(xié)議對應的數(shù)據(jù)封裝過程如圖1所示。

ck2-t1.gif

2 設計實現(xiàn)

    協(xié)議轉換器的系統(tǒng)框圖如圖2所示。

ck2-t2.gif

2.1 ARM模塊

    本協(xié)議轉換器的主控模塊使用ARM,選擇了32 bit的ARM(Atmel SAM3X8E),它擁有84 MHz的CPU時鐘頻率、96 KB的SRAM、512 KB的Flash和54個數(shù)字I/O口。4路UART硬件串口用來進行串行通信,其中3路串口用來連接協(xié)議轉換機箱的3路RS485串口,另外一個串口用來傳輸SLIP協(xié)議打包的數(shù)據(jù)。未使用的I/O口可以用來輸出控制閥門繼電器,并且可以顯示閥門開關的到位指示,圖3為軟件流程圖。

ck2-t3.gif

    運用ARM開發(fā)工具來進行設備數(shù)據(jù)的處理,先對串口的波特率、I/O口的輸入輸出模式等進行初始化,然后對數(shù)據(jù)處理過程中的各個函數(shù)進行定義。下面對幾個主要函數(shù)進行說明。

    先定義函數(shù)calcCRC16用于計算Modbus RTU的CRC16校驗碼。當主機對從設備發(fā)出請求時,請求數(shù)據(jù)通過以太網(wǎng)傳輸過來,經(jīng)過串口進入ARM進行解包處理,并識別出請求是發(fā)送給哪個從設備的,從而將相應數(shù)據(jù)傳送給對應設備的串口,這個過程由processNetworkData函數(shù)實現(xiàn)。

    當從設備響應主機發(fā)出的請求時,通過RS-485接口傳輸?shù)臄?shù)據(jù)格式為Modbus RTU,消息幀需要通過SLIP協(xié)議進行打包,因此定義一個sendSlipPacket函數(shù),然后定義函數(shù)來處理對應RS485端口接收到的數(shù)據(jù)。若判斷數(shù)據(jù)包還沒有接收完,則不進行處理,返回。若數(shù)據(jù)包處于接收錯誤狀態(tài)(超長,數(shù)據(jù)錯誤等),則清空接收緩沖區(qū)并返回。若收到一個完整的數(shù)據(jù)包,則SLIP編碼后由網(wǎng)絡端口(Serial)發(fā)送。

2.2 串口轉以太網(wǎng)模塊

    經(jīng)SLIP協(xié)議打包的Modbus RTU數(shù)據(jù)通過串口發(fā)送后,并不能進入以太網(wǎng)進行傳輸,因此采用了深圳海凌科電子有限公司的HLK-RM04。RM04模塊是海凌科電子推出的嵌入式UART-ETH-WIFI(串口-以太網(wǎng)-無線)模塊,內置TCP/IP協(xié)議棧,能夠實現(xiàn)用戶串口、以太網(wǎng)、無線(WiFi)3個接口之間的轉換,傳統(tǒng)的串口設備在不需要更改任何設置的情況下,即可通過網(wǎng)絡傳輸數(shù)據(jù)。

    先通過網(wǎng)線將模塊與PC相連接,進入模塊配置界面來設定模塊的IP地址、網(wǎng)關、網(wǎng)絡協(xié)議等。將RM04的模式設為TCP Server,該模式下模塊監(jiān)聽指定端口,等待TCP Client連接,連接成功后,模塊將串口TCP數(shù)據(jù)發(fā)送給連接的各個TCP Client,如圖4所示。將ARM模塊的輸出串口與RM04模塊的串口相連,就可以把Modbus RTU數(shù)據(jù)轉換成TCP數(shù)據(jù),并通過以太網(wǎng)傳輸。

ck2-t4.gif

2.3 從設備隔離部分

    RS485接口的設備大多工作在工業(yè)自動化領域,特別容易受到失控電壓和電流所帶來的負面影響,所以有必要在通信總線與邏輯控制器之間進行電氣隔離。另外,本設計是對多路數(shù)據(jù)進行轉換,為了防止各路信號的相互串擾和電氣噪聲的影響,隔離必不可少。

    本設計使用了ADI公司的ADM2587E芯片,它提供了RS485通信的完整隔離方案。ADM2587E內部集成了運用isopower技術的DC/DC隔離電源,在單個封裝內還集成了三通道隔離器、三態(tài)差分線路驅動器和差分輸入接收機,保護功能好,而且其體積小、功耗小,大大減少了占用電路板的面積。

2.4 上位機設計

    在本控制系統(tǒng)中,要在主機端控制底層的電子設備,需要開發(fā)對應的上位機軟件來進行控制和監(jiān)測。本上位機使用Delphi語言在XE7平臺下設計。

    基于Modbus協(xié)議的設備都屬于新建的父類TModbus,然后分為TModbusoverslip類和TModbusovertcp類,這些類屬于通信協(xié)議類。

    本設計的系統(tǒng)接口也需要建立類TTcpclient,這個類基于TWSocket類,TWSocket類的作用是將Windows Socket封裝起來,TTcpclient起到了TCP客戶端的作用,負責連接Server端,并進行數(shù)據(jù)處理。

    為了使得工作人員在主機端便利地控制各種設備,控制界面應美觀,因此建立了基于TPanel的類TDevGUI,系統(tǒng)界面中的圖形都基于此類。

3 協(xié)議轉換器的拓展功能

    隨著移動通信的不斷發(fā)展,手機成為了每個人必不可少的工具,所以考慮加入手機端對電子設備的控制,這樣工作人員就可以方便地查看設備的工作狀態(tài),而且在本設計中使用的HLK-RM04模塊還支持串口轉WiFi功能,這就使得構想成為了可能。

    通過RM04模塊配置界面將模塊工作方式設定為WiFi AP模式,手機作為客戶端來連接WiFi,將ARM中未使用的2個I/O口拓展為串口,進而控制設備。

4 結束語

    本文對水蓄冷控制系統(tǒng)中無法使用主機通過以太網(wǎng)控制設備的問題進行了討論,提出了一種工業(yè)中實用的多路隔離的Modbus協(xié)議轉換器的設計方法。本協(xié)議轉換器已投入使用,穩(wěn)定性強,安全性好。

參考文獻

[1] 賈東耀,汪仁煌.工業(yè)控制網(wǎng)絡結構的發(fā)展趨勢[J].工業(yè)儀表與自動化裝置,2002(5):12-14.

[2] SHANMUGAM R,PADMINI R,NIVEDITA S.TCP/IP詳解[M].尹浩瓊,李劍,譯.北京:電子工業(yè)出版社,2003.

[3] 吳明光,崔家林,陳冠雄.串行網(wǎng)際協(xié)議在記錄儀通信中的應用[J].科技通報,2005,21(5):612-614.

[4] 沈建華.ARM處理器與嵌入式系統(tǒng)[J].單片機與嵌入式系統(tǒng)應用,2010(11):5-7.

[5] 俞野秋,陳堅.Modbus和Modbus-TCP協(xié)議轉換研究[J].儀表技術,2013(1):28-31.

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