modbus 協議地址
modbus 協議類型
modbus 協議屬于應用層協議蔟, 由主站發出請求, 從站負責應答, 具體可以分為如下幾種實現:
- modbus ASCII 協議, 用的較少, 底層只能走串口通訊, 采用ASCII編碼, 傳輸速率通常為 2.4kbps.
- modbus RTU 協議, 底層走的是串口通訊, 通過RS-485或RS-232接口, 主站通過廣播的方式+slaveId識別modbus設備, 最多支持 247 個從站, 即slaveId編號從1~247. 通訊速率較低, 通常在 192.kbps以下, 容易收到電磁干擾, 另外通訊沒有認證和加密,安全性較差
- modbus TCP/IP 協議,底層為網絡協議,通過IP和port識別modbus設備, 它克服了 modbus RTU 協議的很多缺點.
- modbus RTU over TCP/IP, 是將原始的modbus RTU協議通過TCP/IP網絡實現,屬于一種“模擬”,性能略劣于原生modbus TCP。而modbus TCP/IP是原生支持modbus TCP協議的,性能和可靠性較高,但實現相對簡單。
modbus 仿真軟件
- modbus slave: 用作 modbus 服務器(也叫做modbus從站), 通常用于仿真PLC設備.
- modbus poll: 用作 modbus 客戶端(也叫做modbus主站, 主動一方為主站), 用于仿真上位機程序, 通常使用它在現場驗證PLC設備的modbus通訊是否OK
- 使用說明和下載地址: https://blog.csdn.net/u012749085/article/details/125270869
理解 modbus 尋址
modbus 分4個數據區, 實際因為第4區可讀可寫, 同時按16個bit存儲, 使用非常方便, 所以實際項目一般僅用第4區.
modbus 每個區的理論地址空間是 65536 個, 該尋址空間對于實際PLC設備來講太大了, 所以PLC廠商一般采用的 9999 個地址空間, 也有僅僅提供 999 個地址空間, 這個地址通常叫做modbus協議地址, 簡稱協議地址, 也叫做modicon 地址(modicon公司是modbus協議的建立者, 歸屬施耐德).
各個功能區說明:
- 0區, 即線圈(Coils), 只讀, 每個地址1個bit, PLC廠商支持的協議地址區間: 00001 ~ 09999
- 1區, 即離散量輸入(Discrete input),可讀寫, 每個地址1個bit, PLC廠商支持的協議地址區間: 10001 ~ 19999
- 3區, 輸入寄存器(Input registers), 只讀, 每個地址16個bit, PLC廠商支持的協議地址區間: 30001 ~ 39999
- 4區, 保持寄存器(Holding registers), 可讀寫, 每個地址16個bit, PLC廠商支持的協議地址區間: 40001 ~ 49999
4區的各種地址叫法:
- 協議地址(五碼), 即 modicon 地址, 首碼為功能碼, 邏輯地址從1開始計, 有效范圍為: 40001 ~ 49999
- 協議地址(四碼), 即 modicon 地址, 首碼為功能碼, 邏輯地址從1開始計, 有效范圍為: 4001 ~ 4999
- 協議地址(六碼): 即 modicon 地址, 首碼為功能碼, 邏輯地址從1開始計, 有效范圍為: 400001 ~ 465536.
- 寄存器地址, 即首碼不是功能碼, 而且從0開始計, 如保持寄存器 0002, 對應的協議地址為 40003
- NMobus 類庫使用的是寄存器地址, 公式 = PLC 地址(五碼) - 40001
PLC 廠商說明書往往提供地址名稱和Modbus協議地址, 使用 NMobus 類庫編程時候, 我們需要將其轉成寄存器地址,
對應關系:
如果MB_SLAVE的MB_HOLD_REG=P#DB1.DBX0.0 WORD 5,則DB1.DBW0對應的modbus地址是40001,DB1.DBW2對應40002,DB1.DBW4對應40003,DB1.DBWn對應40001+n/2(n為偶數)。反過來的公式是:4xxxx 對應DB1.DBWm(m=2 x (xxxx-1))。
下圖為西門子 S1200 的地址:


浙公網安備 33010602011771號