Volver al inicio

Emulación APCS: Controladores Modbus RTU

El artículo describe el desarrollo de un emulador de software para APCS en Delphi que emula Modbus RTU, MDVV y controladores de pesaje. Cubre arquitectura, integración con colas de comandos y beneficios para pruebas. Adecuado para desarrolladores intermedios/senior de sistemas industriales.

Emulador APCS: desde Panel de Control hasta Código Delphi
Advertisement 728x90

Emulación de controladores en sistemas SCADA para pruebas

Desarrollar software para sistemas de Supervisión, Control y Adquisición de Datos (SCADA) requiere pruebas rigurosas de la interacción entre dispositivos, sensores y controladores. Las consolas físicas tradicionales con interruptores y células de carga podían simular escenarios básicos, pero estaban limitadas por su capacidad de peso (hasta 30 kg) y no podían reproducir completamente procesos paralelos. La transición a la emulación de software usando Delphi eliminó estas restricciones, permitiendo una simulación precisa de la comunicación Modbus RTU y del comportamiento de módulos de entrada/salida.

El emulador se construye como un configurador de dispositivos: los usuarios agregan controladores, asignan direcciones RS-485 y mapean entradas/salidas. Soporta todas las versiones de equipos, incluyendo botones de parada de emergencia para simular fallos de comunicación.

Arquitectura del emulador

La ventana principal del emulador muestra una lista de dispositivos con indicadores de estado. Para controladores de pesaje, incluye:

Google AdInline article slot
  • Un deslizador para ajustar el peso sin límites físicos.
  • Configuración manual de parámetros y cambio de estado.
  • Un interruptor manual/automático con incrementos aleatorios de peso para simulaciones realistas de dosificación.

Los módulos I/O permiten cambiar manualmente entradas y salidas. En modo automático, emulan la dosificación real de materiales (cemento, áridos, agua).

La integración con la aplicación principal es mínima: la directiva del compilador $IF Emulate=True redirige las llamadas desde ComPort.Write hacia Emulator.Send.

{$IF Emulate=True}
Emulator.Send(EmulData, FWaitingTime);
{$ELSE}
ComPort.Write(OutDIOM, 11, @InDIOM, 8);
ComPort.Wait(FWaitingTime);
{$IFEND}

Los cambios se mantienen aislados al módulo de comunicación: los comandos Modbus RTU permanecen inalterados y las respuestas siguen estrictamente las especificaciones.

Google AdInline article slot

Colas de comunicación y comandos

La comunicación sigue un patrón de "comando" con múltiples colas para permitir la ejecución paralela:

  • Lectura continua del estado de los controladores (incluso durante períodos de inactividad).
  • Lectura de entradas/salidas de los módulos I/O para monitoreo.
  • Envío de comandos (prioridad más alta: inicio de dosificación, activación de motores).

Un flujo continuo gestiona las colas. Las colas de lectura se llenan hasta un umbral, mientras que los comandos de operador de alta prioridad se insertan al principio. Los comandos se generan dinámicamente según el estado actual y esperado de los dispositivos.

Ejemplo: En una planta de hormigón, tres o más operaciones de dosificación se ejecutan en paralelo (configuración, asignación de peso, inicio). En una planta de cemento, se realizan comprobaciones secuenciales de estado antes de cada nuevo comando.

Google AdInline article slot

Los indicadores de cola se vuelven rojos cuando se pierde la comunicación. Los retrasos en 10 módulos I/O (20 ms por solicitud) generan un ciclo de ~400 ms más la encuesta del controlador, totalizando ~1 segundo de tiempo de respuesta —un valor considerado en la interfaz para evitar alertas falsas.

Ventajas de la emulación de software

  • Simulación completa de escenarios: fallos, atascos, dosificación paralela —todo sin hardware físico.
  • Guardado y carga de configuraciones adaptadas a plantas específicas.
  • Extensibilidad: añadir nuevos dispositivos solo requiere cumplir con las especificaciones de Modbus y del controlador.
  • Puesta en marcha más rápida: menos errores imprevistos en campo.

El emulador funciona sobre aplicaciones heredadas de Windows XP/7, permitiendo pruebas complejas sin tiempos de inactividad ni riesgo de daño.

Conclusiones clave

  • La emulación preserva la precisión de Modbus RTU, minimizando cambios en el código central.
  • El modo automático incluye dosificación aleatoria para condiciones de prueba realistas.
  • Varias colas de comandos permiten ejecución paralela sin bloqueos.
  • Sencillez: fácil de aprender tras entender el protocolo y la documentación del dispositivo.
  • Ahorro de costos: no se necesita panel físico, desarrollo y depuración más rápidos.

— Editorial Team

Advertisement 728x90

Leer después