



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、利用OPC實(shí)現(xiàn)VC應(yīng)用程序與PLC的數(shù)據(jù)交換關(guān)鍵詞: OPC RSView32 VC應(yīng)用程序 可編程控制器1 引言VC(Visual C+)是功能強(qiáng)大的一種Windows應(yīng)用程序可視化軟件開發(fā)工具。VC支持面向?qū)ο蟮脑O(shè)計(jì)方法,并可以使用功能強(qiáng)大的微軟基礎(chǔ)類庫(kù)MFC(Micro-soft foundation class)。并且由于Microsoft公司在操作市場(chǎng)上的壟斷地位,用VC開發(fā)出來(lái)的軟件穩(wěn)定性好、可移植性強(qiáng),而且軟件與硬件相
2、互獨(dú)立,可以用來(lái)開發(fā)控制系統(tǒng)的上層管理系統(tǒng)。RSView32是作為一種專門用于工業(yè)控制的組態(tài)軟件,不僅包含了大量圖形開發(fā)工具和現(xiàn)成圖形庫(kù),使用戶能夠方便的進(jìn)行系統(tǒng)開發(fā),而且還可以對(duì)報(bào)警、活動(dòng)記錄、事件、歷史趨勢(shì)等進(jìn)行組態(tài),是一個(gè)功能強(qiáng)大的工業(yè)自動(dòng)化產(chǎn)品,因此可以很方便地對(duì)下層設(shè)備進(jìn)行組態(tài)。在實(shí)際系統(tǒng)開發(fā)時(shí),利用OPC技術(shù)把兩種工具有效的結(jié)合起來(lái),使上層的VC程序通過(guò)RSView32間接地與下層PLC進(jìn)行數(shù)據(jù)通信,以獲取令人滿意的結(jié)果。2 OPC介紹OPC(OLE for Process Control)是根據(jù)Microsoft的OLE(現(xiàn)在A
3、ctive)、COM(部件對(duì)象模型)和DCOM(分布式部件對(duì)象模型)技術(shù)所要求的功能制定的一個(gè)開放和互用式的用戶界面標(biāo)準(zhǔn),它保證了自動(dòng)化/控制應(yīng)用程序和區(qū)域系統(tǒng)/設(shè)備之間的互用。它以O(shè)LE/COM機(jī)制作為應(yīng)用程序級(jí)的通訊標(biāo)準(zhǔn),采用CLIENT/SERVER模式,典型的OPC體系結(jié)構(gòu)如圖1所示: 圖1 &
4、#160; 典型的OPC體系結(jié)構(gòu)OPC規(guī)范中提供了兩套接口方案,即定制接口和自動(dòng)化接口。定制接口效率高,通過(guò)該接口能夠發(fā)揮OPC服務(wù)器的最佳性能,采用C+語(yǔ)言的客戶一般采用定制接口方案;自動(dòng)化接口使解釋性語(yǔ)言和宏語(yǔ)言訪問(wèn)OPC服務(wù)器成為可能,采用VB等語(yǔ)言的客戶一般采用自動(dòng)化接口。OPC數(shù)據(jù)存取服務(wù)器由三類對(duì)象組成:服務(wù)器(Server)、組(Group)、數(shù)據(jù)項(xiàng)(Item)。服務(wù)器對(duì)象用于指出特定的OPC服務(wù)器應(yīng)用程序名,并作為組對(duì)象的容器;組對(duì)象存儲(chǔ)由若干Item組成的Group信息并邏輯組織數(shù)據(jù)項(xiàng);數(shù)據(jù)項(xiàng)對(duì)象()存儲(chǔ)具體的Item的定義、數(shù)據(jù)值、狀態(tài)值等
5、信息,一個(gè)Item就代表一個(gè)具體的過(guò)程變量。OPC客戶應(yīng)用程序要獲取OPC服務(wù)器的數(shù)據(jù),必須事先指定服務(wù)器應(yīng)用程序所在的計(jì)算機(jī)名(服務(wù)器應(yīng)用程序和客戶應(yīng)用程序不在同一臺(tái)PC上)、OPC數(shù)據(jù)訪問(wèn)服務(wù)器名和該服務(wù)器提供的OPC項(xiàng)的定義。建立OPC連接后,客戶應(yīng)用程序一般可以通過(guò)三種方式從OPC服務(wù)器讀取數(shù)據(jù):使用同步接口IOPC-SyncIO,簡(jiǎn)單有效,適合于只讀取少量數(shù)據(jù)的客戶程序;使用接口IOPCCallback的“訂閱”的功能OnChange,每當(dāng)數(shù)據(jù)有變化時(shí),服務(wù)器自動(dòng)通知客戶;使用異步接口IOPCASyncIO2,可以直接與物理設(shè)備通訊,速度慢但數(shù)據(jù)精確度高。3 R
6、SView32作為OPC服務(wù)器西門子專門用于工業(yè)控制的通用組態(tài)軟件之一RSView32支持OPC技術(shù),它可以用作一個(gè)OPC客戶和外部OPC服務(wù)器軟件通信,也可以作為一個(gè)OPC服務(wù)器和其它第三方支持OPC技術(shù)的軟件進(jìn)行連接。本文中RSView32作為服務(wù)器,VC應(yīng)用程序作為客戶端,采用C/S模式實(shí)現(xiàn)兩者之間的數(shù)據(jù)交換。3.1 使RSView32作為OPC服務(wù)器 用下列方法之一使RSView32作為OPC服務(wù)器: (1) 選擇“啟動(dòng)”編輯器里“啟動(dòng)”頁(yè)上的“OPC/DDE服務(wù)器”復(fù)選框; (2) 發(fā)出RTDataServerO
7、n命令(從命令行或另一個(gè)RSView32組件里,使用RTDataServerOff命令可以取消此功能),這將允許其它應(yīng)用程序讀取數(shù)值但不能改變它; (3) 發(fā)出RTDataWriteEnable命令(從命令行或另一個(gè)RSView32組件里,使用RTDataWriteDisable命令可以取消此功能),這允許從外部OPC應(yīng)用程序?qū)懭耄愿淖僐SView32的標(biāo)記值。3.2 建立 OPC 客戶項(xiàng)目 VC應(yīng)用程序要從RSView32取得數(shù)據(jù),必須使用下列信息: 服務(wù)器:RSI.RSView32OPCTagS
8、erver; 類型:本機(jī)/遠(yuǎn)程; 服務(wù)器計(jì)算機(jī)名或地址:如果客戶和服務(wù)器在同一計(jì)算機(jī)上,這項(xiàng)可以是空白。 訪問(wèn)路徑:項(xiàng)目名; 更新速率:一個(gè)以秒為單位的速率; 條目:標(biāo)記名??梢酝ㄟ^(guò)查看RSView32的標(biāo)簽數(shù)據(jù)庫(kù)獲得。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)
9、庫(kù)文件,可以從OPC基金會(huì)網(wǎng)站(網(wǎng)址:)下載這些文件:#include "opcda_i.c" OPC數(shù)據(jù)存取接口#include "opcda.h" OPC數(shù)據(jù)存取2.0頭文件#include "opccomn_i.c" OPC公共接口定義#include "opccomn.h"
10、60; OPC公共頭文件4.2 初始化COM支持庫(kù)由于OPC是基于COM技術(shù)制定,所以在使用接口類之前必須首先使用CoInitialize(NULL)函數(shù)初始化COM庫(kù),如果成功,函數(shù)返回值等于S_ OK。4.3 連接opc服務(wù)器OPC客戶能夠連接到OPC服務(wù)器上,并建立OPC組和OPC數(shù)據(jù)項(xiàng),這是OPC數(shù)據(jù)訪問(wèn)的基礎(chǔ),如果沒(méi)有這個(gè)機(jī)制,數(shù)據(jù)訪問(wèn)的其它機(jī)能不可能實(shí)現(xiàn)。連接OPC服務(wù)器,OPC客戶需要事先指定計(jì)算機(jī)名(如果OPC服務(wù)器和OPC客戶不在同一臺(tái)計(jì)算機(jī)上)和OPC數(shù)據(jù)訪問(wèn)服務(wù)器名(RSI.RSView32OPC
11、TagServer)。實(shí)現(xiàn)代碼如下: ConnectToServer(/*in */LPOLESTR ProgID,/*in*/ BOOL &
12、#160; IsRemote,/*out */ IUnknown *ppUnknown)
13、160; CLSID OPCCLSID; HRESULT hRet=
14、CLSIDFromProgID(ProgID,&OPCCLSID); /將字符串ProgID轉(zhuǎn)換為唯一OPCCLSID
15、0; if(IsRemote) /opc服務(wù)器和opc客戶不在同一臺(tái)計(jì)算機(jī)上
16、 COSERVERINFO ServerInfo; &
17、#160; memset(&ServerInfo,0,sizeof(ServerInfo); Serve
18、rInfo.pwszName=T2OLE("ServerComouter"); MULTI_QI qi1;
19、; memset(qi, 0, sizeof(qi); qi0.pIID=&IID_IUnknown;
20、60; HRESULT hRet=CoCreateInstanceEx(OPCCLSID,NULL,
21、CLSCTX_REMOTE_SERVER, &ServerInfo,1,qi);
22、; *ppUnknown=qi0.pItf;
23、60; else /opc服務(wù)器和opc客戶在同一臺(tái)計(jì)算機(jī)上
24、160; hRet=CoCreateInstance(OPCCLSID,NULL,CLSCTX_LOCAL_SERVER,IID_IUnknown,
25、; (void *)ppUnknown);
26、; 4.4 創(chuàng)建OPC組IOPCServer接口的AddGroup()方法可以創(chuàng)建一個(gè)有指定名稱和屬性的OPC組。在調(diào)用該方法之前,可以使用上一步得到的Iunknown接口指針,通過(guò)QueryInterface()方法請(qǐng)求IOPCServer接口指針。代碼如下:
27、60; ppUnknown->QueryIn
28、terface(IID_IOPCServer,(void *)&pServer);
29、0; /得到IOPCServer接口指針 pServer->AddGroup(L"",TRUE,500,1235,&lTimeBias,&fTemp,0,&hOPCServerGroup,
30、60; &dwActualRate,IID_IOPCItemMgt,& pOPCItemMgt);4.5 添加數(shù)據(jù)項(xiàng)IOPCItemMgt接口的AddItem()方法可以添加具有特殊屬性的指定數(shù)量的數(shù)據(jù)項(xiàng)。pOPCItemMgt->AddItems
31、(ItemNumber,ItemArray,(OPCITEMRESULT*)&pItemResult,(HRESULT *)&pErrors);ItemArray為OPCITEMDEF類型結(jié)構(gòu)數(shù)組,它包含數(shù)據(jù)項(xiàng)的詳細(xì)信息,客戶需要知道要進(jìn)行交換的數(shù)據(jù)在RSView32標(biāo)簽數(shù)據(jù)庫(kù)中的名稱、數(shù)據(jù)類型及作為OPC服務(wù)器的RSView32項(xiàng)目名稱。添加數(shù)據(jù)項(xiàng)之前,要用這些數(shù)據(jù)項(xiàng)信息對(duì)ItemArray結(jié)構(gòu)數(shù)組進(jìn)行初始化。4.6 數(shù)據(jù)交換成功地增加完所需要的數(shù)據(jù)項(xiàng)后,OPC客戶(VC應(yīng)用程序)和OPC服務(wù)器(RSView32)就可以進(jìn)行數(shù)據(jù)交換了。在數(shù)據(jù)量
32、不大的情況下,可以使用IOPCSyncIO同步接口的Write()和Read()兩個(gè)方法進(jìn)行數(shù)據(jù)的讀寫操作,從而實(shí)現(xiàn)OPC客戶(VC應(yīng)用程序)和OPC服務(wù)器(RSView32)之間的數(shù)據(jù)交換。代碼如下: ppUnknown->QueryInterface(IID_IOPCSyncIO,(void *)&pOPCSync);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 名義股東入股協(xié)議書
- 貨場(chǎng)搬運(yùn)協(xié)議書范本
- 物品領(lǐng)取寄存協(xié)議書
- 詳細(xì)參見(jiàn)技術(shù)協(xié)議書
- 學(xué)生頂崗管理協(xié)議書
- 同意安裝暖氣協(xié)議書
- 私人安裝門窗協(xié)議書
- 景觀樓梯購(gòu)買協(xié)議書
- 水泥授權(quán)代理協(xié)議書
- 刑事和解協(xié)議書公司
- GB/T 11982.2-2015聚氯乙烯卷材地板第2部分:同質(zhì)聚氯乙烯卷材地板
- 110KV 線路保護(hù)調(diào)試報(bào)告
- 移動(dòng)設(shè)備小型設(shè)備施工方案
- 臨床思維診療訓(xùn)練系統(tǒng)參數(shù)
- 揚(yáng)州市巡游出租汽車駕駛員從業(yè)資格區(qū)域科目考試題庫(kù)(含答案)
- DB37-T 3466-2018人民防空工程防護(hù)(化)設(shè)備維護(hù)保養(yǎng)規(guī)程
- (完整版)建筑構(gòu)造課件
- 《巖石力學(xué)(含實(shí)驗(yàn))》課程教學(xué)大綱
- 中國(guó)銀行保函業(yè)務(wù)培訓(xùn)(共71頁(yè)).ppt
- 廣東公共就業(yè)服務(wù)標(biāo)準(zhǔn)化手冊(cè)
- 全國(guó)油料高產(chǎn)創(chuàng)建測(cè)產(chǎn)驗(yàn)收辦法
評(píng)論
0/150
提交評(píng)論