求救:斑竹,vb通过opc访问wincc,在线等

已锁定

柳林

  • 帖子

    925
  • 精华

    2
  • 被关注

    2

论坛等级:侠士

注册时间:2005-06-07

普通 普通 如何晋级?

求救:斑竹,vb通过opc访问wincc,在线等

1747

16

2005-06-15 20:59:07

我在wincc内部变量中建立了两个有符号16位数,分别TAG1和TAG2,现在想用vb来读取这两个数据放到text控件中,DCOM配置按照要求来的,没问题,而且我把程序和wincc在一台电脑上,不光是读不到数据,连服务器对象都连不上。急呀。下面是我的程序:请高手过目,服务器名次是OPCServer.WinCC,组对象我写的是Internaltags,不知道对不对。
Option Explicit
Option Base 1

Dim WithEvents MyOPCServer As OPCServer
Dim WithEvents MyOPCGroup As OPCGroup
Private ClientHandles() As Long
Private ServerHandles() As Long
Private Errors() As Long



Private SName As String ' 服务器名称

Private ItemIDs() As String
Private SNode As String '计算机名或者网址
Private ItemAnz As Long
Dim cell(2) As Variant

Sub Connect(ServerName, NodeName) '连接子函数

On Error GoTo ErrorHandler

Set MyOPCServer = New OPCServer
MyOPCServer.Connect ServerName, NodeName
MsgBox "Connect successful!"
Exit Sub

ErrorHandler:
MsgBox "Connect Error !", vbCritical

End Sub

Sub Add_Group(GroupNm) '添加组函数

On Error GoTo ErrorHandler

MyOPCServer.OPCGroups.DefaultGroupUpdateRate = 0
Set MyOPCGroup = MyOPCServer.OPCGroups.Add(GroupNm)
MyOPCGroup.IsSubscribed = True
MyOPCGroup.IsActive = True
Exit Sub

ErrorHandler:
MsgBox "Add Group Error!", vbCritical

End Sub

Sub Add_Items(ItemIDs() As String, ItemAnz As Long) '添加标签集合

Dim i As Long
ReDim ClientHandles(ItemAnz)

On Error GoTo ErrorHandler
For i = 1 To ItemAnz
ClientHandles(i) = i
Next

MyOPCGroup.IsSubscribed = False

MyOPCGroup.OPCItems.AddItems ItemAnz, ItemIDs, ClientHandles, ServerHandles, Errors

MyOPCGroup.IsSubscribed = True '允许订阅或者异步读取方式
Erase Errors()
Exit Sub

ErrorHandler:
MsgBox "Add Item Error!", vbCritical

End Sub


Sub Form_Load()

CmdConnect.Enabled = True
CmdDisconnect.Enabled = False

End Sub

'读取变量值放入text控件中

Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)

Dim i As Integer
On Error GoTo ErrorHandler

For i = 1 To NumItems
cell(ClientHandles(i)) = ItemValues(i)
Next
Form1.TXT_tag_1.Text = cell(1)
Form1.TXT_tag_2.Text = cell(2)
Exit Sub

ErrorHandler:
MsgBox "Data_change Error!", vbCritical

End Sub

Sub Disconnect()

MyOPCServer.Disconnect
Set MyOPCServer = Nothing

End Sub


Sub Rem_Group(GroupNm As String) '删除组对象

MyOPCServer.OPCGroups.Remove GroupNm
Set MyOPCGroup = Nothing

End Sub
Sub Rem_Items(ItemAnz As Long) '删除标签集合对象

MyOPCGroup.OPCItems.Remove ItemAnz, ServerHandles, Errors
Erase ClientHandles()
Erase ServerHandles()
Erase Errors()

End Sub


Sub CmdConnect_Click()

Dim i As Long
ReDim ItemIDs(2)
ItemAnz = 2
ItemIDs(1) = "TAG1"
ItemIDs(2) = "TAG2"

SNode = TXT_Node.Text
Call Connect("OPCServer.WinCC", SNode)
Call Add_Group("Internaltags")
Call Add_Items(ItemIDs(), ItemAnz)

CmdConnect.Enabled = False
CmdDisconnect.Enabled = True

End Sub

Sub CmdDisconnect_Click()

Call Rem_Items(ItemAnz)
Call Rem_Group("Internaltags")
Call Disconnect

CmdConnect.Enabled = True
CmdDisconnect.Enabled = False
End Sub
求救:斑竹,vb通过opc访问wincc,在线等 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32569条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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