Principales respuestas
cliente opc en vb.net 2008

Pregunta
-
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
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 -
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 libreriasImports 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.OPCItemsobjItem(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 textoDim objOPC As New OPCClass()
TextPeso.Text = objOPC.LeerValor(ServidorOPC, NodoOPC, GrupoOPC, ItemOPC) -
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
-
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.
-
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 -
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!