今天調(diào)試了一天的MODBUS通訊,我把常用的通訊都總結(jié)了一遍,分享給大家,希望能有幫助:
1.1 功能碼"03":讀多路寄存器輸入
此功能碼作液晶屏啟動時需讀出初始設(shè)置參數(shù),如:直流電壓上限等參數(shù)值用
例如:主機(jī)要讀取地址為01,起始地址為0116的3個從機(jī)寄存器數(shù)據(jù)。
從機(jī)(PDM)數(shù)據(jù)寄存器的地址和數(shù)據(jù)為:
主機(jī)發(fā)送的報文格式:
從機(jī)(PDM)響應(yīng)返回的報文格式:
1.2 功能碼"04":讀多路輸入寄存器
例如:主機(jī)要讀取地址為01,起始地址為0000的3個輸入寄存器數(shù)據(jù)。
從機(jī)(PDM)數(shù)據(jù)寄存器的地址和數(shù)據(jù)為:
主機(jī)發(fā)送的報文格式:
從機(jī)(PDM)響應(yīng)返回的報文格式:
1.3 功能碼"06":寫單路寄存器
例如:主機(jī)要把數(shù)據(jù)07D0,保存到地址為002C的從機(jī)寄存器中去(從機(jī)地址碼為01)。通訊數(shù)據(jù)保存結(jié)束后,地址為002C的PDM表原存儲信息為:
主機(jī)發(fā)送的報文格式:
從機(jī)(PDM)響應(yīng)返回的報文格式:
與主機(jī)發(fā)送的報文格式及數(shù)據(jù)內(nèi)容完全相同。
1.4功能碼"10":寫多路寄存器
主機(jī)利用這個功能碼把多個數(shù)據(jù)保存到PDM表的數(shù)據(jù)存儲器中去。Modbus通訊規(guī)約中的寄存器指的是16位(即2字節(jié)),并且高位在前。這樣PDM的存儲器都是二個字節(jié)。由于Modbus通訊規(guī)約允許每次最多保存60個寄存器,因此PDM一次也最多允許保存60個數(shù)據(jù)寄存器。
例如:主機(jī)要把0064,0010保存到地址為002C,002D的從機(jī)寄存器中去(從機(jī)地址碼為01)。通訊數(shù)據(jù)保存結(jié)束后,地址為002C/002D的PDM表內(nèi)存儲信息為:
主機(jī)發(fā)送的報文格式:
從機(jī)(PDM)響應(yīng)返回的報文格式:
歡迎關(guān)注微信公眾號,二維碼在網(wǎng)頁右側(cè),截屏保存面到手機(jī),打開微信掃描二維碼即可觀看我的分享。