Dim ItemNum As Integer '标签个数 Dim ClientHandles1(100) As Long '先配置名柄索引,这将在读取OPC标签的值时可要用到
On Error GoTo HANDLEERROR '生成OPC对象 Set MyOPCServer = New OPCServer MyOPCServer.Connect ServerName, NodeName Set MyOPCGroups = MyOPCServer.OPCGroups MyOPCGroups.DefaultGroupIsActive = True Set MyOPCGroup = MyOPCGroups.Add("MYGROUP") Set MyOPCItems = MyOPCGroup.OPCItems
ItemNum = 5 'OPC标签个数,如果标签数量很多,可以考虑采用数据库方式 DataItem(1) = "[NEW_TOPIC]B3:1" DataItem(2) = "[NEW_TOPIC]B3:2" DataItem(3) = "[NEW_TOPIC]T4:3.ACC" DataItem(4) = "[NEW_TOPIC]T4:3.EN" DataItem(5) = "[NEW_TOPIC]T4:3.DN"
'进行OPC标签连接 '对OPC的写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择,但对少量的数据传输,同步表现得更好。 If ItemNum > 0 Then MyOPCItems.AddItems ItemNum, DataItem, ClientHandles1, ServerHandles, Errors MyOPCGroup.IsSubscribed = True End If
'至此:OPC连接就成功了,我们可以对OPC进行读与写的操作了。 Timer1.Enabled = True '连接成功后,定时交换数据 Exit Sub
HANDLEERROR: MsgBox Err.Description
End Sub
Private Sub Check1_Click(Index As Integer) Dim B3bit(15) As Integer 'B3的16个位这里只要用到了0、1、4 Select Case Index Case 0: If Check1(0).Value = Checked Then Image1.Visible = True Else Image1.Visible = False Case 1: If Check1(1).Value = Checked Then Image4.Visible = True Else Image4.Visible = False Case 2: If Check1(2).Value = Checked Then Image3.Visible = True Else Image3.Visible = False End Select If Check1(0).Value = Checked Then B3bit(0) = 1 Else B3bit(0) = 0 If Check1(1).Value = Checked Then B3bit(1) = 2 Else B3bit(1) = 0 If Check1(2).Value = Checked Then B3bit(4) = 16 Else B3bit(4) = 0 DataValue(1) = B3bit(0) + B3bit(1) + B3bit(4) MyOPCItems(1).Write DataValue(1) End Sub
Private Sub Command1_Click() Command1.Enabled = False StartClient End Sub
Private Sub Command3_Click() StopClient Unload Me End Sub
|