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