亚洲色图另类专区,伦理2男一女3p,强公把我次次高潮hd,欧美不卡三区,一本色道久久加勒比精品

Modbus協議功能碼及格式解析

發布時間:

2025-01-13

在工業自動化和設備通信中,Modbus協議作為一種常見的串行通信協議,廣泛應用于PLC、傳感器、變頻器等設備之間的數據交換。Modbus協議通過特定的功能碼來實現不同的操作。今天,我們就來詳細解析Modbus協議的功能碼及其格式。

一、Modbus協議格式概述

Modbus協議的數據格式主要包括以下部分:

  1. 地址域(Address):

 1字節,表示設備的地址。

  1. 功能碼(Function Code):

 1字節,表示要執行的操作類型。

  1. 數據域(Data):

 N字節,表示操作所需要的數據或響應的數據。

  1. CRC校驗(CRC):

 2字節,用于數據完整性校驗。

Modbus協議的基本數據格式如下:

  •  
| 地址域 | 功能碼 | 數據域 | CRC校驗 |


 


 

二、常見Modbus功能碼及其含義

Modbus協議支持多種功能碼,每種功能碼對應不同的操作或請求。以下是常見功能碼的詳細介紹:

1. 功能碼0x01:讀取線圈狀態(Read Coils)

功能碼0x01用于讀取一個或多個線圈(Coils)狀態(開/關)。該操作允許主機獲取從設備的輸出狀態。

  • 請求格式:
  •  
| 地址域 | 功能碼 | 起始地址(2字節) | 讀取數量(2字節) | CRC校驗 |


 


 

  • 響應格式:
  •  
| 地址域 | 功能碼 | 字節數(1字節) | 數據 | CRC校驗 |


 


 

數據:每個字節代表8個線圈的狀態,按位表示(1為開,0為關)。

示例:主機請求讀取地址為0x01設備的起始地址0x0000到0x0007的線圈狀態。 請求:
01 01 00 00 00 07 CRC

響應:
01 01 01 80 CRC
表示設備0x01的線圈狀態為:0x80(0b10000000)(即第一個線圈開,第二個線圈關,依此類推)。

2. 功能碼0x02:讀取離散輸入狀態(Read Discrete Inputs)

功能碼0x02用于讀取一個或多個離散輸入(Discrete Inputs)的狀態。

  • 請求格式:
  •  
| 地址域 | 功能碼 | 起始地址(2字節) | 讀取數量(2字節) | CRC校驗 |


 


 

  • 響應格式:
  •  
| 地址域 | 功能碼 | 字節數(1字節) | 數據 | CRC校驗 |


 


 

示例:主機請求讀取地址為0x01設備的起始地址0x0000到0x0007的離散輸入狀態。 請求:
01 02 00 00 00 07 CRC

響應:
01 02 01 80 CRC
表示設備0x01的離散輸入狀態為:0x80。

3. 功能碼0x03:讀取保持寄存器(Read Holding Registers)

功能碼0x03用于讀取一個或多個保持寄存器的值。保持寄存器通常用于存儲設備的配置參數或測量結果。

  • 請求格式:
  •  
| 地址域 | 功能碼 | 起始地址(2字節) | 讀取數量(2字節) | CRC校驗 |


 


 

  • 響應格式:
  •  
| 地址域 | 功能碼 | 字節數(1字節) | 數據(N字節) | CRC校驗 |


 


 

示例:主機請求讀取設備0x01的起始地址0x0000的2個保持寄存器。 請求:
01 03 00 00 00 02 CRC

響應:
01 03 04 00 01 00 02 CRC
表示第一個寄存器的值為0x0001,第二個寄存器的值為0x0002。

4. 功能碼0x04:讀取輸入寄存器(Read Input Registers)

功能碼0x04用于讀取一個或多個輸入寄存器的值。輸入寄存器通常用于讀取傳感器等設備的測量數據。

  • 請求格式:
  •  
| 地址域 | 功能碼 | 起始地址(2字節) | 讀取數量(2字節) | CRC校驗 |


 


 

  • 響應格式:
  •  
| 地址域 | 功能碼 | 字節數(1字節) | 數據(N字節) | CRC校驗 |


 


 

示例:主機請求讀取設備0x01的輸入寄存器值。 請求:
01 04 00 00 00 02 CRC

響應:
01 04 04 00 01 00 02 CRC
表示第一個輸入寄存器的值為0x0001,第二個寄存器的值為0x0002。

5. 功能碼0x05:強制單個線圈(Force Single Coil)

功能碼0x05用于強制設置單個線圈的狀態為開或關。

請求格式:

  •  
| 地址域 | 功能碼 | 起始地址(2字節) | 狀態(2字節) | CRC校驗 |


 


 


 

狀態:0xFF00表示開,0x0000表示關。

響應格式:

  •  
| 地址域 | 功能碼 | 起始地址(2字節) | 狀態(2字節) | CRC校驗 |


 


 


 

示例:主機請求設置設備0x01的線圈0x0000為開狀態。 請求:
01 05 00 00 FF 00 CRC

響應:
01 05 00 00 FF 00 CRC

6. 功能碼0x06:寫單個寄存器(Write Single Register)

功能碼0x06用于寫入一個保持寄存器的值。

  • 請求格式:
  •  
| 地址域 | 功能碼 | 寄存器地址(2字節) | 數據(2字節) | CRC校驗 |


 


 

  • 響應格式:
  •  
| 地址域 | 功能碼 | 寄存器地址(2字節) | 數據(2字節) | CRC校驗 |


 


 

示例:主機請求寫入設備0x01的保持寄存器地址0x0000,值為0x0001。 請求:
01 06 00 00 00 01 CRC

響應:
01 06 00 00 00 01 CRC