紅云123
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 280 個(gè)
工控威望: 351 點(diǎn)
下載積分: 2825 分
在線時(shí)間: 138(小時(shí))
注冊(cè)時(shí)間: 2020-09-22
最后登錄: 2024-12-20
查看紅云123的 主題 / 回貼
樓主  發(fā)表于: 2022-09-14 14:56
F5UJ進(jìn)行modbusTCP通訊時(shí)當(dāng)讀取的數(shù)據(jù)是正數(shù)時(shí),設(shè)置的讀取數(shù)據(jù)長(zhǎng)度和接收的數(shù)據(jù)長(zhǎng)度一致,數(shù)據(jù)也沒有錯(cuò)誤。

當(dāng)讀取到的數(shù)據(jù)是負(fù)數(shù)時(shí),收到的數(shù)據(jù)長(zhǎng)度在某個(gè)位置是設(shè)置的2倍,因?yàn)樨?fù)數(shù)的位置不確定所以收到的數(shù)據(jù)也無從下手去處理。
也就是負(fù)數(shù)時(shí)收到的數(shù)據(jù)地址和服務(wù)器的數(shù)據(jù)地址對(duì)應(yīng)不上了。
當(dāng)進(jìn)行modbusTCP通訊時(shí)負(fù)數(shù)怎么處理?
真誠(chéng)求助
沖出槍林彈雨
沖出槍林彈雨
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 145 個(gè)
工控威望: 625 點(diǎn)
下載積分: 356 分
在線時(shí)間: 87(小時(shí))
注冊(cè)時(shí)間: 2020-09-05
最后登錄: 2024-12-20
查看沖出槍林彈雨的 主題 / 回貼
1樓  發(fā)表于: 2022-09-15 08:34
通訊時(shí)都是客戶端讀取服務(wù)端的寄存器,數(shù)據(jù)類型不同,占用寄存器數(shù)量不同(16位,32位,64位,字符串看長(zhǎng)度);建議將數(shù)據(jù)轉(zhuǎn)成16進(jìn)制進(jìn)行查看,看看是不是讀取的數(shù)據(jù)高低位被調(diào)換,也可以先用tcp模擬軟件進(jìn)行測(cè)試。
技術(shù)交流vx: Electric973
沖出槍林彈雨
沖出槍林彈雨
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 145 個(gè)
工控威望: 625 點(diǎn)
下載積分: 356 分
在線時(shí)間: 87(小時(shí))
注冊(cè)時(shí)間: 2020-09-05
最后登錄: 2024-12-20
查看沖出槍林彈雨的 主題 / 回貼
2樓  發(fā)表于: 2022-09-15 10:05
引用
引用第2樓紅云123于2022-09-15 09:30發(fā)表的  :
用的測(cè)試工具測(cè)試的

讀取寄存器個(gè)數(shù)改為4,PLC監(jiān)視數(shù)據(jù)使用16進(jìn)制查看
技術(shù)交流vx: Electric973
沖出槍林彈雨
沖出槍林彈雨
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 145 個(gè)
工控威望: 625 點(diǎn)
下載積分: 356 分
在線時(shí)間: 87(小時(shí))
注冊(cè)時(shí)間: 2020-09-05
最后登錄: 2024-12-20
查看沖出槍林彈雨的 主題 / 回貼
3樓  發(fā)表于: 2022-09-15 10:16
好吧,說下這個(gè)正數(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á)。
原碼:
一個(gè)正數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù)就是正數(shù)的原碼
一個(gè)負(fù)數(shù),按照絕對(duì)值大小轉(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ǔ)碼為對(duì)該數(shù)的原碼除符號(hào)位外各位取反,然后在最后一位加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ù)時(shí),怎么才知道自己收到的是負(fù)數(shù),負(fù)數(shù)在哪個(gè)寄存器里。
技術(shù)交流vx: Electric973
沖出槍林彈雨
沖出槍林彈雨
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 145 個(gè)
工控威望: 625 點(diǎn)
下載積分: 356 分
在線時(shí)間: 87(小時(shí))
注冊(cè)時(shí)間: 2020-09-05
最后登錄: 2024-12-20
查看沖出槍林彈雨的 主題 / 回貼
4樓  發(fā)表于: 2022-09-15 12:54
圖片:
圖片:
看了你圖中發(fā)送內(nèi)容,你用的工具多發(fā)了兩個(gè)字節(jié)內(nèi)容
技術(shù)交流vx: Electric973