CONTEXTO
En migraciones de aplicaciones desde InTouch HMI hacia InTouch OMI es habitual reutilizar los mismos gráficos de sensores y actuadores ya existentes en la librería de objetos. Sin embargo, durante la ejecución en OMI pueden aparecer warnings en el log del SMC, normalmente relacionados con funciones de scripting no compatibles entre ambos entornos.
El origen está en que InTouch HMI y InTouch OMI manejan la visualización de forma diferente:
- En InTouch HMI, el modelo clásico utiliza funciones como ShowSymbol() o ventanas popup asociadas al símbolo.
- En OMI, la navegación y visualización de faceplates se basa en el concepto de contenido y regiones, siendo la función recomendada ShowContent() para mostrar gráficos dentro del layout.
Cuando se usan gráficos idénticos en ambos entornos, los scripts diseñados para HMI intentan ejecutarse también en OMI, lo que genera advertencias en el log, aunque no afecte a la funcionalidad.
La forma de resolverlo consiste en introducir lógica condicional en los scripts, de modo que cada entorno ejecute solo el bloque de código que le corresponde:
- En OMI: usar ShowContent() para navegar al faceplate o contenido definido.
- En InTouch HMI: mantener la lógica de ShowSymbol() o incluso no realizar ninguna acción adicional si el símbolo ya abre la ventana por configuración.
OPCIONES
Existen, principalmente, dos estrategias principales para implementar esta separación:
- Detección directa del entorno: verificar en el script la existencia de objetos propios de OMI, como MyViewApp. Estos no están disponibles en HMI, por lo que permiten discriminar el entorno en tiempo de ejecución y ejecutar el bloque correcto.
- Mecanismo indirecto: definir un tag indicador accesible desde ambos entornos que informe si la aplicación está en HMI o en OMI. El script evalúa el tag y decide qué lógica aplicar, evitando así que el runtime de HMI intente resolver referencias a objetos exclusivos de OMI.
Como alternativa más estricta, puede optarse por mantener gráficos duplicados, uno optimizado para HMI y otro para OMI, lo que garantiza independencia total y evita conflictos, aunque incrementa el mantenimiento.
CONCLUSIÓN
Los warnings al reutilizar gráficos en HMI y OMI provienen de la ejecución de código no válido en el entorno equivocado. La solución pasa por separar la lógica mediante detección de entorno o mediante duplicación de gráficos, y en el caso de OMI, migrar las llamadas de visualización hacia ShowContent() en lugar de funciones heredadas de HMI.