应网友的要求本人做了一个VB通过OPC访问WinCC变量的例子,如下是源代码!

已锁定

有谁共鸣

  • 帖子

    2161
  • 精华

    21
  • 被关注

    4

论坛等级:侠圣

注册时间:2005-05-07

普通 普通 如何晋级?

应网友的要求本人做了一个VB通过OPC访问WinCC变量的例子,如下是源代码!

4212

8

2005-09-02 15:56:41

应网友的要求本人做了一个VB通过OPC访问WinCC变量的例子,如下是源代码,
在windows2000+(wincc5.1或者wincc6.0sp1)上运行通过!!!
我有源程序,但我不能上传,斑竹可否帮我上传!

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(Groupname) '添加组函数

On Error GoTo ErrorHandler

MyOPCServer.OPCGroups.DefaultGroupUpdateRate = 0
Set MyOPCGroup = MyOPCServer.OPCGroups.Add(Groupname)
MyOPCGroup.IsSubscribed = True
MyOPCGroup.IsActive = True

MsgBox "Add Group successful!" 'vbCritical

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()

MsgBox "Add Item successful!" 'vbCritical

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)

'MsgBox "Data_change successful!" ' vbCritical

Exit Sub

ErrorHandler:
MsgBox "Data_change Error!", vbCritical


End Sub

Sub Disconnect()

MyOPCServer.Disconnect
Set MyOPCServer = Nothing

End Sub


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

MyOPCServer.OPCGroups.Remove Groupname
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("Internal tags")
Call Add_Items(ItemIDs(), ItemAnz)



Form1.Refresh

CmdConnect.Enabled = False
CmdDisconnect.Enabled = True

End Sub

Sub CmdDisconnect_Click()

Call Rem_Items(ItemAnz)
Call Rem_Group("Internal tags")
Call Disconnect

CmdConnect.Enabled = True
CmdDisconnect.Enabled = False
End Sub

如上的代码是在VB中编写的,在wincc中定义了tag1,tag2两个要访问的变量。
应网友的要求本人做了一个VB通过OPC访问WinCC变量的例子,如下是源代码! 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有31074条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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