新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Modbus協議的常用基本定義——(RS485總線系統應用之2)

        Modbus協議的常用基本定義——(RS485總線系統應用之2)

        作者: 時間:2016-12-15 來源:網絡 收藏
        1. Modbus協議簡介

        Modbus協議是一種應用于電子控制器的通用通信規約。是由MODICON公司最先倡導并于1979年開發的,后來逐漸發展成為國際通用的通信標準。在我國,GB/Z 19582《基于Modbus協議的工業自動化網絡規范》于2004年9月發布,該指導性技術文件發布后得到了國內自動化產品生產廠家、自動化系統集成商和廣大用戶的高度關注和重視,并極大地推動了基于Modbus協議的產品的開發和應用。2006年4月,Modbus-IDA國際組織在中國正式授權建立了唯一的MODBUS(中國)產品一致性測試實驗室(MCTL),為Modbus技術在中國的全面開發和應用提供了硬件平臺支持。

        本文引用地址:http://www.104case.com/article/201612/330196.htm

          按照全國工業過程測量和控制標準化技術委員會關于建立現場總線標準體系的有關要求,有關部門于2007年11月完成了GB/Z 19582《基于Modbus協議的工業自動化網絡規范》標準的修訂工作,將作為國家推薦標準上報國家標準化管理委員會,2008年3月國家標準化管理委員會正式批準為GB/T 19582-2008。

        Modbus協議規定每個控制器必須有自己的設備地址。當一個控制器在Modbus網絡上接收到一條消息時,首先要識別是否發給自己。如果是并且需要回應,控制器將生成反饋消息并依據Modbus協議發出。

        不論是何種控制器經過何種網絡進行通信,Modbus協議定義了一個控制器能夠識別的消息域的框架結構和內容的公共格式。它描述了一個控制器請求訪問其它設備的過程,以及如何回應來自其它設備的請求。還規定了如何偵測和記錄錯誤。

        遵循Modbus協議,不同廠家生產的控制設備可以連接在同一個工業網絡。在這個網絡上,主機設備可以方便地對各種控制設備進行集中監控,各控制設備之間也可以直接相互通信。

        2. Modbus的兩種傳輸模式

        Modbus的兩種傳輸模式分別是ASCII(美國標準信息交換代碼)和RTU(遠程終端裝置)。用戶要實現Modbus網絡通信,必須選中一種傳輸模式并配置串口通信參數(波特率、校驗方式等)。在同一個Modbus網絡上的所有設備都必須選擇相同的傳輸模式和串口參數。

        當消息在標準的Modbus系列網絡傳輸時,每個字符或字節以如下方式發送(從左到右):最低有效位...最高有效位。

        2.1 ASCII模式

        使用ASCII字符幀時,位的發送序列是:

        有奇偶校驗:

        啟始位

        1

        2

        3

        4

        5

        6

        7

        奇偶位

        停止位

        無奇偶校驗:

        啟始位

        1

        2

        3

        4

        5

        6

        7

        停止位

        停止位

        ASCII模式編碼說明:

        .消息中的每個字節都是一個ASCII字符,由兩位十六進制字符組成:0...9,A...F

        .每發送一個字節包含:

        1個起始位、7個數據位(最小的有效位先發送)、1個奇偶校驗位(無校驗則無)、1個(有校驗時)或2個停止位(無校驗時)

        .錯誤檢測采用LRC(縱向冗長檢測)

        當控制器設為在Modbus網絡上以ASCII模式通信時,在消息中的每個字節(8Bit)都作為一個ASCII字符發送。這種方式的主要優點是字符發送的時間間隔可達到1秒而不產生錯誤。

        ASCII模式的消息幀結構:

        冒號符

        地址碼

        功能代碼

        數據數量

        數據1

        ...

        數據n

        LRC高字節

        LRC低字節

        回車符

        換行符

        2.2 RTU模式

        使用RTU字符幀時,位的發送序列是:

        有奇偶校驗:

        啟始位

        1

        2

        3

        4

        5

        6

        7

        8

        奇偶位

        停止位

        無奇偶校驗:

        啟始位

        1

        2

        3

        4

        5

        6

        7

        8

        停止位

        停止位

        RTU模式編碼說明:

        .消息中的每個字節都是由兩個十六進制字符組成:0...9,A...F

        .每發送一個字節包含:

        1個起始位、8個數據位(最小的有效位先發送)、1個奇偶校驗位(無校驗則無)、1個(有校驗時)或2個停止位(無校驗時)

        .錯誤檢測采用CRC(循環冗長檢測)

        當控制器設為在Modbus網絡上以RTU模式通信時,在消息中的每個字節(8Bit)包含兩個4Bit的十六進制字符。這種方式的主要優點是:在同樣的波特率下,可比ASCII方式傳送更多的數據。

        RTU模式的消息幀結構:

        地址

        功能代碼

        數據數量

        數據1

        ...

        數據n

        CRC低字節

        CRC高字節

        3. Modbus的消息幀結構

        在ASCII或RTU兩種傳輸模式中,傳輸設備將Modbus消息轉換為有起點和終點的幀,這就可以使接收設備在消息起始處同步接收數據,讀取地址信息,判斷哪一個設備被選中(廣播方式則傳給所有設備),判知何時信息已傳送完畢。有些消息也能偵測到錯誤并且能返回結果。

        3.1 ASCII幀

        使用ASCII模式,每幀消息以冒號(:)字符(ASCII碼3AH)開始,以回車換行符結束(ASCII碼0DH,0AH)。

        其它域可以使用的傳輸字符是十六進制的0...9,A...F。網絡上的設備不斷偵測“:”字符,當有一個冒號接收到時,每個從設備都解碼下個域(地址域)來判斷是否是發給自己的。

        消息中字符間發送的時間間隔最長不能超過1秒,否則接收的設備將認為傳輸錯誤。一個典型消息幀如下所示:

        起始位

        設備地址

        功能代碼

        數據

        LRC校驗

        結束符

        1個字符

        2個字符

        2個字符

        n個字符

        2個字符

        2個字符

        3.2 RTU幀

        使用RTU模式,每幀消息發送至少要有3.5個字節時間的間隔停頓。不論在何種網絡波特率下,這是最容易實現的(如下圖的T1-T2-T3-T4所示)。傳輸的第一個域是設備地址。可以使用的傳輸字符是十六進制的0...9,A...F。網絡上的設備不斷偵測網絡總線,當第一個域(地址域)接收到時,每個從設備都進行解碼以判斷是否發給自己。在最后一個傳輸字節之后,應至少停頓3.5個字節時間以表示消息結束。一個新的消息可在此停頓后再開始。

        整個消息幀必須作為一個連續的流轉輸。如果在幀完成之前有超過1.5個字符時間的停頓時間,接收設備將刷新不完整的消息并假定下一字節是一個新消息的地址域。同樣,如果一個新消息在小于3.5個字節時間內接著前個消息開始,接收的設備將認為它是前一消息的延續,這將導致一個錯誤,因為在最后的CRC域的值不可能是正確的。典型的消息幀如下所示:

        起始位

        設備地址

        功能代碼

        數據

        CRC校驗

        結束符

        T1-T2-T3-T4

        8Bit

        8Bit

        n個8Bit

        16Bit

        T1-T2-T3-T4

        3.3地址域

        消息幀的地址域包含兩個字符(ASCII)或8Bit(RTU)。允許的從設備地址范圍是十進制的0~247。主設備將要聯絡的從設備的地址放入消息中的地址域來選通從設備。當從設備發送回應消息時,它把自己的地址放入回應的地址域中,以便主設備知道是哪一個設備作出的回應。

        地址0用作廣播地址,以使所有的從設備都能認識。當Modbus協議用于更高水準的網絡時,廣播可能被禁止或以其它方式代替。

        3.4功能域

        消息幀中的功能碼域包含了兩個字符(ASCII)或8Bits(RTU)。可能的代碼范圍是十進制的1~255。有些功能碼適用于所有控制器,有些僅適應用于某種控制器,還有些暫且保留以備后用,參見表1表2。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 盈江县| 贞丰县| 青浦区| 贡觉县| 屯昌县| 宜丰县| 三穗县| 奈曼旗| 钟山县| 迁安市| 苏尼特左旗| 木里| 包头市| 平和县| 濮阳县| 溆浦县| 胶南市| 巴彦县| 阜阳市| 安新县| 武山县| 连云港市| 泗阳县| 鄯善县| 马公市| 清镇市| 牡丹江市| 通渭县| 潍坊市| 清涧县| 石台县| 永寿县| 衢州市| 鹤山市| 凉山| 大同市| 海门市| 井研县| 米脂县| 彭阳县| 建平县|