文獻標識碼: 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.
0 引言
隨著控制、計算機、通信、網絡等技術的發(fā)展,Internet正在把全世界的計算機系統(tǒng)和通信網絡逐漸集成起來,形成信息高速公路,形成公用數據網絡,而在此基礎上,傳統(tǒng)的工業(yè)控制領域也正經歷一場前所未有的變革,開始向網絡化方向發(fā)展,形成新的控制網絡[1]。以太網作為一種具有高速數據傳輸能力的網絡成為了大多數工業(yè)控制網絡的選擇,而將控制系統(tǒng)中需要用到的各種儀器接入以太網進行集中隔離控制成為一項重要的課題。在水蓄冷控制系統(tǒng)中大多數底層的電子設備的接口為RS485接口,通信協(xié)議為Modbus RTU,本文設計了一種多路隔離的協(xié)議轉換器來解決這個問題,并可拓展為用手機通過WiFi來控制設備。
1 轉換器涉及通信協(xié)議介紹
1.1 Modbus RTU協(xié)議
Modbus串行鏈路協(xié)議包括RTU模式和ASCII模式,本設計用到的為Modbus RTU模式。
Modbus RTU的幀格式有兩種:一種是主機發(fā)起的查詢和命令從設備的格式,另一種是從設備收到主機命令后的應答格式。兩種格式在大多數情況下相同,如表1所示。
從機地址:地址信息為1 B,表示要接收命令或發(fā)出應答響應的從設備的地址。從設備的地址的合法范圍是0~247(十進制),主機將要查詢或命令的從設備地址信息放入從機地址區(qū)內,選擇對應的從設備,而從設備將自己的地址信息放入從機地址區(qū)內來響應主機,告訴主機是誰作出響應。
功能碼:功能碼為1 B,表示主機要求從設備進行何種操作,或者從設備應答的數據為何種操作下得到的數據。在控制系統(tǒng)中經常用到的讀取從設備狀態(tài)的功能碼有:0x01,0x02,0x03,0x04;用來設定從設備狀態(tài)的功能碼有0x05和0x06。Modbus協(xié)議的各常用功能碼對應功能如表2所示。
數據域:數據信息的字節(jié)數根據功能碼而異,表示主機對從設備的狀態(tài)的設定,或者主機讀取的從設備寄存器數據。當主機設定線圈或者寄存器時,命令格式的數據域和圖1一樣,而如果要讀取狀態(tài)時,則數據域的第一段為狀態(tài)數據的個數。數據的格式為高字節(jié)在前,低字節(jié)在后。
校驗碼:校驗碼為2 B,RTU模式下使用CRC校驗碼,是由發(fā)送設備輸出的數據計算得到,在接收數據時先用同一方法再算一次CRC,若相同則接收,若不同則丟棄,以此來校驗傳輸的數據是否有誤。
1.2 Modbus over TCP協(xié)議
基于Modbus over TCP協(xié)議的設備可以直接接入以太網,無需經過協(xié)議轉換器,本系統(tǒng)中只有少數設備是基于該協(xié)議的,因此不做詳細介紹。
1.3 SLIP協(xié)議
SLIP協(xié)議是一種在串行線路上傳輸數據的協(xié)議,如果使用SLIP協(xié)議來進行通信,則目標IP地址和源IP地址都必須已知[2]。SLIP協(xié)議是鏈路層協(xié)議,只能和TCP/IP一起使用。由于本設計可以接入3個RS-485接口的設備,只有一個輸出數據的串口,3路數據可能同時發(fā)送,所以需要一種對數據打包的協(xié)議來實現,而設備只需接入以太網進行監(jiān)控,并且TCP/IP提供了很好的可靠性保證,所以SLIP協(xié)議能很好地滿足這個需求。
SLIP協(xié)議定義了2個特殊的字符:END(0xC0)和ESC(0xDB)。需要打包的數據在開頭和結尾加入一個END字符,END字符標志著數據的開始和結束。如果傳輸的數據中包含END字符,就會造成錯誤的接收和結束,所以引入ESC字符來防止這種情況的發(fā)生。傳輸原始數據中存在的END字符轉換為ESC(0xDB)或ESC-END(0xDC),而存在的ESC字符則轉換為ESC(0xDB)或ESC-ESC(0xDD)[3]。SLIP協(xié)議對應的數據封裝過程如圖1所示。
2 設計實現
協(xié)議轉換器的系統(tǒng)框圖如圖2所示。
2.1 ARM模塊
本協(xié)議轉換器的主控模塊使用ARM,選擇了32 bit的ARM(Atmel SAM3X8E),它擁有84 MHz的CPU時鐘頻率、96 KB的SRAM、512 KB的Flash和54個數字I/O口。4路UART硬件串口用來進行串行通信,其中3路串口用來連接協(xié)議轉換機箱的3路RS485串口,另外一個串口用來傳輸SLIP協(xié)議打包的數據。未使用的I/O口可以用來輸出控制閥門繼電器,并且可以顯示閥門開關的到位指示,圖3為軟件流程圖。
運用ARM開發(fā)工具來進行設備數據的處理,先對串口的波特率、I/O口的輸入輸出模式等進行初始化,然后對數據處理過程中的各個函數進行定義。下面對幾個主要函數進行說明。
先定義函數calcCRC16用于計算Modbus RTU的CRC16校驗碼。當主機對從設備發(fā)出請求時,請求數據通過以太網傳輸過來,經過串口進入ARM進行解包處理,并識別出請求是發(fā)送給哪個從設備的,從而將相應數據傳送給對應設備的串口,這個過程由processNetworkData函數實現。
當從設備響應主機發(fā)出的請求時,通過RS-485接口傳輸的數據格式為Modbus RTU,消息幀需要通過SLIP協(xié)議進行打包,因此定義一個sendSlipPacket函數,然后定義函數來處理對應RS485端口接收到的數據。若判斷數據包還沒有接收完,則不進行處理,返回。若數據包處于接收錯誤狀態(tài)(超長,數據錯誤等),則清空接收緩沖區(qū)并返回。若收到一個完整的數據包,則SLIP編碼后由網絡端口(Serial)發(fā)送。
2.2 串口轉以太網模塊
經SLIP協(xié)議打包的Modbus RTU數據通過串口發(fā)送后,并不能進入以太網進行傳輸,因此采用了深圳海凌科電子有限公司的HLK-RM04。RM04模塊是海凌科電子推出的嵌入式UART-ETH-WIFI(串口-以太網-無線)模塊,內置TCP/IP協(xié)議棧,能夠實現用戶串口、以太網、無線(WiFi)3個接口之間的轉換,傳統(tǒng)的串口設備在不需要更改任何設置的情況下,即可通過網絡傳輸數據。
先通過網線將模塊與PC相連接,進入模塊配置界面來設定模塊的IP地址、網關、網絡協(xié)議等。將RM04的模式設為TCP Server,該模式下模塊監(jiān)聽指定端口,等待TCP Client連接,連接成功后,模塊將串口TCP數據發(fā)送給連接的各個TCP Client,如圖4所示。將ARM模塊的輸出串口與RM04模塊的串口相連,就可以把Modbus RTU數據轉換成TCP數據,并通過以太網傳輸。
2.3 從設備隔離部分
RS485接口的設備大多工作在工業(yè)自動化領域,特別容易受到失控電壓和電流所帶來的負面影響,所以有必要在通信總線與邏輯控制器之間進行電氣隔離。另外,本設計是對多路數據進行轉換,為了防止各路信號的相互串擾和電氣噪聲的影響,隔離必不可少。
本設計使用了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端,并進行數據處理。
為了使得工作人員在主機端便利地控制各種設備,控制界面應美觀,因此建立了基于TPanel的類TDevGUI,系統(tǒng)界面中的圖形都基于此類。
3 協(xié)議轉換器的拓展功能
隨著移動通信的不斷發(fā)展,手機成為了每個人必不可少的工具,所以考慮加入手機端對電子設備的控制,這樣工作人員就可以方便地查看設備的工作狀態(tài),而且在本設計中使用的HLK-RM04模塊還支持串口轉WiFi功能,這就使得構想成為了可能。
通過RM04模塊配置界面將模塊工作方式設定為WiFi AP模式,手機作為客戶端來連接WiFi,將ARM中未使用的2個I/O口拓展為串口,進而控制設備。
4 結束語
本文對水蓄冷控制系統(tǒng)中無法使用主機通過以太網控制設備的問題進行了討論,提出了一種工業(yè)中實用的多路隔離的Modbus協(xié)議轉換器的設計方法。本協(xié)議轉換器已投入使用,穩(wěn)定性強,安全性好。
參考文獻
[1] 賈東耀,汪仁煌.工業(yè)控制網絡結構的發(fā)展趨勢[J].工業(yè)儀表與自動化裝置,2002(5):12-14.
[2] SHANMUGAM R,PADMINI R,NIVEDITA S.TCP/IP詳解[M].尹浩瓊,李劍,譯.北京:電子工業(yè)出版社,2003.
[3] 吳明光,崔家林,陳冠雄.串行網際協(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.