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