天天看點

Modbus--->使用ModbusPoll、ModbusSlave、虛拟序列槽分析MODBUS-RTU資料幀格式、封包執行個體幀結構,和Modbus協定格式使用Modbus poll&Modbus slave模拟Modbus主從通信虛拟序列槽基礎知識積累

文章目錄

  • 使用Modbus poll&Modbus slave模拟Modbus主從通信
  • 虛拟序列槽
  • 基礎知識積累
    • MODBUS-RTU封包模型
    • 主機對從機寫資料操作
    • 主機對從機寫資料操作後,從機的傳回内容
    • 主機對從機讀資料操作
    • 主機對從機讀資料操作後,從機對主機傳回内容
    • Modbus-RTU常用功能碼
    • 寄存器起始位址(起始資料位址)

使用Modbus poll&Modbus slave模拟Modbus主從通信

 下載下傳和破解搜一下都很友善,使用的時候Modbus Poll作為Master,Modbus slave作為從機,設定相同的Setup和Connection就可以進行通信了。

 詳細教程見部落格園的一篇不錯的的文章。

虛拟序列槽

 虛拟序列槽,模仿序列槽,可以最大程度的模拟Slave與Master的通信情況,下載下傳連結如下

連結:https://pan.baidu.com/s/1-kz_vqt8RIEo-rVQ8aA7Qw

提取碼:abvx

基礎知識積累

MODBUS-RTU封包模型

裝置位址 功能代碼 資料 CRC校驗L CRC校驗H
8bit 8bit N*8bit 8bit 8bit
1位元組 1位元組 0~252位元組 1位元組 1位元組

 一個封包就是一幀資料,一個資料幀就一個封包: 指的是一串完整的指令資料,就像上面的一串資料。

裝置位址:指的是從機位址,用于通信,為0時表示的是廣播通信,如果單獨通信,從裝置傳回消息作為回應,如果是以廣播方式查詢的,則不作任何回應。

功能碼:主機有8個功能碼,從機有4個功能碼,多出來的4個功能碼是主機對從機的寫操作

資料格式:N個資料就有N*8bit長度,N最大值252

CRC校驗位:分為高低兩個位元組

ADU:是這一幀所有資料,0~256位元組

PDU:是功能代碼+資料,0~253位元組

主機對從機寫資料操作

 如果單片機接收到一個封包那麼就對封包進行解析執行相應的處理

0x01	 06	    00 01 	   00 17   98 04
    從機位址	 功能号	資料位址	   資料	   CRC校驗
           

主機對從機寫資料操作後,從機的傳回内容

 接收到主機的消息後,從機會在判斷是自己的消息(并且不是廣播消息後)原封不動的傳回接收到的消息

0x01	 06	    00 01 	   00 17   98 04
    從機位址	 功能号	資料位址	   資料	   CRC校驗
           

主機對從機讀資料操作

0x01	 03	    00 01 	 00 01 	      D5 CA
	從機位址	 功能号	資料位址	 讀取資料個數	  CRC校驗
           

 單片機接收到這串資料根據資料計算CRC校驗判斷資料是否正确,如果判斷資料無誤,則結果是:傳回資訊給主機,傳回的資訊也是有格式的:

主機對從機讀資料操作後,從機對主機傳回内容

0x01	  03	  02 	        00 17 	     F8 4A
	從機位址	  功能号	  資料位元組個數 	兩個位元組資料	 CRC校驗
           

 這樣Modbus主機就完成了一次對從機資料的讀操作,實作了通訊。

Modbus-RTU常用功能碼

根據下表,可以設定對應的功能碼(Function)

Modbus--->使用ModbusPoll、ModbusSlave、虛拟序列槽分析MODBUS-RTU資料幀格式、封包執行個體幀結構,和Modbus協定格式使用Modbus poll&Modbus slave模拟Modbus主從通信虛拟序列槽基礎知識積累
功能碼 英文名 中文名 解釋
01 Read Coils 讀線圈
02 Read Discrete Inputs 讀離散寄存器
03 Read Hoiding Registers 讀保持寄存器
04 Read Input Registers 讀取輸入寄存器
05 Write Sinqle Coil 寫線圈
06 Write Sinqle Register 寫單個寄存器
15 Write Multiple Coils 寫多個線圈
16 Write Multiple Registers 寫多個寄存器

關于這幾個線圈/保持寄存器/離散寄存器的解釋見連接配接https://blog.csdn.net/lingshi75/article/details/105991450

寄存器起始位址(起始資料位址)

Modbus--->使用ModbusPoll、ModbusSlave、虛拟序列槽分析MODBUS-RTU資料幀格式、封包執行個體幀結構,和Modbus協定格式使用Modbus poll&Modbus slave模拟Modbus主從通信虛拟序列槽基礎知識積累

繼續閱讀