none
cliente opc en vb.net 2008 RRS feed

  • Pregunta

  • Saludos!

    También estoy desarrollando un cliente opc en vb.net 2008; tengo una versión anterior con vb.net 2005 y funciona con  OPCAutomacion.dll v 1.0.0.0, pero al usar la misma codificación y la misma dll en .net 2008 no funciona. Alguna ayuda?

    viernes, 17 de abril de 2009 16:52

Respuestas

  • hola,

    Using Interop.OPCAutomation wrapper with C# .net Problelm??

    Veo que no eres el unico con problemas con este componente.

    Se me ocurren varias cosas que puedes intentar.

    - has probado registrar el componente OPCAutomation.dll con el comando Regsvr32.exe ? este agrega a ala registry el clasid, por ahi eso es lo que le esta faltando.

    - no se si tienes a mano el VS 98, te lo digo porque puedes hacer un pequeño componente en VB6, que utilice este otro componente OPCAutomation.dll, si ves que este funciona adecuadamente, luego desde .net podrias hacer un Interop a la libreria de VB6 que tu creaste, de esta forma estarias haciendo un wrapper tu en VB6 encapsulando la funcionalidad del OPCAutomation.dll.

    Esta ultima no es la mejor de la soluciones, pero bueno yo he encontrado problemas de Interop que no se pueden solucionar, por ahi al menos no sera la mejor solucion pero si funciona es algo.

    Tambien pude ver este link: OPC Automation

    Por ahi podrias contactar con Steve Jackson, ya que segun veo le dedico tiempo al tema, y tiene desarrollado un wrapper, o por ahi consultar al mail de alguno de los muchachos que intervinieron en el thread, por ahi pueden darte una mano. Eso si seguro deberas explicarte en ingles.

    Bueno espero te sirva estos consejos.
    Saludos

    Leandro Tuttini
    • Marcado como respuesta Marbely martes, 21 de abril de 2009 20:36
    domingo, 19 de abril de 2009 15:27

Todas las respuestas

  • hola,

    No te animas a publicar el codigo que estas utilizando de base o sea la version 2005, o la que estas utilizando despues de la conversion.
    Por ahi utilizando el skydrive.

    Cuando dices que no funciona es porque tienes algun error especifico, o es un problema de compilacion ?


    Bueno espero peudas aportat mas info
    Saludos
    Leandro Tuttini
    viernes, 17 de abril de 2009 19:45
  • Leandro la idea del progrma es obtener la lectura del peso de una bascula electrónica
    y luego procesar esa información. Para hacer las pruebas estoy utilizando un
    simulador de RSLogix que es el que me genera los datos. Cuando hago las pruebas
    usando la dll de rockwell RsiOPCAuto.dll el programa funciona bien, y captura
    el peso generado por el simulador, pero esa dll necesita licencia, por lo que necesito
    usar OPCAutomation.dll que es free.

    el programa compila bien, pero al ejecutar ni si quiera deja crear el objeto servidor porque aparece este error:
    Error al recuperar un generador de clases COM para el componente con
     CLSID {28E68F9A-8D75-11D1-8DC3-3C302A000000}
    debido al siguiente error:80040154


    //la clase que hace la conexión importa las librerias

    Imports System.Runtime.InteropServices
    Imports OPCAutomation

    //se declaran las variables del opc

        Dim objServidor As OPCServerClass
        Dim objGrupos As OPCGroupsClass
        Dim WithEvents objGrupo As OPCGroupClass
        Dim objItems As OPCItems
        Dim objItem(99) As OPCItem

    //y tiene una función LeerValor que devuelve el peso

        Public Function LeerValor(ByVal Servidor As String, ByVal Nodo As String, ByVal Grupo As String, ByVal Item As String) As Object

            Dim ValorActual As Double

            'Creacion del objeto Servidor
            objServidor = New OPCAutomation.OPCServerClass() ' //aqui es donde aparece el error

            'Conexion al Servidor OPC
            objServidor.Connect(Servidor, Nodo)

            'Marshal para manejo de tipos de COM
            objGrupos = CType(Marshal.CreateWrapperOfType(objServidor.OPCGroups, _
                         GetType(OPCGroupsClass)), OPCGroupsClass)
            objGrupo = objGrupos.Add(Grupo)
            objItems = objGrupo.OPCItems

            objItem(0) = objItems.AddItem(Item, 0)
           
            'Leer el valor actual de la variable
            objItem(0).Read(1, ValorActual)

            objServidor = Nothing
            objGrupos = Nothing
            objItems = Nothing
            objItem(0) = Nothing
            Return ValorActual
        End Function

    //en el formulario creo el objeto de la clase, llamo a la función leervalor
    //y asigno el peso a una caja de texto

    Dim objOPC As New OPCClass()
    TextPeso.Text = objOPC.LeerValor(ServidorOPC, NodoOPC, GrupoOPC, ItemOPC)

     

    sábado, 18 de abril de 2009 14:56
  • hola,

    Using Interop.OPCAutomation wrapper with C# .net Problelm??

    Veo que no eres el unico con problemas con este componente.

    Se me ocurren varias cosas que puedes intentar.

    - has probado registrar el componente OPCAutomation.dll con el comando Regsvr32.exe ? este agrega a ala registry el clasid, por ahi eso es lo que le esta faltando.

    - no se si tienes a mano el VS 98, te lo digo porque puedes hacer un pequeño componente en VB6, que utilice este otro componente OPCAutomation.dll, si ves que este funciona adecuadamente, luego desde .net podrias hacer un Interop a la libreria de VB6 que tu creaste, de esta forma estarias haciendo un wrapper tu en VB6 encapsulando la funcionalidad del OPCAutomation.dll.

    Esta ultima no es la mejor de la soluciones, pero bueno yo he encontrado problemas de Interop que no se pueden solucionar, por ahi al menos no sera la mejor solucion pero si funciona es algo.

    Tambien pude ver este link: OPC Automation

    Por ahi podrias contactar con Steve Jackson, ya que segun veo le dedico tiempo al tema, y tiene desarrollado un wrapper, o por ahi consultar al mail de alguno de los muchachos que intervinieron en el thread, por ahi pueden darte una mano. Eso si seguro deberas explicarte en ingles.

    Bueno espero te sirva estos consejos.
    Saludos

    Leandro Tuttini
    • Marcado como respuesta Marbely martes, 21 de abril de 2009 20:36
    domingo, 19 de abril de 2009 15:27
  • Rockwell's install won't put in some of the core components that Interop.OPCAutomation.dll needs.  Install OPC Core Components 2.00 SDK should solve the problem.
    jueves, 30 de abril de 2009 3:07
  • Hola,

    Leandro y Robert, gracias por sus sugerencias. Inclusive envié un correo al chico que me sugeriste Leandro, pero despues de muchos intentos, se me ocurrió probar el programa en otro equipo y funcionó bien, asi que creo que el problema es algo con el pc, lo importante es que el codigo y la dll funcionan bien con vb.net 2008.

    Atte,


    Marbely
    jueves, 30 de abril de 2009 13:32
  • Saludos, retrasado pero creo que esto te puede ayudar un poco mas:

    http://hespinosamedina.spaces.live.com/blog/

    Publiqué en mi blog sobre un cliente OPC


    Buena Suerte! blog: http://hespinosamedina.spaces.live.com/blog/ Si las respuestas te son de utilidad marcalas como buenas!
    viernes, 22 de mayo de 2009 16:57