首頁 > 解決方案 > Modbus協議在實際應用中的一些格式變化

Modbus協議在實際應用中的一些格式變化

點擊次數:1068 更新時間:2023-04-21
 工控行業的朋友們都知道,Modbus協議是一種包含了串口、網口的通信協議,莫迪康公司自1979年發表到現在,已經成為工業領域的一種基本通信標準。簡單到一個溫度傳感器的通訊,複雜到平台軟件的通訊都在使用它。

 

Modbus作為(wei) 一種迄今依然在廣泛、靈活使用的通訊協議,行業(ye) 內(nei) 的專(zhuan) 家對它的解讀已經非常細致、專(zhuan) 業(ye) 了。協議格式、數據模型、功能碼的含義(yi) 等不再贅述。本文主要是總結了一下,基於(yu) 我司Tnbuild數據服務係統,無論是作為(wei) 南向采集設備的協議,或是作為(wei) 北向轉發到平台的協議,我司在實際項目中,做的一些Modbus協議的格式變化或者協議延伸。

行業(ye) 很大,應用變化更是層出不窮,以下的總結,也隻是管中窺豹。在此也歡迎與(yu) 行業(ye) 內(nei) 朋友們(men) 進一步做交流與(yu) 共享!

序號

自定義(yi) 名

數據格式及場景描述

1

Modbus

RTU

3號命令:讀保持寄存器

讀取010300000001840A

接收0103020000B844

常規儀(yi) 表、傳(chuan) 感器;

網關(guan) 做主站,問答方式讀取數據

2

Modbus

TCP

3號命令:讀保持寄存器

讀取: 000000000006010300000001

接收0000000000050103020000

現場控製設備、plc;

網關(guan) 做主站,問答方式讀取數據

3

Modbus 

ASCII

3號命令:讀保持寄存器

讀取:30313033303030303030303138343041

接收3031303330323030303042383434

同等點位字符傳(chuan) 輸量大、傳(chuan) 輸效率較低,實際使用少;

網關(guan) 做主站,問答方式讀取數據

4

Modbus

RTU 代理

和標準Modbus RTU報文格式一樣

網關(guan) 在還原原有RTU通訊基礎上,可以根據需要讀取對應的數據

網關(guan) 做轉接,靈活解析需要的數據

5

Modbus 

RTU 

和標準Modbus RTU報文格式一樣

讀取現場設備主動推送的RTU數據,網關(guan) 做從(cong) 站

6

Modbus 

TCP 

和標準Modbus TCP報文格式一樣

讀取現場設備主動推送的TCP數據,網關(guan) 做從(cong) 站

7

Modbus 

SOE

標準的Modbus報文格式,在程序中增加了寄存器值的判斷,以及寄存器值寫(xie) 入的條件

Modbus寄存器1作為(wei) SOE使能,讀取到該寄存器值為(wei) 1,將寄存器2的值(報警id)寫(xie) 到寄存器3中,

以便綜保檢測到正確的ID號,在寄存器1中的SOE使能清零。

8

Modbus

Control

標準的Modbus報文格式,在程序中增加了寄存器值的判斷,以及寄存器值寫(xie) 入的條件,結合轉發MQTT平台的下發,程序收到平台控製的閥門開關(guan) 指令,將現場閥門使能開關(guan) 打開,等待現場工人使用完關(guan) 閉閥門後,再將使能開關(guan) 關(guan) 閉。

9

Modbus

104Control

在標準Modbus的05和06指令上做改動,給一些特定的地址下發不同的值,實現對保護裝置的遙控合閘/分閘選擇及執行。例:

05 05 05 00 FF 00 8D 72 遙控合閘

05 05 05 00 FF 00 8D 72遙控合閘選擇返校

05 05 05 80 FF 00 8C 9A 遙控合閘執行

05 05 05 80 FF 00 8C 9A遙控合閘執行返校

10

Modbus

RTU/TCP

字符串采集/轉發

字符串的采集和轉發相當於(yu) 把字符轉換成ASCII碼對應的十六進製,作為(wei) 數據加在標準的Modbus報文裏傳(chuan) 輸,采集支持將設備傳(chuan) 過來的ASCII碼解析為(wei) 原字符,轉發可以將取到的字符串再以Modbus協議傳(chuan) 給Modbus主站

例如,帶字符數值的Modbus轉發報文:

01 03 07 31 32 33 40 61 62 63 79 56

其中標注藍色的16進製轉換為(wei) 字符串為(wei) 123@abc

一般會(hui) 有一些工廠把生產(chan) 數據存在數據庫,就像生產(chan) 數據裏的時間,值班人等,都屬於(yu) 需要傳(chuan) 輸的字符串,網關(guan) 可以從(cong) 數據庫取到這些數據,再以別的協議傳(chuan) 給平台或主站;同樣如果有工廠的生產(chan) 數據存在一個(ge) 服務器上,服務器對外通訊是Modbus協議,那就可以用網關(guan) 將服務器中的數據采集到

11

Modbus

TCP轉發斷線緩存

 

Modbus基本的傳(chuan) 輸指令不變,增加和Modbus主站的連接判斷;判斷連接斷開之後執行數據存儲(chu) (用實時數據庫的方式存儲(chu) 為(wei) 一個(ge) DB文件);連接恢複之後讀取DB文件,將數據按照實際需求的格式上送一些現場環境的網絡信號不穩定,或者使用有線網絡傳(chuan) 輸,為(wei) 避免數據在斷網或者網絡波動的時候丟(diu) 失,需要加上斷線緩存的功能;網絡斷開時存儲(chu) 數據,網絡恢複後將緩存的數據上送。