紅云123
級別: 略有小成
|
F5UJ進(jìn)行modbusTCP通訊時當(dāng)讀取的數(shù)據(jù)是正數(shù)時,設(shè)置的讀取數(shù)據(jù)長度和接收的數(shù)據(jù)長度一致,數(shù)據(jù)也沒有錯誤。 當(dāng)讀取到的數(shù)據(jù)是負(fù)數(shù)時,收到的數(shù)據(jù)長度在某個位置是設(shè)置的2倍,因?yàn)樨?fù)數(shù)的位置不確定所以收到的數(shù)據(jù)也無從下手去處理。 也就是負(fù)數(shù)時收到的數(shù)據(jù)地址和服務(wù)器的數(shù)據(jù)地址對應(yīng)不上了。 當(dāng)進(jìn)行modbusTCP通訊時負(fù)數(shù)怎么處理? 真誠求助 |
---|---|
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園常客
|
通訊時都是客戶端讀取服務(wù)端的寄存器,數(shù)據(jù)類型不同,占用寄存器數(shù)量不同(16位,32位,64位,字符串看長度);建議將數(shù)據(jù)轉(zhuǎn)成16進(jìn)制進(jìn)行查看,看看是不是讀取的數(shù)據(jù)高低位被調(diào)換,也可以先用tcp模擬軟件進(jìn)行測試。 |
|
---|---|---|
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園常客
|
讀取寄存器個數(shù)改為4,PLC監(jiān)視數(shù)據(jù)使用16進(jìn)制查看 |
|
---|---|---|
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園常客
|
好吧,說下這個正數(shù)和負(fù)數(shù) 值為5它在計(jì)算機(jī)中表示為: 00000000 00000000 00000000 00000101 5轉(zhuǎn)換成二制是101,不過int類型的數(shù)占用4字節(jié)(32位),前面填了一堆0 -5在計(jì)算機(jī)中,負(fù)數(shù)以原碼的補(bǔ)碼形式表達(dá)。 原碼: 一個正數(shù),按照絕對值大小轉(zhuǎn)換成的二進(jìn)制數(shù)就是正數(shù)的原碼 一個負(fù)數(shù),按照絕對值大小轉(zhuǎn)換成的二進(jìn)制數(shù),然后最高位補(bǔ)1,就是負(fù)數(shù)的原碼 比如 00000000 00000000 00000000 00000101 是5的原碼。 10000000 00000000 00000000 00000101 是-5的原碼。 補(bǔ)碼 正數(shù)的補(bǔ)碼與原碼相同 負(fù)數(shù)的補(bǔ)碼為對該數(shù)的原碼除符號位外各位取反,然后在最后一位加1 比如: 10000000 00000000 00000000 00000101 的反碼 是:11111111 11111111 11111111 11111010 那么,補(bǔ)碼為: 11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011 -5 在計(jì)算機(jī)中表達(dá)為:11111111 11111111 11111111 11111011 轉(zhuǎn)換為十六進(jìn)制:0xFFFFFFFB 樓主留言:道理倒是明白,關(guān)鍵是收到數(shù)據(jù)后怎么處理。收到的數(shù)據(jù)有正數(shù)也有負(fù)數(shù)時,怎么才知道自己收到的是負(fù)數(shù),負(fù)數(shù)在哪個寄存器里。 |
|
---|---|---|
|
紅云123
級別: 略有小成
|
圖片:
和是否使用16進(jìn)制無關(guān)。為什么讀取1個保持寄存器,收到的數(shù)據(jù)卻占兩個寄存器。 |
---|---|
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園常客
|
圖片:
圖片:
看了你圖中發(fā)送內(nèi)容,你用的工具多發(fā)了兩個字節(jié)內(nèi)容 |
|
---|---|---|
|
投湖自盡的魚
級別: 略有小成
|
換個調(diào)試軟件直接自己寫負(fù)數(shù)的報(bào)文,看看是不是還會多出來字節(jié) |
---|---|
|
投湖自盡的魚
級別: 略有小成
|
你用這個軟件試試,也是這個網(wǎng)站里面的 樓主留言:真誠感謝! |
---|---|
附件: TCP和MODBUS-TCP通訊調(diào)試軟件V1.2_Wince_Winxp_通用版.zip (138 K) 下載次數(shù):133
網(wǎng)站提示: 請不要用迅雷下載附件,容易出錯 |