賈濤 陳家林
【摘要】 Modbus協(xié)議作為一個跨時代的網絡協(xié)議,是全球第一個真正用于工業(yè)現場的總線協(xié)議,在工業(yè)領域具備廣闊的應用前景。本文介紹了Modbus協(xié)議的主要特點,并詳述在基于STM32單片機以及嵌入式實時操作系統(tǒng)μC/OS-II上的工業(yè)儀表內進行構建Modbus協(xié)議的系統(tǒng)設計。
【關鍵詞】 Modbus協(xié)議 嵌入式實時操作系統(tǒng) 系統(tǒng)設計
一、引言
Modbus協(xié)議是由Modicon公司在1978年發(fā)明的一種工業(yè)通信協(xié)議,正式為工業(yè)網絡拉開了序幕。Modbus 標準定義了 OSI 模型第7層上的應用層報文傳輸協(xié)議,它在連接至不同類型總線或網絡的設備之間提供客戶機/服務器通信。由于其開放性標準、支持多種電氣接口、幀格式通俗易懂的特點,特別是工控領域上HMI、PLC、前端儀表等設備間通信得到了廣泛使用。通常Modbus協(xié)議由串行鏈路通過一個主/從總線模型實現。同一時刻,只有一個主站連接于總線,一個或多個從站連接在同一個串行總線上。
二、硬件結構設計
在工業(yè)儀表內除了實現主要的監(jiān)測物理量之外,儀表還需具備數據通信互連功能。本文所指的工業(yè)儀表是基于STM32L152RBT6為控制器的硬件環(huán)境實現的對外界環(huán)境溫度監(jiān)測的儀表,并通過在其內部構建Modbus協(xié)議實現數據通信。STM32L152RBT6是屬于由ST公司的STM32L152系列微控制器,該系列屬于是超低功耗,高數據安全性,高效能的ARM Cortex-M3微控制器芯片。其低功耗運行模式電流為10.4μA,能夠滿足實際的工業(yè)應用中低功耗穩(wěn)定的需求。同時利用STM32內提供的串行口外設和485總線轉換模塊實現通信接口。轉換模塊采用的是SP3072EEN接口芯片,采用半雙工通訊方式,與單片機引腳連接簡單。硬件結構框圖如圖1所示。
三、軟件功能設計
為了在基于嵌入式的工業(yè)儀表內構建一個實時性強、運行穩(wěn)定的Modbus協(xié)議,使用了μC/OS-II作為整個儀表的軟件平臺,其是由Jean J. Labrosse于1992年編寫的一個嵌入式多任務操作系統(tǒng),憑借其足夠的穩(wěn)定性和安全性在數十年之間得到了許多機構的標準認證。在μC/OS-II內具體應用的軟功能都是通過系統(tǒng)提供的多個用戶任務來實現。
3.1 Modbus主站設計
實際工業(yè)應用中,工業(yè)儀表需要向前端傳感設備或其他儀表進行數據交互,以便實時讀取到需要的數據值,儀表內部需要構建一個Modbus主站作為主動發(fā)送數據請求命令的客戶端。Modbus主站工作原理如圖2所示。
本設計利用了μC/OS-Ⅱ所提供的系統(tǒng)服務將主站模塊分為三個部分:請求主站服務的用戶任務、主站服務管理任務、串口底層驅動函數。
請求主站服務的用戶任務是指的是那些用戶任務中有調用Modbus主站服務的需求。各個用戶任務通過實際應用發(fā)送特定的主站請求命令,并通過操作系統(tǒng)提供的消息隊列進行命令緩沖。
主站系統(tǒng)中的主站管理任務是負責專門管理來自各個請求主站服務的任務的具體請求。該任務也屬于一個用戶任務,只是對請求命令的緩沖隊列進行集中處理。
串口底層的中斷處理實現了串行鏈路上具體的數據發(fā)送與接收。
主站服務由請求主站服務的任務發(fā)起,各個請求主站服務的任務按優(yōu)先級順序執(zhí)行并依次調用主站服務調用函數,該函數完成數據幀的建立與命令的填充最后將緩沖區(qū)傳遞給主站管理任務。主站管理任務優(yōu)先級是低于所有請求主站服務的任務,它將依次處理接收到得數據幀內容,對數據幀進行封裝并交給串口底層驅動實現最終的發(fā)送和接收工作。當接收到從站回復或者發(fā)生接收超時,主站管理任務將在緩沖區(qū)中產生一個標志符通知上層請求任務進行處理。為了發(fā)送和接收的實時性考慮,這里將數據幀的校驗和處理工作交給上層請求任務完成。
3.2 Modbus從站設計
為了實現數據互連,后臺上位機或者現場PLC需要實時獲取前端儀表的數據信息。前端儀表內部需要構建一個Modbus從站作為服務器提供前端數據。Modbus從站工作原理如圖3所示。
由基于μC/OS-II的平臺,可將從站功能模塊化到一個μC/OS-II的獨立任務內,通過內核的多任務管理調度對從站進行狀態(tài)輪詢并且通過底層中斷進行實際的數據幀接收工作。當收到一個請求時,從站在首先需要校驗報文包。若發(fā)生通信錯誤則不作任何響應,回到空閑狀態(tài)。若無通信錯誤,則按照Modbus協(xié)議規(guī)定解析請求包,進行具體的事務處理。若發(fā)生錯誤,則返回一個異常響應給主站。當要求的處理完成后,單播報文需要一個格式化的響應發(fā)往給主站。
四、結語
本文實現了在基于嵌入式的工業(yè)儀表上的Modbus主從站搭建和設計工作。經過測試,儀表內的Modbus協(xié)議具備協(xié)議標準的要求和功能,滿足實時性要求和穩(wěn)定性,能夠同時作為主站和從站多任務進行工作,達到了設計的目的。