Un HMI táctil en Tkinter puro, balizas incluidas
Modo kiosco para un panel de operario
Refresco con after(), no con hilos
after() de Tkinter: el hilo de la GUI lee las últimas medidas cada 500 ms y repinta. Sin hilos en segundo plano tocando widgets ni condiciones de carrera — el clásico escollo de Tkinter, evitado por diseño mientras los módulos de adquisición hacen el trabajo lento.Las balizas reflejan el estado de la máquina
Un fragmento de la implementación
Tal cual del ejemplo desplegado en el Raspberry PLC 19R — cópialo libremente:
def set_beacon(active_color):
"""Turn on a single beacon and switch off the rest (exclusive state)."""
for color, relay in BEACONS.items():
state = rpiplc.HIGH if color == active_color else rpiplc.LOW
rpiplc.digital_write(relay, state)El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.
Preguntas frecuentes
¿Por qué Tkinter en lugar de un dashboard web?
Cero dependencias y fiabilidad total sin conexión. El banco debe funcionar sin red y sobrevivir a reinstalaciones del SO; Tkinter está en la biblioteca estándar, arranca en menos de un segundo y funciona durante semanas.
¿Bloquea la GUI la secuencia de ensayo?
No. La lógica de la secuencia corre en el mismo bucle de eventos mediante callbacks de after(), y la E/S pesada (SCPI, I2C) se completa en milisegundos. En ensayos de una hora el bucle simplemente se reprograma a sí mismo.
¿Puedo gobernar columnas luminosas reales directamente desde los relés del PLC?
Sí, esa es la gracia del Raspberry PLC. Las salidas R0.x son relés de contacto seco aptos para balizas de señalización a 24 V, así que las luces se cablean directamente a los bornes sin placas de relés externas.