OPC Server示例教程:OPC客户端——VB.NET示例

本文介绍如何使用VB.NET实现OPC客户端,连接OPC Server以访问工业自动化设备。通过OPC接口,程序设计者可以不依赖具体硬件技术信息,实现对不同设备的通用访问,提高软件复用性。
摘要由CSDN通过智能技术生成

 

OPC Server是一套利用微软的COM/DCOM技术实现工业自动化资料获取的架构。OPC Server提供OPC接口,它将与之相连的物理设备(PLC)的信息值通过接口返回到客户端应用程序。也就是说,客户端通过这些接口,可以获得与OPC Server连接的物理设备的信息。对于集成应用程序,只要支持OPC接口,就能轻易访问物理设备,而无需相关的技术信息。 程序设计者可以使用相同的程序代码,操作不同的硬件装置,充分达成软件复用的目的。

OPC Server 最新版下载

它使用OPC Server引入了简单的示例程序。此示例的代码使用OPC 如果从.NET访问OPC Server,则需要交换COM和.NET的包装器。 自动化包装器(OPCDAAUTO.DLL),因此它几乎等于VB6.0。

OPC Server

Declaration

Option Explicit

Public OpcServer As IOPCServerDisp
Public OpcItemMgt As IOPCItemMgtDisp
Public OpcItem As IOPCItemDisp

Private Const ItemMax = 8
Private Const OPC_DS_CACHE = 1
Private Const OPC_DS_DEVICE = 2

Dim ClientHandles(ItemMax) As Long
Dim ServerHandles As Variant
Dim bConnect As Boolean

连接到OPC服务器,创建OPCGroup和添加标签

Private Sub CONNECT_Click()
  On Error GoTo err_hd
  Dim i%
  If bConnect Then
    CONNECT.Caption = "Connect"
    Set OpcServer = Nothing
    Set OpcItemMgt = Nothing
    Set OpcItem = Nothing
    bConnect = False
    READ_Button.Enabled = False
    WRITE_Button.Enabled = False
    For i% = ItemName.lbound To ItemName.ubound
      ItemName(i%).Enabled = True
    Next i%
    Exit Sub
  End If

  '*** Connect to OPC Server ***
  Set OpcServer = CreateObject(Form1.ServerName.Text)
  If TypeName(OpcServer) = TypeName(Nothing) Then Return

  '*** Add OPCGroup ***
  Dim UpdateRate As Long
  Dim ServerHdl As Long
  UpdateRate = UpdateRateSet.Text
  Set OpcItemMgt = OpcServer.AddGroup("Group One", True, UpdateRate, 22, 1, 0, ServerHdl, UpdateRate)
  If TypeName(OpcItemMgt) = TypeName(Nothing) Then Return

  '*** Add OPCItems ***
  Dim ItemIDs(ItemMax) As String
  Dim AccessPaths(ItemMax) As String
  Dim Active(ItemMax) As Boolean
  Dim Errors As Variant
  Dim ItemObjects As Variant
  Dim DataType(ItemMax) As Variant
  For i% = 0 To ItemMax - 1
    Active(i%) = True
    ClientHandles(i%) = 22 + i%
    AccessPaths(i%) = ""
    ItemIDs(i%) = Form1.ItemName(i%).Text
    DataType(i%) = 2
  Next i%
  OpcItemMgt.AddItems ItemMax, ItemIDs, Active,ClientHandles,
            ServerHandles, Errors, ItemObjects, AccessPaths, DataType
  Set OpcItem = ItemObjects(0)
  bConnect = True
  CONNECT.Caption = "DisConnect"
  READ_Button.Enabled = True
  WRITE_Button.Enabled = True
  For i% = ItemName.lbound To ItemName.ubound
    ItemName(i%).Enabled = False
  Next i%
  Exit Sub

err_hd:
  MsgBox "Error connecting"
  For i% = 0 To ItemMax - 1
    Form1.Value(i%) = "Error"
  Next i%
End Sub

缓存读取

Private Sub READ_Button_Click()
  Dim ReadValue As Variant
  Dim pQuality As Variant
  Dim pTimestamp As Variant
  Dim Errors As Variant
  Dim i%
  Dim io As IOPCSyncIODisp
  Set io = OpcItemMgt
  '*** Cache Read ***
  io.OPCRead OPC_DS_CACHE, ItemMax, ServerHandles, ReadValue, pQuality, pTimestamp, Errors
  For i% = 0 To ItemMax - 1
    Form1.Value(i%) = ReadValue(i%)
    pTimestamp(i%) = DateAdd("h", 9, pTimestamp(i%))
    Form1.Time(i%) = pTimestamp(i%)
    Form1.Quality(i%) = pQuality(i%)
  Next i%
End Sub

SyncWrite

Private Sub WRITE_Button_Click()
  Dim WriteValue(ItemMax) As Variant
  Dim io As IOPCSyncIODisp
  Dim Errors As Variant
  Dim i%
  Set io = OpcItemMgt
  For i% = 0 To ItemMax - 1
    WriteValue(i%) = Form1.Value(i%)
  Next i%
  '*** SyncWrite ***
  io.OPCWrite ItemMax, ServerHandles, WriteValue, Errors
End Sub

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值