首页 WinCC与EXCEL通讯配置与研究

WinCC与EXCEL通讯配置与研究

举报
开通vip

WinCC与EXCEL通讯配置与研究1、DDE简介 动态数据交换(DDE)是基于Windows的消息机制,两个Windows应用程序通过相互之间传递消息进行“对话”,这两个程序被分别称为“服务器”和“客户”。DDE服务器是一个维护着其他Windows程序可能使用的数据程序,而DDE客户则是从服务器获得这些数据的程序。 DDE对话是由客户程序发动的。客户程序将一条称为WM_DDE_INTITIATE的消息发给当前运行的所有Windows程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE服务器可以响应这条消息,这样一个对话就开始了。 D...

WinCC与EXCEL通讯配置与研究
1、DDE简介 动态数据交换(DDE)是基于Windows的消息机制,两个Windows应用程序通过相互之间传递消息进行“对话”,这两个程序被分别称为“服务器”和“客户”。DDE服务器是一个维护着其他Windows程序可能使用的数据程序,而DDE客户则是从服务器获得这些数据的程序。 DDE对话是由客户程序发动的。客户程序将一条称为WM_DDE_INTITIATE的消息发给当前运行的所有Windows程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE服务器可以响应这条消息,这样一个对话就开始了。 DDE的对话方式有3种: ①服务器数据变化时,直接把数据送给客户,由客户对这些数据进行处理,这类对话方式称为热链;②服务器的数据变化时,服务器 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 客户,再由客户取数据,这种方式称为温链; ③由客户申请数据、服务器发送数据的方式称为冷链。 一、Wincc作为DDE的客户端,Excel作为DDE服务器(本地) 1、在变量管理上按鼠标右键--添加新的驱动程序--选“windows dde.chn” 图1 2、在DDE上按鼠标右键--新驱动程序连接--点属性,在其连接属性中: “计算机名称”为空;“应用程序”为excel;“主题”为[]工作表名,比如[DDE.xls]sheet1。 图2 3、在DDE\excel下建变量,在变量属性中选择地址,条目名称填:r行数c列数,比如r1c1(表示第一行第一列的单元格),重复步骤3可以加入更多的DDE变量 图3 4、Excel程序 图4 Wincc程序 图5 5 完成  用OPC做比较省事。 WinCC做OPC Server,Excel做OPC Client。 这种情况下,WinCC端不需要做任何设置,只要在Excel 里用少量的代码就能实现双方的通讯。 对于WINCC与S7-300的通讯,首先要确定PLC的通讯口类型,PLC一般都集成了MPI/DP口,还可以安装通讯模块。计算机(PC)上安装适当的通讯卡(不同的通讯卡支持的通讯 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 不同)。看你需要啦! 其次是WINCC软件里的通讯协议要与PC机对应。WINCC提供了SIMATIC S7 PROTOCOL SUITE 通讯驱动程序,包含了多种通讯协议! 最终还有自己亲自实际操作了才有深刻的了解的!! Sub X6309X94AE9X0000X6539_OnClick(Byval Item)    Dim fso,myfile Set fso = CreateObject("scripting.FileSystemObject") Set MyFile = fso.GetFile("d:\Excelcode.xls") Dim ObjExcelApp Set objExcelApp = CreateObject("Excel.Application") 'objExcelApp.Visible = True objExcelApp.Workbooks.Open MyFile '上面的程序段是为了打开d盘下叫Excelcode.xls名字的excel文件 objExcelApp.worksheets ("sheet1").Cells(1, 1).VAlue = HMIRuntime.Tags("usercodenew1").read objExcelApp.ActiveWorkbook.Save '上面两行的作用是将wincc变量"usercodenew1"的值写到Excel表中的A1格子里面,并且保持一下 Dim coldold Set coldold=HMIRuntime.Tags("usercodeold1") coldold.Value = objExcelApp.worksheets ("sheet1").Cells(1, 1).value '上面这两句的作用是将刚才保持到Excel表格中的数据重新读回wincc,存到"usercodeold1"变量中,当然现在其实并没有存入"usercodeold1"变量,只是存在了叫coldold的临时变量里面 objExcelApp.Workbooks.Close objExcelApp.Quit Set ObjEXceLapp = Nothing '到这里为止,我们可以通过上面的语句关闭刚才打开的excel程序了 coldold.Write '最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中 End Sub 上面这个例子已经调试通过。网上有很多wincc值写入excel中的例子,一直找不到从excel中读取数据到wincc中的例子,结合网上朋友的一些经验,这里给出个小例子,供大家参考。 估计考虑到后些天要用到EXCEL与WINCC的通讯,我看了些书,在西门子的论坛上看到了一个现场做好的通讯成功例子.通过自己来做,通讯成功. 例子地址:#anch 现总结一下: 1 WINCC作为OPC服务器,勿需添加OPC通道.在例子中,只在内部变量中,建立6个内部变量,内部变量为有符号的16位数,名称分别为,a,b,c,d,e,f.(当然如果身边有PLC在,可以建立过程变量,为了方便运行,建立内部变量),分别在a,b,c,d,e,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的上分别对应 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 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,创建组和添加条目 '------------------------------------------------- -------------------- 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 '----------- 得到一个OPC服务器的实例 Set MyOPCServer = New OPCServer MyOPCServer.Connect ServerName, NodeName Set MyOPCGroupColl = MyOPCServer.OPCGroups '----------- 为添加组设置缺省的激活状态 MyOPCGroupColl.DefaultGroupIsActive = True '----------- 添加组至收集 Set MyOPCGroup = MyOPCGroupColl.Add(GroupName) Set MyOPCItemColl = MyOPCGroup.OPCItems '----------- 添加一个条目、返回ServerHandles MyOPCItemColl.AddItems 6, ItemIDs(), ClientHandles(), ServerHandles(), Errors '----------- 用于接受不同的信息组 MyOPCGroup.IsSubscribed = True Exit Sub ErrorHandler: MsgBox "Error: " & Err.Description, vbCritical, "ERROR" End Sub '------------------------------------------------- -------------------- ' Sub StopClient() ' 目的:从服务器释放对象并且断开连接 '------------------------------------------------- -------------------- Sub StopClient() '----------- 释放组和服务器对象 MyOPCGroupColl.RemoveAll '----------- 与服务器断开连接并且清除 MyOPCServer.Disconnect Set MyOPCItemColl = Nothing Set MyOPCGroup = Nothing Set MyOPCGroupColl = Nothing Set MyOPCServer = Nothing End Sub '------------------------------------------------- -------------------- ' Sub MyOPCGroup_DataChange() ' 目的:组中的数值、质量或时间标志改变时,该事件激活 '------------------------------------------------- -------------------- '----------- 如果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) '----------- 设置数据表单元值为数值读 For ii = 1 To NumItems itemv(ClientHandles(ii)) = itemvalues(ii) Next ii Range("d3").Value = (itemv(1)) Range("d4").Value = (itemv(2)) Range("d5").Value = (itemv(3)) Range("d6").Value = (itemv(4)) Range("d7").Value = (itemv(5)) 注意:excel启动宏之前先启动WINCC运行。 在本实例中,将在Microsoft Excel中使用Visual Basic编辑器创建一个OPC DA客户机。OPC DA客户机读取WinCC OPC DA服务器的WinCC项目中的一个WinCC变量,并将值写入单元格中。如果在单元格中输入一个新值,该值将会被传送到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编辑器的基本知识。 步骤 步骤 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 从“文件”菜单中选择“保存”。从“文件”菜单中选择“关闭并返回到Microsoft Excel”。     2.    在Microsoft Excel中组态对一个WinCC变量的访问 引言 Excel OPC DA客户机读取WinCC OPC DA服务器的WinCC变量并将变量值写入单元格中。在WinCC OPC DA服务器的WinCC项目中,变量值显示在一个I/O域内。如果单元格中的变量值改变,则在WinCC OPC DA服务器I/O域中的数值也随之改变。 先决条件 l 在WinCC OPC DA服务器的WinCC项目中,组态名称为“OPC_Excel”,数据类型为“有符号16位数”的内部变量。 l 将“OPC_Excel”变量的数值写入WinCC OPC DA服务器的WinCC项目的I/O域内。 l 启用WinCC OPC DA服务器的WinCC项目。 步骤 步骤 1 在Microsoft Excel的单元格A1中,输入用作OPC服务器的计算机名称。在单元格A2中,输入变量名称“OPC_Excel”。 2 在Excel的“工具”菜单中,选择“宏”“宏...”。出现“宏”对话框。从宏列表中选择条目“Sheet1.StartClient”。单击“运行”以启动OPC客户机。 3 在单元格B2中写入变量的数值,在C2中写入质量代码,在D2中写入时间标志.. 4 在单元格B3中输入新的数值。更改后的数值将显示在WinCC OPC DA服务器上的I/O域内。 5 在Excel的“工具”菜单中,选择“宏”“宏...”。出现“宏”对话框。从宏列表中选择条目“Sheet1.StopClient”。单击“运行”停止OPC客户机。    
本文档为【WinCC与EXCEL通讯配置与研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_180829
暂无简介~
格式:doc
大小:44KB
软件:Word
页数:12
分类:互联网
上传时间:2019-02-28
浏览量:46