Desarrolladores/Fundamentos

Arquitectura

Capas, módulos y fronteras del motor para contribuir o extender abSCADA.

2 min de lectura

abSCADA es un monolito modular en Python. Una sola aplicación, pero con un núcleo que no conoce la interfaz: proyecto, runtime, alarmas y almacenamiento funcionan sin Qt.

Capas

Studio (Qt) ──► Project (carga y validación) ◄──► Archivos JSON
     │
     └──► RuntimeWindow ──► Runtime (almacén de muestras)
                               ├── Cola de escrituras
                               ├── Trabajador por conexión ──► Connector ──► S7 / Modbus
                               ├── OperationsService ──► SQLite (alarmas, registros)
                               └── ScriptService ──► proceso Python aislado

Módulos principales

Módulo Responsabilidad No conoce
project.py Carga, validación, estructuras y faceplates Qt, sockets
connectors.py Contrato Connector, registro y S7 Widgets
protocol_definition.py Esquemas de conexión y enlace Qt, red
modbus.py Cliente Modbus TCP Pantallas
runtime.py Valores, calidad, cola, adquisición Edición gráfica
alarms.py Máquina de estados de alarmas Transporte
storage.py SQLite, consultas, retención Clientes PLC
scripting.py Coordinador de scripts y tareas Widgets
graphics.py Lienzo y primitivas de dibujo Clientes PLC
ui.py Studio Lecturas en vivo
runtime_window.py Ventana de operación Estado editable

Principios

  • Studio nunca consume muestras. Runtime trabaja sobre una copia profunda del proyecto.
  • Las escrituras son órdenes. Se validan antes de encolarse y no se reproducen tras reconectar.
  • Un trabajador por conexión. Un equipo lento no retrasa a otro.
  • Un único escritor SQLite. Los trabajadores PLC solo entregan muestras a una cola.
  • Formatos abiertos. No se serializan objetos Qt ni binarios opacos.

Modelo de muestra

Sample(value=72.4, quality="good", timestamp=1759651200.123, error=None)

quality es good, uncertain o bad. timestamp es la hora de actualización en el runtime, no una marca del PLC.

Límites conocidos

Las lecturas dentro de una conexión son individuales. Para miles de variables harán falta lecturas agrupadas, métricas y calidad stale. No se ha medido todavía la capacidad máxima.