功能碼4的功能是讀輸入寄存器,下面是modbus poll的communication中截取的一段發送、響應的數據,
Tx:020-01 04 00 00 00 01 31 CA
Rx:021-01 04 02 00 02 38 F1
分析如下:
poll端:
connection選項就不細講了,rtu模式,8N1的通信方式。
setup選項,選擇如下:
點擊ok,就可以通信了。
slave端:
connection選項就不細講了,rtu模式,8N1的通信方式。
setup選項,選擇如下:
點擊ok,就可以通信了。
兩段都設定好了,就可以正常通信了。這里我使用了虛擬串口的,如果是實際情況,需要根據實際情況來選擇串口號碼。
通信情況如下:
通信碼分析:
Tx:020-01(從機地址) 04(功能碼4) 00(寄存器起始地址高位) 00(寄存器起始地址高位) 00(寄存器個數高位) 01 (寄存器個數高位)31(CRC 低位) CA (CRC 高位)
說明是從寄存器1開始,讀取1個寄存器的數值
Rx:021-01(從機地址) 04(功能碼4) 02(字節數) 00(數據高位(地址 30000)) 02(數據低位(地址 30000)) 38(CRC 低位) F1 (CRC 高位)
可以見得,RX回復的數據是16bit的數據,兩個字節。