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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > dde與opc技術的工作機制

          dde與opc技術的工作機制

          作者: 時間:2012-04-05 來源:網(wǎng)絡 收藏

          dde技術的工作機制

          本文引用地址:http://www.ex-cimer.com/article/160837.htm

          dde是為在同一臺計算機或不同計算機上運行的程序提供動態(tài)數(shù)據(jù)交換,最早由microsoft 公司提出的。動態(tài)數(shù)據(jù)交換(dde)技術由于其具有實時性好、網(wǎng)絡通信連接實現(xiàn)方便等特點,在控制軟件與信息網(wǎng)絡集成中得到了廣泛。

          動態(tài)數(shù)據(jù)交換基于windows消息機制,各程序間通過傳遞消息進行對話交換信息。windows dde消息傳遞采用client/server模式,客戶(client)是數(shù)據(jù)的請求和接受者,而服務器(server)是數(shù)據(jù)的提供者,兩者之間通過請求、應答、傳輸三個步驟來完成數(shù)據(jù)的傳送。dde協(xié)議使用服務(service)、主題(topic)和數(shù)據(jù)項(item)三級命名來標識dde所傳遞的數(shù)據(jù)單元。一般情況下,服務(service)就是程序的文件名,主題是對服務器有意義的信息單元。每次dde客戶與服務程序之間的對話都是先由客戶啟動的,所以在每次客戶啟動之前,dde服務器應當首先投入運行。

          當客戶程序需要向服務器程序請求數(shù)據(jù)時,客戶程序發(fā)送一條wm-dde-initiate消息給當前運行的所有windows應用程序,這條消息不但包含了它所需要的服務器名(service)和主題名(topic),而且指明了它所希望的數(shù)據(jù)類型,收到wm-dde-initiate消息的應用程序通過判別服務器名和會話主題決定是否應答,一旦dde服務器響應了這條被傳播的消息,dde會話就開始了。

          dde的工作方式有冷連接(cool link)、溫連接(warm link)和熱連接(hot link)等3種。在冷連接方式下,當server中的數(shù)據(jù)發(fā)生變化后不主動通知client,但client可以隨時從server讀寫數(shù)據(jù);在溫連接方式下,當server中的數(shù)據(jù)發(fā)生變化后馬上通知client,client得到通知后將數(shù)據(jù)取回;在熱連接方式下,當server中的數(shù)據(jù)發(fā)生變化后馬上通知client,同時將變化的數(shù)據(jù)直接送給client。

          dde的網(wǎng)絡形式稱為netdde,它包含了dde的全部特征,是動態(tài)數(shù)據(jù)交換(dde)的擴充,可以在跨越網(wǎng)絡的計算機之間使用。采用netdde后,兩個或更多網(wǎng)絡上的應用能夠通過dde共享來建立網(wǎng)絡上不同工作站之間的連接,從而實現(xiàn)站站之間的動態(tài)信息共享。

          opc技術的工作機制

          在opc技術出現(xiàn)以前,dde技術是絕大多數(shù)控制系統(tǒng)都支持和采用的數(shù)據(jù)交換方式。但是,由于dde是基于windows信息傳遞而建立的技術,因此,當通信量較大時,就會出現(xiàn)數(shù)據(jù)刷新速度慢、安全性管理機制差、可靠性能低等現(xiàn)象,從而就有可能致使dde客戶程序在較長時間內得不到回應。和dde 技術相比,基于com和dcom技術的opc技術具有數(shù)據(jù)傳送性能高、 安全性管理性能好、開發(fā)成本低等特點。

          7.jpg

          最初階段的opc規(guī)范是由opc基金會的先驅fisher-rosemount、rockwell、opto 22、intellution、intuitive technology公司于1996年8月發(fā)布的,目前opc基金會成員在全球已超過300多個,其中包括世界上幾乎所有主要的控制系統(tǒng)、儀器儀表、過程控制系統(tǒng)生產(chǎn)廠家。

          opc以ole/com/dcom技術為基礎,是ole(object linking and embedding)for process control的縮寫,是微軟公司的對象鏈接和嵌入技術在過程控制方面的應用。與dde一樣,opc也采用client/server模式。opc服務器是數(shù)據(jù)源的提供者,數(shù)據(jù)源可以是plc、dcs、條形碼讀取器等控制設備,隨控制系統(tǒng)的構成不同,作為數(shù)據(jù)源的opc服務器既可以是和opc應用程序在同一臺計算機上運行的本地opc服務器,也可以是在另外計算機上運行的遠程opc服務器。opc客戶是數(shù)據(jù)的使用者,它按照opc接口規(guī)范從opc服務器獲取所需要的數(shù)據(jù)。

          opc服務器主要包括三部分:服務器(server)、組(group)和數(shù)據(jù)項(item)。服務器對象保存服務器和服務器作為opc組對象容器的所有信息。opc組對象包括公共組和局部組(私有組)兩種,公共組由多個客戶共享,局部組只隸屬于一個opc客戶。一個組可能代表一個特殊設備的數(shù)據(jù)項,opc 客戶可以通過組對象來讀寫數(shù)據(jù),并可以設定opc服務器應該提供給opc client數(shù)據(jù)的更新速率。opc 數(shù)據(jù)項是讀寫數(shù)據(jù)的最小邏輯單位(在實際應用中,可能是物理設備的寄存器或寄存器的某一位),其數(shù)據(jù)值以variant形式表示,每個數(shù)據(jù)項包括值(value)、品質(quality)和時間戳(time stamp)3個變量。在一個組對象中,opc 客戶可以加入多個opc數(shù)據(jù)項。

          opc客戶與opc服務器的接口有自定義接口(custom interface)和自動化接口(automation interface)兩種形式。自定義接口是一組com接口,主要用于采用c++語言的應用程序開發(fā);自動化接口是自動化的ole接口,主要用于采用vb,delphi等基于腳本編程語言的應用程序開發(fā)。對于客戶端應用程序的開發(fā),采用自定義接口的方式運行效率高,但開發(fā)難度較大;采用自動化接口的方式運行效率低,但開發(fā)簡單。這兩種接口與opc服務器的通信方式可用1圖所示。

          8.jpg
          圖1 自定義接口和自動化接口與opc服務器通信方式示意圖

          對于分布式計算機上的opc客戶程序的開發(fā),opc標準采用dcom技術實現(xiàn)服務器和客戶程序的通訊。

          opc的數(shù)據(jù)訪問主要有同步數(shù)據(jù)訪問和異步數(shù)據(jù)訪問兩種方式。同步數(shù)據(jù)訪問時,opc服務器在將按照opc應用程序要求的數(shù)據(jù)返回之前,opc應用程序一直處于等待狀態(tài),也就是說,同步方式的數(shù)據(jù)訪問在要求的動作沒有完成前不能執(zhí)行任何opc應用程序側的處理。與之相比,異步方式的數(shù)據(jù)訪問在對opc服務器提出數(shù)據(jù)訪問要求后,立即返回到opc應用程序側的主處理程序中,opc服務器完成數(shù)據(jù)訪問時通知opc應用程序,opc應用程序從而得到數(shù)據(jù)訪問結果。當opc應用程序采用自動化接口訪問opc服務器時,同步和異步數(shù)據(jù)操作分別由syncread、syncwrite和asyncread、asyncwrite四個opc組對象的方法函數(shù)來實現(xiàn)。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();