HUBPLC / FLOAT
暫存器與浮點數
整數、float32 與暫存器位元組排列互轉。
RESULT / 計算結果
- 暫存器 HEX
- 4148 0000
公式與說明
使用教學 / PLC 與通訊
從輸入設定到結果判讀
開始前:先查型別,再查排列
一個 Modbus 暫存器是 16 位元,但同一組位元可以有不同解讀。UInt16 是無號整數、Int16 是有號整數;UInt32、Int32 與 Float32 則需要兩個暫存器。請依設備暫存器表選型別,不能因為畫面要顯示小數,就直接選 Float32。
例如設備可能以整數 125 表示 12.5 °C,這時要先依手冊以整數解碼,再除以 10。本工具負責資料表示轉換,不會自動套用設備的倍率或單位。
操作案例:把 Float32 的 12.5 轉成暫存器
- 「方向」選「數值 → 暫存器」,「資料型別」選「Float32 (IEEE 754)」。
- 「位元組排列」選 ABCD,「數值」填 12.5,結果應為
4148 0000。 - 要驗算讀回資料,將方向改為「暫存器 → 數值」,並把輸入改成
4148 0000,同樣選 Float32 與 ABCD,應還原為 12.5。
切換方向時,原輸入內容會保留,需自行改填新方向需要的格式。反解時每個暫存器都要填滿四位 HEX,兩個暫存器以空白分隔;不要輸入十進位暫存器值或 0x 前綴。
| 排列 | 暫存器 HEX | 相對 ABCD 的變化 |
|---|---|---|
| ABCD | 4148 0000 | 保持順序 |
| BADC | 4841 0000 | 各暫存器內交換兩個位元組 |
| CDAB | 0000 4148 | 交換前後兩個暫存器 |
| DCBA | 0000 4841 | 四個位元組順序反轉 |
如何解讀讀回的兩個暫存器?
如果手冊指定低字在前,且讀回 0000 4148,可選 CDAB 反解為 12.5。ABCD 等標記以本表的位元組定義為準;不同軟體對「大小端」的命名可能不同,請比較實際位元組順序。
不要只挑一個看起來合理的數字就認定排列正確。先核對手冊,再用設備已知值交叉比對。32 位元讀取還要確認起始位址與連續兩筆暫存器的順序。
常見錯誤與限制
- 負值變成大正數:
FFFF選 Int16 是 −1,選 UInt16 是 65535,應核對有號或無號定義。 - 讀回數值極大或極小:先查資料型別與排列,再查位址;整數位元不能直接當浮點數使用。
- 小數尾端略有差異:Float32 的精度有限,例如 0.1 無法用此格式精確表示,往返轉換可能出現近似值。
- 16 位元型別只輸入一個暫存器,頁面不提供位元組排列選項;32 位元型別輸入兩個。本工具不支援 Float64,且不接受 NaN 或 Infinity 結果。