<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > OPC DA 服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

          OPC DA 服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

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

            3 與客戶端數(shù)據(jù)訪問(wèn)的交互過(guò)程

             客戶端對(duì)在進(jìn)行數(shù)據(jù)訪問(wèn)時(shí),是以組為單位的,每個(gè)組中可以加入客戶端需要訪問(wèn)的數(shù)據(jù)項(xiàng),具體的訪問(wèn)交互過(guò)程如下:

            (1) 客戶端查找并訪問(wèn)一個(gè)OPC ,此時(shí)在OPC DA 端,創(chuàng)建一個(gè)Server 對(duì)象,并返回一個(gè)接口指針;

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

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

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

            4 結(jié)束語(yǔ)

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


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

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();