WinCC和EXCEL数据传递_第1页
WinCC和EXCEL数据传递_第2页
WinCC和EXCEL数据传递_第3页
WinCC和EXCEL数据传递_第4页
WinCC和EXCEL数据传递_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、DDE简介动态数据交换(DDE)是基于Windows的消息机制,两个Windows应用程序通过相互之间传递消息进行“对话”,这两个程序被分别称为“服务器”和“客户”。DDE服务器是一个维护着其他Windows程序可能使用的数据程序,而DDE客户则是从服务器获得这些数据的程序。DDE对话是由客户程序发动的。客户程序将一条称为WM_DDE_INTITIATE的消息发给当前运行的所有Windows程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE服务器可以响应这条消息,这样一个对话就开始了。DDE的对话方式有3种: 服务器数据变化时,直接把数据送给客户,由客户对这些数据进行处理,

2、这类对话方式称为热链;服务器的数据变化时,服务器通知客户,再由客户取数据,这种方式称为温链; 由客户申请数据、服务器发送数据的方式称为冷链。 一、Wincc作为DDE的客户端,Excel作为DDE服务器(本地) 1、在变量管理上按鼠标右键添加新的驱动程序选“windows dde.chn”                         

3、    图1 2、在DDE上按鼠标右键新驱动程序连接点属性,在其连接属性中:“计算机名称”为空;“应用程序”为excel;“主题”为工作表名,比如DDE.xlssheet1。图23、在DDEexcel下建变量,在变量属性中选择地址,条目名称填:r行数c列数,比如r1c1(表示第一行第一列的单元格),重复步骤3可以加入更多的DDE变量                   

4、;      图34、Excel程序 图4Wincc程序图5完成 用OPC做比较省事。WinCC做OPC Server,Excel做OPC Client。这种情况下,WinCC端不需要做任何设置,只要在Excel 里用少量的代码就能实现双方的通讯。对于WINCC与S7-300的通讯,首先要确定PLC的通讯口类型,PLC一般都集成了MPI/DP口,还可以安装通讯模块。计算机(PC)上安装适当的通讯卡(不同的通讯卡支持的通讯协议不同)。看你需要啦!其次是WINCC软件里的通讯协议要与PC机对应。WI

5、NCC提供了SIMATIC S7 PROTOCOL SUITE 通讯驱动程序,包含了多种通讯协议!最终还有自己亲自实际操作了才有深刻的了解的!Sub X6309X94AE9X0000X6539_OnClick(Byval Item)    Dim fso,myfileSet fso = CreateObject("scripting.FileSystemObject")Set MyFile = fso.GetFile("d:Excelcode.xls")Dim ObjExcelAppS

6、et 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.ActiveWorkb

7、ook.Save'上面两行的作用是将wincc变量"usercodenew1"的值写到Excel表中的A1格子里面,并且保持一下Dim coldoldSet coldold=HMIRuntime.Tags("usercodeold1")coldold.Value = objExcelApp.worksheets ("sheet1").Cells(1, 1).value'上面这两句的作用是将刚才保持到Excel表格中的数据重新读回wincc,存到"usercodeold1"变量中,当然现在其实并没有存

8、入"usercodeold1"变量,只是存在了叫coldold的临时变量里面objExcelApp.Workbooks.CloseobjExcelApp.QuitSet ObjEXceLapp = Nothing'到这里为止,我们可以通过上面的语句关闭刚才打开的excel程序了coldold.Write '最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中End Sub  上面这个例子已经调试通过。网上有很多wincc值写入excel中的例子,一直找不到从excel中读取

9、数据到wincc中的例子,结合网上朋友的一些经验,这里给出个小例子,供大家参考。估计考虑到后些天要用到EXCEL与WINCC的通讯,我看了些书,在西门子的论坛上看到了一个现场做好的通讯成功例子.通过自己来做,通讯成功. 例子地址:http:/www.s7- d=53940&s_id=0&num=49#anch 现总结一下: 1 WINCC作为OPC服务器,勿需添加OPC通道.在例子中,只在内部变量中,建立6个内部变量,内部变量为有符号的16位数,名称分别为,a,b,c,d,e,f.(当然如果身边有PLC在,可以建立过程变量,为了方便运行,建立内部变量),分别在a,b,c,d,e

10、,f中的限制/报表中,设置其开始值,为1,2,3,4,5,6. 注意:计算机->属性中的计算机名称要与本计算机名称一致 在WINCC中建立一页面,用按钮来改变a,b,c,d,e,f的值,如果通讯成功,在EXCEL中也会随之改变. 2 新建立一个EXCEL文件,打开文件,工具->宏->VB编辑器,打开EXCEL的VB编辑器. 3 在VB编辑器里,工具->引用,在弹出窗口中,找Siemens OPC DAAutomation 2.0,勾上 :) 4 双击sheet1,打开sheet1的代码窗口,然后将程序(程序代码在页面的最后)复制到代码窗口. 5 在EXCEL的上分别对应

11、 C2->计算机名 C3->a C4->b C5->c C6->d C7->e C8->f 6 在EXCEL总,工具->宏,选择sheet1.startclient,启动 7 完了 代码: Option Explicit Option Base 1 Const ServerName = "OPCServer.WinCC" Dim WithEvents MyOPCServer As OPCServer Dim WithEvents MyOPCGroup As OPCGroup Dim MyOPCGroupColl As OPCG

12、roups 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 Int

13、eger '- - ' Sub StartClient() ' 目的:连接至OPC_server,创建组和添加条目 '- - 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")

14、.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 '- 得到一个OPC服务器的实例 Set MyOPCServer = New OPCS

15、erver MyOPCServer.Connect ServerName, NodeName Set MyOPCGroupColl = MyOPCServer.OPCGroups '- 为添加组设置缺省的激活状态 MyOPCGroupColl.DefaultGroupIsActive = True '- 添加组至收集 Set MyOPCGroup = MyOPCGroupColl.Add(GroupName) Set MyOPCItemColl = MyOPCGroup.OPCItems '- 添加一个条目、返回ServerHandles MyOPCItemColl.A

16、ddItems 6, ItemIDs(), ClientHandles(), ServerHandles(), Errors '- 用于接受不同的信息组 MyOPCGroup.IsSubscribed = True Exit Sub ErrorHandler: MsgBox "Error: " & Err.Description, vbCritical, "ERROR" End Sub '- - ' Sub StopClient() ' 目的:从服务器释放对象并且断开连接 '- - Sub StopClie

17、nt() '- 释放组和服务器对象 MyOPCGroupColl.RemoveAll '- 与服务器断开连接并且清除 MyOPCServer.Disconnect Set MyOPCItemColl = Nothing Set MyOPCGroup = Nothing Set MyOPCGroupColl = Nothing Set MyOPCServer = Nothing End Sub '- - ' Sub MyOPCGroup_DataChange() ' 目的:组中的数值、质量或时间标志改变时,该事件激活 '- - '- 如果O

18、PC-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) '- 设置数据表单元值为数值读 For ii = 1 To NumItems itemv(ClientHandles(ii) = itemvalues(ii) Next ii

19、Range("d3").Value = Range("d4").Value = Range("d5").Value = Range("d6").Value = Range("d7").Value = 注意:excel启动宏之前先启动WINCC运行。在本实例中,将在Microsoft Excel中使用Visual Basic编辑器创建一个OPC DA客户机。OPC DA客户机读取WinCC OPC DA服务器的WinCC项目中的一个WinCC变量,并将值写入单元格中。如果在单元格中输入一个新值,该

20、值将会被传送到WinCC OPC DA服务器。需要一台上面同时安装了WinCC和Microsoft Excel的计算机来设置连接。 组态步骤在Microsoft Excel中需要进行下列组态:1.    在Microsoft Excel的Visual Basic编辑器中创建一个OPC DA客户机引言要将Microsoft Excel用作OPC DA客户机,必须在Microsoft Excel的Visual Basic编辑器中创建相应的脚本。要求如何在Microsoft Excel中使用Visual Basic编辑器的基本知识。步骤 步

21、骤1打开Microsoft Excel,将出现新的工作簿。2在“工具”菜单中,选择“宏”“Visual Basic编辑器”。这将启动Microsoft Excel的Visual Basic编辑器。3在“Visual Basic编辑器”的“工具”菜单中选择“引用.”。出现标题为“引用 - VBAProject”的对话框。在可用参考的列表中找到条目“Siemens OPC DAAutomation 2.0”。标记相应的复选框。单击“确定”。4单击此处。 复制脚本。该脚本仅在在线帮助中可用。  5双击Visual Basic编辑器项目窗口中的“Sheet1”,打开新的代码窗口。6将脚本粘贴到代码窗口中。7从“文件”菜单中选择“保存”。从“文件”菜单中选择“关闭并返回到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论