Modbus TCP 深度解析 (二):功能碼詳解與實戰範例
0x00 前情提要 在上一集中,我們深入了解了 Modbus TCP 的基本概念和封包結構。今天我們將聚焦於功能碼 (Function Code),這是 Modbus 協議的核心,決定了每個請求要執行什麼操作。 上集練習題答案: Hex: 00 05 00 00 00 06 01 06 00 0A 03 E8 解析: - Transaction ID: 0x0005 (5) - 這是一個請求封包 - 功能碼: 0x06 (寫入單個暫存器) - 目標地址: 0x000A (10) - 寫入數值: 0x03E8 (1000) 0x01 功能碼總覽 Modbus TCP 支援多種功能碼,可分為以下幾類: 標準功能碼分類 類別 功能碼範圍 說明 讀取功能 0x01-0x04 讀取各種資料型別 寫入功能 0x05-0x06 寫入單一數值 批次寫入 0x0F-0x10 批次寫入操作 診斷功能 0x08 診斷和測試 其他功能 0x2B 設備識別等 常用功能碼對照表 功能碼 名稱 資料型別 操作類型 0x01 Read Coils 線圈 (1bit) 讀取 0x02 Read Discrete Inputs 離散輸入 (1bit) 讀取 0x03 Read Holding Registers 保持暫存器 (16bit) 讀取 0x04 Read Input Registers 輸入暫存器 (16bit) 讀取 0x05 Write Single Coil 線圈 (1bit) 寫入 0x06 Write Single Register 保持暫存器 (16bit) 寫入 0x0F Write Multiple Coils 線圈 (1bit) 批次寫入 0x10 Write Multiple Registers 保持暫存器 (16bit) 批次寫入 0x02 讀取功能碼詳解 0x01 - Read Coils (讀取線圈) 線圈是 1 位元的離散輸出,通常用於控制開關、閥門、指示燈等。 ...