dyysam513
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 231 個(gè)
工控威望: 277 點(diǎn)
下載積分: 4175 分
在線時(shí)間: 96(小時(shí))
注冊(cè)時(shí)間: 2015-05-21
最后登錄: 2025-03-28
查看dyysam513的 主題 / 回貼
樓主  發(fā)表于: 2024-03-18 14:22
有臺(tái)1200跟眾為興做標(biāo)準(zhǔn)modbus TCP/IP協(xié)議,現(xiàn)在一直連接不上,請(qǐng)高手幫忙看下是不是設(shè)置不對(duì)?我需要往眾為興地址60401里面寫(xiě)數(shù)據(jù)進(jìn)去。




    
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5268 個(gè)
工控威望: 7493 點(diǎn)
下載積分: 160044 分
在線時(shí)間: 3210(小時(shí))
注冊(cè)時(shí)間: 2007-11-21
最后登錄: 2025-03-30
查看sjm213的 主題 / 回貼
1樓  發(fā)表于: 2024-04-02 16:55
注意:

對(duì)于一般的支持 Modbus TCP 設(shè)備,可能無(wú)法在其設(shè)備手冊(cè)中查找到諸如 40001、30001 這種數(shù)據(jù)地址,而是以功能碼 + 十六進(jìn)制數(shù)形式的變量地址,這樣有兩種處理辦法:

方法 1:將功能碼 + 100 作為 MB_MODE,十六進(jìn)制地址數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)作為 MB_DATA_ADDR。例如 0x03 功能碼,地址 0x00FF,這樣就是 MB_MODE = 103, MB_DATA_ADDR = 255。

方法 2:通過(guò)判斷功能碼決定是讀是寫(xiě),決定 MB_MODE 為 0 讀還是 1 寫(xiě)(2 寫(xiě)比較特殊,只用于不支持 5、6 號(hào)功能碼的設(shè)備),然后將十六進(jìn)制地址數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),然后對(duì)于不同的功能碼,十進(jìn)制數(shù)增加不同的偏移量,對(duì)于功能碼 1、5、15 偏移量為 1,對(duì)于功能碼 2 偏移量為 10001,對(duì)于功能碼 3、6、16 偏移量為 40001(對(duì)于超過(guò) 9999 的地址,偏移量為 400001),對(duì)于功能碼 4 偏移量為 30001。同樣以 0x03 功能碼,地址 0x00FF 為例,因?yàn)槭亲x,所以 MB_MODE = 0, 0x00FF 轉(zhuǎn)換為十進(jìn)制為 255,加上偏移量 40001 就是 40256,這樣 MB_DATA_ADDR = 40256。