日韩一区二区三区国产-美女被我操到高潮喷水在线观看-国产精品乱一区二区三区-蜜臀国产一区二区三区在线-y成人亚洲香蕉av-91成年女人午夜毛片免费-爱爱一区二区三区免费视频-日韩欧美成人中文字幕-秋霞中文字幕精品久久

Modbus協(xié)議功能碼及格式解析

發(fā)布時間:

2025-01-13

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

一、Modbus協(xié)議格式概述

Modbus協(xié)議的數(shù)據(jù)格式主要包括以下部分:

  1. 地址域(Address):

 1字節(jié),表示設(shè)備的地址。

  1. 功能碼(Function Code):

 1字節(jié),表示要執(zhí)行的操作類型。

  1. 數(shù)據(jù)域(Data):

 N字節(jié),表示操作所需要的數(shù)據(jù)或響應的數(shù)據(jù)。

  1. CRC校驗(CRC):

 2字節(jié),用于數(shù)據(jù)完整性校驗。

Modbus協(xié)議的基本數(shù)據(jù)格式如下:

  •  
| 地址域 | 功能碼 | 數(shù)據(jù)域 | CRC校驗 |


 


 

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

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

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

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

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


 


 

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


 


 

數(shù)據(jù):每個字節(jié)代表8個線圈的狀態(tài),按位表示(1為開,0為關(guān))。

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

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

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

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

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


 


 

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


 


 

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

響應:
01 02 01 80 CRC
表示設(shè)備0x01的離散輸入狀態(tài)為:0x80。

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

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

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


 


 

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


 


 

示例:主機請求讀取設(shè)備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用于讀取一個或多個輸入寄存器的值。輸入寄存器通常用于讀取傳感器等設(shè)備的測量數(shù)據(jù)。

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


 


 

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


 


 

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

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

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

功能碼0x05用于強制設(shè)置單個線圈的狀態(tài)為開或關(guān)。

請求格式:

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


 


 


 

狀態(tài):0xFF00表示開,0x0000表示關(guān)。

響應格式:

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


 


 


 

示例:主機請求設(shè)置設(shè)備0x01的線圈0x0000為開狀態(tài)。 請求:
01 05 00 00 FF 00 CRC

響應:
01 05 00 00 FF 00 CRC

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

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

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


 


 

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


 


 

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

響應:
01 06 00 00 00 01 CRC

相關(guān)新聞

探索母線槽的未來發(fā)展與應用

了解母線槽在現(xiàn)代電力系統(tǒng)中的重要性與未來的發(fā)展動態(tài)。

2026-04-10