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

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

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

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

?

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

??? 面向中小型用戶的需求進行集成開發(fā)的集散控制系統(tǒng)主要由現(xiàn)場控制級和監(jiān)控級構成。
??? 現(xiàn)場控制級硬件裝置采用臺灣研華公司MIC-2000系列的機箱、核心控制器和I/O 板卡??刂茩C箱為MIC-2000/11,自帶電源,共有11個插槽,ISA總線為機箱內部印刷電路板,把控制器和 I/O 板卡連接在一起。核心控制器采用一體化集成網(wǎng)絡功能的MIC-2352模塊板,提供了一個小尺寸、全功能、低費用、在有限空間內支持網(wǎng)絡和顯示器的全方位的板上解決方案。本系統(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技術構建了監(jiān)控系統(tǒng)。選用高性能PC機,Windows XP操作系統(tǒng),其軟件結構如圖1所示。

?


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

?


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

?


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

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