以下程序为EXCEL OPC 读取WINCC 值本机读取已经实现。怎么实现读取局域网其他机子的WINCC OPC SERVER 变量?

已锁定

www95

西门子1847工业学习平台

  • 帖子

    163
  • 精华

    1
  • 被关注

    17

论坛等级:游侠

注册时间:2006-04-25

普通 普通 如何晋级?

以下程序为EXCEL OPC 读取WINCC 值本机读取已经实现。怎么实现读取局域网其他机子的WINCC OPC SERVER 变量?

985

3

2010-11-02 09:01:24

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.Des cription, 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 = CStr(itemv(1))

Range("d4").Value = CStr(itemv(2))

Range("d5").Value = CStr(itemv(3))

Range("d6").Value = CStr(itemv(4))

Range("d7").Value = CStr(itemv(5))

Range("d8").Value = CStr(itemv(6))

End Sub

//------------------------------------
我如果只是改成这样的话,就出错了。
Const ServerName = "\\MYCOMPUTER\OPCServer.WinCC"
\\MYCOMPUTER\为局域网其他计算机名称。

其他OPC客户端也不能访问
以下程序为EXCEL OPC 读取WINCC 值本机读取已经实现。怎么实现读取局域网其他机子的WINCC OPC SERVER 变量? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32566条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。