在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Modbus協(xié)議簡介

    Modbus 協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信.它已經(jīng)成為一通用工業(yè)標準。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進行集中監(jiān)控。

    此協(xié)議定義了一個控制器能認識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式.

    當在一Modbus網(wǎng)絡(luò)上通信時,此協(xié)議決定了每個控制器須要知道它們的設(shè)備地址,識別按地址發(fā)來的消息,決定要產(chǎn)生何種行動。如果需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出.在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu).這種轉(zhuǎn)換也擴展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯誤檢測的方法。

    協(xié)議在一根通訊線上使用應(yīng)答式連接(半雙工),這意味著在一根單獨的通訊線上信號沿著相反的兩個方向傳輸.首先,主計算機的信號尋址到一臺唯一的終端設(shè)備(從機),然后,在相反的方向上終端設(shè)備發(fā)出的應(yīng)答信號傳輸給主機。 協(xié)議只允許在主計算機和終端設(shè)備之間,而不允許獨立的設(shè)備之間的數(shù)據(jù)交換,這就不會在使它們初始化時占據(jù)通訊線路,而僅限于響應(yīng)到達本機的查詢信號。

    1. 1 傳輸方式

    傳輸方式是一個信息幀內(nèi)一系列獨立的數(shù)據(jù)結(jié)構(gòu)以及用于傳輸數(shù)據(jù)的有限規(guī)則,以RTU模式在Modbus總線上進行通訊時,信息中的每8位字節(jié)分成2個4位16進制的字符,每個信息必須連續(xù)傳輸下面定義了與Modebus 協(xié)議– RTU方式相兼容的傳輸方式。

    代碼系統(tǒng)

    · 8位二進制,十六進制數(shù)0。。.9,A。.。F

    · 消息中的每個8位域都是一個兩個十六進制字符組成

    每個字節(jié)的位 1-8-N-1

    · 1個起始位

    · 8個數(shù)據(jù)位,最小的有效位先發(fā)送

    · 1個奇偶校驗位,無校驗則無

    · 1個停止位(有校驗時),2個Bit(無校驗時)

    錯誤檢測域

    · CRC(循環(huán)冗長檢測)

    1.2 協(xié)議

    當信息幀到達終端設(shè)備時,它通過一個簡單的“口”進入尋址到的設(shè)備,該設(shè)備去掉數(shù)據(jù)幀的“信封”(數(shù)據(jù)頭),讀取數(shù)據(jù),如果沒有錯誤,就執(zhí)行數(shù)據(jù)所請求的任務(wù),然后,它將自己生成的數(shù)據(jù)加入到取得的“信封”中,把數(shù)據(jù)幀返回給發(fā)送者。返回的響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機地址(Address)、被執(zhí)行了的命令(Function)、執(zhí)行命令生成的被請求數(shù)據(jù)(Data)和一個校驗碼(Check)。發(fā)生任何錯誤都不會有成功的響應(yīng)。

    1.2.1 信息幀

    Address

    Function

    Data

    Check

    8—Bits

    8—Bits

    N x 8-Bits

    16—Bits

    圖 1 – 1 . 信息幀格式

    特注:Modbus信息幀所允許的最大長度為256個字節(jié),即N的范圍是大于等于零且小于等于252(N{0,252})。

    即,所有的數(shù)據(jù)一共256個,數(shù)據(jù)剩下253個。

    1.2.2 地址(Address)域

    信息幀地址域(信息地址)在幀的開始部分,由8位組成,有效的從機設(shè)備地址范圍0-247(十進制),各從機設(shè)備的尋址范圍為1-247。主機把從機地址放入信息幀的地址區(qū),并向從機尋址.從機響應(yīng)時,把自己的地址放入響應(yīng)信息的地址區(qū),讓主機識別已作出響應(yīng)的從機地址。

    地址0為廣播地址,所有從機均能識別.當Modbus協(xié)議用于高級網(wǎng)絡(luò)時,則不允許廣播或其它方式替代。

    1.2.3 功能(Function)域

    信息幀功能域代碼告訴了被尋址到的終端執(zhí)行何種功能.有效碼范圍1—225(十進制),有些代碼是適用于所有控制器,有些適應(yīng)于某種控制器,還有些保留以備后用。有關(guān)功能代替碼的全部內(nèi)容見附錄A。

    當主機向從句發(fā)送信息時,功能代碼向從機說明應(yīng)執(zhí)行的動作。如讀一組離散式線圈或輸入信號的ON/OFF狀態(tài),讀一組寄存器的數(shù)據(jù),讀從機的診斷狀態(tài),寫線圈(或寄存器),允許下截、記錄、確認從機內(nèi)的程序等。當從機響應(yīng)主機時,功能代碼可說明從機正常響應(yīng)或出現(xiàn)錯誤(即不正常響應(yīng)),正常響應(yīng)時,從句簡單返回原始功能代碼;不正常響應(yīng)時,從機返回與原始代碼相等效的一個碼,并把最高有效位設(shè)定為“1”。

    如,主機要求從機讀一組保持寄存器時,則發(fā)送信息的功能碼為:

    0000 0011 (十六進制03)若從機正確接收請求的動作信息后,則返回相同的代碼值作為正常響應(yīng)。發(fā)現(xiàn)錯時,則返回一個不正常響信息:

    1000 0011(十六進制83)

    從機對功能代碼作為了修改,此外,還把一個特殊碼放入響應(yīng)信息的數(shù)據(jù)區(qū)中,告訴主機出現(xiàn)的錯誤類型和不正常響應(yīng)的原因,不正常響應(yīng)見附錄B。主機設(shè)備的應(yīng)用程序負責處理不正常響應(yīng),典型處理過程是主機把對信息的測試和診斷送給從機,并通知操作者.表 1 – 1列出了所有設(shè)備常用的功能碼、它們的意義及它們的初始功能。

    表 1– 1 常用功能碼

    代碼

    名稱

    作用

    01

    讀取線圈狀態(tài)

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

    02

    讀取輸入狀態(tài)

    取得一組開關(guān)輸入的當前狀態(tài)(ON/OFF)

    03

    讀取保持寄存器

    在一個或多個保持寄存器中取得當前的二進制值

    04

    讀取輸入寄存器

    在一個或多個輸入寄存器中取得當前的二進制值

    05

    強置單線圈

    強置一個邏輯線圈的通斷狀態(tài)

    06

    預(yù)置單寄存器

    放置一個特定的二進制值到一個單寄存器中

    07

    讀取異常狀態(tài)

    取得8個內(nèi)部線圈的通斷狀態(tài)

    15

    強置多線圈

    強置一串連續(xù)邏輯線圈的通斷

    16

    預(yù)置多寄存器

    放置一系列特定的二進制值到一系列多寄存器中

    17

    報告從機標識

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

    1.2.4 數(shù)據(jù)域

    數(shù)據(jù)域包含了終端執(zhí)行特定功能所需要的數(shù)據(jù)或者終端響應(yīng)查詢時采集到的數(shù)據(jù)。這些數(shù)據(jù)的內(nèi)容可能是數(shù)值、參考地址或者極限值。他由數(shù)據(jù)區(qū)有2個16進制的數(shù)據(jù)位(2的8次方256),數(shù)據(jù)范圍為00—FF(16進制)。例如:功能域碼告訴終端讀取一個寄存器,數(shù)據(jù)域則需要指明從哪個寄存器開始及讀取多少個數(shù)據(jù),內(nèi)嵌的地址和數(shù)據(jù)依照類型和從機之間的不同能力而有所不同.若無錯誤出現(xiàn),從機向主機的響應(yīng)信息中包含了請求數(shù)據(jù),若有錯誤出現(xiàn),則數(shù)據(jù)中有一個不正常代碼,使主機能判斷并作出下一步的動作。數(shù)據(jù)區(qū)的長度可為“零”以表示某類信息。

    1.2.5 錯誤校驗域

    該域允許主機和終端檢查傳輸過程中的錯誤。有時,由于電噪聲和其它干擾,一組數(shù)據(jù)在從一個設(shè)備傳輸?shù)搅硪粋€設(shè)備時在線路上可能會發(fā)生一些改變,出錯校驗?zāi)軌虮WC主機或者終端不去響應(yīng)那些傳輸過程中發(fā)生了改變的數(shù)據(jù),這就提高了系統(tǒng)的安全性和效率,出錯校驗使用了16位循環(huán)冗余的方法,即CRC校驗。

    錯誤檢測域包含一16Bits值(用兩個8位的字符來實現(xiàn))。錯誤檢測域的內(nèi)容是通過對消息內(nèi)容進行循環(huán)冗長檢測方法得出的.CRC域附加在消息的最后,添加時先是低字節(jié)然后是高字節(jié)。故CRC的高位字節(jié)是發(fā)送消息的最后一個字節(jié)。

    1.2.6 字符的連續(xù)傳輸

    當消息在標準的Modbus系列網(wǎng)絡(luò)傳輸時,每個字符或字節(jié)按由左到右的次序方式發(fā)送:

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

    位的序列是:

    有奇偶校驗

    啟始位

    1

    2

    3

    4

    5

    6

    7

    8

    奇偶位

    停止位

    無奇偶校驗

    啟始位

    1

    2

    3

    4

    5

    6

    7

    8

    停止位

    停止位

    圖 1 –2 . 位順序(RTU)

    1.2 錯誤檢測

    1、奇偶校驗

    用戶可以配置控制器是奇或偶校驗,或無校驗。這將決定了每個字符中的奇偶校驗位是如何設(shè)置的。

    如果指定了奇或偶校驗,“1”的位數(shù)將算到每個字符的位數(shù)中(ASCII模式7個數(shù)據(jù)位,RTU中8個數(shù)據(jù)位)。例如RTU字符幀中包含以下8個數(shù)據(jù)位:1 1 0 0 0 1 0 1

    整個“1″的數(shù)目是4個。如果便用了偶校驗,幀的奇偶校驗位將是0,便得整個“1″的個數(shù)仍是4個。如果便用了奇校驗,幀的奇偶校驗位將是1,便得整個“1″的個數(shù)是5個.

    如果沒有指定奇偶校驗位,傳輸時就沒有校驗位,也不進行校驗檢測。代替一附加的停止位填充至要傳輸?shù)淖址麕?

    2、CRC檢測

    RTU方式時,采用CRC方法計算錯誤校驗碼,CRC校驗傳送的全部數(shù)據(jù).它忽略信息中單個字符數(shù)據(jù)的奇偶校驗方法。

    循環(huán)冗余校驗(CRC)域占用兩個字節(jié),包含了一個16位的二進制值。CRC值由傳送設(shè)備計算出來,然后附加到數(shù)據(jù)幀上,接收設(shè)備在接收數(shù)據(jù)時重新計算CRC值,然后與接收到的CRC域中的值進行比較,如果這兩個值不相等,就發(fā)生了錯誤。

    CRC開始時先把寄存器的16位全部置成“1”,然后把相鄰2個8位字節(jié)的數(shù)據(jù)放入當前寄存器中,只有每個字符的8位數(shù)據(jù)用作產(chǎn)生CRC,起始位,停止位和奇偶校驗位不加到CRC中。

    在生成CRC時,每個8位字節(jié)與寄存器中的內(nèi)容進行異或,然后將結(jié)果向低位移位,高位則用“0”補充,最低位(LSB)移出并檢測,如果是1,該寄存器就與一個預(yù)設(shè)的固定值進行一次異或運算,如果最低位為0,不作任何處理。

    上述處理重復進行,知道執(zhí)行完了8次移位操作,當最后一位(第8位)移完以后,下一個8位字節(jié)與寄存器材的當前值進行異或運算,同樣進行上述的另一個8次移位異或操作,當數(shù)據(jù)幀中的所有字節(jié)都作了處理,生成的最終值就是CRC值。

    生成一個CRC的流程為:

    1、 預(yù)置一個16位寄存器為0FFFFH(全1),稱之為CRC寄存器。

    2、 把數(shù)據(jù)幀中的第一個8位字節(jié)與CRC寄存器中的低字節(jié)進行異或運算,結(jié)果存回CRC寄存器。

    3、 將CRC寄存器向右移一位,最高位填以0,最低位移出并檢測。

    4、 如果最低位為0:重復第3步(下一次移位)。

    如果最低位為1:將CRC寄存器與一個預(yù)設(shè)的固定值(0A001H)進行異或運算。

    5、 重復第3步和第4步直到8次移位。這樣處理完了一個完整的八位.

    6、 重復第2步到第5步來處理下一個八位,直到所有的字節(jié)處理結(jié)束.

    7、 最終CRC寄存器得值就是CRC的值。

    CRC值附加到信息時,低位在先,高位在后.查閱附錄C中的一個實例,它詳細說明了CRC的校驗。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年7月11日 18:42
    下一篇 2022年7月11日 18:42

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息