关于SMART200的OPC界面,我发一个完整的、经过测试的程序。下面我把代码贴出来。
Option Base 1
Dim WithEvents ServerObj As OPCServer ''OPC Server对象,连接OPC服务器
Dim GroupsObj As OPCGroups ''OPC Groups对象,添加OPC组
Dim WithEvents GroupObj As OPCGroup ''OPC Group对象
Dim ItemsObj As OPCItems ''OPC Item集合
Dim ServerHandles() As Long ''服务器端OPC Item的句柄
Dim ClientHandles(2) As Long ''客户端OPC Item的句柄
Dim ItemId(2) As String
Dim Errors() As Long
Private Sub Command1_Click()
If ServerObj Is Nothing Then Set ServerObj = New OPCServer
If ServerObj.ServerState = OPCDisconnected Then
ServerObj.Connect ("S7200SMART.OPCServer") ''假设OPC服务器运行在本机
End If
If GroupsObj Is Nothing Then Set GroupsObj = ServerObj.OPCGroups
If GroupObj Is Nothing Then Set GroupObj = GroupsObj.Add
If ItemsObj Is Nothing Then Set ItemsObj = GroupObj.OPCItems
GroupObj.IsActive = True ''设置组为活动状态
GroupObj.IsSubscribed = True
GroupObj.UpdateRate = 1000
ItemId(1) = "2:192.168.2.1:0201:0201,M0.0,BOOL,RW"
ItemId(2) = "2:192.168.2.1:0201:0201,VD50,REAL,RW"
ClientHandles(1) = 1
ClientHandles(2) = 2
Call ItemsObj.AddItems(2, ItemId, ClientHandles, ServerHandles, Errors)
End Sub
Private Sub Command2_Click()
GroupsObj.RemoveAll
ServerObj.Disconnect
Set ItemsObj = Nothing
Set GroupObj = Nothing
Set GroupsObj = Nothing
End Sub
Private Sub Command3_Click()
Dim TempServerHandles(1) As Long
Dim VValue(1) As Variant
Dim ErrorNr() As Long
TempServerHandles(1) = ServerHandles(1)
VValue(1) = 1 ''假设要将"1"写入ClientHandle为1的OPC Item
GroupObj.SyncWrite 1, TempServerHandles, VValue, ErrorNr
End Sub
Private Sub Command4_Click()
Dim TempServerHandles(1) As Long
Dim VValue(1) As Variant
Dim ErrorNr() As Long
TempServerHandles(1) = ServerHandles(1)
VValue(1) = 0 ''假设要将"1"写入ClientHandle为2的OPC Item
GroupObj.SyncWrite 1, TempServerHandles, VValue, ErrorNr
End Sub
Private Sub GroupObj_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
Text1.Text = ItemValues(1)
End Sub