Saltar al contenido

OpenOPC con Python 3

Conoce OpenOPC con Python 3

OpenOPC con Python 3 es un arreglo adecuado cuando se trabaja con ciertos proyectos de automatización industrial que utilizan servidores con el protocolo OPC DA (OPC for Data Access) probados por la industria. Puedes usarlo para aprender cómo funciona realmente el protocolo OPC DA, para conectarte a múltiples servidores y construir aplicaciones que permitan una integración de datos más profunda.

OpenOPC es una librería OPC (OLE for Process Control), de código abierto y fácil de usar que funciona muy bien con el popular lenguaje de programación Python, tanto en la versión 2.7 como en la versión 3. Puedes implementarla en múltiples plataformas y tecnologías tales como Windows, Linux, MacOS o Docker. Asimismo, incluye un servicio de pasarela de Windows que permite a clientes que no son de Windows acceder también a peticiones OPC DA.

Existen distintas versiones de OpenOPC en Internet. ¿Te interesa la versión original de Barry Barnreiter?. Descárgala aquí. ¿Quieres probar una variante distinta que funcione con Python 3.4+?. Descarga la versión de GitHub de Anton D. Kachalov aquí.

OpenOPC 2

Sin embargo, en esta serie de publicaciones, probaremos una versión más moderna de nuestros amigos Lorenz Padberg y Elia Bieri: OpenOPC 2. El repositorio de GitHub donde ellos mantienen este proyecto se puede ver aquí.

openopc python 3 1

Funcionalidades destacadas

  • Mantiene el concepto de la aplicación OpenOPC Gateway Service, un servicio de Windows que provee acceso remoto a la librería OpenOPC, lo cual resulta muy útil cuando se desea evitar problemas por DCOM o cuando el cliente OPC se encuentra en una estación cuyo sistema operativo es distinto a Windows.
  • Proporciona un módulo de Python para conectar a un servidor OPC DA desde un cliente OPC en Windows o Linux.
  • Ofrece una interfaz por línea de comandos CLI, ideal para la ejecución de procesos automatizables.
  • Permite el uso del protocolo OPC clásico con múltiples plataformas.
  • Brinda sus capacidades en forma de archivos ejecutables de Windows, las cuales no requieren la instalación de Python.

Mejoras respecto a versiones anteriores

Como un sucesor de OpenOPC, esta versión ofrece:

  • Una instalación más sencilla como paquete de PyPI.
  • Prácticamente, la misma API.
  • Pérdida de memoria corregida para OpenOPC Gateway Service.
  • Soporte a partir de Python 3.8 o superior.
  • Un proceso de validaciones de las entradas mejorado.
  • Pyro5, con seguridad mejorada.
  • Pruebas automatizadas.
  • Refactorización para incremento de legibilidad del código.
  • Interfaz CLI a color.

¿Por dónde empiezo?

Simple. Dado que la idea de esta publicación es demostrar que es posible «aprender haciendo», utilizaremos distintos ejemplos de configuración de la librería. De igual manera, siendo el protocolo OPC originario del sistema operativo Microsoft Windows, empezaremos con dos casos de uso propios de esa tecnología.

Cliente/servidor OPC en el mismo nodo

En primer lugar, es importante entender que el objetivo de este caso de uso es la implementación de un cliente y un servidor OPC DA en la misma estación. El siguiente diagrama lo especifica mejor:

openopc python 3 2

Prerrequisitos

Los prerrequisitos a tener en cuenta son los que siguen:

  • Verifica que tengas instalado un sistema operativo Microsoft Windows (por ejemplo, la versión Profesional de 64 bits de Windows 10).
openopc python 3 3
  • Asegúrate de que tengas instalada una versión de 32 bits de Python (por ejemplo, la versión de 32 bits de Python 3.8.9).
openopc python 3 4
  • Confirma que tengas instalada una versión de 32 bits de «Python for Windows Extensions» (por ejemplo, la versión de 32 bits que coincide con la versión de Python recientemente instalada). Para opciones de instalación, revisa el enlace indicado aquí.
openopc python 3 5
  • Verifica que tengas instalado, al menos, un servidor OPC DA para simulación y pruebas (por ejemplo, la versión 1.9.0.9629 de «MatrikonOPC Server for Simulation and Testing»).
openopc python 3 6
  • Asegúrate de que dispongas de una interfaz de red Ethernet con una dirección IP estática asignada (por ejemplo, «192.168.1.41»).
openopc python 3 7
  • Confirma que estás en capacidad de permitir el acceso de red al puerto 7766, sin restricciones. Si tienes dudas, deshabilita temporalmente el cortafuegos. Luego, prepárate para configurar las excepciones requeridas.
openopc python 3 8
  • Verifica que hayas registrado en el nodo la librería DLL para comunicación con objetos OPC «gbda_aut.dll» usando el comando «regsvr32».
openopc python 3 9

Procedimiento de prueba

Una vez verificado ésto, ejecuta los siguientes pasos:

  • Ubica la estación de trabajo y asegúrate de iniciar sesión como usuario administrador.
openopc python 3 10
  • A continuación, inicia el explorador de Windows, ve a «This PC» y en el menú contextual, escoge la opción «Properties».
openopc python 3 11
openopc python 3 12
  • En el lado derecho de la ventana, selecciona la opción «Advanced system settings».
openopc python 3 13
  • Presiona el botón «Environment Variables…» para iniciar la edición de las variables de ambiente.
openopc python 3 14
  • Seguidamente, fija adecuadamente las variables de ambiente:
OPC_CLASS=Graybox.OPC.DAWrapper
OPC_CLIENT=OpenOPC
OPC_GATE_HOST=192.168.1.41    # IMPORTANTE: Reemplázalo con tu propia dirección IP
OPC_GATE_PORT=7766
OPC_HOST=localhost
OPC_MODE=dcom
OPC_SERVER=Matrikon.OPC.Simulation
openopc python 3 15
  • En el explorador de Windows, selecciona el disco local «C».
  • Marca la pestaña «Home» y la opción «New folder» para crear la carpeta de proyecto «openopc2».
  • Aparte, abre un navegador web y descarga los archivos ejecutables de OpenOPC 2 aquí.
  • Copia los archivos descargados a la carpeta del proyecto.
  • Abre una primera terminal de comandos de Windows y cambia a la carpeta del proyecto.
  • Ejecuta la aplicación «OpenOPC Gateway Server» con el comando mínimo:
OpenOpcServer.exe
  • Espera unos segundos y verifica que se ejecute sin errores.
  • Luego, abre una segunda terminal de comandos de Windows y navega a la carpeta del proyecto.
  • Ejecuta la aplicación «OpenOPC CLI» con el comando de listar servidores:
OpenOpcCli.exe list-servers
  • Espera unos segundos y visualiza los servidores OPC DA disponibles.
  • Ejecuta el comando para visualizar la información del servidor OPC DA por defecto con:
OpenOpcCli.exe server-info
  • Ejecuta el comando para leer uno o múltiples valores del servidor OPC DA por defecto:
OpenOpcCli.exe read Random.Int2
OpenOpcCli.exe read Random.Int2 Random.Real4
  • Ejecuta el comando para visualizar las propiedades de uno o múltiples valores del servidor OPC DA por defecto:
OpenOpcCli.exe properties Random.Int2
OpenOpcCli.exe properties Random.Int2 Random.Real4
  • Ejecuta el comando para mostrar la lista de carpetas en torno a las cuales se agrupan las variables del servidor OPC DA por defecto:
OpenOpcCli.exe list-tags
  • Si deseas conocer más información de ese comando, agrega el comodín «–help».
OpenOpcCli.exe list-tags --help
  • Finalmente, ejecuta el comando para obtener la ayuda general de la aplicación CLI.
OpenOpcCli.exe --help

Cliente/servidor OPC en diferentes nodos

En este punto, el objetivo de este caso de uso es la implementación de un cliente y un servidor OPC DA, pero en distintas estaciones. El siguiente diagrama lo aclara mejor:

Prerrequisitos

La mayor parte de los prerrequisitos a tener en cuenta aplican para ambos nodos. No obstante, se deben resaltar algunas diferencias:

  • El nodo «S» debe disponer de una interfaz de red Ethernet con una dirección IP estática asignada (por ejemplo, «192.168.1.39»).
  • La variable de ambiente «OPC_GATE_HOST» debe cambiarse a «192.168.1.39» en ambos nodos pues la aplicación «OpenOPCServer.exe» se ejecuta ahora en la estación «S».
OPC_CLASS=Graybox.OPC.DAWrapper
OPC_CLIENT=OpenOPC
OPC_GATE_HOST=192.168.1.39    # IMPORTANTE: Reemplázalo con tu propia dirección IP
OPC_GATE_PORT=7766
OPC_HOST=localhost
OPC_MODE=dcom
OPC_SERVER=Matrikon.OPC.Simulation

Procedimiento de prueba

  • Ubica la estación «S» e inicia sesión en ella.
  • Abre una terminal de comandos de Windows y cambia a la carpeta del proyecto «openopc2».
  • Ejecuta la aplicación «OpenOPC Gateway Server» con el comando mínimo:
OpenOpcServer.exe
  • Espera un instante y verifica que se ejecute sin errores.
  • A continuación, ubica la estación «C» e inicia sesión en ella.
  • Abre una terminal de comandos de Windows y cambia a la carpeta del proyecto «openopc2».
  • Ejecuta la aplicación «OpenOPC CLI» con el comando de listar servidores:
OpenOpcCli.exe list-servers
  • Espera unos segundos y visualiza los servidores OPC DA disponibles en el nodo «S».
  • Finalmente, ejecuta el comando para leer un valor del servidor OPC DA por defecto:
OpenOpcCli.exe read Random.Real8

Otros casos de uso

A continuación, se muestra una lista de artículos que complementan el aprendizaje de OpenOPC 2 utilizando Python 3:

  1. Instalación de librería desde PyPI.
  2. Instalación de OpenOPC Gateway Service como servicio autoejecutable de Windows.
  3. Cliente OPC en Linux y servidor OPC en Windows del mismo segmento de red.

Créditos

OpenOPC 2 se basa en la librería de Python OpenOPC. Los autores de este paquete son:

AñosNombreUsuario
2008-2012Barry Barnreiterbarry_b@users.sourceforge.net
2014Anton D. Kachalovhttps://github.com/ya-mouse
2017José A. Maitahttps://github.com/joseamaita
2022Lorenz Padberghttps://github.com/renzop
2022Elia Bierihttps://github.com/eliabieri

Licencia

Este software está licenciado bajo los términos de la licencia GNU GPL v2 más una excepción especial de enlace a porciones del paquete. Esta licencia puede verse aquí.

Contacto

Si necesitas asistencia técnica para implementar esta librería en un proyecto más grande, ingresa aquí para tener información más detallada.

Comparte esta publicación