Modbus數據幀都是16進制的,而組態王中的寄存器地址是10進制的,因此需要對數據幀中的地址位做一個從16進制到10進制的轉換,比如地址1004對應的就4100,前面再加上功能碼對應的寄存器,從而構成變量的寄存器地址。下面以成都喬存的一款比例放大器為例,使用ModbusRTU協議與組態王通訊。
主機發送 03 03 00 04 00 01 C4 9
從機回復 03 03 02 03 EB C1 3A
下面對數據幀進行解析:
其中03 E8是數據,轉換成10進制后為1000,即讀得該設備的心跳時間為1000。0004對應的10進制就是4,在組態王中還需要做一個地址偏移,即寄存器地址需要加1,就是0005,前面再加上功能碼對應的寄存器4,即40005,因此在組態王中的寄存器地址就是40005,如圖2所示。
主機發送:03 06 10 04 01 F4 CD 3E
從機回復:03 06 10 04 01 F4 CD 3E
對數據幀進行解析如下:
其中01 F4是數據,轉換成10進制后為500,即主機寫給該設備的心跳時間為500。1004對應的10進制就是4100,在組態王中還需要做一個地址偏移,即寄存器地址需要加1,就是4101,前面再加上功能碼對應的寄存器4,即44101,因此在組態王中的寄存器地址就是44101,如圖3所示。