modbus通訊協議

2021-03-04 01:13:06 字數 4935 閱讀 8039

工業控制已從單機控制走向集中監控、集散控制,如今已進入網路時代,工業控制器連網也為網路管理提供了方便。modbus就是工業控制器的網路協議中的一種。

一、概述

modbus 協議是應用於電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網路(例如乙太網)和其它裝置之間可以通訊。它已經成為一通用工業標準。

有了它,不同廠商生產的控制裝置可以連成工業網路,進行集中監控。

此協議定義了乙個控制器能認識使用的訊息結構,而不管它們是經過何種網路進行通訊的。它描述了一控制器請求訪問其它裝置的過程,如果回應來自其它裝置的請求,以及怎樣偵測錯誤並記錄。它制定了訊息域格局和內容的公共格式。

當在一modbus網路上通訊時,此協議決定了每個控制器須要知道它們的裝置位址,識別按位址發來的訊息,決定要產生何種行動。如果需要回應,控制器將生成反饋資訊並用modbus協議發出。在其它網路上,包含了modbus協議的訊息轉換為在此網路上使用的幀或包結構。

這種轉換也擴充套件了根據具體的網路解決節位址、路由路徑及錯誤檢測的方法。

1、在modbus網路上轉輸

標準的modbus口是使用一rs-232c相容序列介面,它定義了連線口的針腳、電纜、訊號位、傳輸波特率、奇偶校驗。控制器能直接或經由modem組網。控制器通訊使用主—從技術,即僅一裝置(主裝置)能初始化傳輸(查詢)。

其它裝置(從裝置)根據主裝置查詢提供的資料作出相應反應。典型的主裝置:主機和可程式設計儀表。

典型的從裝置:可程式設計控制器。

主裝置可單獨和從裝置通訊,也能以廣播方式和所有從裝置通訊。如果單獨通訊,從裝置返回一訊息作為回應,如果是以廣播方式查詢的,則不作任何回應。modbus協議建立了主裝置查詢的格式:

裝置(或廣播)位址、功能**、所有要傳送的資料、一錯誤檢測域。從裝置回應訊息也由modbus協議構成,包括確認要行動的域、任何要返回的資料、和一錯誤檢測域。如果在訊息接收過程中發生一錯誤,或從裝置不能執行其命令,從裝置將建立一錯誤訊息並把它作為回應傳送出去。

2、在其它型別網路上轉輸

在其它網路上,控制器使用對等技術通訊,故任何控制都能初始和其它控制器的通訊。這樣在單獨的通訊過程中,控制器既可作為主裝置也可作為從裝置。提供的多個內部通道可允許同時發生的傳輸程序。

在訊息位,modbus協議仍提供了主—從原則,儘管網路通訊方法是「對等」。如果一控制器傳送一訊息,它只是作為主裝置,並期望從從裝置得到回應。同樣,當控制器接收到一訊息,它將建立一從裝置回應格式並返回給傳送的控制器。

modbus是modicon公司為其plc與主機之間的通訊而發明的序列通訊協議。其物理層採用rs232、485等非同步序列標準。由於其開放性而被大量的plc及rtu廠家採用。

modbus通訊方式採用主從方式的查詢-相應機制,只有主站發出查詢時,從站才能給出響應,從站不能主動傳送資料。主站可以向某乙個從站發出查詢,也可以向所有從站廣播資訊。從站只響應單獨發給它的查詢,而不響應廣播訊息。

modbus的序列口的通訊引數(如波特率、奇偶校驗)可由使用者選擇。

二、modbus協議傳送方式

modbus通訊協議有兩種傳送方式:rtu方式和ascii方式,兩種方式如下所示:

專案 rtu方式 ascii方式

位元組長度 8 bits 7 bits

奇偶校驗 1 bit or 0 bit 1 bit or 0 bit

位元組中止 1 bit or 2 bits 1 bit or 2 bits

開始標記不要 :(冒號)

結束標記不要 cr,lf

資料間隔 < 24 bit < 1s

出錯檢驗方式 crc-16 lrc

控制器能設定為兩種傳輸模式(ascii或rtu)中的任何一種在標準的modbus網路通訊。使用者選擇想要的模式,包括串列埠通訊引數(波特率、校驗方式等),在配置每個控制器的時候,在乙個modbus網路上的所有裝置都必須選擇相同的傳輸模式和串列埠引數。

三、modbus訊息幀

兩種傳輸模式中(ascii或rtu),傳輸裝置以將modbus訊息轉為有起點和終點的幀,這就允許接收的裝置在訊息起始處開始工作,讀位址分配資訊,判斷哪乙個裝置被選中(廣播方式則傳給所有裝置),判知何時資訊已完成。部分的訊息也能偵測到並且錯誤能設定為返回結果。

1、ascii幀

使用ascii模式,訊息以冒號(:)字元(ascii碼 3ah)開始,以回車換行符結束(ascii碼 0dh,0ah)。

其它域可以使用的傳輸字元是十六進製制的0...9,a...f。網路上的裝置不斷偵測「:」字元,當有乙個冒號接收到時,每個裝置都解碼下個域(位址域)來判斷是否發給自己的。

訊息中字元間傳送的時間間隔最長不能超過1秒,否則接收的裝置將認為傳輸錯誤。

2、rtu幀

使用rtu模式,訊息傳送至少要以3.5個字元時間的停頓間隔開始。在網路波特率下多樣的字元時間,這是最容易實現的(如下圖的t1-t2-t3-t4所示)。

傳輸的第乙個域是裝置位址。可以使用的傳輸字元是十六進製制的0...9,a...

f。網路裝置不斷偵測網路匯流排,包括停頓間隔時間內。當第乙個域(位址域)接收到,每個裝置都進行解碼以判斷是否發往自己的。

在最後乙個傳輸字元之後,乙個至少3.5個字元時間的停頓標定了訊息的結束。乙個新的訊息可在此停頓後開始。

整個訊息幀必須作為一連續的流轉輸。如果在幀完成之前有超過1.5個字元時間的停頓時間,接收裝置將重新整理不完整的訊息並假定下一位元組是乙個新訊息的位址域。

同樣地,如果乙個新訊息在小於3.5個字元時間內接著前個訊息開始,接收的裝置將認為它是前一訊息的延續。這將導致乙個錯誤,因為在最後的crc域的值不可能是正確的。

3、位址域

訊息幀的位址域包含兩個字元(ascii)或8bit(rtu)。可能的從裝置位址是0...247 (十進位制)。

單個裝置的位址範圍是1...247。主裝置通過將要聯絡的從裝置的位址放入訊息中的位址域來選通從裝置。

當從裝置傳送回應訊息時,它把自己的位址放入回應的位址域中,以便主裝置知道是哪乙個裝置作出回應。

位址0是用作廣播位址,以使所有的從裝置都能認識。當modbus協議用於更高水準的網路,廣播可能不允許或以其它方式代替。

4、如何處理功能域

訊息幀中的功能**域包含了兩個字元(ascii)或8bits(rtu)。可能的**範圍是十進位制的1...255。

當然,有些**是適用於所有控制器,有此是應用於某種控制器,還有些保留以備後用。

當訊息從主裝置發往從裝置時,功能**域將告之從裝置需要執行哪些行為。例如去讀取輸入的開關狀態,讀一組暫存器的資料內容,讀從裝置的診斷狀態,允許調入、記錄、校驗在從裝置中的程式等。

當從裝置回應時,它使用功能**域來指示是正常回應(無誤)還是有某種錯誤發生(稱作異議回應)。對正常回應,從裝置僅回應相應的功能**。對異議回應,從裝置返回一等同於正常**的**,但最重要的位置為邏輯1。

例如:一從主裝置發往從裝置的訊息要求讀一組保持暫存器,將產生如下功能**:

0 0 0 0 0 0 1 1 (十六進製制03h)

對正常回應,從裝置僅回應同樣的功能**。對異議回應,它返回:

1 0 0 0 0 0 1 1 (十六進製制83h)

除功能**因異議錯誤作了修改外,從裝置將一獨特的**放到回應訊息的資料域中,這能告訴主裝置發生了什麼錯誤。

主裝置應用程式得到異議的回應後,典型的處理過程是重發訊息,或者診斷發給從裝置的訊息並報告給操作員。

5、資料域

資料域是由兩個十六進製制數集合構成的,範圍00...ff。根據網路傳輸模式,這可以是由一對ascii字元組成或由一rtu字元組成。

從主裝置發給從裝置訊息的資料域包含附加的資訊:從裝置必須用於進行執行由功能**所定義的所為。這包括了象不連續的暫存器位址,要處理項的數目,域中實際資料位元組數。

例如,如果主裝置需要從裝置讀取一組保持暫存器(功能**03),資料域指定了起始暫存器以及要讀的暫存器數量。如果主裝置寫一組從裝置的暫存器(功能**10十六進製制),資料域則指明了要寫的起始暫存器以及要寫的暫存器數量,資料域的資料位元組數,要寫入暫存器的資料。

如果沒有錯誤發生,從從裝置返回的資料域包含請求的資料。如果有錯誤發生,此域包含一異議**,主裝置應用程式可以用來判斷採取下一步行動。

在某種訊息中資料域可以是不存在的(0長度)。例如,主裝置要求從裝置回應通訊事件記錄(功能**0b十六進製制),從裝置不需任何附加的資訊。

6、錯誤檢測域

標準的modbus網路有兩種錯誤檢測方法。錯誤檢測域的內容視所選的檢測方法而定。

當選用ascii模式作字元幀,錯誤檢測域包含兩個ascii字元。這是使用lrc(縱向冗長檢測)方法對訊息內容計算得出的,不包括開始的冒號符及回車換行符。lrc字元附加在回車換行符前面。

rtu當選用rtu模式作字元幀,錯誤檢測域包含一16bits值(用兩個8位的字元來實現)。錯誤檢測域的內容是通過對訊息內容進行迴圈冗長檢測方法得出的。crc域附加在訊息的最後,新增時先是低位元組然後是高位元組。

故crc的高位位元組是傳送訊息的最後乙個位元組。

7、字元的連續傳輸

當訊息在標準的modbus系列網路傳輸時,每個字元或位元組以如下方式傳送(從左到右):

最低有效位...最高有效位

四、錯誤檢測方法

標準的modbus序列網路採用兩種錯誤檢測方法。奇偶校驗對每個字元都可用,幀檢測(lrc或crc)應用於整個訊息。它們都是在訊息傳送前由主裝置產生的,從裝置在接收過程中檢測每個字元和整個訊息幀。

使用者要給主裝置配置一預先定義的超時時間間隔,這個時間間隔要足夠長,以使任何從裝置都能作為正常反應。如果從裝置測到一傳輸錯誤,訊息將不會接收,也不會向主裝置作出回應。這樣超時事件將觸發主裝置來處理錯誤。

發往不存在的從裝置的位址也會產生超時。

1、奇偶校驗

使用者可以配置控制器是奇或偶校驗,或無校驗。這將決定了每個字元中的奇偶校驗位是如何設定的。 如果指定了奇或偶校驗,「1」的位數將算到每個字元的位數中(ascii模式7個資料位,rtu中8個資料位)。

例如rtu字元幀中包含以下8個資料位:

整個「1」的數目是4個。如果便用了偶校驗,幀的奇偶校驗位將是0,便得整個「1」的個數仍是4個。如果便用了奇校驗,幀的奇偶校驗位將是1,便得整個「1」的個數是5個。

如果沒有指定奇偶校驗位,傳輸時就沒有校驗位,也不進行校驗檢測。代替一附加的停止位填充至要傳輸的字元幀中。

MODBUS通訊協議v1 6版

引數存放首址對應輸入暫存器首址。主機傳送命令格式如下 從機位址 1byte 功能編碼 1byte 輸入暫存器首址 2byte 輸入暫存器個數 2byte crc校驗值 2byte 從機位址值範圍在1 99 從機回應格式如下 從機位址 1byte 功能編碼 1byte 讀出的位元組個數 1byte 位...

標準MODBUS通訊協議說明書 外發

1 我公司現有產品中需要和組態軟體進行通訊的有二種產品 匯流排探頭 控制器主機。二種產品分別使用了二種不格式的modbus協議。但是其都符合modbus的通訊格式 1.1 介面標準 介面標準 tia eia 485 硬體連線 2線模式 非4線模式 1.2 通訊格式 傳輸方式是指乙個資料幀內一系列獨立...

通訊協議總結

ppi,mpi和profibus都是基於osi 開放系統互聯 的七層網路結構模型,符合歐洲標準en50170所定義的profibus標準,基於令牌的的網路通訊協議。這些協議是非同步的 序列的 基於字元的通訊協議,字元格式包括乙個起始位 8個資料位 乙個偶校驗位和乙個停止位。其通訊幀包括特定的起始和結...