曾姚王
紙上得來終覺淺,絕知此事要躬行!
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 269 個
工控威望: 352 點
下載積分: 15745 分
在線時間: 149(小時)
注冊時間: 2021-07-24
最后登錄: 2024-12-23
查看曾姚王的 主題 / 回貼
樓主  發(fā)表于: 69天前
今天用臺達的一個DVP-08SN 485RTU讀一個儀表的數(shù)據(jù),始終是1,后來用串口讀出,發(fā)現(xiàn)數(shù)據(jù)類型只有選擇FLOAT INVERSE才正確,請問,浮點反轉(zhuǎn)這個數(shù)據(jù)是怎么回事。讀出42F6CCCDH怎么浮點數(shù)是123.4
[ 此帖被曾姚王在2024-10-17 17:03重新編輯 ]
暴躁小白兔
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 150 個
工控威望: 198 點
下載積分: 4387 分
在線時間: 95(小時)
注冊時間: 2021-05-11
最后登錄: 2024-12-20
查看暴躁小白兔的 主題 / 回貼
1樓  發(fā)表于: 69天前
圖片:
什么儀表,秀出來長長見識
------------------------------------
在工業(yè)通信和數(shù)據(jù)采集領(lǐng)域,"Float Inverse"(浮點反轉(zhuǎn))這個術(shù)語通常用于描述一種特定的數(shù)據(jù)格式,特別是在Modbus協(xié)議中。在這種格式下,浮點數(shù)的字節(jié)序(byte order)是相反的,也就是說,浮點數(shù)的高位字節(jié)(most significant byte, MSB)存儲在較低的地址,而低位字節(jié)(least significant byte, LSB)存儲在較高的地址。這種存儲方式與標準的大端(big-endian)或小端(little-endian)字節(jié)序相反。

在某些情況下,儀表或設備可能使用浮點反轉(zhuǎn)格式來存儲或傳輸浮點數(shù)。例如,根據(jù)西門子官方支持論壇的討論
,當從Modbus儀表讀取浮點數(shù)時,如果發(fā)現(xiàn)讀取的值與預期不符,可能需要考慮字節(jié)序的問題。在這種情況下,可能需要在讀取數(shù)據(jù)后對字節(jié)序進行調(diào)整,以獲得正確的浮點數(shù)值。

處理浮點反轉(zhuǎn)數(shù)據(jù)的一般步驟可能包括:

讀取包含浮點數(shù)的兩個連續(xù)的Modbus寄存器(通常為16位,或2個字節(jié))。
交換這兩個寄存器的字節(jié)序,使得原本的高位字節(jié)變?yōu)榈臀蛔止?jié),反之亦然。
將調(diào)整后的字節(jié)重新組合成一個浮點數(shù),以獲得正確的數(shù)值。
需要注意的是,處理浮點反轉(zhuǎn)數(shù)據(jù)時,應確保了解設備的文檔和規(guī)范,以正確理解數(shù)據(jù)格式和所需的字節(jié)序調(diào)整。在某些情況下,可能需要使用特定的軟件工具或編程技巧來實現(xiàn)這一過程。
樓主留言:
謝謝,我再看看怎么轉(zhuǎn),臺達都十幾年沒用了。
[ 此帖被暴躁小白兔在2024-10-18 14:13重新編輯 ]
hgz284631157
工控小君
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 315 個
工控威望: 424 點
下載積分: 1306 分
在線時間: 188(小時)
注冊時間: 2009-04-07
最后登錄: 2024-12-10
查看hgz284631157的 主題 / 回貼
2樓  發(fā)表于: 69天前
123.4 是42F6CCCD H  (H表示16進制)   對應的十進制是 1123470541
高邁德io模塊
佛山高邁德科技專業(yè)研發(fā)生產(chǎn)Profinet轉(zhuǎn)modbus模塊
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 144 個
工控威望: 175 點
下載積分: 464 分
在線時間: 15(小時)
注冊時間: 2024-09-21
最后登錄: 2024-10-29
查看高邁德io模塊的 主題 / 回貼
3樓  發(fā)表于: 67天前
浮點數(shù)?16進制的?
佛山高邁德科技專業(yè)研發(fā)生產(chǎn)Profinet轉(zhuǎn)modbus模塊,Profinet/EIP遠程IO,can轉(zhuǎn)Profinet模塊,PLC轉(zhuǎn)網(wǎng)段NAT模塊,PLC串口轉(zhuǎn)網(wǎng)口模塊。
sjm213
有小知識,無大學問。
級別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5212 個
工控威望: 7436 點
下載積分: 159003 分
在線時間: 3172(小時)
注冊時間: 2007-11-21
最后登錄: 2024-12-24
查看sjm213的 主題 / 回貼
4樓  發(fā)表于: 67天前
42F6CCCD對應的浮點數(shù)為什么是123.4,這是二進制浮點數(shù)的結(jié)構(gòu)決定的;


至于為何要反轉(zhuǎn),你可以監(jiān)控一下臺達存儲數(shù)據(jù)的兩個寄存器,比如說是D10/D11,那么現(xiàn)在D10里數(shù)值的16進制是42F6,D11里面數(shù)值的16進制是CCCD。
而臺達的32位數(shù)據(jù)結(jié)構(gòu)是[D11,D10],所以這個數(shù)值就變成了CCCD42F6,顯然是不對的。