发布于 2004-03-23 19:49:04
0楼
你有无仔细看vb代码?excel连接wincc opc的路径主要是这样得到的:
Const ServerName = "OPCServer.WinCC"---要连的是wincc的opc服务,而不是别的服务。
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---变量声明,这些变量都被声明为opc才认得的变量类型。
Dim ClientHandles(1) As Long
Dim ServerHandles() As Long
Dim Values(1) As Variant
Dim Errors() As Long
Dim ItemIDs(1) As String
Dim GroupName As String
Dim NodeName As String---还是变量声明,这些变量都被声明为vb都能认得的变量类型。
NodeName = Range("A1").Value---从excel的A1单元格得到要连的wincc opc服务器的节点名,也就是确定wincc所在的计算机名,这里仅仅是得到,后面要用。
ItemIDs(1) = Range("A2").Value---这里指定了要从wincc读的变量的名称是excel中A2里指定的那个,注意A2中的内容就对应你wincc中的TagD的名称,如果wincc中没有A2中描写的那个变量,你的excel就读不到什么。
Set MyOPCServer = New OpcServer---正式启动opc服务
MyOPCServer.Connect ServerName, NodeName---连接的opc服务是前面确定的节点。
Set MyOPCGroupColl = MyOPCServer.OPCGroups
MyOPCGroupColl.DefaultGroupIsActive = True
Set MyOPCGroup = MyOPCGroupColl.Add(GroupName)
Set MyOPCItemColl = MyOPCGroup.OPCItems
MyOPCItemColl.AddItems 1, ItemIDs, ClientHandles, ServerHandles, Errors
MyOPCGroup.IsSubscribed = True---这些也是必须的,这里只确定一个组集,所以不太好理解,如果要多个组集,看起来还明白些,差不多这样就连好了,一旦执行,wincc中名字等于"A2"中的Tag就会传到excel中你规定的单元格的。