上一篇博客已經完成 C#ModBus Tcp Master的實現 本篇主要對不同的功能碼所發出的報文進行解析(包括請求報文及響應報文) 讀操作 功能碼 0x01 讀一組線圈 讀取站號為1 從地址12開始的10個線圈 測試結果 上一篇博客已經總結了讀操作報文格式,就按照格式劃分 報文解析: 註意:報文 ...
上一篇博客已經完成 C#ModBus Tcp Master的實現
本篇主要對不同的功能碼所發出的報文進行解析(包括請求報文及響應報文)
讀操作
功能碼 0x01 讀一組線圈 讀取站號為1 從地址12開始的10個線圈
測試結果
上一篇博客已經總結了讀操作報文格式,就按照格式劃分
報文解析:
註意:報文中線圈起始地址 00000 對應設備中 10001 地址,其他順延
功能碼0x02 報文格式與功能碼0x01一致,只是第八位元組的功能碼變為02 其他完全一致,不再重覆解析
功能碼0x03 讀一組保持寄存器 讀取站號為1 從地址12開始的10個值
報文解析:
功能碼0x04 報文格式與功能碼0x03一致,只是第八位元組的功能碼變為04 其他完全一致,也不再重覆解析
寫操作
操作碼:0x05 寫單個線圈 將站號為1 地址為21的線圈置為On
註意:在報文中 指定線圈通斷標誌 FF00 置線圈為ON 0000置線圈為OFF
報文解析:
功能碼0x0F 寫一組線圈 將站號1 起始地址21 的連續五個線圈置為 通,斷,斷,通,通
測試結果:
報文解析:
功能碼 0x06 寫單個保持寄存器 將6666寫入從站1 地址為21 的保持寄存器中
測試結果
報文解析:
功能碼0x10 寫一組保持寄存器 例如 將12 23 34 45 56 67 78 分別寫入從站1 起始地址為21的7個連續的保持寄存器中
測試結果
報文解析:
到此為止,我們常用的幾個ModBus功能碼報文都解析完畢了 有錯誤之處 希望大家不吝賜教,感謝(抱拳~)