RE:Alguien sabe comunicar vB con un opc server?
Publicado por
Carlos Tamayo (1 intervención) el 14/02/2006 16:07:40
Primero tienes que agregar a tú proyecto la referencia OPC de tu proveedor y luego hace algo parecido a esto:
en mi caso estoy usando rslinx como servidor OPC por eso los nombres de mi variables hacen referencia a que servidor OPC estoy usando (util cuando te comunicas con dos o mas servidores OPC de distinto proveedor)
Option Explicit
Public rslinx As OPCServer
Public rslinxTodosLosGrupos As OPCGroups
Public WithEvents rslinxGrupo As OPCGroup 'Si quieres poder leer eventos como el datachange tienes que usarlo with events.
Public rslinxItems As OPCItems
Private Sub Form_Load()
Set rslinx = New OPCServer
rslinx.Connect "RSLinx OPC Server"
Set rslinxTodosLosGrupos = rslinx.OPCGroups
Set rslinxGrupo = rslinxTodosLosGrupos.Add("GrupoXYZ") 'Grupo OPC
rslinxGrupo.IsActive = True
rslinxGrupo.IsSubscribed = True
rslinxGrupo.UpdateRate = 500
Set rslinxItems = rslinxGrupo.OPCItems
rslinxItems.DefaultAccessPath = "porton_electrico"
rslinxItems.AddItem "contador_operaciones",
'rslinxItems.AddItem "luz_puerta_medio_abierta", 2
'rslinxItems.AddItem "luz_puerta_abierta", 3
'rslinxItems.AddItem "luz_puerta_cerrada", 4
End Sub
Private Sub Form_Unload(Cancel As Integer)
rslinxGrupo.IsActive = False 'El grupo se hace inactivo
rslinxTodosLosGrupos.RemoveAll
rslinx.Disconnect
Set rslinxGrupo = Nothing
Set rslinx = Nothing
End Sub
Private Sub rslinxGrupo_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
Label1.Caption = "contador_operaciones = " & rslinxGrupo.OPCItems("contador_operaciones").Value
End Sub
Espero te sirva.