Crea un servidor OPC 💻 de históricos con PostgreSQL 🐘

Publicado el 28.05.2023 a las 21:01

Crea un servidor OPC 💻 de históricos con PostgreSQL 🐘

  1. Instalar software MatrikonOPC Server for General Database Access (GDA)

  2. Configurando la fuente de datos

  3. Trabajando con MatrikonOPC GDA

    • Creando la conexión entre MatrikonOPC GDA y el origen de datos ODBC

    • Mapeando los datos de la tabla de PostgreSQL con MatrikonOPC GDA

    • Utilizando MatrikonOPC HDA Explorer para comprobar que todo funciona

  4. Consideraciones al instalar PostgreSQL

  5. Buscando errores en los logs de ODBC

  6. Errores comunes

    • Timed out while waiting for result of method BrowseTo

  7. ¿Cómo extender la licencia gratuita de MatrikonOPC Server for GDA?

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

    Seleccionar instalación de .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.

    Configurando para instalar MatrikonOPC GDA
  • Cambiar la configuración del User Account Control a "Never notify".

    Sólo requerido durante la instalación del software.

    Bajando el user control de windows al mínimo

Si toda va bien podrás instalar el software.

Pantalla de instalación de MatrikonOPC GDA

Al abrirlo te encontrarás la siguiente pantalla 👇

Pantalla de bienvenida de MatrikonOPC GDA

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.


Eliges el nombre que quieras para el Data Source que utilizarás después para cargarlo.

Crear conexión ODBC para PostgreSQL

Trabajando con MatrikonOPC GDA

Creando la conexión entre MatrikonOPC GDA y el origen de datos ODBC

  1. Abres el MatrikonOPC server for GDA y pulsas sobre New Node.
  2. Eliges como Provider Matrikon GDA for ODBC.
  3. En Data Source eliges en nombre de la fuente de datos que elegiste al crearla.
  4. Defines los mapeos de códigos de validación a códigos OPC.
  5. Defines Text Padding a comilla simple 👉'👈.
  6. Defines Timestamp Padding a comilla simple, 👉'👈.
Crear Node en MatrikonOPC GDA

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;
Vista testopc en PGAdmin
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

Crear Data Mapping en MatrikonOPC GDA

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.

    Log de ODBC

    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? 👇

    Advertencia de MatrikonOPC GDA

    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

    Creando tag en Matrikon HDA OPC Explorer
  • 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

    Añadiendo tags en Matrikon HDA OPC Explorer

Voy a seleccionar el tag de Carga para la prueba:


Tags añadidos en Matrikon OPC Explorer

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.

Tags añadidos en Matrikon HDA OPC Explorer

Pulsa en Read Raw


Tags leídos en Matrikon OPC HDA Explorer

Te dejo una vista de los datos en el PgAdmin para que veas que coinciden 🤜🤛

Tags leídos en Matrikon OPC HDA Explorer

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:

  1. Seleccionas el origen de datos del que quieras capturar el tráfico

  2. Pulsas en Datasource
  3. Activas el checkbox CommLog

    Activando logs de ODBC página 1
  4. Pulsa en el botón Global
  5. En el textbox Folder for logging añades la ruta donde quieres que se guarden los logs, en mi caso elegí C:\odbcLog

    Definiendo ruta para guardar los logs

Siguiendo esos pasos y tras varias solicitudes de trabajo con el data source verás lo siguiente en la ruta de logs

Definiendo ruta para guardar los 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
Error en MatrikonOPC Server for Generic Database Access (GDA) de 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
Reiniciando el servicio de MatrikonOPC Server for Generic Database Access (GDA)

¿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:

  1. 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).
  2. Introducir los siguientes detalles para activar el software y hacer clic en "Siguiente".

    • Product: OPC Server for GDA
    • Activation key: ***
    • Lock selector: 0x04
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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 🖖