999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Qt平臺的OPC服務器的開發及仿真應用

2017-12-15 00:53:14
計算機測量與控制 2017年11期

, ,

(華北電力大學 控制與計算機工程學院,河北 保定 071003)

基于Qt平臺的OPC服務器的開發及仿真應用

黎邦騰,梁薇,馬平

(華北電力大學控制與計算機工程學院,河北保定071003)

OPC(OLE for Process Control)技術自1996年被提出,就迅速在自動化領域得到了廣泛的應用;它為工業控制軟件與硬件之間的交互定義了一個標準的接口,使得工業軟件及硬件之間的通訊變得非常便利;針對這個特點,提出了一種將OPC服務器作為“中轉站”的仿真方案,即兩個或多個支持OPC客戶端功能的應用程序將OPC服務器作為“中轉站”,實現程序間的相互訪問與控制;采用OPC開發工具包方式開發OPC服務器,并且在Qt平臺實現;這摒棄了傳統的基于MFC平臺開發模式,充分利用了Qt在界面設計上的優勢;最后利用Matlab建立了兩個Simulink工程作為OPC客戶端進行仿真測試,實現了兩個客戶端之間通過“中轉站”完成信息交互;測試結果控制效果與預期一致,驗證了本方案的可行性。

OPC服務器;OPC開發工具包;Qt平臺;仿真測試;OPC客戶端

0 引言

隨著計算機技術和自動機技術的迅猛發展,越來越多的智能設備應用到了工業現場中,給我們提供了更多的現場信息。但是,在這種需求下,一個控制系統可能包含幾十種或者更多的來自不同廠商的智能設備,這些設備遵循各自通訊規范,只能與特定的應用軟件通訊,使得計算機內部應用程序與現場設備之間進行信息溝通和傳遞變得非常困難[1-2]。正是在這種背景下,一個工業標準 OPC技術規范被制定了出來[3]。OPC技術在應用程序與設備之間建立起了一道橋梁,使得各工控軟件之間的信息交互非常方便,極大的提高了系統的互操作性和適應性。本文提出了一種將OPC服務器作為“中轉站”的仿真方案,即通過OPC技術實現不同應用程序之間的相互訪問與相互控制。因此,該文首先介紹了一種在OPC開發工具包WTOPCSvr.DLL的基礎上開發OPC服務器軟件的方法。

傳統上的OPC服務器或者客戶端主要基于MFC實現。MFC執行代碼效率高,并且目前技術也比較成熟,但是它固有的架構使得MFC去實現一個相對美觀靈活的用戶界面就會變得很繁瑣。因此,該軟件采用Qt實現,摒棄了傳統的MFC平臺開發模式,充分的利用了Qt在界面開發上的優勢。最后,利用matlab建立了兩個simulink工程作為OPC客戶端進行仿真測試,驗證了利用OPC服務器作為中轉站,實現不同應用程序之間相互訪問和控制這個方案的可行性。

1 OPC技術

1.1 OPC技術概念及優勢

OPC是一個工業標準,它采C/S模式,即OPC服務器與硬件通訊由廠商負責,工業軟件通過OPC客戶端與OPC服務器建立連接,而不再與設備直接通訊,把軟、硬件開發徹底分開。這樣,一方面硬件開發商僅僅需要將硬件設備驅動程序和通信程序封裝成獨立的OPC服務器,當硬件升級時只需要更新對應的驅動程序,而不會對OPC接口產生任何影響。另一方面應用程序軟件開發商不必關心設備與OPC服務器如何通信及通訊接口之間的兼容性問題,他們只需要遵循OPC數據協議,開發相應OPC客戶端就能從OPC服務器獲取相應的數據[4]。圖1所示為采用OPC技術之后工業控制軟件與硬件設備之間的通訊框架示意圖。

圖1 工業控制軟件與硬件設備之間的通訊框架

1.2 OPC技術規范

為了滿足多種系統和設備之間的通信需求,OPC定義了一系列規范,如OPC數據存取(data access)規范、OPC報警與事件(alarm and event)規范和OPC歷史數據存取(historical data access)規范等。不同類型的服務器和客戶端程序對應不同的規范,本文主要介紹OPC數據存儲規范和數據存取服務器的開發[5]。

OPC數據存取規范是OPC基金會針對現場設備的在線數據存取制定的一個工業標準,它主要定義了OPC DA Sever (數據存取服務器)。OPC DA Server主要由3個對象組成:服務器對象(server object)、組對象(group object)和項對象(item object)[6]。圖2所示為OPC DA Server的組成模型。

圖2 OPC DA Server的組成模型

如圖2所示,OPC服務器對象管理服務器的所有組信息,它是OPC組對象的包容器,能夠完成組對象的添加和釋放。在一個OPC服務器對象中,允許包含一個或者多個OPC組對象。OPC組對象管理本組的所有信息,并提供了組織和管理項的機制,從邏輯上實現對OPC 項對象的管理。OPC組包含Name(組的名字),Active(組的激活狀態標志),Update Rate(刷新速率)和Percent Deadband (數據死區)。客戶端程序可以設置組對象的死區、刷新頻率和需要組織的項。OPC項對象表示了OPC服務器到數據源的連接,它是讀寫數據的最小邏輯單位,它包括了值、品質、時間戳3個基本屬性。其中,數據值以 Variant 形式表示,品質代表了數值的可信度,時間戳則代表了數據的存取時間[2]。OPC項對象不能直接被訪問,所有對OPC項的操作都需要通過該項隸屬的組來完成。

1.3 OPC服務器開發的幾種方法

目前,OPC服務器開發主要有通過MFC提供的COM支持開發OPC服務器、通過ATL開發OPC服務器和通過開發工具開發OPC服務器3種方式。

MFC采用面向對象的方式將COM的基本功能封裝在若干的C++類中,能夠深入的掌握 COM 內部技術細節等特點。但是要從底層開始編寫代碼,工作量大,工程也非常復雜。ATL 同樣需要對 COM 機制有非常深入的理解。因此,不管MFC還是ATL,都會使得整個開發過程變得異常困難,不易實現。本文采用的是第三種方法,通過工具開發OPC服務器。它大大簡化了OPC服務器的開發過程,縮短開發周期,開發人員不用了解COM知識和OPC規范,僅僅需要調用相應的API函數就能完成OPC服務器的開發[7]。

2 OPC服務器軟件設計

2.1 軟件實現平臺

軟件基于VS2010+Qt平臺實現,摒棄了傳統的MFC開發模式,充分發揮了Qt在界面設計上的優勢。Qt是一個跨平臺C++圖形用戶界面應用程序開發框架,建立了信號(SIGNAL)和槽(SLOT)機制。利用SIGNAL可以實現任意參數的傳遞,這與MFC中紛繁蕪雜的消息相比,Qt對事件的處理更加的自由靈活。在界面處理上,Qt完全從MFC的各種條條框框束縛解放出來,可以靈活地使用視圖和組織控件。

2.2 OPC服務器軟件框架

軟件是在WTOPCSvr.DLL工具包的基礎上完成的,WTOPCSvr.DLL是以DLL形式提供的一個OPC服務器快速開發工具。WTOPCSvr.DLL將COM和OPC處理的所有細節封裝起來,用戶不用去關心底層接口的實現,僅僅通過調用幾個API函數就能快速地開發出自己的OPC服務器[8]。基于這個平臺,使得整個OPC開發過程就變得非常簡單。整個OPC服務器的系統框架如圖3所示。

圖3 OPC服務器開發系統框架

因為該軟件側重點是建立一個“中轉站”,實現兩個OPC客戶端之間的通信。因此,并不需要考慮服務器對象接口與設備驅動部分,所有數據的交換都是兩個客戶端之間發起的。當OPC服務器起來完成初始化后,用戶就可以創建相應的標簽,不同的OPC客戶端通過訪問該服務器,就可以實現兩個客戶端之間的信息交互。

2.3 OPC服務器軟件實現

2.3.1 OPC服務器核心功能實現

OPC服務器的開發主要有以下主要步驟:

1) 調用UpdateRegistry注冊OPC服務器。

該函數的原型是:BOOL WINAPI UpdateRegistry (BYTE *pCLSID_Svr, LPCSTR Name, LPCSTR Descr, LPCSTR ExePath),其中參數pCLSID_Svr是服務器的類標識,這是唯一的。參數Name指定了服務器的名稱。參數Descr是對服務器的描述,而參數ExePath則定義了可執行程序的完整路徑。

2)調用InitWTOPCsvr完成開發包初始化。

該函數原型:BOOL WINAPI InitWTOPCsvr (BYTE *pCLSID_Svr, UINT ServerRate),其中參數pCLSID_Svr含義同上,參數ServerRate定義了客戶的數據刷新速率,單位是毫秒。該函數實現了對DCOM的初始化和OPC服務器對象的創建。

3)注冊回調函數。

WTOPCSvr.DLL為用戶提供了很多回調函數,方便服務器與客戶端之間的事件處理。當特定的事件或者調解發生時,服務器及時響應客戶端的操作,這是非常方便的。以函數EnableWriteNotification為例。

該函數原型: BOOL WINAPI EnableWriteNotification (WRITENOTIFYPROC lpCallback, BOOL ConvertToNativeType)。這個函數定義了當OPC客戶端些一個已定義的標簽時,函數會產生一個來自DLL的調用返回。展開類型WRITENOTIFYPROC的定義:typedef VOID (CALLBACK* WRITENOTIFYPROC)(HANDLE, VARIANT*, DWORD*)。它實際定義了一個函數指針,用戶調用EnableWriteNotification函數傳入對應函數的指針,當客戶端修改標簽時,會立即響應該函數,服務器可以對事件進行處理。

4)創建標簽和移除標簽。

完成相應的準備工作后,就可以調用CreateTag函數創建標簽了。

該函數原型:HANDLE WINAPI CreateTag (LPCSTR Name, VARIANT Value, WORD InitialQuality, BOOL IsWritable)。其中參數Name指定了創建的點名,它可以是任何文本字符串,也可以使用分層名字,中間用“.”分隔,如group.item。前者屬于扁平結構,后者屬于多層結構。參數Value定義了標簽的初始值,參數InitialQuality則定義了標簽的屬性,參數IsWritable指定了標簽是否可寫。標簽一旦被創建,它就能夠在任何一個客戶端中參數列表中被檢索到。

與CreateTag相對應的就有RemoveTag函數,它用于標簽的移除。其函數原型:BOOL WINAPI RemoveTag (HANDLE TagHandle),參數TagHandle是一個句柄,即調用CreateTag創建標簽時返回的句柄。值得注意的是,標簽被移除后,該標簽就不能夠在客戶端的參數列表中檢索到了,但是已連接的這個標簽仍然有效,只不過沒有新的數據來刷新該標簽了。對于標簽操作比較重要的API函數還有UpdateTag、UpdateTag-WithTimeStamp等,這里就不再一一介紹。

5)注銷及關閉服務器。

服務器注銷需要調用輔助函數NumbrClientConnections獲得當前連接到服務器的客戶數,在有客戶端連接的情況下,服務器應該不允許被注銷。只有在服務器需要關閉時,程序才會調用RequestDisconnect函數請求所有客戶端斷開連接。最終服務器調用函數UnregisterServer 完成注銷。該函數原型:BOOL WINAPI UnregisterServer (BYTE *pCLSID_Svr, LPCSTR Name),其中參數pCLSID_Svr、Name均與UpdateRegistry函數中的pCLSID_Svr、Name一致。在關閉服務器時還需要調用UninitWTOPCsvr函數,完成資源的釋放。

2.3.2 OPC服務器界面實現

OPC服務器界采用Qt實現。Qt引入了模型/視圖框架完成數據與表現的分離,這來源與經典的MVC三層結構。M即模型(Model),表示數據;V即視圖(View),表示用戶界面;C即控制(Controller),定義了用戶在界面上的操作。通過使用MVC模式,有效地分離了數據和用戶界面,使得設計更加的靈活。而在Qt中,應該叫“MVD”模式了。在Qt中沒有Controller的說法,而是使用了代理(delegate)概念。通過使用代理,能夠自定義數據條目的顯示和編輯方式。其結構如圖4所示[9]。

圖4 “MVD”模式結構

這種模式使得用戶對數據的處理變得非常方便。用戶可以自己定義模型,對數據進行靈活的處理,當底層數據源發生改變,只需要處理Model就可以了。

該軟件界面正是基于此種模式完成。用戶進行添加、修改、刪除對應標簽后,程序通知Model數據發生變化,從而迅速更新內部數據存儲,然后發出信號通知View數據改變。在模型中的條目有不同的角色,這樣可以在不同的情況下提供不同的數據。該軟件中視圖中行顏色交替的變化正是修改了Qt::BackgroundRole角色。如圖5所示是該軟件的最終顯示界面。

圖5 軟件界面

圖6 PID控制組

圖7 控制對象組

程序首先使用QLocalSocket了保證在一臺機器上只允許運行一個實例。然后啟動定時器,實時刷新數據列表,更新當前客戶端的連接狀態。最后通過API注冊了相應的回調函數,積極響應客戶端的操作,及時更新服務器界面狀態。當用戶操作或者客戶端的操作引起數據變化時,Model會立即通知View更新視圖狀態。

基于此界面,用戶能夠實現服務器注冊、服務器注銷、添加參數、修改參數和刪除參數等功能,非常便利。

3 OPC服務器軟件仿真應用

為了驗證本OPC服務器的功能,我們選取了某300 MW熱電機組主汽溫控制系統進行測試[9]。系統導前氣溫控制對象為:

主汽溫控制對象為:

采用串級控制系統,主、副控制器均使用PI控制。分別取δ1=1.51,Ti=202,δ2=0.55,Ti=48.6,利用simulink搭建仿真平臺如圖6、圖7所示。

其中圖6為PID控制組,圖7為控制對象組,PID控制器與控制對象的交互通過OPC服務器完成。整個測試步驟如下:

1)啟動OPC服務器,分別添加浮點型標簽Group0.e1,Group0.e2,Group0.u1和Group0.u2作為兩個PID控制器的輸入輸出。

2)在PID控制器組添加OPC讀寫模塊,并且分別設定PID控制器1的輸入讀取的是標簽Group0.e1的值,輸出寫入到標簽Group0.u1中;PID控制器2的輸入讀取的是標簽Group0.e2的值,輸出寫入到標簽Group0.u2中。同時設定兩個OPC讀取模塊的采樣時間和simulink仿真步距均為3 s,保證仿真的實時性。

3)同理,往控制對象組添加OPC讀寫模塊,并與對應的標簽綁定。

4)設定仿真時間為1 500 s,運行仿真程序。

如圖8所示可以看到,當前OPC服務器狀態欄顯示有2個客戶端連接,即PID控制器組和控制對象組,消息對話框準確地打印我們的操作記錄。

圖8 服務器界面

等待1 500 s,程序運行結束,最終仿真結果如圖9所示。

圖9 仿真結果

可以看到,在PID控制作用下,導前氣溫與主汽溫在1 100 s左右趨于穩定,主汽溫達到了期望值。這與實際情形相符,驗證了本方案的可行性。

4 結束語

OPC技術為設備集成提供了一個新的解決方案,它把硬件供應商和應用軟件開發者分離開了,大大簡化了設備之間的復雜通訊過程。本文簡單介紹了OPC技術,詳細的分析了基于WTOPCSvr.DLL 工具包開發OPC服務器的過程,并結合Qt在界面設計上的優勢,開發了一款用戶界面友好的OPC服務器,提出了一個將OPC服務器作為中轉站,實現OPC客戶端之間的通訊方案。本文最后給出了該OPC服務器在仿真上的應用,驗證了方案的可行性。同樣,在完成相應的COM配置后,利用OPC的遠程訪問功能,就可以實現兩臺計算機中任意支持OPC客戶端服務的應用軟件之間的相互通訊。接下來,為OPC服務器完善更多的功能,如實現歷史數據查詢,歷史或實時曲線查看及支持參數越限報警等諸多功能將是下一步研究的方向。相信隨著OPC 技術的推廣和應用, OPC技術必將會被應用到更加廣泛的領域。

[1] 朱耀春, 陸會明, 張永慶. OPC數據服務器的開發與測試[J]. 現代電力, 2003, 20(6): 63-66.

[2] 鄒云濤, 吳重光. OPC技術初探及國內應用現狀[J]. 石油化工自動化, 2003(6): 1-5.

[3] 戚中奎, 林果園, 孫統風. OPC數據訪問服務器的研究與實現[J]. 計算機工程與設計, 2011, 32(4): 1517-1520.

[4] 紀強君, 唐秀昆, 曹長修. 基于Visual C++的OPC客戶端實現[J]. 計算機應用, 2007, 26(4): 70-73.

[5] 凌志浩, 陳偉彬, 馬 欣,等. 基于OPC數據存取規范的服務器研究與實現[J]. 華東理工大學學報, 2004, 30(3): 318-321.

[6] 張慶軍. OPC及OPC服務器的設計與實現[A]. 智能檢測控制技術及儀表裝置發展研討會論文集[C]. 上海: 上海自動化儀表股份有限公司技術中心, 2007.

[7] 王 平, 李大慶, 王 颋. OPC服務器開發工具包軟件的設計與實現[J]. 計算機工程, 2009, 35(22): 275-277.

[8] 陳丹丹, 錢 美, 夏 立, 等. OPC服務器開發的幾種方法[J]. 微計算機信息, 2006,22(6): 28-29.

[9] 蔡志明, 盧傳富, 李立夏,等. 精通Qt 4編程[M]. 北京:電子工業出版社, 2008.

[10] 韓 璞, 董 澤, 王東風,等.智能控制理論與應用[M]. 北京:中國電力出版社, 2012.

[11] 劉暾東, 余齊齊, 柳小鵬. OPC服務器軟件開發及在DCS中的應用[J]. 化工自動化及儀表, 2007, 34(1): 46-48.

[12] 喬加新. OPC客戶端與OPC服務器的交互方式的研究[J]. 信息技術, 2005(8): 122-124.

[13] 張 河, 魯五一. OPC客戶端與實時數據庫通信的實現[J]. 計算機工程與科學, 2008, 30(5): 81-83.

[14] 王 杰, 高昆侖, 朱曉東. OPC通訊技術在可視化界面監控系統中的應用研究[J]. 計算機測量與控制, 2012, 20(1): 74-77.

[15] 李安伏, 崔亞量.基于OPC的Matlab與組態王的數據通信[J]. 電力自動化設備, 2007, 27(7): 113-115.

[16] 胡開明, 傅志堅, 葛遠香. 基于OPC與組態技術的自動控制實驗教學仿真平臺開發[J]. 實驗技術與管理, 2013, 30(6): 50-53.

[17] 李二超, 李 煒, 李戰明,等. 基于OPC技術的網絡控制系統仿真平臺設計[J]. 實驗技術與管理, 2012, 29(6): 90-93.

DevelopmentandSimulationApplicationofOPCServerBasedonQtPlatform

Li Bangteng, Liang Wei, Ma Ping

(School of Control and Computer Engineering, North China Electric Power University, Baoding 071003,China)

OPC(OLE for Process Control) technology has been widely used in the field of automation since it was put forward in 1996. It defines a standard interface for the interaction between industrial control software and hardware, which makes the communication very convenient. For this feature, a scheme of OPC server as “transfer station” is proposed, that is, two or more applications that support OPC client functionality consider the OPC server as a “transfer station” to implement mutual access and control between programs. The development of OPC server uses the way of OPC development toolkit, and it is implemented on Qt platform. It makes full use of the advantages of Qt in the interface design, abandoning the traditional MFC platform development mode. Finally, in order to demonstrate the function of two clients completing the information interaction through the “transfer station”, we use matlab to build a two simulink project as an OPC client for simulation testing. The test results are consistent with the expected results, which verify the feasibility of the program.

OPC servers; OPC development kit; Qt platform; simulation testing; OPC client

2017-04-18;

2017-05-23。

黎邦騰(1991-),男,湖南郴州人,碩士研究生,主要計算機應用方向的研究。

馬 平(1961-),女,湖南長沙人,教授,碩士研究生導師,主要從事計算機原理及應用方向的研究。

1671-4598(2017)11-0154-05

10.16526/j.cnki.11-4762/tp.2017.11.039

TP311

A

主站蜘蛛池模板: 久久天天躁夜夜躁狠狠| 中文字幕在线观| 亚洲成年人片| 亚洲三级a| 国产午夜福利在线小视频| 中文字幕亚洲无线码一区女同| 五月婷婷中文字幕| 久久毛片网| 亚洲一级色| 国产精品原创不卡在线| 在线观看91精品国产剧情免费| 黄色污网站在线观看| 手机在线免费不卡一区二| 欧美黄网在线| 亚洲第一区在线| 国产特级毛片aaaaaaa高清| 亚洲天堂久久| 好吊妞欧美视频免费| 国产97公开成人免费视频| 午夜少妇精品视频小电影| 国产欧美又粗又猛又爽老| 日本免费福利视频| 少妇高潮惨叫久久久久久| 日本五区在线不卡精品| 1024国产在线| 免费99精品国产自在现线| 青青操国产视频| 欧美一区二区啪啪| 伊人蕉久影院| 亚洲人成影院午夜网站| 在线欧美一区| 啪啪永久免费av| 麻豆精品国产自产在线| 欧美伊人色综合久久天天| 欧美日韩专区| 中文字幕亚洲无线码一区女同| 久久无码av一区二区三区| 久久狠狠色噜噜狠狠狠狠97视色| 青青草原偷拍视频| 久久这里只精品国产99热8| 国产精品久久久久久久久kt| 黄色网站在线观看无码| 亚洲第一成年网| 日韩精品高清自在线| 免费午夜无码18禁无码影院| 91高清在线视频| 中文字幕在线欧美| 99久久99这里只有免费的精品| 视频在线观看一区二区| 国产精品分类视频分类一区| 欧美自慰一级看片免费| 浮力影院国产第一页| 久操线在视频在线观看| 精品国产自| 东京热高清无码精品| 综合色婷婷| yjizz视频最新网站在线| 中文字幕欧美日韩| 色婷婷亚洲综合五月| 国产www网站| 久青草免费视频| 久久国产热| 亚洲aaa视频| 色香蕉网站| 国产呦精品一区二区三区下载| 中文字幕在线日韩91| 亚洲aⅴ天堂| 亚洲午夜久久久精品电影院| 国产va在线观看| 久久精品午夜视频| 色首页AV在线| 亚洲综合经典在线一区二区| 热久久这里是精品6免费观看| 欧美亚洲欧美区| 2020极品精品国产 | 亚洲人成色77777在线观看| 国内99精品激情视频精品| 国产精品页| 亚洲综合九九| 国产成人精品男人的天堂下载| 91在线一9|永久视频在线| 亚洲成在线观看|