HUBPLC / FLOAT

暫存器與浮點數

整數、float32 與暫存器位元組排列互轉。

● 在瀏覽器內運算

RESULT / 計算結果

暫存器 HEX
4148 0000
公式與說明
16 位元資料只有一個暫存器。ABCD 是 32 位元資料的標準高位元組在前排列;請依設備手冊選擇其他排列。

使用教學 / PLC 與通訊

從輸入設定到結果判讀

開始前:先查型別,再查排列

一個 Modbus 暫存器是 16 位元,但同一組位元可以有不同解讀。UInt16 是無號整數、Int16 是有號整數;UInt32、Int32 與 Float32 則需要兩個暫存器。請依設備暫存器表選型別,不能因為畫面要顯示小數,就直接選 Float32。

例如設備可能以整數 125 表示 12.5 °C,這時要先依手冊以整數解碼,再除以 10。本工具負責資料表示轉換,不會自動套用設備的倍率或單位。

操作案例:把 Float32 的 12.5 轉成暫存器

  1. 「方向」選「數值 → 暫存器」,「資料型別」選「Float32 (IEEE 754)」。
  2. 「位元組排列」選 ABCD,「數值」填 12.5,結果應為 4148 0000。
  3. 要驗算讀回資料,將方向改為「暫存器 → 數值」,並把輸入改成 4148 0000,同樣選 Float32 與 ABCD,應還原為 12.5。

切換方向時,原輸入內容會保留,需自行改填新方向需要的格式。反解時每個暫存器都要填滿四位 HEX,兩個暫存器以空白分隔;不要輸入十進位暫存器值或 0x 前綴。

12.5 的 Float32 位元組為 41 48 00 00;以下是本工具四種排列
排列暫存器 HEX相對 ABCD 的變化
ABCD4148 0000保持順序
BADC4841 0000各暫存器內交換兩個位元組
CDAB0000 4148交換前後兩個暫存器
DCBA0000 4841四個位元組順序反轉

如何解讀讀回的兩個暫存器?

如果手冊指定低字在前,且讀回 0000 4148,可選 CDAB 反解為 12.5。ABCD 等標記以本表的位元組定義為準;不同軟體對「大小端」的命名可能不同,請比較實際位元組順序。

不要只挑一個看起來合理的數字就認定排列正確。先核對手冊,再用設備已知值交叉比對。32 位元讀取還要確認起始位址與連續兩筆暫存器的順序。

常見錯誤與限制

  • 負值變成大正數:FFFF 選 Int16 是 −1,選 UInt16 是 65535,應核對有號或無號定義。
  • 讀回數值極大或極小:先查資料型別與排列,再查位址;整數位元不能直接當浮點數使用。
  • 小數尾端略有差異:Float32 的精度有限,例如 0.1 無法用此格式精確表示,往返轉換可能出現近似值。
  • 16 位元型別只輸入一個暫存器,頁面不提供位元組排列選項;32 位元型別輸入兩個。本工具不支援 Float64,且不接受 NaN 或 Infinity 結果。

範例為離線計算與格式核對,未連接實際 PLC、傳送器或 RS485 設備驗證。設備量程、資料格式與通訊設定仍須依對應型號手冊確認。

規格參考:Modbus Organization 官方規格入口(Application Protocol V1.1b3、Serial Line V1.02)。