基于Modbus的OPC服務器設計及其在組態軟件中的應用

蝸牛vps 大硬盤VPS 2020-07-19 612 0
  摘要:本文主要在介紹Modbus協議規范和OPC服務器工作原理以及組成框架的基礎上,進行服務器設計,通過設計,將服務器應用到DSC組態軟件中,具有一定的現實意義。
  關鍵詞:Modbus;OPC;組態
  中圖分類號:TP393.09 文獻標識碼:A 文章編號:1007-9599?。?012) 18-0000-02
  1 Modbus總線規范
  目前,Modbus協議規范主要應用在自動控制領域,目的是實現工業生產中控制器之間的數據通信。同時,還能夠通過網絡協議實現控制器和其他硬件設備的通信,因此,通過該協議能夠讓不同廠家的設備構成控制網絡,進行集中監控。因此,Modbus協議已經成為了一種通用工業標準。Modbus協議在控制過程中,已經定義了控制器能夠識別了消息結構,所以,當控制器發出控制指令后,接收設備就能夠回應指令請求,同時偵測指令是否正確,這樣,就能夠實現不同網絡之間的控制。
  Modbus協議在通信過程中,在總線上只能有一臺主設備,每次通信指令都由主設備發出,在其余的從設備都分配指定地址后,就能夠接受主設備的指令。在主設備和從設備進行通信時,如果主設備只和其中一臺從設備通信,從設備則返回一個消息回應,如果主設備需要和所有從設備通信,從設備則不能作出回應。Modbus通信有兩種模式:ASII和RTU模式。并且,這兩種模式不能同時使用,只能選擇其中一種模式進行通信。
  2 OPC服務器的設計
  2.1 服務器對象與接口模塊
  OPC服務器對象的名稱通常為XXX(代表硬件名稱)Server,其主要功能就是在啟動服務器后獲取服務器,得到服務器對象的起始地址,再返回OPC對象。XXXServer派生自IUnknown類,實現了OPC自定義接口,其中最關鍵的兩個接口是IOPC-Server和IOPCBrowseServerAddressSpace。其中,IOPCServer接口類首先派生出IXXXServer類,然后通過指針變量指向IXXXServer類,同時,將接口指針返回客戶,客戶收到接口指針命令后,可以通過調用相關函數完成相應操作,比如,能夠實現對組對象的管理、瀏覽、創建、刪除等操作。并且,還可以通過操作服務器接口了解服務器相關信息。IOPCBrowseServerAddressSpace接口提供瀏覽服務器地址空間和獲取項對象的屬性。
  OPC Server組對象名稱通常為XXXGroup,主要完成存儲項對象的信息,通過OPC服務器組對象接口,以OPC組為單位,采用同步和異步方式進行傳輸,以實現組對象功能。XXXGroup中IXXXSIO接口實現同步傳輸,程序可以按照規定調用接口進行數據同步存取。如果采用異步方式傳輸,則通過IOPCAsyncIO與IDadaObject接口派生出IXXXSIO和IXXXDO接口。然后,程序則通過IXXXASIO進行數據異步存取操作。
  OPC Server中有一個OPC項XXXItem,由于沒有自帶接口,所以,不是真正的COM對象,只是表示數據連接。因此,項對象能夠對于實際數據項,即服務器中的唯一標識,客戶通過數據項建立與數據源的連接。其中,標識包括值、品質、時間戳三個屬性。
  2.2 數據存儲區模塊
  數據存儲區模塊就是服務器上包含的可供客戶訪問的資源的集合,它描述了服務器中含有哪些項,以及這些項是按照什么形式進行組織的,我們可以采用鏈表結構來實現,在鏈表結構中,通過一個含有自身結構的指針,實現OPC數據項的遍歷。這樣。OPC客戶就可以通過服務器對象的
  IOPCServerBrowseServerAddressSpace接口來瀏覽數據區的數據項,然后通過OPC組對象創建OPC項。并將OPC項與相應的數據項聯系起來。
  2.3 Modbus設備驅動模塊
  Modbus設備驅動模塊的實現關鍵是需要建立符合Modbus協議的數據幀。在本程序中,采用的是RTU模式。無奇偶校驗,有2個停止位。
  具體步驟,第一步,打開串口,并設置串口參數,比如,波特率、緩沖區等的設置。第二步,將數據量、起始地址、功能碼、冗余校驗等參數依次填入內存中的緩沖區,建立一幀Modbus。第三步,打開新接收線程,用于監視串口工作狀態,當串口收到數據時,線程則會通知客戶程序,并將Modbus數據幀發送給設備。如果設備收到數據,則會馬上應答,同時發送回應答包文。在回應答過程中,需要判斷通信是否超時,串口接收的數據是否符合Modbus協議標準,串口是否能夠繼續使用。如果通信不超時,串口則繼續使用,并且,串口數據符合協議標準,那么就可以在內存中建立接收緩沖區,接收Modbus數據,當整個發送和接收過程結束后,系統將關閉串口資源。
  2.4 OPC服務器的注冊
  由于OPC服務器組件都是自注冊組件,相對應的,COM為它們定義了一種“Self-Registration”機制和“Unregistration”機制,將服務器注冊過程封裝在DLL或EXE程序中,由于本OPC服務器采用DLL組件形式,可以采用Windows系統提供的RegSvr31.exe命令來注冊,將該dll文件拷貝到操作系統目錄下,運行RegSvr32/OPC_Svr.dll。同樣,要從OPC基金會網站下載opc_aeps.dll,opc-comn_ps.dll,opcproxy.dll組件,將其放在操作系統目錄下進行注冊。保證當組件程序從文件系統刪除時會刪除其他自身的注冊途徑。
  3 該服務器配合力控組態軟件的應用
  業界著稱的工業組態軟件力控就可以支持OPC標準,作為客戶端訪問OPC服務器程序時,是將OPC服務器程序當作一個I/O設備。數據庫中的點參數通過I/O數據庫連接與OPC服務器程序進行數據交換。
  3.1 在組態軟件中定義OPC設備
  在力控導航器窗口中選擇“I/O設備驅動”項中的“OPC”設備并展開,雙擊“OPC Client”,在出現對話框后,定義基于Modbus協議的OPC邏輯設備的名稱,起名為“OPC_MODB”,單擊“下一步”,配置OPC服務器,然后,單擊“完成”,則成功添加一個OPC設備,并且在力控的導航窗口中看到該設備。
  3.2 對OPC數據項進行數據連接
  第一步,雙擊“實時數據庫/數據庫組態”,第二步,選擇“模擬I/O點”,第三步,雙擊任一空點參數單元格,選擇“數據連接”頁,第四步,在“連接I/O設備”的“設備”下拉框中選擇預定義的OPC設備“OPC_MODB”,選擇后,在“連接項”右側單擊“增加”按鈕,單擊“確定”按鈕,便生成了一個數據項的數據連接。
  3.3 進行數據通訊
  通過上面的設置,就可以在力控組態軟件中像接收其他I/O設備的數據一樣接收該OPC設備:OPC_MODB的數據。
  通過基于Modbus的OPC接口,可以實時接收從底層傳過來的數據,并及時的把數據傳送到客戶端,對于客戶端發送的數據請求,能夠立即響應,迅速把數據轉發到底層設備。數據既可以在不同的控制系統中進行傳遞,也可以傳遞到各種符合COM規范的應用軟件中。在工業自動化系統中采用OPC規范的產品,能夠實現各軟件之間的相互操作和集成,同時,也能夠與現場設備通過協議進行即時通信,完成數據傳輸。隨著OPC協議規范的逐步完善和功能增強,OPC將成為控制系統中不可缺少的一部分。
  參考文獻:
  [1]李正軍.現場總線及其應用技術[M].北京:機械工業出版社,2005.
  [2]OPC基金會.OPC協議規范[S].
基于Modbus的OPC服務器設計及其在組態軟件中的應用  第1張

評論

日本韩欧美一级A片在线观看