衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

什么是Modbus協(xié)議

汽車電子技術 ? 來源:嵌入式之入坑筆記 ? 作者:嵌入式之入坑筆記 ? 2023-02-10 10:58 ? 次閱讀

1、 Modbus簡介

Modbus 是由 Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在 1979 年發(fā)明的,是全球第一個真正 用于工業(yè)現(xiàn)場的總線協(xié)議。

ModBus 網(wǎng)絡是一個工業(yè)通信系統(tǒng),由帶智能終端的可編程控制器和計算機通過公用線路或局部專 用線路連接而成。其系統(tǒng)結(jié)構既包括硬件、亦包括軟件。它可應用于各種數(shù)據(jù)采集和過程監(jiān)控。

為更好地普及和推動 Modbus 在基于以太網(wǎng)上的分布式應用,目前施耐德公司已將 Modbus 協(xié)議的 所有權移交給 IDA(Interface for Distributed Automation,分布式自動化接口)組織,并成立了 Modbus-IDA 組織,為 Modbus 今后的發(fā)展奠定了基礎。

在中國,Modbus 已經(jīng)成為國家標準,并有專業(yè)的規(guī)范文檔,感興趣的可以去查閱相關的文件,詳情如下:

標準編號為:GB/T19582-2008

文件名稱:《基于 Modbus 協(xié)議的工業(yè)自動化網(wǎng)絡規(guī)范》

主要有三部分的內(nèi)容,分別如下:

《GB/T 19582.1-2008 第 1 部分:Modbus 應用協(xié)議》

《GB/T 19582.2-2008 第 2 部分:Modbus 協(xié)議在串行鏈路上的實現(xiàn)指南》

《GB/T 19582.3-2008 第 3 部分: Modbus 協(xié)議在 TCP/IP 上的實現(xiàn)指南》

2、Modbus協(xié)議概述

Modbus是一個主-從模式的通信協(xié)議,屬于數(shù)據(jù)鏈路層上的協(xié)議,協(xié)議本身不涉及具體的硬件要求。

常見的應用Modbus協(xié)議的物理接口有RS-485RS232、USART等的通信鏈路中。

Modbus協(xié)議中,一個時刻內(nèi)只允許有一個主機連接于總線,多個從機連接于總線上,通信都是只能由主機發(fā)起,從機進行響應。不能從從機主動發(fā)起通信。

3、Modbus 主從機通信模式

主機和從機之間的通信,可以用兩種模式進行:廣播通知模式、單播點對點模式。

3.1、單播點對點模式

主機按照從機的明確地址訪問相應的從機,從機接到來自主機的請求并處理完請求后,從機會向主機返回一個應答,完成一個通信。

在這種模式,一個 Modbus 事務處理包含 2 個報文:一個來自主機的請求,一個來自從機的應答。

在總線上,每個從機都必須有唯一的從機地址 (1 到 247),這樣才能區(qū)別于其它節(jié)點被獨立的尋址。

3.2、廣播通知模式

主機向所總線通過廣播指令發(fā)送請求,所有的從機都要接收來自主機的廣播信息

對于主機廣播的請求,從機是沒有應答返回的。所有的從機必須要接受主機的廣播寫功能。

地址 0 是專門用于主機向各個從機廣播數(shù)據(jù)的。

4、Modbus 地址規(guī)則

Modbus 尋址空間可以有 256 個不同地址。如下圖所示:

圖片

地址 0 為廣播地址。所有的從機必須識別廣播地址。

Modbus 主機本身是沒有地址的,只有從機必須要有一個地址。該地址必須在 Modbus 串行總線上唯一。

248~255作為預留使用的地址。

5、Modbus 的幀格式

Modbus的幀格式按照選擇的模式不同幀格式也是有所區(qū)別的。

5.1、RTU模式

RTU 模式下的幀格式如下圖:

圖片

Modbus RTU 幀總長度最大為 256 字節(jié)。

RTU 模式每個字節(jié) ( 11 位 ) 的格式為** :**

8–位二進制,報文中每個 8 位字節(jié)含有兩個 4 位十六進制字符(0–9, A–F)

每字節(jié)的 bit 流:

1 起始位

8 數(shù)據(jù)位, 首先發(fā)送最低有效位

1 位作為奇偶校驗

1 停止位

偶校驗是要求的, 其它模式 ( 奇校驗, 無校驗 ) 也可以使用。為了保證與其它產(chǎn)品的最大兼容性, 同時支持無校驗模式是建議的。默認校驗模式模式 必須為偶校驗。

注 : 使用無校驗要求 2 個停止位。

RTU模式時,每個字符或字節(jié)均由此順序發(fā)送(從左到右):

最低有效位 (LSB) . . . 最高有效位 (MSB)

圖片

圖片

5.1.1、RTU模式下的幀通信

由發(fā)送設備將 Modbus 報文構造為帶有已知起始和結(jié)束標記的幀。這使設備可以在報文的開始接收 新幀,并且知道何時報文結(jié)束。

不完整的報文必須能夠被檢測到而錯誤標志必須作為結(jié)果被設置。

在 RTU 模式,報文幀由時長至少為 3.5 個字符時間的空閑間隔區(qū)分。

圖片

整個報文幀必須以連續(xù)的字符流發(fā)送。

如果兩個字符之間的空閑間隔大于 1.5 個字符時間,則報文幀被認為不完整應該被接收節(jié)點丟棄。

圖片

注意 :

RTU 模式下接收數(shù)據(jù)時,由于 t1.5 和 t3.5 的時間隔要求的存在,一般在高通信速率下,會導致 CPU 負擔加重。因此,在通信速率等于或低于 19200 bps 時,這兩個定時必須嚴格遵守;

對于波特率大于 19200 bps 的情形,應該使用 2 個定時的固定值:

建議的字符間超時時間(t1.5)為 750μs,

幀間的超時時間 (t1.5) 為 1.750ms。

下圖表示了對 RTU 傳輸模式狀態(tài)圖的描述。"主節(jié)點" 和 "子節(jié)點" 的不同角度均在相同的圖中表示:

圖片

上面狀態(tài)圖的一些解釋:

1)從 "初始" 態(tài)到 “空閑” 態(tài)轉(zhuǎn)換需要 t3.5 定時超時: 這保證幀間延遲

2)“空閑” 態(tài)是沒有發(fā)送和接收報文要處理的正常狀態(tài)。

3)在 RTU 模式, 當沒有活動的傳輸?shù)臅r間間隔達 3.5 個字符長時,通信鏈路被認為在 “空閑” 態(tài)。

4)當鏈路空閑時, 在鏈路上檢測到的任何傳輸?shù)淖址蛔R別為幀起始。鏈路變?yōu)?"活動" 狀態(tài)。然后當鏈路上沒有字符傳輸?shù)臅r間間個達到 t3.5 后,被識別為幀結(jié)束。

5)檢測到幀結(jié)束后,完成 CRC 計算和檢驗。然后,分析地址域以確定幀是否發(fā)往此設備,如果不是, 則丟棄此幀。為了減少接收處理時間,地址域可以在一接到就分析,而不需要等到整個幀結(jié)束。這 樣,CRC 計算只需要在幀尋址到該節(jié)點 (包括廣播幀) 時進行。

5.1.2、RTU模式的CRC校驗

在 RTU 模式包含一個對全部報文內(nèi)容執(zhí)行的,基于循環(huán)冗余校驗 (CRC - Cyclical Redundancy Checking) 算法的錯誤檢驗域。CRC 域檢驗整個報文的內(nèi)容。不管報文有無奇偶校驗,均執(zhí)行此檢驗。

CRC 包含由兩個 8 位字節(jié)組成的一個 16 位值。

CRC 域作為報文的最后的域附加在報文之后。計算后,首先附加低字節(jié),然后是高字節(jié)。CRC 高字 節(jié)為報文發(fā)送的最后一個子節(jié)。

附加在報文后面的 CRC 的值由發(fā)送設備計算。接收設備在接收報文時重新計算 CRC 的值,并將計 算結(jié)果于實際接收到的 CRC 值相比較。如果兩個值不相等,則為錯誤。

CRC 的計算, 開始對一個 16 位寄存器預裝全 1。然后將報文中的連續(xù)的 8 位子節(jié)對其進行后續(xù)的計 算。只有字符中的 8 個數(shù)據(jù)位參與生成 CRC 的運算,起始位,停止位和校驗位不參與 CRC 計算。

CRC 的生成過程中, 每個 8–位字符與寄存器中的值異或。然后結(jié)果向最低有效位(LSB)方向移動 (Shift) 1 位,而最高有效位(MSB)位置充零。然后提取并檢查 LSB:如果 LSB 為 1, 則寄存器中的值與 一個固定的預置值異或;如果 LSB 為 0, 則不進行異或操作。

這個過程將重復直到執(zhí)行完 8 次移位。完成最后一次(第 8 次)移位及相關操作后,下一個 8 位字節(jié) 與寄存器的當前值異或,然后又同上面描述過的一樣重復 8 次。當所有報文中子節(jié)都運算之后得到的寄存 器的最終值,就是 CRC。

5.2、ASCII傳輸模式

當 Modbus 串行鏈路的設備被配置為使用 ASCII模式通信時,報文中的每個 8 位字節(jié)以兩個 ASCII 字符發(fā)送。

一般在通信鏈路或者設備無法 符合 RTU 模式的定時管理時使用該模式。

ASCII的幀格式如下:

圖片

比如 : 字節(jié) 0X5B 會被編碼為兩個字符 : 0x35 和 0x42 ( ASCII 編碼 0x35 ="5", 0x42 ="B" )。

注 : 由于一個子節(jié)需要兩個字符,此模式比 RTU 效率低。

ASCII 模式每個字節(jié) ( 10 位 ) 的格式為 :

十六進制,ASCII 字符 0-9, A-F。

1 起始位

7 數(shù)據(jù)位, 首先發(fā)送最低有效位

1 位作為奇偶校驗

1 停止位

偶校驗是要求的, 其它模式 ( 奇校驗, 無校驗 ) 也可以使用。為了保證與其它產(chǎn)品的最大兼容性, 同時支持無校驗模式是建議的。默認校驗模式模式 必須為偶校驗。

注 : 使用無校驗要求 2 個停止位。

字符是如何串行傳送的:

每個字符或字節(jié)均由此順序發(fā)送(從左到右):

最低有效位 (LSB) . . . 最高有效位 (MSB)

圖片

圖片

5.2.1、ASCII的報文幀

在 ASCII 模式, 報文用特殊的字符區(qū)分幀起始和幀結(jié)束。一個報文必須以一個‘冒號’ ( : ) (ASCII 十六進制 3A )起始,以 ‘回車-換行’ (CR LF) 對 (ASCII 十六進制 0D 和 0A) 結(jié)束。

注 : LF 字符可以通過特定的 Modbus 應用命令 (參見 Modbus 應用協(xié)議規(guī)范) 改變。

對于所有的域,允許傳送的字符為十六進制 0–9, A–F (ASCII 編碼)。設備連續(xù)的監(jiān)視總線上的 ‘冒 號’ 字符。當收到這個字符后,每個設備解碼后續(xù)的字符一直到幀結(jié)束。

報文中字符間的時間間隔可以達一秒。如果有更大的間隔,則接受設備認為發(fā)生了錯誤。

特別注意:每個字符子節(jié)需要用兩個字符編碼。因此,為了確保 ASCII 模式 和 RTU 模式在 Modbus 應 用級兼容,ASCII 數(shù)據(jù)域最大數(shù)據(jù)長度為 (2x252) 是 RTU 數(shù)據(jù)域 (252) 的兩倍。

必然的, Modbus ASCII 幀的最大尺寸為 513 個字符。

ASCII 報文幀的要求在下面的狀態(tài)圖中綜合。"主節(jié)點" 和 "子節(jié)點" 的不同角度均在相同的圖中表示:

圖片

上面狀態(tài)圖的一些解釋:

1)“空閑” 態(tài)是沒有發(fā)送和接收報文要處理的正常狀態(tài)。

2)每次接收到 ":" 字符表示新的報文的開始。如果在一個報文的接收過程中收到該字符,則當前地報文 被認為不完整并被丟棄。而一個新的接收緩沖區(qū)被重新分配。

3)檢測到幀結(jié)束后,完成 LRC 計算和檢驗。然后,分析地址域以確定幀是否發(fā)往此設備,如果不是, 則丟棄此幀。為了減少接收處理時間,地址域可以在一接到就分析,而不需要等到整個幀結(jié)束。

5.2.2、ASCII的LRC校驗

在 ASCII 模式,包含一個對全部報文內(nèi)容執(zhí)行的,基于縱向冗余校驗 (LRC - Longitudinal Redundancy Checking) 算法的錯誤檢驗域。LRC 域檢驗不包括起始“冒號”和結(jié)尾 CRLF 對的整個報 文的內(nèi)容。不管報文有無奇偶校驗,均執(zhí)行此檢驗。

LRC 域為一個子節(jié),包含一個 8 位二進制值。LRC 值由發(fā)送設備計算,然后將 LRC 附在報文后面。接收設備在接收報文時重新計算 LRC 的值,并將計算結(jié)果于實際接收到的 LRC 值相比較。如果兩個值不 相等,則為錯誤。

LRC 的計算, 對報文中的所有的連續(xù) 8 位字節(jié)相加,忽略任何進位,然后求出其二進制補碼。執(zhí)行檢 驗針對不包括起始“冒號”和結(jié)尾 CRLF 對的整個 ASCII 報文域的內(nèi)容。在 ASCII 模式,LRC 的結(jié)果 被 ASCII 編碼為兩個字節(jié)并放置于 ASCII 模式報文幀的結(jié)尾,CRLF 之前。

6、Modbus的異常碼

MODBUS 事務處理的一般處理過程:

圖片

一旦服務器處理請求,使用合適的 MODBUS 服務器事務建立 MODBUS 響應。

根據(jù)處理結(jié)果,可以建立兩種類型響應:

1) 一個正確的 MODBUS 響應:響應功能碼 = 請求功能碼

2) 一個 MODBUS 異常響應

3)用來為客戶機提供處理過程中與被發(fā)現(xiàn)的差錯相關的信息;

4)響應功能碼 = 請求功能碼 + 0x80;

5)提供一個異常碼來指示差錯原因。

7、Modbus的功能碼

7.1、功能碼的類別

目前Modbus的功能中可以分為三類:公共功能碼、用戶定義功能碼、保留功能碼。

圖片

公共功能碼 :是已經(jīng)被定義的功能碼。

用戶定義功能碼 :有兩個可以由用戶定義功能碼。范圍為:65 至 72 和十進制 100 至 110。

保留功能碼 :特殊情況下使用的,并且對公共使用是無效的功能碼。

7.2、公共功能碼

Modbus中公共功能碼的定義如下:

圖片

7.2.1、線圈操作功能碼(bit位的操作)

圖片

比如我要讀取線圈中的內(nèi)容。從機地址為 11H,線圈寄存器的起始地址為 0013H,結(jié)束地址為 0037H。

需要查詢總共 37 個線圈寄存器,主機發(fā)送的RTU幀如下:

圖片

從機響應的數(shù)據(jù)幀如下:

圖片

解析:

線圈 0013H 到線圈 001AH 的狀態(tài)為 CDH,二進制值為 11001101,該字節(jié)的最高字節(jié)為線圈 001AH , 最 低 字 節(jié) 為 線 圈 0013H 。各線圈狀態(tài)與數(shù)據(jù)內(nèi)容每位相對應。1 代表 ON,0 代表 OFF。線 圈 001AH 到 線 圈 0013H 的 狀態(tài)分別為:

圖片

7.2.2、保持寄存器操作功能碼

圖片

(1)寫多個保持寄存器

寫多個保持寄存器使用功能碼10H。

比如:從機地址為 11H。保持寄存器的其實地址為 0001H,寄存器的結(jié)束地址為 0002H。總共訪問 2

個寄存器。保持寄存器 0001H 的內(nèi)容為 000AH,保持寄存器 0002H 的內(nèi)容為 0102H。

主機請求的RTU幀數(shù)據(jù)如下:

圖片

圖片

從機返回的響應為:

圖片

(2)讀保持寄存器

讀保持寄存器使用03H功能碼。

比如:從機地址為 11H。保持寄存器的起始地址為 006BH,結(jié)束地址為 006DH。

主機發(fā)送的RTU請求幀如下:

圖片

圖片

從機的應答如下:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)采集

    關注

    39

    文章

    6251

    瀏覽量

    114042
  • MODBUS
    +關注

    關注

    28

    文章

    1820

    瀏覽量

    77310
  • 通信系統(tǒng)

    關注

    6

    文章

    1204

    瀏覽量

    53460
收藏 人收藏

    評論

    相關推薦

    dsp的modbus協(xié)議

    哪位大俠,寫tms320f2812的modbus協(xié)議通信,分享一下吧,謝謝
    發(fā)表于 08-02 10:40

    Modbus協(xié)議中文版

    modbus協(xié)議中文版
    發(fā)表于 09-18 10:58

    基于TCPIP的Modbus協(xié)議的小程序

    基于TCPIP的Modbus協(xié)議的小程序
    發(fā)表于 12-17 09:06

    modbus協(xié)議筆記

    1 Modbus協(xié)議概要? Modbus通信協(xié)議由Modicon公司(現(xiàn)在的施耐德電氣Schneider Electric)于1979年為可編程邏輯控制(即PLC)通信而發(fā)表。目前,Modbu
    發(fā)表于 07-02 07:17

    Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應用?

    請問一下Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應用?
    發(fā)表于 07-15 12:04

    Modbus協(xié)議的特點是什么

    Modbus協(xié)議的特點是什么?Modbus協(xié)議有哪幾類功能碼?
    發(fā)表于 09-26 08:13

    Modbus協(xié)議是怎樣進行通信的

    Modbus協(xié)議的原理是什么?Modbus協(xié)議是怎樣進行通信的?
    發(fā)表于 09-28 06:48

    Modbus協(xié)議地址與協(xié)議層次

    Modbus協(xié)議地址是什么意思?Modbus協(xié)議層次有何優(yōu)勢?
    發(fā)表于 09-28 06:27

    Modbus協(xié)議是什么

    Modbus協(xié)議是什么?MODBUS功能碼有哪些?MODBUS協(xié)議有哪幾種傳輸模式?
    發(fā)表于 09-29 07:06

    Modbus是什么?Modbus協(xié)議有哪些優(yōu)點

    Modbus是什么?Modbus協(xié)議有哪些優(yōu)點?Modbus協(xié)議包括哪些?
    發(fā)表于 09-30 08:40

    Modbus協(xié)議簡介及其特點

    Modbus協(xié)議是什么,Modbus協(xié)議的特點,本文針對Modbus協(xié)議的概況加以闡述。
    發(fā)表于 11-02 15:00 ?4696次閱讀

    Modbus協(xié)議是什么

    Modbus協(xié)議旨在用于串行設備和應用程序。
    的頭像 發(fā)表于 07-26 10:33 ?1w次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>是什么

    modbus協(xié)議應用指南

    modbus協(xié)議
    發(fā)表于 12-04 09:45 ?5次下載

    Modbus協(xié)議網(wǎng)關是什么?Modbus協(xié)議網(wǎng)關的功能

    Modbus協(xié)議網(wǎng)關是一種專門用于工業(yè)自動化環(huán)境中的網(wǎng)絡設備,其主要功能是實現(xiàn)不同通信協(xié)議之間的轉(zhuǎn)換,尤其是將基于Modbus協(xié)議的設備或系統(tǒng)與使用其他協(xié)議的設備、控制系統(tǒng)或信息系統(tǒng)連
    的頭像 發(fā)表于 04-11 15:51 ?818次閱讀

    DJN Modbus協(xié)議

    DJN Modbus協(xié)議
    的頭像 發(fā)表于 11-27 13:52 ?1183次閱讀
    DJN <b class='flag-5'>Modbus協(xié)議</b>
    百家乐官网波音平台有假吗| 百家乐官网园首选海立方| 百家乐园棋牌| bet365最新网址| 百家乐官网赌博赌博网站| 新锦江百家乐娱乐平台| 博彩娱乐城| 菲彩百家乐官网的玩法技巧和规则| 旧金山百家乐的玩法技巧和规则 | 百家乐官网娱乐分析软| 百家乐真人投注网站| 六合彩网上投注| 伟博百家乐官网娱乐城| 大发888 34| 狮威百家乐官网娱乐场| 全讯网六仔开奖| 送彩金百家乐官网平台| 百家乐秘籍下注法| 百家乐官网翻天片尾曲| 百家乐破战| 谈谈百家乐官网赢钱技巧| 百家乐与21点| 博E百百家乐官网现金网| 圣安娜百家乐包杀合作| 百家乐官网视频下栽| 百家乐只打闲打法| 百家乐官网10法则| 多伦多百家乐官网的玩法技巧和规则| 大发888游戏黄金之旅| 百家乐官网皇室百家乐官网的玩法技巧和规则 | 百家乐官网有破解的吗| 百家乐投注外围哪里好| 网上百家乐官网大赢家筹码| 百家乐那里最好| 百家乐官网网上真钱娱乐平台| 大发888真钱帐户注册| 找真人百家乐官网的玩法技巧和规则| 名仕国际棋牌官方网| 24山水口吉凶图| 百家乐官网技巧发布| 唐朝百家乐的玩法技巧和规则|