上次问的不能连接上的问题已经解决了。。感谢斑竹大大的提示:
但是我连接上后发现不能读出wincc的变量。。也不能写进去。。请高人们帮我看看错在那啊:
Option Explicit
Option Base 1
Dim WithEvents MoniterOpcSever As OPCServer
Dim MoniterOPcGroups As OPCGroups µÃ¼¯ºÏ
Dim WithEvents MoniterOPcGroup As OPCGroup
Dim MoniterOpcItem As OPCItem 'Ìí¼ÓOPCÑ¡Ïî
Private ItemVar() As String
Private ClientHandles() As Long 'ÓÃÀ´´æ·ÅWINCC±äÁ¿
Private lServerHandles() As Long
Private error() As Long
Private ItemNum As Long
Private GroName As String
Public Sub MoniterConnect(ByVal strProID As String, GroupName As String, Optional ByVal strNode As String = "")
If MoniterOpcSever Is Nothing Then
Set MoniterOpcSever = New OPCServer
MoniterOpcSever.Connect strProID, strNode
End If
If MoniterOPcGroup Is Nothing Then
MoniterOpcSever.OPCGroups.DefaultGroupUpdateRate = 0
Set MoniterOPcGroup = MoniterOpcSever.OPCGroups.Add(GroupName)
MoniterOPcGroup.IsActive = True
MoniterOPcGroup.IsSubscribed = True
MsgBox ("Óë·þÎñÆ÷Á¬½Ó³É¹¦£¡")
End If
End Sub
Sub addItems(ItemVar() As String, ItemNum As Long)
' ReDim lServerHandles(ItemNum - 1)
Dim i As Integer
ReDim ItemVar(ItemNum)
If MoniterOPcGroups Is Nothing Then
Exit Sub
End If
If Not MoniterOpcItem Is Nothing Then
If MoniterOpcItem.Count > 0 Then
Exit Sub
End If
End If
MoniterOPcGroup.IsActive = True
Set MoniterOpcItem = MoniterOPcGroup.OPCItems
For i = 1 To ItemNum
ItemVar(i) = "MoniterTag" & i
ClientHandles(i) = i
Next
MoniterOPcGroup.OPCItems.addItems ItemNum, ItemVar, ClientHandles, lServerHandles, error
MoniterOPcGroup.IsSubscribed = True
End Sub
Sub Disconnected()
If Not MoniterOpcItem Is Nothing Then
If MoniterOpcItem.Count > 0 Then
MoniterOpcItem.Remove ItemNum, lServerHandles, error
End If
End If
Set MoniterOpcItem = Nothing
If Not MoniterOPcGroup Is Nothing Then
MoniterOpcSever.OPCGroups.Remove GroName
Set MoniterOPcGroup = Nothing
End If
If Not MoniterOPcGroups Is Nothing Then
Set MoniterOPcGroups = Nothing
End If
If Not MoniterOpcSever Is Nothing Then
MoniterOpcSever.Disconnect
Set MoniterOpcSever = Nothing
End If
End Sub
Sub WriteDate(num As Integer)
Dim Handles(1) As Long
Dim MyValues(1) As Variant
MyValues(1) = CSng(Text1(num - 1).Text)
Dim MyErrors() As Long
If MoniterOPcGroup Is Nothing Then
Exit Sub
End If
If MoniterOPcGroup.OPCItems.Count > 0 Then
Handles(1) = lServerHandles(num)
MoniterOPcGroup.SyncWrite 1, Handles(), MyValues, MyErrors
End If
End Sub
Private Sub DateWrite_Click() 'ͬ²½Ð´
Dim i As Integer
For i = 1 To ItemNum
Call WriteDate(i)
Next
End Sub
Sub ReadDate(num As Long, ByRef ItemVal() As Variant)
Dim lErrors() As Long
Dim j As Integer
If MoniterOPcGroup Is Nothing Then
Exit Sub
End If
If MoniterOPcGroup.OPCItems.Count > 0 Then
MoniterOPcGroup.SyncRead 1, 5, lServerHandles, ItemVal, lErrors
For j = 1 To num
Text1(j - 1).Text = ItemVal(j)
Next
End If
End Sub
Private Sub Command1_Click()
Dim item() As Variant
Call ReadDate(ItemNum, item())
End Sub
Private Sub Form_Load()
Text_Address.Text = "192.168.0.110"
Text1(0).Text = "32"
Text1(1).Text = "65"
Text1(2).Text = "23"
Text1(3).Text = "39"
Text1(4).Text = "54"
WinccConnect.Enabled = True
WinDisconnect.Enabled = False
End Sub
Private Sub WinccConnect_Click()
Static sNode As String
GroName = "Internal tags"
sNode = Text_Address.Text
ItemNum = 5
Call MoniterConnect("OPCServer.WinCC", GroName, sNode)
Call addItems(ItemVar, ItemNum)
WinccConnect.Enabled = False
WinDisconnect.Enabled = True
End Sub
Private Sub WinDisconnect_Click()
Call Disconnected
MsgBox ("³É¹¦¶Ï¿ªÁ¬½Ó")
WinccConnect.Enabled = True
WinDisconnect.Enabled = False
End Sub