Crea un servidor OPC 💻 de históricos con PostgreSQL 🐘
Para crear un servidor OPC HDA conectado a un servidor de base de datos PostgreSQL voy a utilizar el software MatrikonOPC Server for General Database Access (GDA)
El uso de este software de Matrikon es bajo licencia.
La licencia no expira y es una por servidor.
Instalar software MatrikonOPC Server for General Database Access (GDA)
Hay que tener en cuenta varias consideraciones para instalar el software correctamente.
Voy a detallar las consideraciones para instalar en un Windows 10 de 64 bits.
Si tu Sistema Operativo es otro puedes buscar las instrucciones en el siguiente documento.
Las consideraciones que he tenido en cuenta para instalar satisfactoriamente el MatrikonOPC Server GDA en mi Windows 10 64 bits son:
Instalar .NET 3.5
Ejecutar la instalación con un usuario local que pertenezca al grupo Administradores .
🚩 Un usuario administrador de dominio no será válido.
- Desactivar el antivirus durante la instalación.
- Crear una regla en el antivirus para excluir del análisis en tiempo real cualquier carpeta y archivos de MatrikonOPC.
Cambiar el Data Execution Prevention a "Activar DEP sólo para programas y servicios esenciales de Windows". Esto es sólo requerido durante la instalación del software.
Es probable que el ordenador tenga que ser reiniciado para poder aplicar la nueva configuración.
Para Windows Server 2022 sigue estos pasos
Cambiar la configuración del User Account Control a "Never notify".
Sólo requerido durante la instalación del software.
Si toda va bien podrás instalar el software.
Al abrirlo te encontrarás la siguiente pantalla 👇
Configurando la fuente de datos (ODBC)
El servidor MatrikonOPC para GDA utiliza las fuentes de datos de Microsoft para comunicarse con tu base de datos.
Como en este caso voy a utilizar una base de datos de PostgreSQL, tendré que instalarme un driver para ello.
Yo lo he descargado de su fuente oficial.
Aunque mi Sistema Operativo es de 64 bits, el driver que me funcionó fue el de 32 bits 😶
Una vez descargado e instalado el driver, abres el Administrador de origen de datos ODBC y agregas un nuevo origen de datos en DSN del sistema completando con los datos de tu base de datos de PostgreSQL a atacar.
Elige el controlador PostgreSQL ANSI
Eliges el nombre que quieras para el Data Source que utilizarás después para cargarlo.
Trabajando con MatrikonOPC GDA
Creando la conexión entre MatrikonOPC GDA y el origen de datos ODBC
- Abres el MatrikonOPC server for GDA y pulsas sobre New Node.
- Eliges como Provider Matrikon GDA for ODBC.
- En Data Source eliges en nombre de la fuente de datos que elegiste al crearla.
- Defines los mapeos de códigos de validación a códigos OPC.
- Defines Text Padding a comilla simple 👉'👈.
- Defines Timestamp Padding a comilla simple, 👉'👈.
Mapeando los datos de la tabla de PostgreSQL con MatrikonOPC GDA
El nombre de los campos de los datos en mi base de datos de PostgreSQL no son descriptivos para el usuario que vaya a consumir los datos desde el OPC, así que lo que hago es crearme en PostgreSQL una vista con un nombre para los campos que le resulte de ayuda al usuario final de OPC.
En la vista voy a asignar los siguientes alias
- Para el campo que quiero que sea la descripción usaré el alias descipcion
- Para el campo que quiero que sea el timestamp usaré el alias fecha
- Para el campo que quiero que sea el valor usaré el alias valor
- Para el campo que quiero que sea la calidad usaré el alias validez
La instrucción SQL para crearme la vista será:
CREATE OR REPLACE VIEW public.nombre_de_la_vista AS SELECT campo_de_fecha AS fecha, campo_de_descripcion AS descripcion, campo_de_valor AS valor, campo_de_validez_del_valor AS validez FROM tabla_donde_estan_los_datos JOIN incluye_join_si_los_necesitas;
Para crear el Data Mapping:
Haz clic en la flecha hacia abajo de la derecha del botón New Node o haz clic con el botón derecho sobre la conexión creada y dentro de New Node y elige Data Mapping.
- Asigna un nombre al Data Mapping, en mi caso elegí data_mapping_postgres
- Elige como OPC Interface -> HDA (Historical Data Access)
Elige la tabla de la que quieres obtener los datos, en mi caso, como te he contado creé una vista para presentar el nombre de los campos con un texto descriptivo.
El nombre que le di a la vista fue testopc
- En OPC Mappings selecciona qué campo quieres asignar a Tag Name, Value, Timestamp y Quality
Ten en cuenta las siguientes consideraciones:
🚩 El nombre de la vista debe ser con todas las letras en minúsculas.
🚩 Al crear la vista, hazlo en el esquema public si usaste el usuario postgres para la creación del conector ODBC ya que el MatrikonOPC GDA cuando intente buscar los datos en la vista, para obtener los tags hace la siguiente consulta SQL:
Select distinct descripcion from nombre_de_la_vista
Si creas el conector ODBC con otro usuario deberás crear la vista en el esquema que tome por defecto ese usuario.
El darme cuenta de esto me llevó bastante horas 😱
Conseguí encontrar que fallaba por esto al activar los logs del driver ODBC, fue quién me dio la pista.
El aviso que me daba el MatrikonOPC GDA era Table 'nombre_de_la_vista' does not exist or contains no columns. The server may not function properly. Proceed anyway? 👇
Si quiere saber cómo configurar los logs del driver ODBC para que sea verboso y poder analizar todo el tráfico te lo cuento 👉 aquí 👈
Utilizando MatrikonOPC HDA Explorer para comprobar que todo funciona
- Abrimos el MatrikonOPC HDA Explorer
- Seleccionamos el servidor Matrikon.OPC.GDA.1
Creamos un nuevo tag OPC
- Navegar en el árbol de Available Items in Server 'Matrikon.OPC.GDA.1' buscando el Data Mapping que creamos con el nombre data_mapping_postgres
Podrás ver los tags disponibles la caja de abajo si todo ha ido bien
Voy a seleccionar el tag de Carga para la prueba:
Con el tag añadido seleccionado pulsa en Read Raw y te saldrá un cuadro de diálogo para elegir el rango de fecha del cuál quiere obtener los datos.
Quita la selección de Get Bounds.
Pulsa en Read Raw
Te dejo una vista de los datos en el PgAdmin para que veas que coinciden 🤜🤛
Consideraciones al instalar PostgreSQL por el ODBC
Cuando vayas a elegir qué versión de PostgreSQL instalar, tienes que tener en cuenta que el ODBC oficial a fecha de hoy es antiguo y no soporta los nuevos métodos de autenticación.
Si no quieres tener problemas instala un PostgreSQL 12 o anterior.
Si instalas una versión más reciente, configura la autenticación con MD5, y no la que trae por defecto.
Buscando errores en los logs de ODBC
Para activar los logs del driver ODBC tiene que abrir la aplicación del ODBC:
Seleccionas el origen de datos del que quieras capturar el tráfico
- Pulsas en Datasource
Activas el checkbox CommLog
- Pulsa en el botón Global
En el textbox Folder for logging añades la ruta donde quieres que se guarden los logs, en mi caso elegí C:\odbcLog
Siguiendo esos pasos y tras varias solicitudes de trabajo con el data source verás lo siguiente en la ruta de logs
Error de Timed out while waiting for result of method BrowseTo en MatrikonOPC Server for GDA
¿Por qué me aparece el error de Timed out while waiting for result of method BrowseTo en MatrikonOPC Server for GDA?
Exception ocurred while attempting for communicating with the server: Timed out while waiting for result of method BrowseTo
Significa que tu tiempo de licencia ha finalizado.
Una acción rápida que puedes hacer es reiniciar el servicio de MatrikonOPC Server for Generic Database Access (GDA) lo que te otorgará dos horas más de funcionamiento del software.
- Para ello:
- Cierra el software de Matrikon
- Abre el administrador de tareas
- Busca el servicio MatrikonOPC Server for Generic Database Access (GDA)
- Lo reinicias
¿Cómo extender la licencia gratuita de MatrikonOPC Server for GDA?
Solicita una licencia de 30 días a Matrikon si quieres extender la licencia de forma gratuita.
Cuando tengas dicha licencia siguie los siguiente pasos:
- Lanzar el License Wizard del producto (desde Inicio -> Programas -> MatrikonOPC -> Nombre_del_software) haciendo clic derecho y seleccionando "Ejecutar como administrador” (aunque hayamos iniciado sesión con credenciales de Administrador).
Introducir los siguientes detalles para activar el software y hacer clic en "Siguiente".
- Product: OPC Server for GDA
- Activation key: ***
- Lock selector: 0x04
- El Asistente intentará ponerse en contacto con el servidor de licencias MatrikonOPC a través de Internet. Si lo consigue, el software quedará licenciado y no será necesaria ninguna acción adicional.
- Si no consigue conectar con el servidor de licencias MatrikonOPC, hay dos opciones: Licenciamiento a través de página web o licenciamiento por correo electrónico. En ambos casos hay que seleccionar la opción "Guardar..." en la ventana del License Wizard para crear un archivo llamado "summary.txt". Si se opta por licenciar a través de la página web ir al paso 5, o ir al paso 7 para la opción de correo electrónico. En ambos casos no cerrar la ventana del License Wizard.
- Si se ha seleccionado la opción de licenciamiento a través de la página web, desde un ordenador con acceso a Internet habrá que iniciar sesión en http://opclicensing.matrikon.com e introducir la información del archivo summary.txt guardado en el paso 4 (summary.txt es un archivo de texto y se puede abrir en el Bloc de notas). Cuando toda la información solicitada haya sido introducida hay que hacer click en "Request License Key" para generar la licencia. A continuación, hay que pulsar en "Guardar..." para guardarla y copiarla en el ordenador que se desea licenciar.
- En el ordenador que se desea licenciar seleccionaremos "Examinar ..." en la ventana del License Wizard para seleccionar el archivo que se ha generado desde la página web. Elegiremos "Siguiente ->" para aplicar la licencia. El software quedará licenciado y no será necesaria ninguna acción adicional. Por favor, contactad con nosotros si apareciera algún problema.
- Si se ha seleccionado la opción de correo electrónico, habrá que enviar el archivo summary.txt como adjunto respondiendo a este correo. MatrikonOPC Licensing generará una licencia y la enviará por e-mail. Hay que tener en cuenta que es probable que haya un retraso de 24 horas cuando se utiliza este método.
Hasta luego 🖖