發表時間: 2022-03-30 14:24:23
作者: 北京科瑞興業科技有限公司
瀏覽:
ModBus 協議定義了一個控製器能認識使用的消息結構,而不管它們是通過何種網絡進行通信的,它製定了消息域的格局和內容的公共格式,描述了一個控製器請求訪問其它設備的過程,回應來自其它設備的請求,以及如何偵測並記錄錯誤信息。
通過此協議,控製器相互之間、控製器經由網絡(例如以太網)和其它設備 之間可以完成信息和數據的交換與傳送,使各種不同的公司和廠家的可編程順序控製器(PLC)、RTU、SCADA 系統、DCS或與兼容ModBus協議的第三方設備之間可以連成工業網絡,構建各種複雜的監控系統,並利於系統的維護和擴展,這個通訊協議已廣泛被國內外電力行業及工控行業作為系統集成的一種通用工業標準協議。
K85系列模塊采用ModBus通信規約,支持多種流行軟件,多種設備及系統之間實現數據通信,特別適用於電力系統綜合自動化,智能電力電子設備,智能樓宇,工業自動化等領域,是構建、擴建DCS系統或製造智能電力電子設備的理想功能產品。
圖 4 Modbus 幀結構
K85 系列模塊Modbus-RTU協議
K85系列模塊實現Modbus通信協議時,遵循Modbus通信過程,采用了Modbus-RTU協議的命令子集。
1 數據傳輸方式:
異步10 位——1位起始位,8 位數據位,1 位停止位,無校驗位。
2 數據傳輸速率:
1200、2400、4800 、9600 、19200、28800 、38400 、57600 BPS(缺省波 特率為9600BPS,可修改,用戶希望使用其他波特率時,請使用我公司提供的 相關軟件進行自行修改)。
3 站址:
K85 系列模塊地址範圍1~32,(各型號出廠都設置缺省地址為 1,可修改, 用戶希望使用其它地址時,請使用我公司提供的相關軟件進行自行修改)。
4 功能碼:
K85系列模塊Modbus功能碼定義:
(1) 01(0x01) --- 按字節回讀多個開關量輸出狀態
(2) 02(0x02) --- 按字節回讀多個開關量輸入點狀態
(3) 03(0x03) --- 回讀多個輸出寄存器數值
(4) 04(0x04) --- 回讀多個輸入寄存器數值
(5) 05(0x05) --- 設置單一開關量輸出狀態
(6) 06(0x06) --- 設置單一輸出寄存器數值
(7) 15(0x0F) --- 按字節設置多個開關量輸出狀態
(8) 16(0x10) --- 設置多個輸出寄存器數值
(8) 22(0x16) --- 定義功能,用戶不可用
(8) 23(0x17) --- 定義功能,用戶不可用
(8) 24(0x18) --- 定義功能, 設置多個輸入寄存器初始數值
K85系列模塊Modbus功能異常代碼定義:
(1) 01(0x01) --- 無效功能碼
(2) 02(0x02) --- 無效寄存器地址
(3) 03(0x03) --- 無效數據,即數據超過上限或下限
(4) 04(0x04) --- 從機操作失敗
5 校驗:
主機或從機用 CRC 校驗碼判別接收信息是否正確。由於總線上的電子噪聲 或一些其它幹擾,信息在傳輸過程中可能會發生錯誤,接收一方可以使用 CRC 校驗碼判斷接收到的信息幀是否正確, 並放棄錯誤的信息幀, 提高了通信系統的 安全性和可靠性。
Modbus通信協議的CRC(冗餘循環碼)包含2個字節,即16 位二進製數。發送設備計算CRC 碼,放置於發送信息幀的尾部。接收信息的設備將接收到的所有信息(含CRC 碼)重新計算 CRC 碼,並判斷該CRC碼是否為0,如果為0,表示接收的信息幀正確無誤,否則,則表明接收的信息幀有誤,在進行CRC計算時隻用8個數據位,起始位及停止位都不參與CRC計算。
6 K85系列模塊Modbus通信協議支持功能碼
功能 碼 | 模塊型號 | ||||||||||||
8510 | 8511 | 8512 | 8513 | 8514 | 8514P | 8516 | 8518 | 8520 | 8521 | 8522 | 8523 | ||
01 | ● | ● | ● | ● | ● | ● | |||||||
02 | ● | ● | ● | ||||||||||
03 | ● | ● | |||||||||||
04 | ● | ● | ● | ● | ● | ● | |||||||
05 | ● | ● | ● | ● | ● | ● | |||||||
06 | ● | ● | |||||||||||
15 | ● | ● | ● | ● | ● | ● | |||||||
16 | ● | ● | |||||||||||
K85 系列模塊 Modbus-RTU 功能碼詳解
1按字節回讀多個開關量輸出的狀態功能碼-- 01(0x01)
查詢幀格式(總長8個字節)
站址 XXH | |
功能碼 01(0x01) | |
回讀開始地址(地址低四位) | 地址高字節 |
地址低字節 | |
回讀bit數量 | 數量高字節 |
數量低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
響應幀格式(總長6-8個字節,視回讀字節長度而定)
站址 XXH | |
功能碼 01(0x01) | |
回讀字節長度 | 1字節 |
回讀的bit狀態(按字節) | 符合回讀長度的字節個數 |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
異常響應幀格式

2 按字節回讀多個開關量輸入點狀態 功能碼 -- 02(0x02)
查詢幀格式(總長8個字節)
站址 XXH | |
功能碼 02(0x02) | |
回讀開始地址(地址低四 位)取0或8的整數倍 | 地址高字節 |
地址低字節 | |
回讀bit數量 | 00H |
bit數量 | |
CRC校驗 | 校驗低字節 |
校驗高字節 |
響應幀格式(總長6-8個字節,視回讀字節長度而定)
站址 XXH | |
功能碼 02(0x02) | |
回讀字節個數 | 1字節 |
回讀的bit狀態(按字節) | 符合回讀個數的各字節數據 |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
異常響應幀格式
5.3 回讀多個輸出寄存器數值 功能碼 -- 03(0x03)
查詢幀格式(總長8個字節)
站址 XXH | |
功能碼 03(0x03) | |
回讀輸出寄存器的開始 地址 (地址低四位) | 地址高字節 |
地址低字節 | |
回讀寄存器數量 | 數量高字節 |
數量低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
響應幀格式(總長7-21個字節,視回讀字節長度而定)
站址 XXH | |
功能碼 03(0x03) | |
回讀寄存器字節長度 | 1字節 |
回讀的寄存器內容(按字 節) 這段數據長度與回讀 的字節數有關(從2到16) | 寄存器1高字節數據 |
寄存器1低字節數據 | |
寄存器2高字節數據 | |
寄存器2低字節數據 | |
┋ | |
寄存器n高字節數據 | |
寄存器n低字節數據 | |
CRC校驗 | 校驗低字節 |
校驗高字節 |
異常響應幀格式

5.4 回讀多個輸入寄存器數值功能碼 -- 04(0x04)
查詢幀格式(總長8個字節)
站址 XXH | |
功能碼 04(0x04) | |
回讀輸入寄存器的開始 地址 (地址低四位) | 地址高字節 |
地址低字節 | |
回讀輸入寄存器的數量 | 數量高字節 |
數量低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
響應幀格式(總長7-21個字節,視回讀字節長度而定)
站址 XXH | |
功能碼 04(0x04) | |
回讀寄存器字節長度 | 1字節 |
回讀的寄存器內容(按字 節) 這段數據長度與回讀 的字節數有關(從2到16) | 寄存器1高字節數據 |
寄存器1低字節數據 | |
寄存器2高字節數據 | |
寄存器2低字節數據 | |
┋ | |
寄存器n高字節數據 | |
寄存器n低字節數據 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |

5.5 設置單一開關量輸出狀態 功能碼 -- 05(0x05)
設置的數據為FF00H,為置高輸出,數據為0000H為置低輸出
查詢幀格式(總長8個字節)
站址 XXH | |
功能碼 05(0x05) | |
設置開關量地址 (地址低四位) | 地址高字節 |
地址低字節 | |
設置數據 | 數據高字節 |
數據低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
響應幀格式(總長8個字節)
站址 XXH | |
功能碼 05(0x05) | |
設置開關量地址 (地址低四位) | 地址高字節 |
地址低字節 | |
返回的設置數據 | 數據高字節 |
數據低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
異常響應幀格式
5.6 設置單一輸出寄存器數值 功能碼 -- 06(0x06)
查詢幀格式(總長8個字節)
站址 XXH | |
功能碼 06(0x06) | |
設置寄存器地址 (地址低四位) | 地址高字節 |
地址低字節 | |
設置寄存器的內容 | 數據高字節 |
數據低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
響應幀格式(總長8個字節)
站址 XXH | |
功能碼 06(0x06) | |
設置寄存器地址 (地址低四位) | 地址高字節 |
地址低字節 | |
返回的設置寄存器內容 | 數據高字節 |
數據低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
異常響應幀格式

5.7 按字節設置多個開關量輸出狀態 功能碼 — 15(0x0F)
查詢幀格式(總長10-12個字節)
站址 XXH | |
功能碼 15(0x0F) | |
設置開關量開始地址 地 址低四位 | 地址高字節 |
地址低字節 | |
設置開關量數量 | 數量高字節 |
數量低字節 | |
發送數據長度 | 1字節 |
發送給開關量的數據內 容(字節數由發送數據長 度決定 | 開關量8-1的設置值 |
┋ | |
開關量24-17的設置值 | |
CRC校驗 | 校驗低字節 |
校驗高字節 |
響應幀格式(總長8個字節)
站址 XXH | |
功能碼 15(0x0F) | |
設 置 開 關 量 開 始 地 址 (地址低四位) | 地址高字節 |
地址低字節 | |
設置開關量數量 | 數量高字節 |
數量低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
異常響應幀格式

5.8 設置多個輸出寄存器數值 功能碼 -- 16(0x10)
查詢幀格式(總長11-17個字節,視回讀字節長度而定)
站址 XXH | |
功能碼 16(0x10) | |
設置輸出寄存器開始地 址 | 地址高字節 |
地址低字節 | |
設置的輸出寄存器數量 | 數量高字節 |
數量低字節 | |
設置的數據長度 | 占用1字節 |
設置的數據內容 | 首通道數據高字節 |
首通道數據低字節 | |
┋ | |
末通道數據高字節 | |
末通道數據低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 |
響應幀格式(總長8個字節)
站址 XXH | |
功能碼 16(0x10) | |
設置的首通道地址 | 首地址高字節 |
首地址低字節 | |
設置的通道數量 | 通道數量高字節 |
通道數量低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
異常響應幀格式
站址 XXH | |
功能碼 0x98(0x18+0x80) | |
異常代碼 | 0x01或0x02 或0x03 或0x04 |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
5.9 設置多個輸入寄存器初始數值(定義功能) 功能碼 -- 24(0x18)
查詢幀格式(總長11-17個字節,視回讀字節長度而定)
站址 XXH | |
功能碼 24(0x18) | |
設置輸出寄存器開始地 址 | 地址高字節 |
地址低字節 | |
設置的輸出寄存器數量 | 數量高字節 |
數量低字節 | |
設置的數據長度 | 占用1字節 |
設置的數據內容 | 首通道數據高字節 |
首通道數據低字節 | |
┋ | |
末通道數據高字節 | |
末通道數據低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
響應幀格式(總長8個字節)
站址 XXH | |
功能碼 16(0x10) | |
設置的首通道地址 | 首地址高字節 |
首地址低字節 | |
設置的通道數量 | 通道數量高字節 |
通道數量低字節 | |
CRC校驗 | 校驗低字節 |
校驗高字節 | |
異常響應幀格式
