ModBUS協議通訊的應用
引言
在燃氣蓄熱式窯爐控制系統中,不僅需要將溫度、壓力、流量等模擬參數進行采集、計算控制輸出至執行器,同時還應將火焰狀態、電磁閥狀態、換相閥狀態進行采集,隨時控制點火器點火,并進行周期性換相,換相周期會根據溫度的不同而變化。面對眾多參量的采集控制,需要建立時變系統和非線性系統的狀態空間表達式進行復雜的多相關變量的運算,得到穩定輸出以控制相關變量。事實上,取得大量數據,建立相應數據庫,進行數據分析,單靠低端的數字控制設備難以完成。通常的做法是信號的數據采集、濾波、簡單PID運算、輸出量、及輸出量的互鎖由低端控制器完成。為了完成上述功能,我們采用ABB公司生產的PLC,配置如下:
名稱 數量 描述
07KT51 1塊 50CPU,8DI,6DO
XM06B5 2塊 Extension I/O,4AI,2AO
XK08F1 1塊 Extension I/O,4DI,6DO
PLC軟件采用AC31 SOFTWARE,上位機程序用VB編制,實現與上位工控機通訊的過程中需要使用MODBUS協議。本文重點介紹其通訊實現的過程。
一、 MODBUS簡介
MODBUS協議是應用于電子控制器的一種通訊語言。利用這個協議,控制器相互之間(例如485、232C等),控制器通過網絡(例如以太網)和其他設備之間進行通訊。它定義了一種控制器能認識使用的消息結構,而不管它們是通過何種網絡實現;描述的是控制器請求訪問其它設備的過程,如何回應來自其它設備的請求,以及怎樣偵錯并記錄;制定了消息域格局和內容的公共格式。
MODBUS通訊實現有兩種傳輸模式(ASCII或RTU),ABB公司的50系列PLC產品采用的是RTU(遠程終端單元)模式,在消息中的每個8Bit字節包含兩個4Bit的十六進制字符。這種方式的主要優點是:在同樣的波特率下,可比ASCII方式傳送更多的數據。
1、代碼系統:
· 8位二進制,十六進制數0...9,A...F
· 消息中的每個8位域都是一個兩個十六進制字符組成每個字節的位
· 1個起始位
· 8個數據位,最小的有效位先發送
· 1個奇偶校驗位,無校驗則無
· 1個停止位(有校驗時),2個Bit(無校驗時)
· 錯誤檢測域 CRC(循環冗長檢測)
2、基于RS485的RTU模式MODBUS通訊格式為:
它定義了在這些網絡上連續傳輸的消息段的每一位,以及決定怎樣將信息打包成消息域和如何解碼。
3、其查詢回應周見下圖:
(1)查詢 查詢消息中的功能代碼告之被選中的從設備要執行何種功能。數據段包含了從設備要執行功能的任何附加信息。例如功能代碼03是要求從設備讀保持寄存器并返回它們的內容。數據段必須包含要告之從設備的信息:從何寄存器開始讀及要讀的寄存器數量。錯誤檢測域為從設備提供了一種驗證消息內容是否正確的方法。
評論