急问OPC通讯的问题(请有谁共鸣大大帮我看看)

已锁定

猪仔天上飞

  • 帖子

    125
  • 精华

    0
  • 被关注

    1

论坛等级:游民

注册时间:2006-03-15

普通 普通 如何晋级?

急问OPC通讯的问题(请有谁共鸣大大帮我看看)

616

10

2006-07-25 09:57:49

上次问的不能连接上的问题已经解决了。。感谢斑竹大大的提示:
但是我连接上后发现不能读出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
急问OPC通讯的问题(请有谁共鸣大大帮我看看) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32767条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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