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

當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]利用OPC實現(xiàn)VC應(yīng)用程序與PLC的數(shù)據(jù)交換  VC(Visual C++)是功能強大的一種Windows應(yīng)用程序可視化軟件開發(fā)工具。VC支持面向?qū)ο蟮脑O(shè)計方法,并可以使用功能強大的微軟基礎(chǔ)類庫MFC(Micro - soft foundation class)。

利用OPC實現(xiàn)VC應(yīng)用程序PLC數(shù)據(jù)交換

  VC(Visual  C++)是功能強大的一種Windows應(yīng)用程序可視化軟件開發(fā)工具。VC支持面向?qū)ο蟮脑O(shè)計方法,并可以使用功能強大的微軟基礎(chǔ)類庫MFC(Micro - soft foundation class)。并且由于Microsoft公司在操作市場上的壟斷地位,用VC開發(fā)出來的軟件穩(wěn)定性好、可移植性強,而且軟件與硬件相互獨立[1],可以用來開發(fā)控制系統(tǒng)的上層管理系統(tǒng)。RSView32是作為一種專門用于工業(yè)控制的組態(tài)軟件,不僅包含了大量圖形開發(fā)工具和現(xiàn)成圖形庫,使用戶能夠方便的進行系統(tǒng)開發(fā),而且還可以對報警、活動記錄、事件、歷史趨勢等進行組態(tài),是一個功能強大的工業(yè)自動化產(chǎn)品[2],因此可以很方便地對下層設(shè)備進行組態(tài)。在實際系統(tǒng)開發(fā)時,利用OPC技術(shù)把兩種工具有效的結(jié)合起來,使上層的VC程序通過RSView32間接地與下層PLC進行數(shù)據(jù)通信,以獲取令人滿意的結(jié)果。

  2  OPC介紹

  OPC(OLE for Process Control)是根據(jù)Microsoft的OLE(現(xiàn)在Active)、COM(部件對象模型)和DCOM(分布式部件對象模型)技術(shù)所要求的功能制定的一個開放和互用式的用戶界面標(biāo)準(zhǔn),它保證了自動化/控制應(yīng)用程序和區(qū)域系統(tǒng)/設(shè)備之間的互用。它以O(shè)LE/COM機制作為應(yīng)用程序級的通訊標(biāo)準(zhǔn),采用 CLIENT/SERVER模式,典型的OPC體系結(jié)構(gòu)如圖1所示:


  圖1     典型的OPC體系結(jié)構(gòu)

  OPC規(guī)范中提供了兩套接口方案,即定制接口和自動化接口。定制接口效率高,通過該接口能夠發(fā)揮OPC服務(wù)器的最佳性能,采用C++語言的客戶一般采用定制接口方案;自動化接口使解釋性語言和宏語言訪問OPC服務(wù)器成為可能,采用VB等語言的客戶一般采用自動化接口。

  OPC 數(shù)據(jù)存取服務(wù)器由三類對象組成:服務(wù)器(Server)、組(Group)、數(shù)據(jù)項(Item)。服務(wù)器對象用于指出特定的OPC服務(wù)器應(yīng)用程序名,并作為組對象的容器;組對象存儲由若干Item組成的Group信息并邏輯組織數(shù)據(jù)項;數(shù)據(jù)項對象()存儲具體的Item的定義、數(shù)據(jù)值、狀態(tài)值等信息,一個 Item就代表一個具體的過程變量。OPC客戶應(yīng)用程序要獲取OPC服務(wù)器的數(shù)據(jù),必須事先指定服務(wù)器應(yīng)用程序所在的計算機名(服務(wù)器應(yīng)用程序和客戶應(yīng)用程序不在同一臺PC上)、OPC數(shù)據(jù)訪問服務(wù)器名和該服務(wù)器提供的OPC項的定義。

  建立OPC連接后,客戶應(yīng)用程序一般可以通過三種方式從OPC 服務(wù)器讀取數(shù)據(jù):使用同步接口IOPC- SyncIO,簡單有效,適合于只讀取少量數(shù)據(jù)的客戶程序;使用接口IOPCCallback的“訂閱”的功能OnChange,每當(dāng)數(shù)據(jù)有變化時,服務(wù)器自動通知客戶;使用異步接口IOPCASyncIO2,可以直接與物理設(shè)備通訊,速度慢但數(shù)據(jù)精確度高。

  3  RSView32作為OPC服務(wù)器

  西門子專門用于工業(yè)控制的通用組態(tài)軟件之一RSView32支持OPC技術(shù),它可以用作一個OPC客戶和外部OPC服務(wù)器軟件通信,也可以作為一個OPC服務(wù)器和其它第三方支持OPC技術(shù)的軟件進行連接。本文中RSView32作為服務(wù)器,VC應(yīng)用程序作為客戶端,采用C/S模式實現(xiàn)兩者之間的數(shù)據(jù)交換。

  3.1  使RSView32作為OPC服務(wù)器[4]

  用下列方法之一使RSView32作為OPC服務(wù)器:

  (1) 選擇“啟動”編輯器里“啟動”頁上的“OPC/DDE服務(wù)器”復(fù)選框;

  (2) 發(fā)出RTDataServerOn命令(從命令行或另一個 RSView32組件里,使用RTDataServerOff命令可以取消此功能),這將允許其它應(yīng)用程序讀取數(shù)值但不能改變它;

  (3) 發(fā)出RTDataWriteEnable命令(從命令行或另一個RSView32組件里,使用RTDataWriteDisable命令可以取消此功能),這允許從外部OPC應(yīng)用程序?qū)懭耄愿淖僐SView32的標(biāo)記值。

  3.2  建立 OPC 客戶項目[4]

  VC應(yīng)用程序要從RSView32取得數(shù)據(jù),必須使用下列信息:

  服務(wù)器:RSI.RSView32OPCTagServer;

  類型:本機/遠程;

  服務(wù)器計算機名或地址:如果客戶和服務(wù)器在同一計算機上,這項可以是空白。

  訪問路徑:項目名;

  更新速率:一個以秒為單位的速率;

  條目:標(biāo)記名??梢酝ㄟ^查看RSView32的標(biāo)簽數(shù)據(jù)庫獲得。

  4  VC應(yīng)用程序作為OPC客戶端的程序?qū)崿F(xiàn)

  在VC環(huán)境中使用定制接口開發(fā)OPC客戶應(yīng)用程序,下面是程序?qū)崿F(xiàn)的關(guān)鍵步驟。

  4.1  包含OPC頭文件

  開發(fā)OPC客戶應(yīng)用程序,除了需要OPC接口外,還需要在程序中包含OPC標(biāo)準(zhǔn)庫文件,可以從OPC基金會網(wǎng)站(網(wǎng)址:www.opcfoundation.org)下載這些文件:

  #include "opcda_i.c"    OPC數(shù)據(jù)存取接口

  #include "opcda.h"      OPC數(shù)據(jù)存取2.0頭文件

  #include "opccomn_i.c"  OPC公共接口定義

  #include "opccomn.h"    OPC公共頭文件

  4.2  初始化COM支持庫

  由于OPC是基于COM技術(shù)制定,所以在使用接口類之前必須首先使用CoInitialize(NULL)函數(shù)初始化COM庫,如果成功,函數(shù)返回值等于S_ OK。

  4.3  連接opc服務(wù)器

  OPC 客戶能夠連接到OPC服務(wù)器上,并建立OPC組和OPC數(shù)據(jù)項,這是OPC數(shù)據(jù)訪問的基礎(chǔ),如果沒有這個機制,數(shù)據(jù)訪問的其它機能不可能實現(xiàn)[4]。連接 OPC服務(wù)器,OPC客戶需要事先指定計算機名(如果OPC服務(wù)器和OPC客戶不在同一臺計算機上)和OPC數(shù)據(jù)訪問服務(wù)器名 (RSI.RSView32OPCTagServer)。實現(xiàn)代碼如下:

  ConnectToServer(/*in */LPOLESTR ProgID,/*in*/ BOOL IsRemote,/*out */ IUnknown **ppUnknown)

  {

  CLSID OPCCLSID;

  HRESULT hRet=CLSIDFromProgID(ProgID,&OPCCLSID);

  //將字符串ProgID轉(zhuǎn)換為唯一OPCCLSID

  if(IsRemote)

  //opc服務(wù)器和opc客戶不在同一臺計算機上

  {

  COSERVERINFO ServerInfo;

  memset(&ServerInfo,0,sizeof(ServerInfo));

  ServerInfo.pwszName=T2OLE("ServerComouter");

  MULTI_QI qi[1];

  memset(qi, 0, sizeof(qi));

  qi[0].pIID=&IID_IUnknown;

  HRESULT hRet=CoCreateInstanceEx(OPCCLSID,NULL,CLSCTX_REMOTE_SERVER,

  &ServerInfo,1,qi);

  *ppUnknown=qi[0].pItf;

  }

  else

  //opc服務(wù)器和opc客戶在同一臺計算機上

  {

  hRet=CoCreateInstance(OPCCLSID,NULL,CLSCTX_LOCAL_SERVER,IID_IUnknown,

  (void **)ppUnknown);

  }

  }

  4.4  創(chuàng)建OPC組

  IOPCServer接口的AddGroup()方法可以創(chuàng)建一個有指定名稱和屬性的OPC組。在調(diào)用該方法之前,可以使用上一步得到的Iunknown接口指針,通過QueryInterface()方法請求IOPCServer接口指針。代碼如下:

  ppUnknown->QueryInterface(IID_IOPCServer,(void **)&pServer);

  //得到IOPCServer接口指針

  pServer->AddGroup(L"",TRUE,500,1235,&lTimeBias,&fTemp,0,&hOPCServerGroup,  &dwActualRate,IID_IOPCItemMgt,& pOPCItemMgt);

  4.5  添加數(shù)據(jù)項

  IOPCItemMgt接口的AddItem()方法可以添加具有特殊屬性的指定數(shù)量的數(shù)據(jù)項。

  pOPCItemMgt->AddItems(ItemNumber,ItemArray,

  (OPCITEMRESULT**)&pItemResult,(HRESULT **)&pErrors);

  ItemArray 為OPCITEMDEF類型結(jié)構(gòu)數(shù)組,它包含數(shù)據(jù)項的詳細信息,客戶需要知道要進行交換的數(shù)據(jù)在RSView32標(biāo)簽數(shù)據(jù)庫中的名稱、數(shù)據(jù)類型及作為 OPC服務(wù)器的RSView32項目名稱。添加數(shù)據(jù)項之前,要用這些數(shù)據(jù)項信息對ItemArray結(jié)構(gòu)數(shù)組進行初始化。

  4.6  數(shù)據(jù)交換

  成功地增加完所需要的數(shù)據(jù)項后,OPC客戶(VC應(yīng)用程序)和OPC服務(wù)器(RSView32)就可以進行數(shù)據(jù)交換了。在數(shù)據(jù)量不大的情況下,可以使用 IOPCSyncIO同步接口的Write()和Read()兩個方法進行數(shù)據(jù)的讀寫操作,從而實現(xiàn)OPC客戶(VC應(yīng)用程序)和OPC服務(wù)器 (RSView32)之間的數(shù)據(jù)交換。代碼如下:

  ppUnknown->QueryInterface(IID_IOPCSyncIO,(void **)&pOPCSync);

  //得到IOPCSyncIO接口指針

  pOPCSync->Read(OPC_DS_CACHE,ReadNumber,hServerRead,&pItemValue,&pErrors);

  //讀ReadNumber個數(shù)據(jù)

  pOPCSync->Write(WriteNumber,hServerWrite,WriteValue,&pErrors);

  //寫WriteNumber個數(shù)據(jù)

  4.7  釋放接口指針

  在VC應(yīng)用程序停止運行之前必須使用Release()方法刪除已創(chuàng)建的OPC對象并釋放內(nèi)存。

  5  結(jié)束語

  OPC技術(shù)規(guī)范把硬件供應(yīng)商和應(yīng)用軟件開發(fā)者分離開來,使得雙方的工作效率都有了很大提高。軟件開發(fā)商無需了解硬件的實質(zhì)和操作過程,就能訪問OPC數(shù)據(jù)服務(wù)器中的數(shù)據(jù),尤其是開發(fā)商在已使用了組態(tài)軟件進行實時監(jiān)控的過程控制系統(tǒng)基礎(chǔ)上,用C++等高級語言開發(fā)系統(tǒng)時,大大簡化了過去從設(shè)備傳輸數(shù)據(jù)的復(fù)雜過程。在某鋁廠的自動配料系統(tǒng)開發(fā)中,應(yīng)用OPC技術(shù)方便地實現(xiàn)了VC應(yīng)用程序和RSView32的數(shù)據(jù)交換,間接地實現(xiàn)了VC應(yīng)用程序PLC的通信,獲得了很好的結(jié)果。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉