• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. 20240703
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      工業(yè)智能邊緣計算2024年會(huì )
      2024
      2024中國自動(dòng)化產(chǎn)業(yè)年會(huì )
      2023年工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

      案例頻道

      激勵式仿真機實(shí)時(shí)數據OPC異步通訊的研究
      • 企業(yè):控制網(wǎng)     領(lǐng)域:電源     行業(yè):電力    
      • 點(diǎn)擊數:1964     發(fā)布時(shí)間:2009-11-26 21:18:26
      • 分享到:
         摘  要:OPC (OLE for Process Control) 技術(shù)是隨著(zhù)自動(dòng)化生產(chǎn)和系統融合的需要而發(fā)展起來(lái)的,它繼承和發(fā)展OLE/COM 技術(shù),在過(guò)程工業(yè)控制中方便地實(shí)現了不同系統之間的通訊和數據交換。本文通過(guò)介紹OPC技術(shù)的工作原理,結合激勵式仿真機的工作機制,給出OPC異步通訊的開(kāi)發(fā)方法及使用Visual C++6.0的具體實(shí)現。根據仿真系統支撐平臺的實(shí)時(shí)性要求,利用內存映射文件建立系統運行的實(shí)時(shí)數據庫,即通過(guò)內存映射文件開(kāi)辟共享內存區并對其進(jìn)行數據操作。該方法既能實(shí)現多個(gè)進(jìn)程數據的共享,又保證了實(shí)時(shí)的響應速度以便在Ovation DCS服務(wù)器數據庫中讀寫(xiě)數據。具有數據傳輸速率快,安全可靠性高的優(yōu)點(diǎn),在火電廠(chǎng)自動(dòng)化中有很強的通用性和實(shí)用性。

          關(guān)鍵詞:
      激勵式仿真機;OPC;組件對象模型;異步通信;內存映射文件

          Abstract:
      With the development of automatic manufacture and unitized system, the OPC (OLE for Process Control) technology is growing and can satisfy the need of their development. The OPC technology inherit and develop the OLE/COM technology, and can easily realize the communication and datum exchange between the different systems in the process industry. This article provides the way of exploring OPC asynchronous communication and its fulfillment in Visual C++6.0 via the introduction of the working principles of OPC technology combined with the working mechanism of stimulative simulation system. According to the real time requirement of the supporting platform of simulation system, this paper establishes the real time database in the course of memory mapping file; sets up a sharing memory area by memory mapping file,and realizing the operations of the sharing memory area. This method not only has realized the sharing of a lot of process data,but also guaranteed the prompt response speed to read and write the Ovation DCS Server Database. The program have a lot of merits with fast data transfer rate and high security and authenticity, it has strong reliability and practicability in power plant automation.

          Key words
      : Stimulative Simulation; OPC; Component object model; Asynchronous communication; Memory mapping file

          1 引言

          激勵式仿真機是仿真技術(shù)與DCS技術(shù)發(fā)展到一定階段相結合,將DCS與火電廠(chǎng)熱力設備和機組模型直接對接構成的仿真系統,是從不同的角度思考并最終實(shí)現的嶄新的仿真模式。

          全激勵模式保留原有的分散控制系統軟件和硬件,接入一個(gè)只限于實(shí)現熱力設備和機組模型仿真的仿真計算機。由于此類(lèi)仿真系統動(dòng)態(tài)數據交換量龐大,為滿(mǎn)足數據通訊的實(shí)時(shí)性要求和避免系統的高負荷運行,激勵式系統DCS服務(wù)器數據庫至仿真計算機之間的數據通訊則可以通過(guò)仿真系統局域網(wǎng)中的兩臺PC機基于OPC技術(shù)實(shí)現。



      圖1 激勵式仿真機系統軟件配置圖
          2  OPC技術(shù)

          OPC技術(shù)是OLE技術(shù)在控制領(lǐng)域的應用,它通過(guò)微軟的COM/DCOM組件實(shí)現一套標準的OLE接口,用這些接口,用戶(hù)可以無(wú)縫訪(fǎng)問(wèn)火電機組生產(chǎn)現場(chǎng)中的數據。

          2.1 OPC技術(shù)基礎COM/DCOM

          COM (Component Object Model,組件對象模型)是由Microsoft提出的組件標準,客戶(hù)程序與COM組件程序進(jìn)行交互的實(shí)體是COM對象。接口是包含了一組函數的數據結構,也是COM對象與外界進(jìn)行交互的唯一途徑。如果一個(gè)COM對象支持一個(gè)或多個(gè)出接口,即組件對象要主動(dòng)與客戶(hù)進(jìn)行通信,則這樣的對象為可連接對象(Connectable Object),或者源對象(Source)??蛻?hù)與可連接對象之間的通信是雙向的。

          DCOM(分布式組件對象模型)是COM的擴展,它可以支持不同計算機上組件對象與客戶(hù)程序之間或者組件對象之間的相互通信,這些計算機可以在局域網(wǎng)內,也可以在廣域網(wǎng)上,甚至通過(guò)Internet進(jìn)行連接。DCOM己經(jīng)處理了底層網(wǎng)絡(luò )協(xié)議的所有細節,所以我們可把重點(diǎn)放在應用的業(yè)務(wù)邏輯上,而不必再為底層處理費時(shí)費力。

          2.2 OPC通訊方式比較

          OPCDA規范規定了兩種通訊方式:同步通訊和異步通訊。同步通訊時(shí),OPC 客戶(hù)程序對OPC服務(wù)器進(jìn)行相關(guān)操作時(shí),客戶(hù)程序必須等到服務(wù)器對應的操作全部完成以后才能返回,在此期間客戶(hù)程序一直處于等待狀態(tài),如進(jìn)行讀操作,那么必須等待服務(wù)器完成讀后才返回。因此在同步通訊時(shí),如果有大量數據進(jìn)行操作或者有很多OPC客戶(hù)程序對OPC服務(wù)器進(jìn)行讀、寫(xiě)操作,必然造成客戶(hù)端的阻塞現象。因此同步通訊適用于OPC客戶(hù)程序較少,數據量較小時(shí)的場(chǎng)合。

          異步通訊時(shí),OPC客戶(hù)程序對服務(wù)器進(jìn)行相關(guān)操作時(shí),客戶(hù)程序操作后立刻返回,不用等待服務(wù)器的操作,可以進(jìn)行其他操作。當服務(wù)器完成操作后再通知客戶(hù)程序,如進(jìn)行讀操作,客戶(hù)程序通知服務(wù)器后離開(kāi)返回,不等待服務(wù)器的讀完成,而服務(wù)器完成讀后,會(huì )自動(dòng)的通知客戶(hù)程序,把讀結果傳送給客戶(hù)程序。因此相對于同步通訊,異步通訊的效率更高,適用于多客戶(hù)訪(fǎng)問(wèn)同一OPC服務(wù)器和大量數據的場(chǎng)合。

          3   系統實(shí)現與測試

          3.1 異步通信實(shí)現

          Ovation DCS服務(wù)器數據庫中包括AI,AO,DI,DO數據類(lèi)型,在實(shí)際DCS中對應現場(chǎng)的測點(diǎn)與執行機構。對于全激勵式仿真模式,只涉及實(shí)際系統部件的建模,不涉及控制模型,因此首先需要實(shí)現模型側數據點(diǎn)與DCS數據點(diǎn)的匹配。

          其次,在全激勵式仿真機系統中,動(dòng)態(tài)交互數據量龐大,同步通訊是絕對不能滿(mǎn)足要求,只能使用異步方式。異步通訊就是通過(guò)COM/DCOM機制中的連接點(diǎn)實(shí)現的??蛇B接點(diǎn)對象通過(guò)IConnectionPointContainer接口管理所有的出接口。

          對應于每一個(gè)出接口,可連接點(diǎn)對象又管理了一個(gè)連接點(diǎn)(connection point)對象,每一個(gè)連接點(diǎn)對象實(shí)現了IConnectionPoint接口,仿真機模型側通過(guò)連接點(diǎn)對象建立接收器與可連接對象的連接。為了使用連接點(diǎn)(IConnectionPointContainer 和 IConnectionPoint 接口),仿真機模型側必須創(chuàng )建一個(gè)對象支持IUnknown和IConnectionPoint接口,以便傳遞一個(gè)指針給IUnknown接口去激活DCS服務(wù)器的連接點(diǎn)??蛇B接對象的基本結構如圖1。



      圖2 可連接對象基本結構
       
          最后,具體實(shí)現異步讀取數據時(shí),DCS服務(wù)器主動(dòng)和仿真機模型通信。此時(shí),服務(wù)器提供出接口(Outgoing Interface),這些出接口是由仿真機模型實(shí)現,并將接口指針告訴DCS服務(wù)器對象,然后服務(wù)器對象就利用此接口指針與仿真機模型進(jìn)行通信。而仿真機模型側則通過(guò)接收器sink(其接收器應該至少實(shí)現 IUnknown 和 IOPCDataCallBack 接口)來(lái)實(shí)現這些接口的對象。這樣對仿真機模型側來(lái)說(shuō),可以通過(guò)常規方式調用服務(wù)器的接口,也可以通過(guò)接收器接受DCS服務(wù)器發(fā)送的通知或事件,對DCS服務(wù)器來(lái)說(shuō),它的入接口和出接口分別承擔了這兩個(gè)通信過(guò)程,這樣就實(shí)現了C/S的雙向通信。異步通信的實(shí)現由定義接口開(kāi)始,主要代碼如下:

          IConnectionPointerContainer* pCPC;

          IOPCAsyncIO2* pASIO2;

          IOPCDataCallBack* pDCB;

          IConnectionPoint* pCP;

          Punk->QueryInterface(IID_IConnection, PointContainer, &pCPC);

          PCPC->FindConnectionPoint(IID_IOPC, DataCallBack, &pCP);

          通過(guò)查詢(xún),如果支持接收器對象,則在DCS服務(wù)器與仿真機模型之間建立連接,并返回連接點(diǎn)對象生成的唯一標志此連接的32位整數m_dwcookie:

          pCP->Advise(&pDCB,&m_dwcookie);

          設置刷新速率IOPCGroupStateMgt* pGSP;

          PGRP->SetState(&RequestedRate,&Rate, &Active, 0, 0,0,0);

          異步讀數據, 傳遞事務(wù)ID給OnReadComplete函數。    

          pASIO2->Read(1000,&m_phserver, m_dwtranscationID, &m_pdwcancelID, &hr);

          異步寫(xiě)數據,傳遞事務(wù)ID給OnWriteComplete函數。

          pASIO2->Write(1000, &m_phserver, &m_pitemvalues,m_dwtransactionID, m_pdwcancelID, &hr);

          在仿真機模型側調用異步讀寫(xiě)操作或者組對象項成員的數據發(fā)生變化時(shí),組對象對仿真機模型側發(fā)出如下事件OnDataChange函數,只需在該函數中添加一些讀寫(xiě)共享內存的語(yǔ)句。

          STDMETHODIMP OnDataChange(DWORD dwTransid,OPCHANDLE hGroup, HRESULT hrMasterquality, HRESULT

          hrMastererror, DWORD dwCount, OPCHANDLE __RPC_FAR *phClientItems, VARIANT __RPC_FAR *pvValues, WORD __RPC_FAR *pwQualities, FILETIME __RPC_FAR *pftTimeStamps, HRESULT __RPC_FAR *pErrors);

          dwTransid:由仿真機模型側發(fā)送的事務(wù)標識符。

          dwCount:要讀取的數據或品質(zhì)發(fā)生變化的Item數目。

          phClientItems:OPC ITEM的客戶(hù)句柄數組。

          pvValues:返回的數值數組。

          pwQualities:返回的質(zhì)量戳數組。

          pftTimeStamps:返回的時(shí)間戳數組。

          當仿真機模型側需要取消與DCS服務(wù)器的連接時(shí),調用帶有同樣連接標識的Unadvise來(lái)取消連接。并且刪除Item,釋放異步接口,釋放Item管理接口,刪除Group對象,釋放OPC服務(wù)器,關(guān)閉COM庫等,以釋放占有資源。異步通信結構如圖2所示。



      圖3  OPC異步通信結構示意圖
       
          3.2 內存映射文件實(shí)現

          由于實(shí)時(shí)仿真數據庫被多個(gè)進(jìn)程共享,必然涉及到仿真機支撐系統與OPC客戶(hù)端程序之間的實(shí)時(shí)數據通信。解決的有效方法就是利用內存映射文件方式創(chuàng )建一個(gè)足夠大的共享內存空間,由于32位Windows操作系統具有多達2GB的用戶(hù)可用的線(xiàn)性?xún)却婵臻g,可以處理上百萬(wàn)的變量,這樣完全滿(mǎn)足火電廠(chǎng)全激勵式仿真系統支撐平臺的要求,通過(guò)編制一系列的接口函數對建立的共享內存中的數據進(jìn)行操作。

          此外,由于該共享內存中的數據可為多個(gè)進(jìn)程共享,因此各個(gè)接口函數都提供了同步機制,使用互斥量的同步對象CMutex實(shí)現。這些接口函數都封裝在動(dòng)態(tài)鏈接庫中,通過(guò)這些接口函數,既能實(shí)現多個(gè)進(jìn)程間數據的共享,又保證了實(shí)時(shí)的響應要求。實(shí)現關(guān)鍵代碼如下:

          HANDLE hFileMap = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, ShareMemory, MAP_FILE_NAME );  

          if ( hFileMap == NULL)   

                return;

      realValue = (float *)MapViewOfFile( hFileMap,FILE_MAP_ALL_ACCESS,0, 0, ShareMemory );

      if ( realValue == NULL ) { 

                CloseHandle( hFileMap ); 

                return;  

            }

          4  結論

          在實(shí)現全激勵式仿真機實(shí)時(shí)數據通信的過(guò)程中,起初鑒于A(yíng)DO技術(shù)具有高速訪(fǎng)問(wèn)數據源和程序占用內存少的特點(diǎn),曾采用了SQL Server 2000,Access等傳統數據庫作為實(shí)時(shí)數據庫,但實(shí)際使用中明顯有系統負荷高,占用資源大,響應速度慢等嚴重缺點(diǎn)。這是沒(méi)有充分考慮到具體系統條件及要求所造成的。

          通過(guò)改進(jìn)實(shí)踐表明,基于OPC的全激勵式仿真系統實(shí)時(shí)數據異步通訊方案是可行的。并以?xún)却嬗成湮募右詫?shí)現的實(shí)時(shí)數據庫在共享內存中以結構數組的形式存儲,使得整個(gè)仿真機系統結構緊湊、效率高,且對系統資源的要求降低。實(shí)現了大量數據的快速交換,符合電力生產(chǎn)中數據的響應速度。

          參考文獻:

          [1] 何海江.OPC客戶(hù)端關(guān)鍵技術(shù)的實(shí)現[J].微計算機信息 2003,19(7):76—78.

          [2] 鄭立.OPC應用程序入門(mén)[M].OPC(中國)基金會(huì ),2002.5

          [3] 劉國平,柳林林,劉利云.基于OPC服務(wù)器自動(dòng)化接口的客戶(hù)端程序的設計[J].自動(dòng)化技術(shù)與應用,2005,24(9):33—35.

          [4] 潘愛(ài)民.COM原理與應用[M].北京:清華大學(xué)出版社,2000.3

          [5] 司紀剛.OPCDA服務(wù)器與客戶(hù)程序開(kāi)發(fā)指南修訂版.2008.1

          [6] OPC Foundation,OPC Data Access Custom Interface Standard,Version 2.0



       

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>