Cimplicity: Cambiar texto de un botón según el estado de un punto

Recientemente, en un proyecto implementé una solución para un botón de conmutación (toggle) que indica el modo de operación (Manual o Automático) de forma dinámica.

A continuación, explico cómo configurar este comportamiento utilizando variables de objeto y procedimientos.

El Desafío

Necesitamos que un mismo objeto gráfico realice dos tareas:

  1. Invertir el valor de un bit en el PLC.

  2. Cambiar su propio texto para reflejar el nuevo estado.

Para que esto sea eficiente, el texto no puede ser estático. Utilizaremos una variable interna, en este caso llamada {Modo}, que servirá como puente entre la lógica del punto y la visualización.

Configuración de la Variable

Dentro de las propiedades del grupo o botón, en la pestaña Variables, debemos declarar la variable {Modo}. Es recomendable asignarle un valor inicial como "INDEFINIDO" o "ERROR" para detectar rápidamente si la lógica de actualización no se está ejecutando.

Lógica de Eventos y Procedimientos

El secreto para que el texto sea siempre preciso es gatillar la actualización en dos momentos específicos. Para ello, creamos un procedimiento (en este caso llamado CambiarModo) que se ejecute bajo los siguientes eventos:

  • Screen Open: Para que, al cargar la pantalla, el botón lea el estado actual del punto y no muestre el valor por defecto de la variable.

  • Mouse Up: Para que, inmediatamente después de que el operador haga clic, el texto cambie sin esperar a que la pantalla se refresque por completo.

Aquí podemos ver cómo queda configurado el evento en las propiedades del grupo:

Configuración del evento Mouse Up llamando al procedimiento CambiarModo.

Estructura del Procedure

Dentro del Procedure Information, configuramos las acciones necesarias. Si estamos en el evento Mouse Up, primero realizamos el cambio de estado del punto y luego actualizamos la variable de texto.

La siguiente imagen muestra el detalle de las acciones dentro del procedimiento:


Detalle de las acciones Expression Setpoint y 'Variable assign' dentro del procedimiento.

Acción de Conmutación (Toggle)

  • Action type: Expression setpoint.

  • Point ID: MANUAL_AUTOMATICO.

  • Value: NOT MANUAL_AUTOMATICO.

Actualización del Texto 

Posteriormente, usamos la acción 'Variable assign' para traducir el valor booleano del punto a un texto comprensible para el operador. La lógica es la siguiente:

  • Variable: Modo.

  • Value: IF MANUAL_AUTOMATICO THEN "AUTOMATICO" ELSE "MANUAL".

Implementación en la Pantalla

Finalmente, en la configuración de texto del objeto, debemos insertar la variable {Modo} entre llaves. De esta manera, CimEdit reemplazará el nombre de la variable por el resultado de la expresión evaluada en el procedimiento.

(Si tienes dudas sobre cómo vincular variables a un campo de texto, puedes consultar esta entrada donde se muestra un ejemplo).

Un último consejo

Al configurar el evento Mouse Up, es una buena práctica activar la casilla Debounce event (visible en la primera imagen). Esto evita que, por un doble clic accidental del operador o un problema de sensibilidad del mouse, el punto cambie de estado dos veces consecutivas rápidamente, lo que podría generar inconsistencias en la lógica del proceso.


Comentarios

Cargando menciones...

Entradas más populares de este blog

Cimplicity: Un problema de región

RISH LM-1360: No muestra el menú de IP