Contexto General

Operations Hub v2024 puede definir un servidor OPC-UA como "datasource". Esto permite definir a su vez queries de tipo "lectura" y "escritura" para poder así leer escribir valores en tiempo real desde pantallas.

Esta capacidad permite desarrollar un HMI equivalente en muchos aspectos a un cliente SCADA tradicional; con las diferencias de tratarse de un entorno:

  1. Nativo hmtl5, "responsive"
  2. Capaz de combinar, en una misma pantalla, otros tipos de "Datasources" de diversa índole (Servidores REST, ODBC, OPC-UA y MQTT). En algunos casos, fuentes de datos difícilmente accesibles para un SCADA tradicional.
  3. Con un amplio abanico de "widgets", algunos de ellos específicos para interactuar con otros productos Proficy.
    Algo así como una versión actualizada y ampliada de los tradicionales controles ActiveX de los SCADAs tradicionales.


Procedimiento

Paso1 - Definir un "datasource" contra el servidor OPC-UA

En este ejemplo, se utilizará un servidor IGS instalado en el mismo servidor OperationsHub. 


Al servidor IGS previamente se le ha activado el servicio OPC-UA por el puerto 49310, permitiendo conexiones anónimas y sin cifrado.


En estas condiciones, registramos el Datasource desde el entorno de configuración propio de Operations Hub:
Obsérvese que si bien la conexión contra el OPC-UA es anónima, en este ejemplo se ha activado una contraseña de seguridad a nivel de IGS. Ésto es algo necesario a nivel de Operations Hub para poder implementar las escrituras (no así para las lecturas). En otros clientes OPC-UA de terceros, puee no ser obligatorio definir este segundo nivel de credenciales en la conexión.


En concreto, en IGS se ha definido, para este usuario "administrator"



Paso2 - Configuración de la pantalla Operations Hub

Primeramente hemos de ubicar en una tarjeta los widgets que deseamos animar. En este ejemplo se va a mostrar la lectura de un tag OPC-UA en un termómetro y en un indicador numérico. En ambos casos, se toman los widgets de la librería estándar de OperationsHub (Menú "Visuals" de la parte izquierda del editor)

Por otro lado, la escritura la implementaremos en un "slide bar". Se trata de un widget que cumple la doble función de leer el tag y escribirlo.

Seguidamente, desde el menú "Data" seleccionamos de los "datasources disponibles" la información que vamos a representar en pantalla. 

  • Para la lectura, definimos "TagBrowser>CurrentValue" --> "OPC-UA>LocalIGS" (nombre del "datasource").
    Allí, seleccionamos el tag OPC-UA a leer, que en este caso será "LEVEL".
    Arrastramos este valor a los tres elementos gráficos.

Verificamos que el valor ha quedado censado en la pantalla (menú "Page Data") y aprovechamos para renombrarlo como "OPC_level" para mayor claridad


Verificamos que en cada caso, el widget quede referenciado a la lectura, en la propiedad que corresponda en cada caso:

En el caso del "gauge", obsérvese en amarillo como se referencia la propiedad "fill" con el tag OPC de lectura.

Adicionalmente, se ha definido estáticamente otras propiedades como son la escala y los valores HH, H, LL y L (marcados en azul en el ejemplo)
El caso del "slide control" es muy similar al del gauge 
El caso del "slide control" es muy similar al del gauge


  • Para la escritura, hemos de deinir una query distinta.
    Para ello definimos "TagBrowser>OPC UA Write With Auth" --> "OPC-UA>LocalIGS" (nombre del "datasource").
    Allí, seleccionamos el tag OPC-UA a leer, que en este caso será "LEVEL". Arrastramos este valor al "slice control".
Nota: 
Al arrastrar, puede que el sistema dé un aviso de que el widget ya tiene datos vinculados (en este caso, sería la lectura del tag, realizada en el paso anterior). La solución consiste en remover el vínculo de lectura, para poder así arrastrar el de escritura. Posteriormente, se puede añadir manualmente de nuevo el vínculo de lectura (pues ya estará censado en la pantalla)


Verificamos que el valor ha quedado censado en la pantalla (menú "Page Data") y aprovechamos para renombrarlo como "OPC_level" para mayor claridad.

Adicionalmente, en este caso es clave que definamos en las propiedades el usuario y password del servidor, pues es imprescindible en el caso de escrituras OPC-UA desde Operations Hub (otros clientes OPC-UA pueden no requerir de password a este nivel, pero no así Operations Hub)


En este ejemplo además, se opta por remover la opción "submitOnLoad" pues no se desea que se produzca una escritura al abrir la pantalla con el objeto. Únicamente se desea lanzar la escritura en caso de implementar un cambio desde el control.


Verificamos que en cada caso, el widget quede referenciado a la lectura, en la propiedad que corresponda en cada caso:

Obsérvese las referencias a la query de escritura en amarillo, mientras que las referencias a la query de lectura están señaladas en verde. En este caso, el hecho de haber seleccionado una nomenclatura clara ("OPC_LEVEL" y "OPC_LEVEL_Write") nos facilita identificar en cada caso la query adecuada




Si se prueba la pantalla, se puede comprobar como se muestra el valor del tag OPC y se puede escribir a través del "Slice control", moviendo la barra horizontal.
El tiempo de refresco es menor o igual a 5'', tal y como se ha definido en las propiedades de las queries utilizadas.




Información adicional