www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]OPC簡介及OPC DA 服務器的設計與實現(xiàn)

  0 引言

  OPC 全稱OLE for Process CONtrol,它是由OPC 基金會制定的自動化領域過程控制標準。

  實際上,OPC 代表一系列的標準,包括OPC 數(shù)據(jù)訪問(OPC Data AccESS),OPC 報警與事件(Alarms & Events ),歷史數(shù)據(jù)訪問(OPC Historical Data Access),OPC XML-DA(1.0)等。目前,OPC 標準在現(xiàn)代工業(yè)控制領域,特別是在數(shù)據(jù)采集和軟實時控制方面已有很好的應用。

  1 OPC 標準介紹

  在 OPC 標準制定之前,工業(yè)軟件制造商需要為不同的硬件開發(fā)各自獨立的驅動接口。對于開發(fā)典型監(jiān)控程序軟件的技術人員來說,約有20%-30%的時間是用于編寫通訊驅動程序。當供應商提供一個新的硬件時,應用軟件研發(fā)人員就不得不重新編寫一個新的程序。
  而OPC 標準的出現(xiàn)為此解決該問題提供了一個方案,它制定了一系列的數(shù)據(jù)存取,事件,報警等規(guī)范,使得當有新的硬件出現(xiàn)時,供應商只需提供實現(xiàn)的OPC 標準接口,而上層應用軟件則不需重新改寫。這樣,在系統(tǒng)與設備之間,車間現(xiàn)場與信息管理之間,甚至更遠的距離上,都可以通過OPC 標準實現(xiàn)無縫通訊,而不必擔心設備升級帶來的不便和額外費用。

  OPC 為不同的應用制定了不同的標準,OPC DA 是針對現(xiàn)場數(shù)據(jù)進行存取的接口規(guī)范,該標準基于OLE / COM / DCOM / COM+技術,采用Client / Server 模式。數(shù)據(jù)通過特定的采集卡或串口等,從現(xiàn)場設備中獲得,然后OPC DA 服務器將這些從數(shù)據(jù)源采集到的數(shù)據(jù),以OPC 標準接口形式提供給外部應用程序,例如工控軟件,實時數(shù)據(jù)庫等。OPC 服務器可以通過本地或遠程服務服務器兩種方式,為依照OPC 標準實現(xiàn)的客戶端提供服務。

  2 OPC DA 服務器的設計

  本文通過使用 VC++編程實現(xiàn)的一個OPC DA 服務器框架,來介紹OPC DA 服務器設計中需要解決的主要問題。在OPC 服務器的設計中,引入適配器模式,通過適配層將數(shù)據(jù)訪問同具體的數(shù)據(jù)源操作相分離,以便針對不同的數(shù)據(jù)來源時,進行快速的二次開發(fā)。實現(xiàn) OPC DA 服務器,需要依照OPC 基金會提供的OPC DA 標準,將從數(shù)據(jù)源中采集數(shù)據(jù),以標準規(guī)定的接口形式提供給外部。其中,OPC 規(guī)范為OPC 服務器規(guī)定了兩套接口方式:定制接口(Custom interface)和自動化接口(AutomATIon Interface)。其中,前者是OPC 服務器必須實現(xiàn)的接口,后者則是為方便VB 等腳本語言而提供,可以選擇性實現(xiàn)。

  2.1 OPC DA 服務器中的對象

  根據(jù) OPC 標準,在OPC DA 服務器中,主要包含三個層次的對象:服務器對象(Server),組對象(Group)和數(shù)據(jù)項(Item)。其中,服務器對象與組對象是一對多的關系,一個Server 對象可以包含0 到多個Group 對象,而一個組對象中可以包含0 到多個數(shù)據(jù)項。OPC DA 標準對Server 和Group 對象需要實現(xiàn)的接口,進行了詳細的規(guī)定說明。

  在 OPC DA 標準中,客戶端對服務器的數(shù)據(jù)存取是以Group 為單位的,每次將需要存取的數(shù)據(jù)項item 加入一個Group,然后對該Group 進行整體讀寫操作。Group 對象通過標準定義的IOPCDataMgt 接口,對Item 進行添加,刪除等相關的管理;而Server 對象則通過IOPCServer 接口對Group 對象進行添加,刪除等管理。

  2.2 OPC DA 服務器的結構

  開發(fā)一個 OPC DA 服務器需要注意以下問題:服務器的運行方式,各個接口與對象的相互關系,內部數(shù)據(jù)的組織形式,對外部數(shù)據(jù)源的訪問等。在本實例中,OPC 數(shù)據(jù)存取服務器的框架結構如下圖所示

  


 

  圖 1 OPC 服務器的結構[!--empirenews.page--]
接口與對象:在各層次對象與接口的關系處理中,可以采用兩種方法:多繼承的方式,將Server/Group 對象繼承自每個標準規(guī)定的接口;或者采用聚合的方式,Server/Group 對象包含接口對象。本例采用的是第二種方式,該方式可以將使接口的編寫相對獨立,以方便測試,并且有利于自動化接口的可選擇實現(xiàn)。

  服務器使用 VC++編程,包含以下幾個主要的類:

  COPCServer:Server 對象的類,管理IOPCCommon,IOPCServer,IConnectionContainer等接口;

  COPCGroup:Group 對象的類,管理IOPCItemMgt,IOPCGroupStateMgt,IOPCSyncIO,IOPCAsyncIO,IConnectionContainer 等接口;

  其他接口類:每個接口還對應一個實現(xiàn)類(如:CIOPCItemMgtImp 是IOPCItemMgt 的具體實現(xiàn)),該類完成OPC 標準規(guī)定的對應接口的功能函數(shù),類的實例化對象將以聚合的方式接受Server 或Group 對象的管理;

  數(shù)據(jù)緩存區(qū)的構造:在 OPC 服務器中,Cache 是重要的部分,存儲結構將直接影響數(shù)據(jù)訪問的速度,它負責將從設備中讀取的數(shù)據(jù)先存放在數(shù)據(jù)緩存區(qū),供同步或異步讀取。緩存區(qū)內存可以采用連續(xù)存儲,鏈式存儲和哈希存儲。其中,考慮到存取速度和方便管理,該服務器選擇采用連續(xù)存儲的方式。該方式可以隨機存取數(shù)據(jù),但存取數(shù)據(jù)的數(shù)量不宜過大,如果需要存取較大數(shù)量的數(shù)據(jù)項,則推薦采用哈希存儲方式。對于每個數(shù)據(jù)項,都包含有三個基本屬性:數(shù)值(Value),時間戳(Time Stamp)和數(shù)據(jù)品質(Quality)。從數(shù)據(jù)源中訪問到的數(shù)據(jù)項將按照線性方式存儲到連續(xù)的內存區(qū)域中;每次對緩存區(qū)的訪問都需要進行加鎖,以防止出現(xiàn)同時進行讀操作和寫操作。

  2.3 輪詢方式對數(shù)據(jù)源進行訪問:

  由于服務器是單獨不斷從數(shù)據(jù)源讀取數(shù)據(jù),因此可以采用單獨的線程,按時間輪詢的方式,每隔一段時間對數(shù)據(jù)源進行訪問,這個時間也就成為服務器支持的最短數(shù)據(jù)訪問時間。服務器的主要工作流程:

  (1) 每隔一段時間進行輪詢操作;

  (2) 如果掃描時間到,訪問數(shù)據(jù)源;否則,至(3);如果有訂閱請求,回調訂閱函數(shù);

  (3) 如果有刷新請求,回調刷新函數(shù);如果有異步讀數(shù)據(jù)請求,讀取數(shù)據(jù)并回調異步讀函數(shù);如果有異步寫請求,將數(shù)據(jù)寫入外部設備;

  (4) 返回(1);

  服務器中該循環(huán)的主要功能,主要用來進行異步數(shù)據(jù)存取,訂閱及刷新。而對于同步訪問等操作,由于需要服務器立即存取數(shù)據(jù)然后返回結果,因此其實現(xiàn)并不在該主循環(huán)中,而是針對其接口單獨編寫一個類,用來實現(xiàn)同步存取接口函數(shù)的功能。

  2.4 OPC DA 的數(shù)據(jù)訪問方式

  OPC DA 對數(shù)據(jù)的訪問主要分為以下幾種:同步讀,異步讀,訂閱和數(shù)據(jù)刷新;對數(shù)據(jù)源的操作又可以分為直接從設備讀取和從Cache 中讀取。這兩者的組合構成了對數(shù)據(jù)源的訪問規(guī)則,OPC 標準對訪問規(guī)則進行了詳細的描述。在這幾種數(shù)據(jù)訪問中,同步讀接口可以實現(xiàn)少量,快速的數(shù)據(jù)讀取,異步讀則是提交一個請求,然后返回,等服務器完成數(shù)據(jù)讀取后回調函數(shù)。與同步讀相比,異步讀更能提高OPC Client 的使用效率,防止OPC 服務器尚未訪問到數(shù)據(jù)時,造成客戶端的等待。訂閱異步讀大致相同,每當訪問數(shù)據(jù)源后自動將數(shù)據(jù)提交給客戶端。

  

 

  圖 2 OPC 服務器中采用的可連接對象結構模型

  在 OPC DA2.0 和OPC DA3.0 中的異步通訊機制中,使用到了連接點容器/連接點接口[1],取代了原來OPC DA1.0 中的直接注冊/回調的模式。能夠更靈活的支持多個連接點和連接。在可連接對象模式中,每個可連接對象可以包含多個連接點,每個連接點支持一種回調接口;每個連接點上可以連接多個客戶端;回調接口由客戶端實現(xiàn),可連接對象通過回調函數(shù)于客戶端進行交互。

  在 OPC DA 服務器中,可連接對象包括Server 對象和Group 對象兩種,Server 對象只支持一個IOPCShutdown 回調接口,而異步數(shù)據(jù)交換等重要的功能位于Group 對象中。在OPC 組對象中,包含一個連接點對象,該對象支持IOPCDataCallback 回調接口,連接點可以連接多個客戶端,當異步訪問完成時,服務器同過可連接對象通過調用標準規(guī)定的回調函數(shù),通知每個已經(jīng)注冊的客戶端。

  2.5 基于適配器模式的數(shù)據(jù)采集

  OPC DA 服務器的最重要功能,就是從外部設備讀取數(shù)據(jù)。由于數(shù)據(jù)源的多樣性,可以是磁盤映射的數(shù)據(jù)文件,串口或者是專門的數(shù)據(jù)采集卡。為了設計一個通用的架構,便于以后升級或訪問其他不同類型的數(shù)據(jù)源。一個可行的解決方法就是,添加一個適配層,設計相應的數(shù)據(jù)訪問接口,對有不同數(shù)據(jù)格式的采集,寫入等操作,都從該接口繼承,從而針對不同的數(shù)據(jù)采集方式完成相應的功能。這樣,使服務器在整體不需改變的情況下,能夠適應多種數(shù)據(jù)源的情況。其大致的結構如下圖所示

  

 

  圖 3 使用適配器模式的IOPCItem 接口

  IOPCItem 接口:該接口定義了對外部數(shù)據(jù)進行訪問的虛函數(shù),包括讀取(ReadValue),和寫入(WriteValue)函數(shù);在進行二次開發(fā)時,需針對不同的數(shù)據(jù)源需要具體實現(xiàn)。當一個組對象掃描該組成員項,進行數(shù)據(jù)訪問時,它將直接調用IOPCItem 接口。該接口是一個虛基類,其具體實現(xiàn)與外部數(shù)據(jù)源有關;對于將要訪問的外部設備,其存取數(shù)據(jù)的格式和驅動可能不同;IOPCItem 接口對此并不作具體規(guī)定,只是定義了虛函數(shù),用來讀取和寫入數(shù)據(jù);其具體的編碼實現(xiàn)需要由OPC DA 服務器將要訪問的外部設備決定。這樣,將數(shù)據(jù)訪問同具體的數(shù)據(jù)源分開,減少了耦合,使同一服務器架構可以滿足多種業(yè)務需求。[!--empirenews.page--]
 3 OPC DA 服務器與客戶端數(shù)據(jù)訪問的交互過程

  OPC 客戶端對在進行數(shù)據(jù)訪問時,是以組為單位的,每個組中可以加入客戶端需要訪問的數(shù)據(jù)項,具體的訪問交互過程如下:

  (1) OPC DA 客戶端查找并訪問一個OPC DA 服務器,此時在OPC DA 服務器端,創(chuàng)建一個Server 對象,并返回一個接口指針;

  (2) 客戶端由返回的指針找到接口IOPCServer,通過IOPCServer::AddGroup()函數(shù)添加一個Group;服務器端則生成一個Group 對象,返回一個該Group 對象的接口指針;

  (3) 客戶端利用該指針查找IOPCItemMgt 接口,調用函數(shù)AddItem()在服務器添加一個或多個item 數(shù)據(jù)項item 對象,然后便可對該組對象中的數(shù)據(jù)項進行存取等操作;

  (4) 同步訪問:查找Group 對象的IOPCSyncIO 接口,直接調用Read(),Write()函數(shù);異步訪問:a)注冊,查找Group 對象的IConnnectionContianer 接口,找到一個支持OPCDataCallback 接口的連接點對象,客戶端生成IOPCDataCallback 對象并在連接點IConnectionPoint 上注冊;b)查找IAsyncIO 接口,客戶端調用該接口的Read,Write,Refresh等函數(shù),然后直接返回;c)完成數(shù)據(jù)存取后,服務器回調已經(jīng)注冊的IOPCDataCallback 接口的相關函數(shù),如OnDataChange 等,此時客戶端可以通過回調函數(shù)獲到返回的結果;  (5) 清理現(xiàn)場,釋放接口指針并返回;

  4 結束語

  OPC 標準在硬件和軟件廠商之間建立了規(guī)范的聯(lián)系,其工控領域得到了廣泛的應用,成為一個事實上的軟件總線。可適配的OPC DA 服務器則是將其上層進行了封裝,對下層數(shù)據(jù)源存取進行了接口抽象,將數(shù)據(jù)采集同具體的數(shù)據(jù)源分離,從而降低了數(shù)據(jù)訪問的耦合性。采用可適配模式的OPC DA 服務器,可以針對不同的數(shù)據(jù)采集模式,依照具體采集卡情況實現(xiàn)適配接口,從而縮短軟件整體開發(fā)的周期,提高實際應用的速度。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉