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) 數據,網絡恢複後將緩存的數據上送。 |