新聞中心

        EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 利用OPC實(shí)現(xiàn)VC應(yīng)用程序與PLC的數(shù)據(jù)交換

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

        作者: 時(shí)間:2011-09-11 來(lái)源:網(wǎng)絡(luò) 收藏

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

        本文引用地址:http://www.104case.com/article/155781.htm

          2 介紹

          OPC(OLE for Process Control)是根據(jù)Microsoft的OLE(現(xiàn)在Active)、COM(部件對(duì)象模型)和DCOM(分布式部件對(duì)象模型)技術(shù)所要求的功能制定的一個(gè)開(kāi)放和互用式的用戶界面標(biāo)準(zhǔn),它保證了自動(dò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 典型的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 存取服務(wù)器由三類(lèi)對(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)值等信息,一個(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 RSView32作為OPC服務(wù)器

          西門(mén)子專門(mén)用于工業(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ù)據(jù)

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

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

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

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

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

          3.2 建立 OPC 客戶項(xiàng)目[4]

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

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

          類(lèi)型:本機(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客戶端的程序

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

          4.1 包含OPC頭文件

          開(kāi)發(fā)OPC客戶應(yīng)用程序,除了需要OPC接口外,還需要在程序中包含OPC標(biāo)準(zhǔn)庫(kù)文件,可以從OPC基金會(huì)網(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支持庫(kù)

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


        上一頁(yè) 1 2 3 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 浦城县| 图们市| 讷河市| 郯城县| 施秉县| 诏安县| 武定县| 灵武市| 方山县| 东台市| 米易县| 马尔康县| 龙胜| 阿克苏市| 南平市| 尉氏县| 庆安县| 克山县| 皮山县| 保山市| 达州市| 胶南市| 平陆县| 嵩明县| 桓台县| 西城区| 蕲春县| 阿尔山市| 张掖市| 茌平县| 镇原县| 平和县| 凤庆县| 武清区| 桐柏县| 苍梧县| 吴忠市| 花莲市| 句容市| 阿拉善盟| 卫辉市|