新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DDE與OPC技術在工業自動化系統中的應用

        DDE與OPC技術在工業自動化系統中的應用

        作者: 時間:2012-08-14 來源:網絡 收藏

        4 利用vb開發dde與opc客戶端

        如上所述,目前許多scada軟件都采用了dde、opc技術規范作為其軟件接口,而scada監控軟件在實際工程應用中則扮演了dde、opc客戶端的角色。另外,wonderware公司的wwclient,siemens公司的simatic net opc scout和rockwell-ab公司的opc test client等測試軟件也都是dde、opc客戶端軟件的實例。

        dde、opc客戶端軟件可采用visual c++、visual basic、delphi等編程軟件實現,這里主要對如何用visual basic 6.0編寫dde、opc 客戶端實現和dde、opc 服務器通訊的方法分別予以介紹。

        4.1 利用vb開發dde 客戶端

        作為microsoft 公司軟件產品的重要一員,visual basic理所當然的對windows操作系統的下的dde技術給予支持。visual basic為一些控件提供了用于dde動態數據交換的linktopic、linkitem、linktimeout、linkmode等屬性,以及linkrequest、linkpoke、linkexecute、linksend等方法。其中,linktopic、linkitem兩項屬性分別對應于dde通訊架構中的主題名和數據項名,linktimeout、linkmode分別表示dde 客戶端與dde服務器的嘗試連接時間和連接模式(數據交換方式),linkmode有manual、notify、automatic三種方式,而automatic方式最為常用,它主要用于和dde server建立“熱連接(hot link)”,即在dde服務器數據發生變化時主動發送數據給客戶端。linkrequest、linkpoke分別用于dde 客戶端對dde服務器數據的讀寫操作。

        根據應用程序與服務器程序dde方式通訊機制,可以在visual basic編程環境下開發適合實際需要的dde客戶端應用程序。例如,visual basic訪問intouch 程序變量“intouchtag”時,其代碼為
        label1.linktopic= "view|tagn-ame"
        label1.linkitem= "intouchtag"
          label1.linkmode=1
          label1.linkrequest

        其中,代碼中的“view”和“tagname”分別表示intouch windowviewer的應用程序名和主題名,“linkmode”值為1表示該應用程序與windowviewer的連接方式為automatic(即“熱連接”)方式。這樣,當該應用代碼被執行時,label1的值便隨intouch windowviewer“intouchtag”變量的變化而變化。

        同樣可以在visual basic中添加label2、label3,并建立和dassidirect、rsllinx的dde通訊連接,使其分別隨所連接s7-300 plc數據db5.dbw20、controllogix 1756-l55 plc全局變量“linxlogixtag”數值的變化而變化,其代碼分別如下:

          label2.linktopic = "dassidire-ct|dasvrtopic"
          label2.linkitem = "db5.w20"
          label2.linkmode = 1
          label2.linkrequest
          label3.linktopic = "rslinx|" “rslinxtopic”
          label3.linkitem= "linxlogixtag"
          label3.linkmode = 1
          label3.linkrequest

        其中,“dassidirect”和“dasvrtopic”、“rslinx”和“rslinxtopic”分別為dassidirect和rslinx的應用程序名以及在dassidirect和rslinx dde服務器中建立的主題名。而“db5.w20”和“linxlogixtag”則分別對應于s7-300 plc數據db5.dbw20和controllogix 1756-l55 plc全局變量linxlogixtag,這樣,該段代碼被執行時,label2和label3的數值將隨plc中數據db5.dbw20與linxlogixtag變量值的變化而變化。

        netdde是dde的網絡擴展形式,主要為網絡上不同計算機之間的動態數據交換提供方便。在visual basic編程環境下,也可以開發基于netdde的客戶端應用程序。與開發dde客戶端不同的是,網絡上作為dde服務器和客戶端的計算機都要啟動netdde.exe服務,并在作為dde服務器的計算機上同時啟動ddeshare.exe程序,對新建的dde共享進行必要的設置。如下代碼的功能為計算機pc02讀取pc01計算機上rslinx dde服務器所采集的"linxlogixtag" plc變量的值。

          label4.linktopic= "pc01ndde$|pc01shrnm"
          label4.linkitem= "linxlogixtag"
          label4.linkmode=1
          label4.linkrequest

        由于netdde的訪問采用了“計算機名>ndde$>|共享名>!變量名>”的形式,所以,上述代碼中的“pc01”、“pc01shrnm”分別為dde服務器的計算機名和ddeshare.exe程序中的新建共享名,而dde訪問所需要的應用程序名rslinx和主題名rslinxtopic則在新建共享“pc01shrnm”的屬性對話框中進行了設置。

        此外,由于excel也支持dde技術,所以pc01計算機上rslinx dde服務器plc變量linxlogixtag的變化也可以在pc02計算機excel表格中得到體現,只需要在需要顯示該值的單元格中填寫如下代碼=‘pc01ndde$‘|pc01shrnm!linxlogixtag

        4.2 利用vb開發opc 客戶端

        利用visual basic所開發的opc客戶端應用程序主要采用自動化通信接口和opc服務器程序實施通信。而opc基金會提供的opc自動化接口 opcdaauto.dll動態鏈接庫集成了所有用于對opc服務器進行訪問的對象、屬性和方法,為利用visual basic開發opc客戶端應用程序提供了極大方便。程序設計時,opc客戶程序應當首先生成opc服務器支持的opc對象,然后再使用opc對象支持的屬性和方法,實現對opc服務器的操作和訪問。

        opc數據訪問對象主要包括opc服務器(opcserver)、opc組集合(opcgroups)、opc組(opcgroup)、opc標簽集合(opcitems)、opc標簽(opcitem)、opc瀏覽器(opcbrowser)等幾個部分。程序設計時,要首先在visual basic環境下選擇對opc automation 2.0接口的引用,此時,opc對象會被自動添加到正在開發的工程項目中,然后,再根據需要建立這些對象的實例并利用其屬性和方法來實現對opc服務器的訪問。對opc服務器的訪問主要包括聲明opc對象實例、連接opc server、添加標簽變量、讀寫opc服務器(同步/異步)、斷開連接等幾個步驟。

        opc對象實例的聲明主要包括對opc服務器、opc組集合、opc組、opc標簽集合、opc服務器句柄的聲明及程序所需要的其它實例的聲明。opc客戶端和opc server的連接主要靠調用opc服務器對象實例的connect方法函數來完成,例如,連接本地計算機dassidirect和rslinx opc server 的代碼分別為connect("archestra.dassidirect.1")和connect("rslinx opc server")

        連接網絡遠程計算機(ip地址為10.144.45.45)上dassidirect和rslinx opc server 的代碼分別為connect("archestra.dassidirect.1", "10.144.45.45")和connect("rslinx opc server", "10.144.45.45")



        關鍵詞: DDE OPC 工業自動化

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沙田区| 西吉县| 阳江市| 梧州市| 桃园县| 会昌县| 阳东县| 鹿泉市| 阿鲁科尔沁旗| 县级市| 沿河| 金堂县| 商南县| 盐边县| 洪泽县| 高邑县| 花垣县| 合川市| 永修县| 溧水县| 盖州市| 施甸县| 沽源县| 临沧市| 承德县| 邵东县| 藁城市| 杭州市| 石阡县| 南投县| 中超| 政和县| 鹰潭市| 安仁县| 临邑县| 博爱县| 柘荣县| 布尔津县| 高邮市| 皮山县| 安丘市|