讀寫型記憶體-讀取指令(03)

當數值較大時,若分別以不同資料格式(例如 float32 或 int64)進行讀取與換算,因內部計算方式不同,可能會出現非常小的差異,通常小於 1/10,000,屬於正常現象。

不同參數大分類不能跨區讀取,一次最多40 個register 長度。超過該長度的指令會被忽略。請參考列表。

Function Code 功能碼 03

讀寫型記憶體 讀取指令,功能碼 (Function Code) 03 ,數據長度為1~125 個暫存器。可讀取單個或多個保持暫存器,用於讀取任何想要知道的設定參數。

Modbus RTU 讀取讀寫型記憶體保持暫存器 (03) 範例

以主站使用功能碼 03 讀取 "管路材質 A08 Pipe Material "的位址為例:

根據 讀寫型記憶體-讀取列表 ,起始位置為 00 0A,Reg長度為 1 (一個暫存器),資料型式:int16 (16 位元整數),讀取數量:00 01 (1 個暫存器),根據設備規格,累積流量採 Float32 格式,佔用 2 個暫存器 (4 Bytes) ,位元組順序為 Big Endian。

主站發送讀取指令 (TX 訊框)

TX 請求指令: 01 03 00 0A 00 01 A4 0E
  • Slave Address = 01

  • Function Code = 03

  • 起始暫存器位址 = 00 0A (A08 Pipe Material 讀取位址)

  • 讀取數量 = 00 01 (1 個暫存器)

  • CRC 校驗碼 = A4 0E (依 CRC 算法計算出的糾錯碼)

從站回覆數據 (RX 訊框)

假設回覆 Pipe Material 代碼 3 (Hex: 00 03)。

  • Slave Address = 01

  • Function Code = 03

  • 回傳位元數 = 02 (1 個暫存器, 2 Bytes)

  • 數據位元組 = 00 03 (Pipe Material 代碼 (PP 材質))

  • CRC 校驗碼 = B8 44 (依 CRC 算法計算出的糾錯碼)

數據解析與轉換 (轉回十進制)

步驟 A:排列數據

  • 接收數據: 00 03

  • 型式: int16 (16 位整數)

步驟 B:轉換為十進制與材質對應

將十六進制數 0003 轉換為十進制:

數值=(0×256)+3=3數值 = ( 0 × 256) + 3 = 3
  • 最終數值: 3

  • 材質對應: 查閱 A08 Pipe Material 管路材質列表,數字 3 對應的選項是 PP 材質

Last updated