日韩欧美视频第二区,秋霞成人午夜鲁丝一区二区三区,美女日批视频在线观看,av在线不卡免费

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> PLC基礎(chǔ)入門教程 >> 正文

MODBUS RTU/TCP協(xié)議及常用功能碼詳解

作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2023/4/9

一、簡介

ModBus是Modicon公司為其PLC通訊而開發(fā)的一種通訊協(xié)議。如今Modicon公司已經(jīng)被施耐德收購成為了施耐德旗下品牌。從1979年問世至今,已經(jīng)成為工業(yè)通訊領(lǐng)域的業(yè)界標(biāo)準(zhǔn)。
ModBus具有兩種串行傳輸模式,ASCII 和 RTU。它們定義了數(shù)據(jù)如何打包、解碼的不同方式。支持 Modbus 協(xié)議的設(shè)備一般都支持 RTU 格式。通信雙方必須同時支持上述模式中的一種。

二、寄存器類型

MODBUS寄存器分類

寄存器種類 讀寫狀態(tài) 數(shù)據(jù)類型 功能碼 PLC地址
線圈寄存器 讀/寫 位(bit) 01H(讀單/多個位); 05H(寫單個位); 0FH(寫多個位) 00001-09999
離散輸入寄存器 只讀 位(bit) 02H (讀單/多個位) 10001-19999
保持寄存器 讀/寫 字(byte) 03H(讀); 06H(寫單個字節(jié)); 0FH(寫多個字節(jié)) 30001-39999
輸入寄存器 只讀 字(byte) 04H (讀單/多個字) 40001-49999

線圈寄存器:實際上可以表示一個開關(guān)量,線圈操作位(bit)一個bit對應(yīng)一個開關(guān)信號,即(0/false,1/true),每個byte字節(jié)就能代表8個的位的開關(guān)信號,線圈寄存器支持讀和寫,Modbus的功能碼又能對線圈的單個或多個進(jìn)行一個讀取寫入操作,其實就是在操作字節(jié)的位。實對應(yīng)上面的功能碼也就是:0x01 0x05 0x0f

離散輸入寄存器:離散輸入寄存器就相當(dāng)于線圈寄存器的只讀模式,功能跟上面基本一致,除了不能寫入。所以功能碼也簡單就一個讀的 0x02

保持寄存器:保持寄存器是對字節(jié)進(jìn)行的操作,每兩個字節(jié)對應(yīng)一個寄存器,支持讀取和寫入。功能碼有對應(yīng)的三個:0x03 0x06 0x10

輸入寄存器:,這個和保持寄存器類似,但是也是只支持讀而不能寫。一個寄存器地址是占據(jù)兩個byte的空間,也就是16個位。對應(yīng)的功能碼也就一個 0x04

言外之話:
當(dāng)需要對保持寄存器操作時,不同的數(shù)據(jù)類型占據(jù)的字節(jié)長度其實是不一致的,一個寄存器地址占兩個字節(jié)16位代表的只是一個單精度的數(shù)據(jù)。如C#的數(shù)據(jù)類型占據(jù)的長度如下
C# 數(shù)據(jù)類型和字節(jié)長度 
C# 數(shù)據(jù)類型和字節(jié)長度
所以在讀取寫入保持寄存器的時候不同類型需要讀取不同長度的字節(jié)才能拿到對應(yīng)類型的值,寫入的時候同理。如(int類型讀取2個數(shù)量為int的時候需要乘以2,也就是讀取4個寄存器才能拿到兩個int類型的數(shù)據(jù)

三、MODBUS常用功能碼

功能碼 名稱 操作數(shù)據(jù)類型 作用描述 PLC地址
01H 讀線圈寄存器 位(bit) 獲得一組開關(guān)線圈的當(dāng)前狀態(tài)(ON/OFF ) 00001-09999
02H 讀離散輸入寄存器 位(bit) 獲得一組開關(guān)線圈的當(dāng)前狀態(tài)(ON/OFF ) 10001-19999
03H 讀保持寄存器 字(byte) 在一個或多個保持寄存器中取得當(dāng)前的二進(jìn)制值 30001-39999
04H 讀輸入寄存器 字(byte) 在一個或多個輸入寄存器中取得當(dāng)前的二進(jìn)制值 40001-49999
05H 寫單個線圈寄存器 位(bit) 設(shè)置一個單獨的線圈狀態(tài)(ON/OFF ) 00001-09999
06H 寫單個保持寄存器 字(byte) 寫單個保持寄存器,將兩個字節(jié)寫入到寄存器 40001-49999
0FH 寫多個線圈寄存器 位(bit) 寫多個線圈寄存器,可以設(shè)置多個bit開關(guān)狀態(tài) 00001-09999
10H 寫多個保持寄存器 字(byte) 寫多個保持寄存器,將多個字節(jié)寫入到寄存器 40001-49999

MODBUS通訊協(xié)議格式

讀線圈寄存器——01H

從站發(fā)送讀取格式:

從站地址 功能碼 起始地址高位 起始地址低位 讀取數(shù)量高位 讀取數(shù)量低位 CRC高位 CRC低位
0x01 0x01 0x00 0x00 0x00 0x02 BD CB

主站返回讀取格式:

從站地址 功能碼 返回字節(jié)數(shù) data1 CRC高位 CRC低位
0x01 0x01 0x01 0x00 51 88

解讀:
發(fā)送格式:
從站地址:01
功能碼:01
起始地址: 00 00
讀取數(shù)量: 00 02
CRC校驗:BD CB
接收格式:
從站地址:01
功能碼:01
返回字節(jié)數(shù): 01
Data數(shù)據(jù): 00(一個byte有8個bit,讀取兩個bit返回會補成字節(jié)用一個byte返回讀取兩個bit就行)
CRC校驗:BD CB

讀離散輸入狀態(tài)——02H

從站發(fā)送讀取格式:

從站地址 功能碼 起始地址高位 起始地址低位 讀取數(shù)量高位 讀取數(shù)量低位 CRC高位 CRC低位
0x01 0x02 0x00 0x00 0x00 0x02 F9 CB

主站返回讀取格式:

從站地址 功能碼 返回字節(jié)數(shù) data1 CRC高位 CRC低位
0x01 0x02 0x01 0x00 A1 88

讀保持寄存器——03H

從站發(fā)送讀取格式:

從站地址 功能碼 起始地址高位 起始地址低位 讀取數(shù)量高位 讀取數(shù)量低位 CRC高位 CRC低位
0x01 0x03 0x00 0x00 0x00 0x02 C4 CB

主站返回讀取格式:

從站地址 功能碼 返回字節(jié)數(shù) data1 data2 data3 data4 CRC高位 CRC低位
0x01 0x03 0x04 0x00 0x0A 0x00 0x00 0A 31

解析讀取返回:

為啥讀取是讀取兩個地址數(shù)量會返回四個byte字節(jié)?因為在保持寄存器里面兩個字節(jié)才對應(yīng)一個寄存器,你讀取兩個寄存器地址數(shù)量就需要四個字節(jié)來表示。
注意:在解析字節(jié)的時候數(shù)據(jù)的高低位順序倒序后才能表示一個數(shù)據(jù)

讀輸入寄存器——04H

同讀取保存寄存器一樣的格式,同上

寫單個線圈——05H

從站地址 功能碼 起始地址高位 起始地址低位 data1 data2 CRC高位 CRC低位
0x01 0x05 0x00 0x00 0xFF 0x00 8C 3A

主站返回讀取格式:

從站地址 功能碼 起始地址高位 起始地址低位 寫入數(shù)據(jù)高位 寫入數(shù)據(jù)低位 CRC高位 CRC低位
0x01 0x05 0x00 0x00 0xFF 0x00 8C 3A

解析:
寫入無誤的話返回同發(fā)送指令一樣;通斷標(biāo)志為FF00H表示寫ON,0000H表示寫OFF,

寫單個保持寄存器——06H

將地址0的保存寄存器的數(shù)據(jù)設(shè)置為10(單精度)
從站地址 功能碼 起始地址高位 起始地址低位 data1 data2 CRC高位 CRC低位
0x01 0x06 0x00 0x00 0x00 0x0A 09 CD

主站返回讀取格式:
響應(yīng):同發(fā)送指令;

寫多個線圈——0FH

從站地址 功能碼 起始地址高位 起始地址低位 寫入數(shù)量高位 寫入數(shù)據(jù)低位 字節(jié)長度 data1 CRC高位 CRC低位
0x01 0x0F 0x00 0x00 0x00 0x02 0x01 0x03 9E 96

主站返回讀取格式:
響應(yīng):

從站地址 功能碼 起始地址高位 起始地址低位 寫入數(shù)量高位 寫入數(shù)據(jù)低位 CRC高位 CRC低位
0x01 0x0F 0x00 0x00 0x00 0x02 9E 96

返回數(shù)據(jù)格式不返回Data數(shù)據(jù)

詳情:寫入數(shù)量為2的線圈,其中data1數(shù)據(jù)0x03代表0000 0011 將連續(xù)兩個線圈置為ON

寫多個保持寄存器——10H

從站地址 功能碼 起始地址高位 起始地址低位 寫入數(shù)量高位 寫入數(shù)據(jù)低位 字節(jié)長度 data1 data2 data3 data4 CRC高位 CRC低位
0x01 0x10 0x00 0x00 0x00 0x02 0x04 0x0C 0x02 0x12 0x45 9C 6C

主站返回讀取格式:
響應(yīng):

從站地址 功能碼 起始地址高位 起始地址低位 寫入數(shù)量高位 寫入數(shù)據(jù)低位 CRC高位 CRC低位
0x01 0x10 0x00 0x00 0x00 0x02 41 CB

返回數(shù)據(jù)格式不返回Data數(shù)據(jù)

詳情:寫入數(shù)量為2的線圈,其中data1,data2,data3,data4數(shù)據(jù)兩個代表一個單精度數(shù)據(jù)
0C 02表示一個3074 ,12 45代表一個4677

MODBUS TCP通訊協(xié)議格式

ModbusTCP的數(shù)據(jù)幀可分為兩部分:MBAP+PDU。

| 事務(wù)處理標(biāo)識| 協(xié)議標(biāo)識 | 字節(jié)長度 | 單元標(biāo)識符 | 功能碼 |起始地址H | 起始地址L |數(shù)量H | 數(shù)量L

事務(wù)處理標(biāo)識 協(xié)議標(biāo)識 字節(jié)長度 單元標(biāo)識符 功能碼 起始地址H 起始地址L 數(shù)量H 數(shù)量L
2字節(jié) 2字節(jié) 2字節(jié) 1字節(jié) 1字節(jié) 1字節(jié) 1字節(jié) 1字節(jié) 1字節(jié)

事務(wù)處理標(biāo)識: 可以理解為報文的序列號,一般每次通信之后就要加1以區(qū)別不同的通信數(shù)據(jù)報文。
協(xié)議標(biāo)識符: 00 00表示ModbusTCP協(xié)議。
字節(jié)長度: 表示接下來的數(shù)據(jù)長度,單位為字節(jié)
單元標(biāo)識符: 可以理解為設(shè)備地址。

TCP跟RTU的協(xié)議格式其實基本上是一致的,只是TCP增加了報文頭MBAP,取消了RTU的從站地址跟CRC校驗

Tags:MODBUS通訊,功能碼,TCP,RTU  
責(zé)任編輯:admin
相關(guān)文章列表
西門子S7-200 smart通過modbus rtu 協(xié)議采集K37A數(shù)據(jù)項目案例
西門子S7-200smart 與超聲波流量計之間的MODBUS通訊
西門子S7-200 Smart與變頻器的MODBUS變頻器通信實操
西門子S7-200 smart非時間/計數(shù)輪詢來實現(xiàn)modbus通訊測試
西門子S7-200smart與丹佛斯FC51通訊及變頻器參數(shù)設(shè)置
其實,Modbus通訊很簡單!——手把手教你,STEP7
西門子PLC S7-200SMART與G120的MODBUS通訊例程
KingView組態(tài)王與S7-200 SMART通過網(wǎng)口連接 TCP通訊
西門子S7-200PLC作為Modbus-RTU主站通過Port0和Port1結(jié)合指令庫實
西門子S7-200與ACS510變頻器MODBUS通信完整版(梯形圖程序)
三菱PLC的modbus通訊_三菱FX3U PLC利用RS指令實現(xiàn)Modbus RTU通信
西門子SMART PLC MODBUS通訊控制英威騰變頻器,變頻器狀態(tài)字
西門子PLC S7-200SMART Modbus TCP通訊的步驟和要點
西門子plc通訊西門子S7-200 Smart Modbus通信詳解,MBUS_CTRL主站
V20變頻器和西門子PLC的通訊,西門子變頻器與PLC的MODBUS通信詳細(xì)
Modbus功能碼一覽,功能碼列表
西門子S7-200SMART PLC Modbus讀取D800通用測力儀的數(shù)據(jù)梯形圖實
S7-200 SMART 通訊控制 V20變頻器,MODBUS通訊控制變頻器
Modbus功能碼04實例_20種PLC元件編號和Modbus編號地址對應(yīng)表
影響人機(jī)界面與PLC通信速度的四個因素,關(guān)系PLC通訊速度幾個方面
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
推薦文章
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
主站蜘蛛池模板: 商丘市| 饶阳县| 静乐县| 横峰县| 四子王旗| 铁力市| 重庆市| 同江市| 永兴县| 永清县| 奎屯市| 北宁市| 鄂伦春自治旗| 桐柏县| 沐川县| 仁寿县| 石楼县| 吴桥县| 沧源| 大庆市| 新营市| 治县。| 岢岚县| 镇平县| 弥渡县| 辽中县| 郧西县| 藁城市| 吉安县| 巴中市| 雅江县| 琼结县| 河间市| 西华县| 长宁县| 南丰县| 新河县| 公主岭市| 寿宁县| 鄂州市| 万州区|