18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> PLC基礎入門教程 >> 正文

Modbus協議詳解 科普Modbus通訊協議

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2022-09-21

1.ModBus介紹

ModBus網絡是一個(ge) 工業(ye) 通信係統,由帶智能終端的可編程序控製器和計算機通過公用線路或局部專(zhuan) 用線路連接而成。其係統結構既包括硬件、亦包括軟件。它可應用於(yu) 各種數據采集和過程監控。

ModBus網絡隻有一個(ge) 主機,所有通信都由他發出。網絡可支持247個(ge) 之多的遠程從(cong) 屬控製器,但實際所支持的從(cong) 機數要由所用通信設備決(jue) 定。采用這個(ge) 係統,各PC可以和中心主機交換信息而不影響各PC執行本身的控製任務。

2. ModBus有個(ge) 很重要的概念就是主從(cong) 的概念,像生產(chan) 線經常有一個(ge) 主機控製多台設備,就是用ModBus協議來實現。

3. 我引申總結數據通信兩(liang) 種方式:

推,主動推送,設備設主動推送數據

拉,請求-返回響應,主控端主動發出請求,設備終端響應返回數據。ModBus就是屬於(yu) 這種。

4. Modbus協議包括ASCII、RTU、TCP等,並沒有規定物理層。此協議定義(yi) 了控製器能夠認識和使用的消息結構,而不管它們(men) 是經過何種網絡進行通信的。標準的Modicon控製器使用RS232C實現串行的Modbus。Modbus的ASCII、RTU協議規定了消息、數據的結構、命令和就答的方式,數據通訊采用Maser/Slave方式,Master端發出數據請求消息,Slave端接收到正確消息後就可以發送數據到Master端以響應請求;Master端也可以直接發消息修改Slave端的數據,實現雙向讀寫(xie) 。

Modbus協議需要對數據進行校驗,串行協議中除有奇偶校驗外,ASCII模式采用LRC校驗,RTU模式采用16位CRC校驗,但TCP模式沒有額外規定校驗,因為(wei) TCP協議是一個(ge) 麵向連接的可靠協議。另外,Modbus采用主從(cong) 方式定時收發數據,在實際使用中如果某Slave站點斷開後(如故障或關(guan) 機),Master端可以診斷出來,而當故障修複後,網絡又可自動接通。因此,Modbus協議的可靠性較好。

對於(yu) Modbus的ASCII、RTU和TCP協議來說,其中TCP和RTU協議非常類似,我們(men) 隻要把RTU協議的兩(liang) 個(ge) 字節的校驗碼去掉,然後在RTU協議的開始加上5個(ge) 0和一個(ge) 6並通過TCP/IP網絡協議發送出去即可。

5. 通訊傳(chuan) 送方式

     

通訊傳(chuan) 送分為(wei) 獨立的信息頭,和發送的編碼數據。以下的通訊傳(chuan) 送方式定義(yi) 也與(yu) ModBusRTU通訊規約相兼容:

初始結構 = ≥4字節的時間

地址碼 = 1 字節

功能碼 = 1 字節

數據區 = N 字節

錯誤校檢 = 16位CRC碼

結束結構 = ≥4字節的時間

地址碼:地址碼為(wei) 通訊傳(chuan) 送的第一個(ge) 字節。這個(ge) 字節表明由用戶設定地址碼的從(cong) 機將接收由主機發送來的信息。並且每個(ge) 從(cong) 機都有具有唯一的地址碼,並且響應回送均以各自的地址碼開始。主機發送的地址碼表明將發送到的從(cong) 機地址,而從(cong) 機發送的地址碼表明回送的從(cong) 機地址。

功能碼:通訊傳(chuan) 送的第二個(ge) 字節。ModBus通訊規約定義(yi) 功能號為(wei) 1到127。本儀(yi) 表隻利用其中的一部分功能碼。作為(wei) 主機請求發送,通過功能碼告訴從(cong) 機執行什麽(me) 動作。作為(wei) 從(cong) 機響應,從(cong) 機發送的功能碼與(yu) 從(cong) 主機發送來的功能碼一樣,並表明從(cong) 機已響應主機進行操作。如果從(cong) 機發送的功能碼的最高位為(wei) 1(比如功能碼大與(yu) 此同時127),則表明從(cong) 機沒有響應操作或發送出錯。

數據區:數據區是根據不同的功能碼而不同。數據區可以是實際數值、設置點、主機發送給從(cong) 機或從(cong) 機發送給主機的地址。

CRC碼:二字節的錯誤檢測碼。

6. 通訊規約:
   

當通訊命令發送至儀(yi) 器時,符合相應地址碼的設備接通訊命令,並除去地址碼,讀取信息,如果沒有出錯,則執行相應的任務;然後把執行結果返送給發送者。返送的信息中包括地址碼、執行動作的功能碼、執行動作後結果的數據以及錯誤校驗碼。如果出錯就不發送任何信息。

1.信息幀結構

地址碼 功能碼 數據區 錯誤校驗碼

8位 8位 N × 8位 16位

地址碼:地址碼是信息幀的第一字節(8位),從(cong) 0到255。這個(ge) 字節表明由用戶設置地址的從(cong) 機將接收由主機發送來的信息。每個(ge) 從(cong) 機都必須有唯一的地址碼,並且隻有符合地址碼的從(cong) 機才能響應回送。當從(cong) 機回送信息時,相當的地址碼表明該信息來自於(yu) 何處。

功能碼:主機發送的功能碼告訴從(cong) 機執行什麽(me) 任務。表1-1列出的功能碼都有具體(ti) 的含義(yi) 及操作。

數據區:數據區包含需要從(cong) 機執行什麽(me) 動作或由從(cong) 機采集的返送信息。這些信息可以是數值、參考地址等等。例如,功能碼告訴從(cong) 機讀取寄存器的值,則數據區必需包含要讀取寄存器的起始地址及讀取長度。對於(yu) 不同的從(cong) 機,地址和數據信息都不相同。

錯誤校驗碼:主機或從(cong) 機可用校驗碼進行判別接收信息是否出錯。有時,由於(yu) 電子噪聲或其它一些幹擾,信息在傳(chuan) 輸過程中會(hui) 發生細微的變化,錯誤校驗碼保證了主機或從(cong) 機對在傳(chuan) 送過程中出錯的信息不起作用。這樣增加了係統的安全和效率。錯誤校驗采用CRC-16校驗方法。

注:信息幀的格式都基本相同:地址碼、功能碼、數據區和錯誤校驗碼。

2.錯誤校驗

冗餘(yu) 循環碼(CRC)包含2個(ge) 字節,即16位二進製。CRC碼由發送設備計算,放置於(yu) 發送信息的尾部。接收信息的設備再重新計算接收到信息的 CRC碼,比較計算得到的CRC碼是否與(yu) 接收到的相符,如果兩(liang) 者不相符,則表明出錯。

7. Modbus支持的功能碼

功能碼

名稱

作用

1

讀取線圈狀態

取得一組邏輯線圈的當前狀態(ON/OFF)

2

讀取輸入狀態

取得一組開關(guan) 輸入的當前狀態(ON/OFF)

3

讀取保持寄存器

在一個(ge) 或多個(ge) 保持寄存器中取得當前的二進製值

4

讀取輸入寄存器

在一個(ge) 或多個(ge) 輸入寄存器中取得當前的二進製值

5

強置單線圈

強置一個(ge) 邏輯線圈的通斷狀態

6

預置單寄存器

把具體(ti) 二進值裝入一個(ge) 保持寄存器

7

讀取異常狀態

取得8個(ge) 內(nei) 部線圈的通斷狀態,這8個(ge) 線圈的地址由控製器決(jue) 定

8

回送診斷校驗

把診斷校驗報文送從(cong) 機,以對通信處理進行評鑒

9

編程(隻用於(yu) 484)

使主機模擬編程器作用,修改PC從(cong) 機邏輯

10

控詢(隻用於(yu) 484)

可使主機與(yu) 一台正在執行長程序任務從(cong) 機通信,探詢該從(cong) 機是否已完成其操作任務,僅(jin) 在含有功能碼9的報文發送後,本功能碼才發送

11

讀取事件計數

可使主機發出單詢問,並隨即判定操作是否成功,尤其是該命令或其他應答產(chan) 生通信錯誤時

12

讀取通信事件記錄

可是主機檢索每台從(cong) 機的ModBus事務處理通信事件記錄。如果某項事務處理完成,記錄會(hui) 給出有關(guan) 錯誤

13

編程(184/384 484 584)

可使主機模擬編程器功能修改PC從(cong) 機邏輯

14

探詢(184/384 484 584)

可使主機與(yu) 正在執行任務的從(cong) 機通信,定期控詢該從(cong) 機是否已完成其程序操作,僅(jin) 在含有功能13的報文發送後,本功能碼才得發送

15

強置多線圈

強置一串連續邏輯線圈的通斷

16

預置多寄存器

把具體(ti) 的二進製值裝入一串連續的保持寄存器

17

報告從(cong) 機標識

可使主機判斷編址從(cong) 機的類型及該從(cong) 機運行指示燈的狀態

18

(884和MICRO 84)

可使主機模擬編程功能,修改PC狀態邏輯

19

重置通信鏈路

發生非可修改錯誤後,是從(cong) 機複位於(yu) 已知狀態,可重置順序字節

20

讀取通用參數(584L)

顯示擴展存儲(chu) 器文件中的數據信息

21

寫(xie) 入通用參數(584L)

把通用參數寫(xie) 入擴展存儲(chu) 文件,或修改之

22~64

保留作擴展功能備用

 

65~72

保留以備用戶功能所用

留作用戶功能的擴展編碼

73~119

非法功能

 

120~127

保留

留作內(nei) 部作用

128~255

保留

用於(yu) 異常應答

 8. 功能碼命令詳解

在這些功能碼中較長使用的是1、2、3、4、5、6號功能碼,使用它們(men) 即可實現對下位機的數字量和模擬量的讀寫(xie) 操作。

1、01號命令,讀可讀寫(xie) 數字量寄存器(線圈狀態):

計算機發送命令:[設備地址] [命令號01] [起始寄存器地址高8位] [低8位] [讀取的寄存器數高8位] [低8位] [CRC校驗的低8位] [CRC校驗的高8位]

 

例:[11][01][00][13][00][25][CRC低][CRC高]

意義(yi) 如下:

<1>設備地址:在一個(ge) 485總線上可以掛接多個(ge) 設備,此處的設備地址表示想和哪一個(ge) 設備通訊。例子中為(wei) 想和17號(十進製的17是十六進製的11)通訊。

<2>命令號01:讀取數字量的命令號固定為(wei) 01。

<3>起始地址高8位、低8位:表示想讀取的開關(guan) 量的起始地址(起始地址為(wei) 0)。比如例子中的起始地址為(wei) 19。

<4>寄存器數高8位、低8位:表示從(cong) 起始地址開始讀多少個(ge) 開關(guan) 量。例子中為(wei) 37個(ge) 開關(guan) 量。

<5>CRC校驗:是從(cong) 開頭一直校驗到此之前。

設備響應:[設備地址] [命令號01] [返回的字節個(ge) 數][數據1][數據2]...[數據n] [CRC校驗的高8位] [CRC校驗的低8位]

 

例:[11][01][05][CD][6B][B2][0E][1B] [CRC高] [CRC低]

意義(yi) 如下:

<1>設備地址和命令號和上麵的相同。

<2>返回的字節個(ge) 數:表示數據的字節個(ge) 數,也就是數據1,2...n中的n的值。

<3>數據1...n:由於(yu) 每一個(ge) 數據是一個(ge) 8位的數,所以每一個(ge) 數據表示8個(ge) 開關(guan) 量的值,每一位為(wei) 0表示對應的開關(guan) 斷開,為(wei) 1表示閉合。比如例子中,表示20號(索引號為(wei) 19)開關(guan) 閉合,21號斷開,22閉合,23閉合,24斷開,25斷開,26閉合,27閉合...如果詢問的開關(guan) 量不是8的整倍數,那麽(me) 最後一個(ge) 字節的高位部分無意義(yi) ,置為(wei) 0。

<4>CRC校驗同上。

2、05號命令,寫(xie) 數字量(線圈狀態):

計算機發送命令:[設備地址] [命令號05] [需下置的寄存器地址高8位] [低8位] [下置的數據高8位] [低8位] [CRC校驗的低8位] [CRC校驗的高8位]

 

例:[11][05][00][AC][FF][00][CRC高][CRC低]

意義(yi) 如下:

<1>設備地址和上麵的相同。

<2>命令號:寫(xie) 數字量的命令號固定為(wei) 05。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的開關(guan) 的地址。

<4>下置的數據高8位,低8位:表明需要下置的開關(guan) 量的狀態。例子中為(wei) 把該開關(guan) 閉合。注意,此處隻可以是[FF][00]表示閉合[00][00]表示斷開,其他數值非法。

<5>注意此命令一條隻能下置一個(ge) 開關(guan) 量的狀態。

設備響應:如果成功把計算機發送的命令原樣返回,否則不響應。

 

3、03號命令,讀可讀寫(xie) 模擬量寄存器(保持寄存器):

計算機發送命令:[設備地址] [命令號03] [起始寄存器地址高8位] [低8位] [讀取的寄存器數高8位] [低8位] [CRC校驗的高8位] [CRC校驗的低8位]

 

例:[11][03][00][6B][00][03] [CRC高][CRC低]

意義(yi) 如下:

<1>設備地址和上麵的相同。

<2>命令號:讀模擬量的命令號固定為(wei) 03。

<3>起始地址高8位、低8位:表示想讀取的模擬量的起始地址(起始地址為(wei) 0)。比如例子中的起始地址為(wei) 107。

<4>寄存器數高8位、低8位:表示從(cong) 起始地址開始讀多少個(ge) 模擬量。例子中為(wei) 3個(ge) 模擬量。注意,在返回的信息中一個(ge) 模擬量需要返回兩(liang) 個(ge) 字節。

設備響應:[設備地址] [命令號03] [返回的字節個(ge) 數][數據1][數據2]...[數據n] [CRC校驗的高8位] [CRC校驗的低8位]

 

例:[11][03][06][02][2B][00][00][00][64] [CRC高] [CRC低]

意義(yi) 如下:

<1>設備地址和命令號和上麵的相同。

<2>返回的字節個(ge) 數:表示數據的字節個(ge) 數,也就是數據1,2...n中的n的值。例子中返回了3個(ge) 模擬量的數據,因為(wei) 一個(ge) 模擬量需要2個(ge) 字節所以共6個(ge) 字節。

<3>數據1...n:其中[數據1][數據2]分別是第1個(ge) 模擬量的高8位和低8位,[數據3][數據4]是第2個(ge) 模擬量的高8位和低8位,以此類推。例子中返回的值分別是555,0,100。

<4>CRC校驗同上。

4、06號命令,寫(xie) 單個(ge) 模擬量寄存器(保持寄存器):

計算機發送命令:[設備地址] [命令號06] [需下置的寄存器地址高8位] [低8位] [下置的數據高8位] [低8位] [CRC校驗的高8位] [CRC校驗的低8位]

 

例:[11][06][00][01][00][03] [CRC高] [CRC低]

意義(yi) 如下:

<1>設備地址和上麵的相同。

<2>命令號:寫(xie) 模擬量的命令號固定為(wei) 06。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>下置的數據高8位,低8位:表明需要下置的模擬量數據。比如例子中就把1號寄存器的值設為(wei) 3。

<5>注意此命令一條隻能下置一個(ge) 模擬量的狀態。

設備響應:如果成功把計算機發送的命令原樣返回,否則不響應。

5、16號命令,寫(xie) 多個(ge) 模擬量寄存器(保持寄存器):

計算機發送命令:[設備地址] [命令號16] [需下置的寄存器地址高8位] [低8位] [數據數量高8位] [數據數量低8位] [下置的數據高8位] [低8位][……][……] [CRC校驗的高8位] [CRC校驗的低8位]

例:[11][16][00][01][00][01][00][05] [CRC高] [CRC低]

意義(yi) 如下:

<1>設備地址和上麵的相同。

<2>命令號:寫(xie) 模擬量的命令號固定為(wei) 16。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>需下置的數據數量高8位,低8位:表明了需要下置的數據數量,這裏為(wei) 1。

<5>下置的數據高8位,低8位:表明需要下置的模擬量數據。比如例子中就把1號寄存器的值設為(wei) 5。

設備響應:如果成功把計算機返回的如下命令,否則不響應。

設備響應:[設備地址] [命令號16] [需下置的寄存器地址高8位] [低8位] [數據數量高8位] [數據數量低8位] [CRC校驗的高8位] [CRC校驗的低8位],如上例返回:

[11][16][00][01][00][01] [CRC高] [CRC低]

 其它經常看到的就線圈,寄存器概念名詞,就是指的功能碼

Modbus協議的數據模型和地址模型

Tags:Modbus協議,Modbus,通訊協議  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 相關文章列表
    Modbus通訊簡單測試—Modscan32使用簡介
    Modbus Scan32模擬軟件使用,Modscan32使用教程
    Modbus協議的數據模型和地址模型
    PLC通訊MODBUS協議的應用及編程報文格式,三菱plc通訊
    西門子PLC通信編程MODBUS通信梯形圖實例編程 modbus地址掃描
    西門子plc Modbus 地址和 S7-200 存儲區地址的映射,從站地址與S
    Modbus RTU 從站常見問題
    Modbus RTU與Modbus TCP的區別
    如何看懂Modbus數據幀?Modbus RTU數據幀格式
    Modbus協議中寄存器40001,30001是什麽意思?
    MODBUS協議用03功能碼為什麽既能讀又能寫寄存器地址?
    梯形圖實例 儀表與西門子PLC Modbus通訊實例稱重儀表 指令MBUS_M
    西門子plc與modbus設備進485通信詳解(modbus多機輪詢)讀取儀表
    手把手帶你搞懂Modbus通信協議 報文格式詳解
    寄存器PLC地址與寄存器modbus協議地址 三菱FX係列西門子s7係列pl
    Modbus協議基本知識 Modbus地址範圍對應表
    Modbus-RTU協議解析
    MODBUS常用功能碼學習及實例 modbus報文格式
    Modbus如何遠距離傳輸? Modbus物聯網
    Modbus和RS485的關係是什麽?
    Modbus RS485接線方法  modbus接線方法 終端電阻
    MODBUS調試工具(modscan32)使用說明-MODBUS調試工具(modscan32)如
    RS-485終端電阻怎麽接?485終端電阻接法解析
    modbus通訊 RS-485終端電阻的重要性
    Modbus功能碼詳解 讀取線圈、保持寄存器
    modbus協議地址和常用功能碼,modbus詳解
    Modbus功能碼介紹
    Modbus網關的概念/功能/作用/特點
    Modbus-RTU通訊協議03功能碼詳解——小白一看就會的協議解析
    西門子plc SMART200 通過Modbus讀取溫濕度傳感器數據梯形圖實例
    請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    推薦文章
    最新推薦
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢