西南科技大學信息工程學院 徐 勇
?
基于Modbus的通信驅動設計
西南科技大學信息工程學院徐勇
【摘要】隨著工業控制領域的快速發展,集成監控系統的應用也越來越廣泛。本文根據集成監控的開發需求,設計一套服務于集成監控系統的Modbus通信驅動組件。該組件以動態鏈接庫的形式設計和開發。旨在設計和開發一套能夠支持二次開發,并適用于集成監控系統開發的工具。該通信驅動程序根據XAML標記語言特性,設置和保存通信驅動的相關配置。并采用多線程的方式管理Modbus通信的多個主從連接。實現集成監控系統對多個Modbus從站設備的數據采集和邏輯控制。
【關鍵詞】集成監控系統;Modbus;通信驅動;XAML
Modbus協議是一種用于電子控制器進行通訊和控制的通信協議,是全球第一個真正用于工業現場的總線協議。通過此協議,控制器相互之間經由網絡和其他設備就可以直接進行通信,完成信息和數據的交換和傳遞。Modbus協議具有標準、開放、可以支持多種通信接口、數據幀格式簡單緊湊、數據傳輸量大、實時性好等特點。在工業控制系統中得到了非常廣泛的應用。已經成為了當前工業控制領域的通用工業通信協議標準。
Modbus協議采用主-從式的通信結構,提供連接到不同類型總線或者網絡設備之間的客戶機/服務器進行通信。主站程序使用不同的功能碼請求從站程序執行不同的操作;從站程序執行功能碼定義的操作并向主站程序發送響應,或者在操作中檢測到差錯時發送異常響應。
Modbus協議在串行鏈路上的實現模型和ISO/ OSI參考模型對比如圖1所示。由于Modbus現場總線的實時性特點,所以Modbus通訊協議模型中的網絡層、傳輸層、會話層和表示層都沒有定義,這也是現場總線協議的一個共性特點。在應用層規定了Modbus應用層的協議模型包括消息幀格式,功能碼、校驗、通訊時序控制等內容。

圖1 Modbus模型與ISO/OSI模型的對比
Modbus協議定義了一個控制器能夠認識并使用的消息結構,而不管他們是經過何種網絡進行通信的,它描述了一個控制器請求訪問其他下位機或者PC設備的過程。Modbus制定了消息域的格局和內容的公共格式。
控制器通信使用主-從技術,也就是一臺設備作為主設備能夠初始化傳輸(查詢)。其他設備作為從設備根據主設備查詢提供的數據做出相應的反應。
主設備可以單獨和從設備進行通信。從設備按照協議返回消息給主設備作為回應。
Modbus傳輸方式:
Modbus協議是一種應用層報文傳輸協議,包括ASCII、RTU、TCP三種報文類型。協議本身是沒有定義物理層的,只是定義了控制器能夠認識和使用的消息結構。
Modbus協議使用串口傳輸時可以選擇RTU或者ASCII模式,并規定了消息、數據結構、命令和應答方式,并對數據進行校驗。ASCII模式采用LRC校驗、RTU模式采用16位CRC校驗。如果傳輸時使用TCP協議通信時不需要使用校驗,因為TCP協議本身就是一個面向連接且可靠的通信協議。
3.1通信驅動運行模塊
Modbus通信驅動的運行采用多線程的方式運行。每一個Modbus主站都是一個IModbusStation實例化的對象,每個對象中都設定了Starp()方法和Stop()方法來管理Modbus主站的啟停。在每一個Modbus主站實例中,主線程用于監控Modbus主站的運行狀態,并產生和監視邏輯處理線程,用于與該Modbus主站下的所有從站進行數據的交互和處理,而對于控制消息的下發,Modbus通信驅動采用消息隊列的方式跟從站進行控制消息指令的發出。Modbus通信驅動運行流程圖如圖2所示:

圖2 Modbus通信驅動程序運行流程圖
3.2多線程并行處理模型
通信驅動組態模塊作為集成監控系統的核心,能夠支持一定數量的穩定并發是最基本的要求。多線程的運行模型,不僅能夠讓多個Modbus主站并行的執行,還能減少系統的開銷。同時,由于同一個進程里的線程間的通信比較方便,開銷很小,所以,在每一個Modbus主站實例中,將不同的任務分配到多個線程中并行執行,提高通信驅動的執行效率、實時性和穩定性。本課題研究的通信驅動組態根據集成監控系統的需求設計了一套基于多線程通信和數據處理的運行模型。
該模型通過線程的優先級來調度線程,集成監控系統通過通信驅動內的配置,為每一個Modbus主站實例化一個Modbus驅動類的對象,并啟動該對象的主線程。Modbus主站實例在主線程的驅動下,完成下位機的實時數據采集、數據處理和控制指令的下發。多線程的并行處理模型如圖3所示:

圖3 多線程并行處理模型
本文多設計和開發的基于Modbus的通信驅動,依賴XAMl標記語言完成對集成監控系統中通信驅動的配置和具體通信協議的二次開發,采用多線程的方式并行訪問多個從站,實現對工業現場設備實時數據的采集,并通過共享消息隊列對現場設備進行控制。性能完整且穩定。現已長期運行于多個集成監控系統的生產環境中。
參考文獻
[1]史運濤,孫德輝,等.基于Modbus協議的通訊集成技術研究[J].研究與應用,2010,04(1).
[2]宋文娟,趙強,等.基于MODBUS網絡的液位測量系統設置[J].儀表儀器雪豹,2005,26(8).
[3]李娜.基于MODBUS協議的智能儀表的設計[D].北京:北京郵電大學,2003.
[4]徐寧,趙冬梅.對基于XAML的新一代可拓展應用程序標記語言的研究[J].計算機時代,2004,11:68-71.
徐勇(1990—),四川眉山人,碩士,現就讀于西南科技大學。
作者簡介: