




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、DDE簡介動(dòng)態(tài)數(shù)據(jù)交換(DDE)是基于Windows的消息機(jī)制,兩個(gè)Windows應(yīng)用程序通過相互之間傳遞消息進(jìn)行“對(duì)話”,這兩個(gè)程序被分別稱為“服務(wù)器”和“客戶”。DDE服務(wù)器是一個(gè)維護(hù)著其他Windows程序可能使用的數(shù)據(jù)程序,而DDE客戶則是從服務(wù)器獲得這些數(shù)據(jù)的程序。DDE對(duì)話是由客戶程序發(fā)動(dòng)的??蛻舫绦?qū)⒁粭l稱為WM_DDE_INTITIATE的消息發(fā)給當(dāng)前運(yùn)行的所有Windows程序,這條消息指明了客戶程序所需要的數(shù)據(jù)類別,擁有這些數(shù)據(jù)的DDE服務(wù)器可以響應(yīng)這條消息,這樣一個(gè)對(duì)話就開始了。DDE的對(duì)話方式有3種: 服務(wù)器數(shù)據(jù)變化時(shí),直接把數(shù)據(jù)送給客戶,由客戶對(duì)這些數(shù)據(jù)進(jìn)行處理,這類對(duì)話方式稱為熱鏈;服務(wù)器的數(shù)據(jù)變化時(shí),服務(wù)器通知客戶,再由客戶取數(shù)據(jù),這種方式稱為溫鏈; 由客戶申請(qǐng)數(shù)據(jù)、服務(wù)器發(fā)送數(shù)據(jù)的方式稱為冷鏈。 一、Wincc作為DDE的客戶端,Excel作為DDE服務(wù)器(本地)1、在變量管理上按鼠標(biāo)右鍵添加新的驅(qū)動(dòng)程序選“windows dde.chn” 圖12、在DDE上按鼠標(biāo)右鍵新驅(qū)動(dòng)程序連接點(diǎn)屬性,在其連接屬性中:“計(jì)算機(jī)名稱”為空;“應(yīng)用程序”為excel;“主題”為工作表名,比如DDE.xlssheet1。圖23、在DDEexcel下建變量,在變量屬性中選擇地址,條目名稱填:r行數(shù)c列數(shù),比如r1c1(表示第一行第一列的單元格),重復(fù)步驟3可以加入更多的DDE變量 圖34、Excel程序圖4Wincc程序圖5完成用OPC做比較省事。WinCC做OPCServer,Excel做OPCClient。這種情況下,WinCC端不需要做任何設(shè)置,只要在Excel里用少量的代碼就能實(shí)現(xiàn)雙方的通訊。對(duì)于WINCC與S7-300的通訊,首先要確定PLC的通訊口類型,PLC一般都集成了MPI/DP口,還可以安裝通訊模塊。計(jì)算機(jī)(PC)上安裝適當(dāng)?shù)耐ㄓ嵖ǎú煌耐ㄓ嵖ㄖС值耐ㄓ崊f(xié)議不同)。看你需要啦!其次是WINCC軟件里的通訊協(xié)議要與PC機(jī)對(duì)應(yīng)。WINCC提供了SIMATICS7PROTOCOLSUITE通訊驅(qū)動(dòng)程序,包含了多種通訊協(xié)議!最終還有自己親自實(shí)際操作了才有深刻的了解的!Sub X6309X94AE9X0000X6539_OnClick(Byval Item) Dim fso,myfileSet fso = CreateObject(scripting.FileSystemObject)Set MyFile = fso.GetFile(d:Excelcode.xls)Dim ObjExcelAppSet objExcelApp = CreateObject(Excel.Application)objExcelApp.Visible = TrueobjExcelApp.Workbooks.Open MyFile上面的程序段是為了打開d盤下叫Excelcode.xls名字的excel文件objExcelApp.worksheets (sheet1).Cells(1, 1).VAlue = HMIRuntime.Tags(usercodenew1).readobjExcelApp.ActiveWorkbook.Save上面兩行的作用是將wincc變量usercodenew1的值寫到Excel表中的A1格子里面,并且保持一下Dim coldoldSet coldold=HMIRuntime.Tags(usercodeold1)coldold.Value = objExcelApp.worksheets (sheet1).Cells(1, 1).value上面這兩句的作用是將剛才保持到Excel表格中的數(shù)據(jù)重新讀回wincc,存到usercodeold1變量中,當(dāng)然現(xiàn)在其實(shí)并沒有存入usercodeold1變量,只是存在了叫coldold的臨時(shí)變量里面objExcelApp.Workbooks.CloseobjExcelApp.QuitSet ObjEXceLapp = Nothing到這里為止,我們可以通過上面的語句關(guān)閉剛才打開的excel程序了coldold.Write 最后是把讀到的excel值從臨時(shí)變量coldold中寫入它對(duì)應(yīng)的usercodeold1變量中End Sub上面這個(gè)例子已經(jīng)調(diào)試通過。網(wǎng)上有很多wincc值寫入excel中的例子,一直找不到從excel中讀取數(shù)據(jù)到wincc中的例子,結(jié)合網(wǎng)上朋友的一些經(jīng)驗(yàn),這里給出個(gè)小例子,供大家參考。估計(jì)考慮到后些天要用到EXCEL與WINCC的通訊,我看了些書,在西門子的論壇上看到了一個(gè)現(xiàn)場做好的通訊成功例子.通過自己來做,通訊成功. 例子地址:/club/bbs/post.asp?b_id=5&a_i d=53940&s_id=0&num=49#anch 現(xiàn)總結(jié)一下: 1 WINCC作為OPC服務(wù)器,勿需添加OPC通道.在例子中,只在內(nèi)部變量中,建立6個(gè)內(nèi)部變量,內(nèi)部變量為有符號(hào)的16位數(shù),名稱分別為,a,b,c,d,e,f.(當(dāng)然如果身邊有PLC在,可以建立過程變量,為了方便運(yùn)行,建立內(nèi)部變量),分別在a,b,c,d,e,f中的限制/報(bào)表中,設(shè)置其開始值,為1,2,3,4,5,6. 注意:計(jì)算機(jī)-屬性中的計(jì)算機(jī)名稱要與本計(jì)算機(jī)名稱一致 在WINCC中建立一頁面,用按鈕來改變a,b,c,d,e,f的值,如果通訊成功,在EXCEL中也會(huì)隨之改變. 2 新建立一個(gè)EXCEL文件,打開文件,工具-宏-VB編輯器,打開EXCEL的VB編輯器. 3 在VB編輯器里,工具-引用,在彈出窗口中,找Siemens OPC DAAutomation 2.0,勾上 :) 4 雙擊sheet1,打開sheet1的代碼窗口,然后將程序(程序代碼在頁面的最后)復(fù)制到代碼窗口. 5 在EXCEL的上分別對(duì)應(yīng) C2-計(jì)算機(jī)名 C3-a C4-b C5-c C6-d C7-e C8-f 6 在EXCEL總,工具-宏,選擇sheet1.startclient,啟動(dòng) 7 完了 代碼: Option Explicit Option Base 1 Const ServerName = OPCServer.WinCC Dim WithEvents MyOPCServer As OPCServer Dim WithEvents MyOPCGroup As OPCGroup Dim MyOPCGroupColl As OPCGroups Dim MyOPCItemColl As OPCItems Dim MyOPCItems As OPCItems Dim MyOPCItem As OPCItem Dim ClientHandles(6) As Long Dim ServerHandles() As Long Dim Values(1) As Variant Dim Errors() As Long Dim ItemIDs(6) As String Dim GroupName As String Dim NodeName As String Dim itemv(6) As Variant Dim ii As Integer - - Sub StartClient() 目的:連接至OPC_server,創(chuàng)建組和添加條目 - - Sub StartClient() On Error GoTo ErrorHandler - 可以自由選擇ClientHandle和GroupName For ii = 1 To 6 ClientHandles(ii) = ii Next ii GroupName = MyGroup - 從單元“A1”得到ItemID NodeName = Range(c2).Value ItemIDs(1) = Range(c3).Value ItemIDs(2) = Range(c4).Value ItemIDs(3) = Range(c5).Value ItemIDs(4) = Range(c6).Value ItemIDs(5) = Range(c7).Value ItemIDs(6) = Range(c8).Value - 得到一個(gè)OPC服務(wù)器的實(shí)例 Set MyOPCServer = New OPCServer MyOPCServer.Connect ServerName, NodeName Set MyOPCGroupColl = MyOPCServer.OPCGroups - 為添加組設(shè)置缺省的激活狀態(tài) MyOPCGroupColl.DefaultGroupIsActive = True - 添加組至收集 Set MyOPCGroup = MyOPCGroupColl.Add(GroupName) Set MyOPCItemColl = MyOPCGroup.OPCItems - 添加一個(gè)條目、返回ServerHandles MyOPCItemColl.AddItems 6, ItemIDs(), ClientHandles(), ServerHandles(), Errors - 用于接受不同的信息組 MyOPCGroup.IsSubscribed = True Exit Sub ErrorHandler: MsgBox Error: & Err.Description, vbCritical, ERROR End Sub - - Sub StopClient() 目的:從服務(wù)器釋放對(duì)象并且斷開連接 - - Sub StopClient() - 釋放組和服務(wù)器對(duì)象 MyOPCGroupColl.RemoveAll - 與服務(wù)器斷開連接并且清除 MyOPCServer.Disconnect Set MyOPCItemColl = Nothing Set MyOPCGroup = Nothing Set MyOPCGroupColl = Nothing Set MyOPCServer = Nothing End Sub - - Sub MyOPCGroup_DataChange() 目的:組中的數(shù)值、質(zhì)量或時(shí)間標(biāo)志改變時(shí),該事件激活 - - - 如果OPC-DA Automation 2.1被安裝,使用: Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, itemvalues() As Variant, Qualities() As Long, TimeStamps() As Date) - 設(shè)置數(shù)據(jù)表單元值為數(shù)值讀 For ii = 1 To NumItems itemv(ClientHandles(ii) = itemvalues(ii) Next ii Range(d3).Value = /qz.q/CStr(itemv(1) Range(d4).Value = /qz.q/CStr(itemv(2) Range(d5).Value = /qz.q/CStr(itemv(3) Range(d6).Value = /qz.q/CStr(itemv(4) Range(d7).Value = /qz.q/CStr(itemv(5) 注意:excel啟動(dòng)宏之前先啟動(dòng)WINCC運(yùn)行。在本實(shí)例中,將在Microsoft Excel中使用Visual Basic編輯器創(chuàng)建一個(gè)OPC DA客戶機(jī)。OPC DA客戶機(jī)讀取WinCC OPC DA服務(wù)器的WinCC項(xiàng)目中的一個(gè)WinCC變量,并將值寫入單元格中。如果在單元格中輸入一個(gè)新值,該值將會(huì)被傳送到WinCC OPC DA服務(wù)器。需要一臺(tái)上面同時(shí)安裝了WinCC和Microsoft Excel的計(jì)算機(jī)來設(shè)置連接。組態(tài)步驟在Microsoft Excel中需要進(jìn)行下列組態(tài):1.在Microsoft Excel的Visual Basic編輯器中創(chuàng)建一個(gè)OPC DA客戶機(jī)引言要將Microsoft Excel用作OPC DA客戶機(jī),必須在Microsoft Excel的Visual Basic編輯器中創(chuàng)建相應(yīng)的腳本。要求如何在Microsoft Excel中使用Visual Basic編輯器的基本知識(shí)。步驟步驟1打開Microsoft Excel,將出現(xiàn)新的工作簿。2在“工具”菜單中,選擇“宏”“Visual Basic編輯器”。這將啟動(dòng)Microsoft Excel的Visual Basic編輯器。3在“Visual Basic編輯器”的“工具”菜單中選擇“引用.”。出現(xiàn)標(biāo)題為“引用- VBAProject”的對(duì)話框。在可用參考的列表中找到條目“Siemens OPC DAAutomation 2.0”。標(biāo)記相應(yīng)的復(fù)選框。單擊“確定”。4單擊此處。復(fù)制腳本。該腳本僅在在線幫助中可用。5雙擊Visual Basic編輯器項(xiàng)目窗口中的“Sheet1”,打開新的代碼窗口。6將腳本粘貼到代碼窗口中。7從“文件”菜單中選擇“保存”。從“文件”菜單中選擇“關(guān)閉并返回到Microsoft Excel”。2.在Microsoft
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店業(yè)綠色環(huán)保技術(shù)應(yīng)用-全面剖析
- 酮替芬對(duì)哮喘治療效果評(píng)估-全面剖析
- 八年級(jí)數(shù)學(xué)實(shí)驗(yàn)教學(xué)計(jì)劃
- 跨平臺(tái)用戶數(shù)據(jù)流動(dòng)監(jiān)管-全面剖析
- 2025學(xué)校心理健康與疫情防控職責(zé)
- 2025年婦產(chǎn)科護(hù)理工作計(jì)劃
- 二年級(jí)語文教學(xué)目標(biāo)與計(jì)劃
- 機(jī)場建設(shè)項(xiàng)目施工進(jìn)度保障措施
- 虛擬環(huán)境自適應(yīng)技術(shù)-全面剖析
- 靜態(tài)傳動(dòng)部件性能評(píng)估-全面剖析
- 廣州廣州市天河區(qū)華陽小學(xué)-畢業(yè)在即家校共話未來-六下期中家長會(huì)【課件】
- 公司事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)制度
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)(創(chuàng)新創(chuàng)業(yè)課程)完整全套教學(xué)課件
- DL∕T 5210.6-2019 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第6部分:調(diào)整試驗(yàn)
- GB/T 23468-2009墜落防護(hù)裝備安全使用規(guī)范
- 影像診斷與手術(shù)后符合率統(tǒng)計(jì)表
- 2023年北京亦莊國際投資發(fā)展有限公司招聘筆試題庫及答案解析
- ansys電磁場分析經(jīng)典教程
- 美國數(shù)學(xué)競賽AMC8講座課件
- 2020年國家義務(wù)教育質(zhì)量測查德育科目模塊一模擬試題含參考答案
- 導(dǎo)管固定-PPT課件
評(píng)論
0/150
提交評(píng)論