《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 多路隔離的Modbus協(xié)議轉(zhuǎn)換器的設(shè)計(jì)
多路隔離的Modbus協(xié)議轉(zhuǎn)換器的設(shè)計(jì)
2016年電子技術(shù)應(yīng)用第10期
吳志杰,,王新霞,,孔凡敏,,李 康
山東大學(xué) 信息科學(xué)與工程學(xué)院,,山東 濟(jì)南250100
摘要: 在工業(yè)領(lǐng)域中,,基于Modbus RTU協(xié)議的設(shè)備被廣泛應(yīng)用,,可主控機(jī)不能通過以太網(wǎng)隔離控制多路設(shè)備,。設(shè)計(jì)了一種協(xié)議轉(zhuǎn)換器以解決上述問題,,并可用手機(jī)端控制設(shè)備,。本設(shè)計(jì)以ARM和HLK-RM04為基礎(chǔ),,完成Modbus RTU數(shù)據(jù)向TCP數(shù)據(jù)的轉(zhuǎn)換,并用SLIP協(xié)議打包數(shù)據(jù),,使用ADM2587E實(shí)現(xiàn)物理隔離,,利用Delphi語言開發(fā)了上位機(jī)軟件控制設(shè)備。本設(shè)計(jì)已在水蓄冷控制系統(tǒng)中得到了運(yùn)用,,工程應(yīng)用前景廣闊,。
關(guān)鍵詞: ARM HLK-RM04 ADM2587E Modbus SLIP
中圖分類號(hào): TP336
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.019
中文引用格式: 吳志杰,王新霞,,孔凡敏,,等. 多路隔離的Modbus協(xié)議轉(zhuǎn)換器的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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 引言

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

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

1.1 Modbus RTU協(xié)議

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

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

ck2-b1.gif

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

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

ck2-b2.gif

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

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

1.2 Modbus over TCP協(xié)議

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

1.3 SLIP協(xié)議

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

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

ck2-t1.gif

2 設(shè)計(jì)實(shí)現(xiàn)

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

ck2-t2.gif

2.1 ARM模塊

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

ck2-t3.gif

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

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

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

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

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

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

ck2-t4.gif

2.3 從設(shè)備隔離部分

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

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

2.4 上位機(jī)設(shè)計(jì)

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

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

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

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

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

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

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

4 結(jié)束語

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

參考文獻(xiàn)

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

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

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

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

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

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