modbus通信協議


 一、Modbus通信協議概述

      Modbus是一種串行通信協議,是Modicon公司(現在的施耐德電氣 Schneider Electric)於1979年為使用可編程邏輯控制器(PLC)通信而發表。Modbus已經成為工業領域通信協議的標准,是工業電子設備之間非常常見的通信方式。

二、Modbus寄存器地址

1、Modbus寄存器類型

      Modbus中,寄存器可以分為兩大類,分別為位變量(Coils)和整形變量(Registers)。每一種寄存器類型,根據讀寫方式的不同,又可分為兩種只讀(R)和讀寫(R/W)。

2、Modbus寄存器地址

三、Modbus功能碼

四、Modbus協議詳解

0x01(讀線圈)

請求:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      讀取數量H      讀取數量L      CRCH      CRCL
響應:從機地址      功能碼      字節數量      讀取數據      CRCH      CRCL  (一個地址的數據為1位,數據可能有多個字節)

eg1:從從機0x01中,讀取線圈寄存器起始地址為0x0001的寄存器數據,讀1位

請求:

        

應答:

        

eg2:從從機0x01中,讀取線圈寄存器起始地址為0x0000的寄存器數據,讀4位

請求:

        

應答:

        

0x02(讀離散量輸入)

請求:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      讀取數量H      讀取數量L      CRCH      CRCL
響應:從機地址      功能碼      字節數量      讀取數據      CRCH      CRCL  (一個地址的數據為1位,數據可能有多個字節)

eg:從從機0x01中,讀取離散量輸入寄存器起始地址為0x0000的寄存器數據,讀4位

請求:

        

應答:

        

0x03(讀保持寄存器)

請求:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      讀取數量H      讀取數量L      CRCH      CRCL
響應:從機地址      功能碼      字節數量      讀取數據      CRCH      CRCL  (一個地址的數據為2個字節,數據可能有多個字節)

eg1:從從機0x01中,讀取保持寄存器起始地址為0x03E8的寄存器數據,讀1個

請求:

        

應答:

        

eg2:從從機0x01中,讀取保持寄存器起始地址為0x03E8的寄存器數據,讀3個

請求:

        

應答:

        

0x04(讀輸入寄存器)

請求:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      讀取數量H      讀取數量L      CRCH      CRCL
響應:從機地址      功能碼      字節數量      讀取數據      CRCH      CRCL  (一個地址的數據為2個字節,數據可能有多個字節)

eg:從從機0x01中,讀取輸入寄存器起始地址為0x03E8的寄存器數據,讀1個

請求:

        

應答:

        

0x05(寫單個線圈)

請求:從機地址      功能碼      寄存器地址H       寄存器地址L      輸出值H      輸出值L      CRCH      CRCL
響應:從機地址      功能碼      寄存器地址H       寄存器地址L      輸出值H      輸出值L      CRCH      CRCL

eg:向從機0x01里,寫入線圈寄存器起始地址為0x0000的數據0xFF00(打開,另關閉是0x0000)

請求:

        

應答:

        

0x06(寫單個保持寄存器)

請求:從機地址      功能碼      寄存器地址H       寄存器地址L      輸出值H      輸出值L      CRCH      CRCL
響應:從機地址      功能碼      寄存器地址H       寄存器地址L      輸出值H      輸出值L      CRCH      CRCL

eg:向從機0x01里,寫入保持寄存器地址為0x03EA的數據0x0002

請求:

        

應答:

        

0x0F(寫多個線圈)

請求:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      寫入寄存器數量H       寫入寄存器數量L      字節數量       輸出值      CRCH      CRCL
響應:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      寫入寄存器數量H       寫入寄存器數量L      CRCH      CRCL

eg:向從機0x01里,寫入線圈寄存器起始地址為0x0000的數據0xFF00(打開,另關閉是0x0000),寫入4位

請求:

        

應答:

        

0x10(寫多個保持寄存器)

請求:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      寫入寄存器數量H       寫入寄存器數量L      字節數量       輸出值      CRCH      CRCL
響應:從機地址      功能碼      寄存器起始地址H       寄存器起始地址L      寫入寄存器數量H       寫入寄存器數量L      CRCH      CRCL

eg:向從機0x01里,寫入保持寄存器起始地址為0x03EA的數據0x00030000,寫入了2個寄存器數據

請求:

        

應答:

        

參考資料:modbus通訊協議詳解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM