關注官方微信

EN

EN.

產品中心

產品中心

RTU做主站的Modbus網關

發布時間:2019-09-17 作者:上海卓嵐 瀏覽量:7556
1.RTU做主站的問題

通常來說Modbus網關的網口接主站,網口采用Modbus TCP協議,串口接各種RS485的儀表,串口采用Modbus RTU協議。但是也有少量情況是串口的(RS485)作為主站需要獲得Modbus TCP從站的數據,如下圖所示:

RTU做主站的結構示意圖

由于Modbus RTU和Modbus TCP的尋址方式不同,普通的方式無法實現這種功能。RTU一般通過Modbus RTU指令的第一個字節作為站地址,比如01 03 00 00 00 01 84 0a 的第一個字節01就是指查詢站地址1,所有RS485總線上非01地址的設備都不會應答。但是當Modbus TCP協議由于采用TCP連接作為綁定主站和從站的紐帶,不再需要從站地址的概念,只要是發給Modbus TCP從站的查詢,它都會做應答。它忽略了01這個站地址字節,實際上Modbus TCP采用的是IP地址作為站號的識別。

普通的方式RTU主站的查詢過程如下:

1.首先6路Modbus網關的(2個ZLAN5143×1路和1個ZLAN5443D×4路)分別配置連接到6個Modbus TCP從站,地址分別為192.168.1.61、192.168.1.62、192.168.1.63~192.168.1.66。Modbus RTU主站的RS485和6路Modbus網關的RS485連接在一起。

2.Modbus RTU主站PLC向RS485總線發送指令3d 03 00 00 00 01 81 36。

3.所有的6路Modbus網關都會收到3d 03 00 00 00 01 81 36,并且都轉化為Modbus TCP格式的數據00 00 00 00 00 06 3d 03 00 00 00 01,分別發給192.168.1.62、192.168.1.63~192.168.1.66。

4.雖然00 00 00 00 00 06 3d 03 00 00 00 01指令里面也有3d這個地址字段(十六進制3d就是61),但是每個Modbus TCP從站不會關心這個站地址,所有的從站都會給出應答。

5.6路Modbus網關幾乎同時收到Modbus TCP從站的應答,并同時發送到RS485總線,產生了總線的沖突,數據錯亂。

以上方案的最終結果是由于數據沖突和無法使用。

2.RTU做主站的方案

根據上一節的分析關鍵的問題在于Modbus TCP和RTU的從站識別方式不同,前者是IP地址,后者是站地址。我們無法修改RTU主站PLC的協議也無法修改Modbus TCP從站的協議。所以需要在Modbus網關內部做這種地址轉換。

具體的實現方法是:將Modbus TCP從站的IP地址的最后一個字段作為Modbus RTU的站地址。所以為了訪問192.168.1.62、192.168.1.63~192.168.1.66,RTU主站發送的指令應該分別對應站地址61、62、63~66,即:3d 03 00 00 00 01 81 36、3e 03 00 00 00 01 81 05等。

Modbus網關在收到RS485總線指令后會識別站地址,如果站地址和自己連接的Modbus TCP的IP地址最后一個字段相同則轉發,否則不做轉發。也就是需要有一個小的定制功能。

有了這個定制功能后,再按照之前的通訊步驟運行時,由于現在只有一路Modbus網關轉發了數據,相應的也就只有一路返回數據轉發到RS485總線上,避免了沖突。

3.具體實現步驟

為了實現這個小的定制功能,需要從卓嵐那邊獲得“RTU做主站”的配置文件,將其下載到設備內部,重新上電即可。

4.多目的連接

在實際的使用場合中有比圖1更為有效的方法,即每個Modbus網關可以連接6個目的IP,所以以上圖1,只需要一臺ZLAN5143即可實現,只不過需要配置額外的5個目的IP分別連接到192.168.1.62、192.168.1.63~192.168.1.66。

“RTU做主站”的定制功能會識別連接的IP地址,目的IP地址最后一個字節和RTU從站地址不同不會轉發,所以也可以用單臺Modbus網關實現6個Modbus TCP從站的查詢。

快3官网下载