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