《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于OPC技术的DCS监控系统设计

基于OPC技术的DCS监控系统设计

2009-06-15
作者:姜 萍1,段新会2,王 锐3

??? 摘 要:在研究OPC技術(shù)規(guī)范的基礎(chǔ)上,利用OPC服務(wù)器快速開發(fā)工具KOSRDK設(shè)計了OPC服務(wù)器程序,采用工控組態(tài)軟件組態(tài)王開發(fā)了OPC客戶端應用程序,設(shè)計構(gòu)建了具有開放接口功能的DCS監(jiān)控系統(tǒng)。
??? 關(guān)鍵詞:OPC;集散控制系統(tǒng);監(jiān)控系統(tǒng);組態(tài)王

?

??? 在工業(yè)控制領(lǐng)域,隨著生產(chǎn)規(guī)模的擴大和系統(tǒng)復雜程度的提高,需要把種類豐富、數(shù)量眾多的軟件與硬件設(shè)備集成于系統(tǒng)之中。過去,為了實現(xiàn)不同生產(chǎn)裝置的集散控制系統(tǒng)DCS(Distributed Control System,)和數(shù)據(jù)采集接口之間的數(shù)據(jù)通信,需要花費很多時間開發(fā)專用的通信接口程序,而OPC標準的出現(xiàn)解決了這一難題。
??? 基于OPC技術(shù)規(guī)范,設(shè)計構(gòu)建了具有開放接口功能的DCS監(jiān)控系統(tǒng)。利用OPC服務(wù)器快速開發(fā)工具KOSRDK在Visual C++ 6.0中設(shè)計了OPC服務(wù)器程序,實現(xiàn)了DCS監(jiān)控級設(shè)備對現(xiàn)場數(shù)據(jù)的實時采集。采用工控組態(tài)軟件組態(tài)王開發(fā)了OPC客戶端應用程序,完成DCS操作員站的監(jiān)控畫面設(shè)計。
1 OPC規(guī)范
??? OPC(OLE(Object Linking and Embedding)for Process Control),是以O(shè)LE/COM/DCOM 機制作為應用程序級的通信標準,采用Client/Server模式,把開發(fā)訪問接口的任務(wù)放在硬件生產(chǎn)廠家或第三方廠家,以O(shè)PC服務(wù)器的形式提供給用戶,解決了軟、硬件廠商的矛盾,提高了系統(tǒng)的開放性和可互操作性[1]。OPC為工業(yè)控制設(shè)備與應用軟件之間建立了統(tǒng)一的數(shù)據(jù)存取規(guī)范,這個接口規(guī)范不但能夠應用于獨立計算機,而且可以支持網(wǎng)絡(luò)上不同應用程序之間的通信,以及不同平臺上應用程序之間的通信[2],具有語言無關(guān)性、代碼重用性、易于集成性等優(yōu)點。OPC規(guī)范了接口函數(shù),不管現(xiàn)場設(shè)備以何種形式存在,客戶都可以統(tǒng)一的方式訪問,從而保證軟件對客戶的透明性,使得用戶完全從低層的開發(fā)中脫離出來[3]。
??? OPC基金會已經(jīng)推出了OPC數(shù)據(jù)訪問、報警與事件、歷史數(shù)據(jù)訪問、批量過程、數(shù)據(jù)交換、安全規(guī)范和XML-DA規(guī)范[4],本文主要應用OPC數(shù)據(jù)訪問規(guī)范進行DCS監(jiān)控系統(tǒng)的設(shè)計。
??? OPC數(shù)據(jù)訪問規(guī)范主要解決服務(wù)器和客戶端之間實時數(shù)據(jù)存取問題。在傳統(tǒng)監(jiān)控系統(tǒng)的基礎(chǔ)上,應用OPC技術(shù)規(guī)范數(shù)據(jù)存取機制,可以實現(xiàn)數(shù)據(jù)共享,提升監(jiān)控系統(tǒng)的開放性和設(shè)備兼容性。當各應用軟件都采用OPC的接口規(guī)范時,它們便可通過OPC接口方便地實現(xiàn)連接,從而增強軟件間的數(shù)據(jù)交換效率。
2 DCS監(jiān)控系統(tǒng)的設(shè)計
2.1 DCS的總體構(gòu)成

??? 面向中小型用戶的需求進行集成開發(fā)的集散控制系統(tǒng)主要由現(xiàn)場控制級和監(jiān)控級構(gòu)成。
??? 現(xiàn)場控制級硬件裝置采用臺灣研華公司MIC-2000系列的機箱、核心控制器和I/O 板卡??刂茩C箱為MIC-2000/11,自帶電源,共有11個插槽,ISA總線為機箱內(nèi)部印刷電路板,把控制器和 I/O 板卡連接在一起。核心控制器采用一體化集成網(wǎng)絡(luò)功能的MIC-2352模塊板,提供了一個小尺寸、全功能、低費用、在有限空間內(nèi)支持網(wǎng)絡(luò)和顯示器的全方位的板上解決方案。本系統(tǒng)中,將嵌入式實時操作系統(tǒng) Windows CE.NET和基于Embedded VC開發(fā)的應用程序固化在一張256MB電子盤上。I/O 板卡主要有模擬量輸入模塊(AI)MIC-2718、模擬量輸出模塊(AO)MIC-2728、數(shù)字量輸入模塊(DI)MIC-2732、數(shù)字量輸出模塊(DO)MIC-2752和符合RS-485總線協(xié)議的遠程采集ADAM4000系列模塊[5]。
??? 為解決傳統(tǒng)系統(tǒng)開放性差和互操作性不強的問題,基于OPC技術(shù)構(gòu)建了監(jiān)控系統(tǒng)。選用高性能PC機,Windows XP操作系統(tǒng),其軟件結(jié)構(gòu)如圖1所示。

?


??? 基于OPC技術(shù)的監(jiān)控系統(tǒng)開發(fā)劃分為3層進行:(1)OPC數(shù)據(jù)源層;(2)OPC服務(wù)器層;(3)OPC客戶層。實現(xiàn)了各廠商間的大量設(shè)備互聯(lián)和過程數(shù)據(jù)共享,構(gòu)成完全意義上的全開放系統(tǒng),解決了產(chǎn)品兼容性問題。
2.2 OPC數(shù)據(jù)源層設(shè)計
??? 數(shù)據(jù)源層的硬件設(shè)備是控制站機柜,通過各種I/O板卡(MIC2000系列)對現(xiàn)場設(shè)備進行連接,作為數(shù)據(jù)源,通信協(xié)議符合TCP/IP標準??刂普緳C柜通過KOSRDK.DLL的接口函數(shù)將數(shù)據(jù)傳到數(shù)據(jù)緩沖區(qū),形成本地列表,并經(jīng)過OPC服務(wù)器的驅(qū)動將數(shù)據(jù)進行傳遞,生成OPC服務(wù)器列表,供客戶層的組態(tài)軟件使用。
2.3 OPC服務(wù)器層設(shè)計
??? OPC服務(wù)器屏蔽了現(xiàn)場數(shù)據(jù)源層的設(shè)備驅(qū)動程序,應用程序開發(fā)人員看到的只是OPC服務(wù)器提供的統(tǒng)一接口,不必關(guān)心現(xiàn)場設(shè)備的驅(qū)動程序。利用OPC服務(wù)器快速開發(fā)工具包KOSRDK進行OPC服務(wù)器的開發(fā)。KOSRDK工具使用面向?qū)ο蟮募夹g(shù),并將OPC規(guī)范所定義的COM接口實現(xiàn)封裝動態(tài)鏈接,定義了Callback基類、Browser基類和Tag基類,這些類中定義了構(gòu)建數(shù)據(jù)路徑、訪問數(shù)據(jù)和提交數(shù)據(jù)的虛函數(shù)接口,開發(fā)者通過類的派生以及重載這些虛函數(shù)對數(shù)據(jù)的訪問和提交進行定制,簡化了OPC服務(wù)器的開發(fā)過程。
??? OPC數(shù)據(jù)訪問規(guī)范規(guī)定OPC服務(wù)器包含3種對象:(1)Server對象;(2)Group對象;(3)Item對象。Server對象包含了OPC Server的相關(guān)信息,可以對Group對象進行添加和刪除,是Group對象的容器。Group對象包含了這個組的相關(guān)信息,并提供邏輯上包含組織Item對象的機制。Item對象與數(shù)據(jù)項關(guān)聯(lián),每個數(shù)據(jù)項須具備Value、Quality和Timestamp 3個屬性[6]。
??? 利用KOSRDK工具開發(fā)了OPC服務(wù)器程序,通過標準接口向客戶層提供數(shù)據(jù)訪問服務(wù)。同時,OPC客戶端通過OPC服務(wù)器對設(shè)備進行驅(qū)動訪問,從而實現(xiàn)了OPC服務(wù)器對上、對下的數(shù)據(jù)傳輸過程。主要實現(xiàn)過程及其相關(guān)的函數(shù)如下:
??? (1)服務(wù)器初始化:調(diào)用KOS_Init( )函數(shù)。
??? (2)設(shè)置CALLBACK回調(diào)函數(shù)。
??? 實現(xiàn)客戶程序和OPC Server DLL之間的數(shù)據(jù)通信,主要調(diào)用如下函數(shù):
??? (1)客戶端寫數(shù)據(jù)ClientWrite Proc
??? 當連接到服務(wù)器的客戶端發(fā)出寫請求時,OPC Server DLL將會調(diào)用此回調(diào)函數(shù),寫數(shù)據(jù)請求的參數(shù)作為該函數(shù)的參數(shù):KOS_SetCIientWriteProc(&ClientWriteProc)。
??? 客戶端的ClientWriteProc定義:
??? Void CALLBACK EXPORT ClientWriteProc(HANDLE Handle,VARIANT*pVar)
??? (2)客戶端關(guān)閉ClientShutdownProc
??? 當連接到服務(wù)器的客戶端從服務(wù)器斷開時,OPC Server DLL將調(diào)用下面函數(shù):
??? KOS-SetClientShutdownProc(&ClientShutdownProc);
??? 客戶端的ClientShutdownProc定義:
??? Void CALLBACK EXPORT ClientShutdownProc(UINT wClientCount)
??? wClientCount為剩余客戶端數(shù)目,為0時表示可以停止掃描、關(guān)閉服務(wù)器。
??? (3)注冊和反注冊
??? OPC服務(wù)器必須在系統(tǒng)中注冊后才能被OPC客戶程序檢索,注冊和反注冊將使用CLSID、服務(wù)器名稱等參數(shù):
??? KOS_Register(CLSID_Svr,m_strSvrName,m_strSvrDesc,strFile);
??? KOS_UnRegister(CLSID_Svr,m_strSvrName);
??? (4)添加OPC項
??? 服務(wù)器的初始化完成后需要添加項OPC Server DLL中,客戶才能檢索和使用OPC項。
??? HANDLE WINAPI KOS_AddItem(Cstring Name,VARIANT Value,WORDInitialQuality,BOOL IsWritable);
??? (5)更新OPC項的值
??? BOOL WINAPI KOS_UpdateItem(HANDLE ItemHandle,VARIANT Value,WORD Quality);
??? (6)關(guān)閉服務(wù)器
??? ① 如果有客戶連接,發(fā)出斷開連接請求。
??? ② 如果用戶使用了new等操作符,釋放所有這些已分配內(nèi)存。
??? ③ 調(diào)用KOS_RemoveItem( )從OPC服務(wù)器中刪除己添加OPC項。
??? ④ 調(diào)用KOS_UnInit()完成OPC服務(wù)器的退出。
??? 編譯運行OPC DA服務(wù)器程序后,進行注冊,在服務(wù)器主界面中可顯示Item的名稱、數(shù)據(jù)類型、數(shù)據(jù)值、時間戳和數(shù)據(jù)質(zhì)量。
2.4 OPC客戶層的設(shè)計
??? 客戶端采用北京亞控自動化軟件科技有限公司開發(fā)的工控組態(tài)軟件——組態(tài)王,訪問由OPC服務(wù)器層提供的數(shù)據(jù)。組態(tài)王支持OPC規(guī)范,并提供強大、高效的組態(tài)功能和網(wǎng)絡(luò)應用??蛻魧邮褂媒M態(tài)王軟件完成DCS監(jiān)控系統(tǒng)的畫面組態(tài)、歸檔、報警、報表等功能,為工廠管理信息系統(tǒng)提供數(shù)據(jù)?,F(xiàn)場操作員和工程師可以方便地在客戶監(jiān)控界面上監(jiān)視生產(chǎn)流程,控制設(shè)備運行和調(diào)整工藝配方等。
??? 采用組態(tài)王做OPC客戶端,實現(xiàn)與OPC服務(wù)器的數(shù)據(jù)鏈接,主要通過3個步驟實現(xiàn):
??? (1)在組態(tài)王中建立OPC服務(wù)器設(shè)備
??? 當組態(tài)王作為OPC客戶端使用時,OPC服務(wù)器就作為組態(tài)王的一個設(shè)備。需要在組態(tài)王工程瀏覽器的“設(shè)備”項目中將“OPC服務(wù)器”加入。
??? (2)在數(shù)據(jù)庫中定義變量
??? 在DCS監(jiān)控系統(tǒng)中通常由數(shù)據(jù)庫來管理大量的數(shù)據(jù),組態(tài)王中數(shù)據(jù)庫變量的集合稱為“數(shù)據(jù)詞典”,為了實現(xiàn)OPC服務(wù)器端與客戶端的數(shù)據(jù)交換,需在組態(tài)王的數(shù)據(jù)字典中定義變量,OPC服務(wù)器作為連接設(shè)備提供數(shù)據(jù)。
??? 在組態(tài)王的數(shù)據(jù)詞典中,選擇I/O類型變量,連接設(shè)備選擇OPC服務(wù)器。寄存器下拉式菜單中列出了在OPC服務(wù)器中定義過的所有項目名及數(shù)據(jù)項,選擇對應的數(shù)據(jù)項和各自的數(shù)據(jù)類型和讀寫屬性后,就將OPC服務(wù)器中的Item加入到了客戶端數(shù)據(jù)詞典中,完成了各變量的連接,如圖2所示。

?


??? (3)OPC服務(wù)器與客戶端的連接測試
??? 完成OPC服務(wù)器程序和客戶端組態(tài)王工程后,先對OPC服務(wù)器進行注冊操作,再進行連接測試,檢驗OPC服務(wù)器是否能把它從設(shè)備端讀到的數(shù)據(jù)正確傳給OPC客戶端;同時檢驗OPC客戶端是否能對設(shè)備操作值進行改寫,是否完成數(shù)據(jù)的雙向傳送。
??? 圖3所示為OPC服務(wù)器與客戶端連接成功的測試實例。客戶端的“主汽溫度”和“閥門開度”,對應服務(wù)器的Item項是“a.a.f”和“a.a.c”?!爸髌麥囟取笔怯煞?wù)器傳給客戶端的現(xiàn)場實時采集數(shù)據(jù),“閥門開度”是客戶端發(fā)送給服務(wù)器的操作員指令??梢?,OPC服務(wù)器中Item的時間戳(Timestamp)同客戶端的顯示時間一致,品質(zhì)(Quality)為“OPC_QUALITY_GOOD”,Item的值(Value)與客戶端監(jiān)控畫面顯示一致,由此實現(xiàn)了數(shù)據(jù)的雙向傳送。

?


??? OPC技術(shù)規(guī)范是新興的工業(yè)控制領(lǐng)域標準,把硬件供應商和應用軟件開發(fā)者分離開,使得雙方的工作效率都有了很大提高。OPC標準的制訂,使所有的通信連接問題變得簡單,對開發(fā)DCS全開放性的監(jiān)控系統(tǒng)起到了重要作用,實現(xiàn)了各廠商之間的大量設(shè)備互聯(lián)和過程數(shù)據(jù)共享,解決了產(chǎn)品兼容性問題。本文遵循OPC標準,利用KOSRDK工具包和組態(tài)王軟件,構(gòu)建了DCS監(jiān)控系統(tǒng),實現(xiàn)方法效率高,周期短。
參考文獻
[1] 何楊歡. OPC技術(shù)在DCS數(shù)據(jù)采集系統(tǒng)中的應用[J]. 化工進展,2006,25(12):1496-1498.
[2] 胡海江,金朝暉,楊新照,等. 基于OPC技術(shù)的FF總線遠程監(jiān)控[J]. 微計算機信息,2006(1-1) :4-5.
[3] 李京,宋真君.工控軟件互操作規(guī)范OPC技術(shù)講座:第一講[J]. 自動化儀表,2002,4(23):68-70.
[4] 周江建,周運森.中間件OPC技術(shù)在工業(yè)控制系統(tǒng)中的應用.計算機工程,2004(12): 43-45.
[5] 姜萍.基于Windows CE.NET 4.2的分散控制系統(tǒng)開發(fā)[J].微電子計算機,2007,24(6):218-235.
[6] 張勝. 如何用Knight OPC server rapid development kit實現(xiàn)OPC數(shù)據(jù)訪問服務(wù)器[J]. 國外建材科技,2006,27(2):218-235.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容