Esquema de animación en SCADA

Al crear HMI, con frecuencia la tarea es construir un mapeo de un circuito complejo de elementos relacionados. Esto puede ser esquemas de tuberías ramificadas, electricidad, etc.

Por supuesto, puede limitarse a mostrar elementos clave (válvulas de compuerta, disyuntores), pero cuanto más grande sea el circuito, más difícil será componer una imagen completa y garantizar las acciones correctas del operador.

imagen

Este artículo describe la coloración de elementos de tales esquemas, describe el método de solución para Simatic WinCC v7 y su implementación en Simargl SCADA. Si no tiene que trabajar con WinCC, puede mirar al final del artículo: hay un video curioso.

Para una representación más visual de por qué todo esto es necesario, tomamos un pequeño esquema simple.

imagen

Ahora imagine lo que sucederá si hay una operación. ¿Cuánto tiempo lleva rastrear la ruta de un producto a través de un sistema de tuberías? Nos armamos con un cronómetro.

Listo? ¡Vamos!
image


Según mis observaciones, lleva de 10 a 15 segundos.

Y ahora recuerde que (de repente) las operaciones pueden ser varias al mismo tiempo. Esto "ligeramente" complica la tarea. ¿Listo para ponerte a prueba de nuevo?

¡Vamos!
image


Traduciendo a un idioma decente las palabras de mi colega: “¡Esa es una oportunidad! Mientras rastreas la segunda ruta, te olvidarás mucho de la primera. ¡Qué esquema tan maravilloso y conveniente!

Pero el esquema es realmente simple: ni siquiera tiene lecturas de instrumentos y varias firmas (un saludo especial a los fanáticos para dibujar tuberías "tridimensionales"). En la práctica, las cosas pueden ser peores. Me he encontrado con esquemas significativamente más grandes (más de 400 válvulas).

¿Qué puede hacer un operador con una imitación de este tipo? En el mejor de los casos, abra lentamente las válvulas de compuerta a lo largo de la ruta y espere que no se haya equivocado. Pero, ¿qué sucede si el cambio debe hacerse rápidamente y el costo del error es alto?

La salida de esta situación es obvia: es necesario colorear las líneas a lo largo de la ruta, y es aconsejable hacerlo antes de la acción de control. Por extraño que parezca, no vi una solución lista para usar, incluso con los costosos paquetes SCADA. Un intento de teñir manualmente cada línea amenaza con retrasar la configuración casi hasta el infinito.

Solución para WinCC v7


Resolví tal problema basado en WinCC v7. Desafortunadamente, según los términos del contrato, no tengo derecho a presentar una solución preparada, pero puedo describir una posible solución. De repente alguien será de ayuda.

Notaré de inmediato que se tratará de la familia de productos WinCC versión 7, ya que existe la oportunidad de usar VBA. Es necesario advertir, todo lo que se describe a continuación es más probable que sea un truco, se utiliza desde la desesperanza y no es adecuado en todos los casos.

Continuaré la discusión en términos de tuberías y válvulas, aunque, por supuesto, todo será igual para los esquemas de suministro de energía.

Divida mentalmente el esquema en secciones para que en cada lado solo haya una entrada / salida. Aquellos. Si se corta una salida en la tubería, se deberán hacer tres secciones: antes de la rama, luego la rama misma.
Para crear un diagrama, deberá usar dos tipos de objetos gráficos estándar:
Conector (para dibujar líneas) y Círculo (para crear puntos de control del diagrama). El conector es necesario porque le permite determinar qué objetos en el circuito están conectados, en contraste con la línea habitual. El círculo estándar debe rehacerse en CustomObject; esto evitará confusión al ordenar elementos del esquema mnemónico y dará nombres convenientes a las propiedades.

Parte de los puntos de control corresponderá a las uniones de las tuberías, y parte a las válvulas de compuerta. Para este último, seleccionamos cualquier propiedad no utilizada y asignamos una acción VBS, donde creamos una constante y le asignamos un valor de cadena con el nombre de la válvula:

imagen

A continuación, escribimos un script en VBA que pasará por todos los elementos de la pantalla y para cada conector crearemos una lista de pestillos conectados indirectamente, lo que le permitirá crear finalmente texto VBS para la propiedad BorderColor. Esto se puede lograr debido al hecho de que Connector tiene dos propiedades: TopConnectedObjectName y BottomConnectedObjectName, disponibles en VBA.

El resultado de este script se verá más o menos así:

imagen

D1 y D2: matrices con los nombres de las válvulas; TubeColor: una función que devuelve el color y el estilo de línea según el estado de las válvulas.

Un punto importante: al escribir un script VBS en un elemento, también debe cambiar los desencadenantes.

En la función TubeColor, será necesario establecer todas las reglas de coloración según la situación tecnológica. Por supuesto, TubeColor debe representarse en el script Global.

Entonces comenzará la lucha por el rendimiento, la optimización de VBS, etc., ya que WinCC apenas puede transferir grandes diagramas mnemónicos. Pero debemos rendir homenaje a los colegas de Siemens, la velocidad de VBS ha aumentado significativamente, si no me equivoco, de la versión 7.3, que simplificó enormemente la vida de los desarrolladores de proyectos aplicados.

Descripción de la implementación en Simargl SCADA


Para dibujar esquemas animados, Simargl SCADA incluye dos widgets:
SPipeScene, una escena para dibujar líneas y establecer reglas de coloración;
SPipe: para especificar puntos nodales y mostrar cambios en el estado del equipo de campo.

En esencia, el proceso se reduce a simplemente colocar los puntos nodales del circuito, vincular las propiedades a los valores de las etiquetas y colocar widgets en la parte superior de la escena que muestran el estado del equipo. Todo se parece a esto:


Es curioso que para crear el circuito real, no fue necesario escribir código en absoluto.

Puede obtener la versión demo de Simargl SCADA, la documentación y las fuentes del proyecto del video de la página de Facebook .

Source: https://habr.com/ru/post/undefined/


All Articles