(福建工程學院文化傳播系,福建 福州350108)
OPC(OLE for Process Control)技術是微軟公司研發(fā)的對象鏈接和嵌入技術的簡稱。OPC技術支持網(wǎng)絡協(xié)議,因而可以將各個子系統(tǒng)在物理設備上區(qū)分開并分布在網(wǎng)絡的不同節(jié)點上[1]。應用OPC技術可以簡化設備與中控中心、設備與設備間的接口互聯(lián),據(jù)此實現(xiàn)整體集成。此外,應用該技術能將現(xiàn)場設備、自控應用、企業(yè)管理等軟件之間相互連接起來,從而能夠即插即用。下面,筆者對計算機測控系統(tǒng)中OPC技術的實現(xiàn)進行闡述。
1)利用C++的MFC標準類庫或者ATL模板類庫 先調用相應的程序函數(shù),進行初始化并完成函數(shù)的注冊,然后通過系統(tǒng)函數(shù)向OPC運行庫中添加多個數(shù)據(jù)項目,最后通過函數(shù)對其屬性進行設置。具體過程如下:①調用Runsvr函數(shù),啟動OPC服務器,建立客戶程序與服務器之間的通信;②在完成運行并得到數(shù)據(jù)后,調用UpdateTag函數(shù)對OPC運行庫中的數(shù)據(jù)進行刷新;③利用Uninit OPC Server函數(shù)退出。
2)利用廠商提供的自動化軟件中設定的德爾OPC服務器模塊建立OPC Server 以西門子公司提供的SimaticNET軟件建立OPC服務器的過程為例,其具體內容如下:①在PC機上安裝特定的通信卡,并安裝提供的SimaticNET軟件,完成安裝后系統(tǒng)會對通信卡進行識別和啟動。②在程序中啟動相應的軟件,在相應的對話框內寫入數(shù)據(jù),完成添加組件OPC服務器和通信卡,并設置波特率、地址、總線類型的基本系統(tǒng)屬性(見圖1)。③利用相應的設置為PC站組態(tài)下載做好準備。④打開軟件界面建立一個新的工程,插入相應服務站名稱,該名稱應與已命名的服務器名稱相一致,然后點擊站點對其進行下一步設置,在設置的過程中,要保持其屬性與命名設定相同。⑤在進入到網(wǎng)絡配置窗口之后插入一個新的鏈接,在該鏈接上掛接PLC(Power Line Communication)或者相應的通信設備。⑥保存前面進行的各種設置,系統(tǒng)會判斷是否正確,如正確則將組態(tài)數(shù)據(jù)下載到PC上,連接成功后系統(tǒng)會提示正確。
圖1 OPC服務器輸入界面
在服務器對象接口中,IOPCServer是OPC Server的主接口,通過它實現(xiàn)OPCServer在操作系統(tǒng)中的安裝和注冊。以下是IOPCServer接口的實現(xiàn)過程:
在OPC Server上建立一個組,對組名(szName)進行檢查,看是否有效或是否已經有這個組。
如果szName(組名)正確并且沒有建立過該組,就可以根據(jù)傳過來的參數(shù)進行組的建立,建立好后將該組加到自己的組列表中以備用,最后將新建組的接口指針返回給客戶端[2]。
服務器作為控制系統(tǒng)的數(shù)據(jù)源,客戶應用程序通過OPC接口訪問OPC服務器,對現(xiàn)場數(shù)據(jù)進行采集、處理[3]。客戶可以根據(jù)需要分別采用自動化定義和自定義接口來完成對客戶端應用程序的開發(fā)。通常VB等解釋型語言可以完成對其自動化訪問的接口設計,進而實現(xiàn)服務器訪問,使用VC++等過程性編程語言可完成對自定義接口的OPC服務器的訪問和控制。
1)VC++編程 用VC++高級語言對OPC客戶端進行程序編寫,關鍵步驟如下[4]:①對包含OPC頭文件設定,包括了數(shù)據(jù)存取接口、數(shù)據(jù)存取2.0頭文件、公用接口定義、公用頭文件等進行設定,標準的文庫在OPC中均有提供。②對COM數(shù)據(jù)庫初始化,即調用相應的函數(shù),如返回值為S-OK即完成,如果需要異步數(shù)據(jù)傳輸,客戶應添加ATL模塊庫輔助。③創(chuàng)建相應的OPC服務器接口,即OPCServer接口,在這個過程之中應該注意保持遠程計算機和本地計算機的操作與服務器操作的一致性。④創(chuàng)建一個OPC組,利用相應的控制對象與接口創(chuàng)建一個系統(tǒng)函數(shù),返回相應的對象接口,通過對象接口完成增加、刪除的工作,同時將控制系統(tǒng)內部的接口與服務器相連接。⑤進行Item設置時,在系統(tǒng)中允許添加多個Item,每個Item的屬性可以使用ItemArray來進行設定,當服務器添加Item或者服務器返回結果時,服務器結果顯示的信息將儲存在相應的變量中;⑥對數(shù)據(jù)項進行讀取和編輯,其處理方式包括同步通信和異步通信。前者較為簡單,可以在數(shù)據(jù)量較小的系統(tǒng)中使用;后者較為復雜,主要應用在數(shù)據(jù)量較大、測控對象復雜的環(huán)境中。
2)VB編程 在編程前應引用OPC自動化的封裝器,該封裝器可以從OPC標準文庫中獲得,也可以采用不同廠家提供的封裝器。利用VB語言進行編程的操作方式與VC++十分相似,主要包括了全局變量、服務器組、數(shù)據(jù)項、瀏覽器等內容。
OPC的客戶服務段不僅只包括OPC服務器訪問接口程序,還可在不同的控制系統(tǒng)中針對事件處理、數(shù)據(jù)處理、定時程序、數(shù)據(jù)輸出等進行接口的設置與編程。
在OPC客戶應用程序開發(fā)過程中,有以下比較重要的部分:①OPC數(shù)據(jù)讀取模塊的設計,設計的內容主要是保持接口與數(shù)據(jù)庫的信息交互,定時對服務器上的實時數(shù)據(jù)進行讀取,同時也可對數(shù)據(jù)庫進行寫入。②OPC數(shù)據(jù)保存模塊的設計,即通過數(shù)據(jù)庫特定的訪問方式對數(shù)據(jù)庫進行操作,采用創(chuàng)建數(shù)據(jù)庫單元形式進行數(shù)據(jù)庫的操作。
利用VB來實現(xiàn)OPC客戶端程序的開發(fā),將程序和數(shù)據(jù)組合成為一個隊形,并且利用每一個對象所賦予的必要屬性使其完成相應的功能。在設計對象的時候不需要編寫建立和描述每個不同對象的程序代碼。
在連接OPC服務器時,用對象的 “Connect”方法調用OPC服務器。在連接遠程服務器的時候,還需要指定遠程計算機名。在VB里,是以對象為單位對OPC服務器進行訪問。OPC自動化接口由以下3種對象定義,即OPC服務器、OPC組(OPC組集合)和OPC標簽(OPC標簽集合)。具體來說,先連接一個特定的OPC服務器,然后建立OPC組,最后添加OPC標簽。考慮到代碼的可反復使用性,采用子程序進行編程:
對服務器進行訪問前,必須先在OPC組里添加要訪問的OPC標簽,具體內容如下:
OPC技術為工業(yè)化計算機測控系統(tǒng)提供了一種便捷、實用的信息交互途徑,利用OPC技術可以對網(wǎng)絡和系統(tǒng)內設備間的數(shù)據(jù)傳輸進行有效的控制和監(jiān)測。隨著計算機網(wǎng)絡技術的不斷拓展,OPC技術將在工業(yè)計算機測控系統(tǒng)中獲得更廣闊的應用空間。
[1]劉暾東,余齊齊,柳小鵬.OPC服務器軟件開發(fā)及在DCS中的應用 [J].化工自動化及儀表,2007,7(1):45-46.
[2]張勇波,馮永壽.在OPC技術支持下的系統(tǒng)管控一體化實現(xiàn)及軟件開發(fā) [J].測控技術,2006,4(8):12-13.
[3]鄧全亮,鄒仁.基于OPC技術的系統(tǒng)集成 [J].計算機應用研究,2008,9(1)156-157.
[4]楊錦園.基于OPC技術的工業(yè)化控制網(wǎng)絡的接口程序設計 [J].工業(yè)儀表與自動化裝置,2007,7(5):23-24.