Manual de usuario/Ingeniería
Variables y conexiones
Tipos, estructuras, conexiones S7, Beckhoff ADS, Modbus TCP y OPC UA y cómo enlazar cada campo sin escribir JSON.
3 min de lectura
Conceptos
- Una variable es un dato del proyecto: nombre, tipo, valor inicial y permiso de escritura.
- Una conexión identifica un equipo: protocolo, IP, puerto y ciclo de lectura.
- Un enlace dice dónde vive el dato dentro de ese equipo (DB y byte, o registro Modbus).
Las pantallas solo conocen nombres de variables. Cambiar de PLC no obliga a tocar pantallas.
Tipos y estructuras
Tipos primitivos: bool, int, float, string. En la pestaña Tipos de datos de Variables puedes definir estructuras, por ejemplo Bomba con marcha, caudal y consigna. Una variable de tipo estructura se muestra como grupo desplegable: Bomba1.marcha, Bomba1.caudal… Cada campo puede tener su propio enlace y permiso.

Crear una conexión
En Conexiones pulsa Añadir y elige protocolo.
| Protocolo | Datos de conexión |
|---|---|
| OPC UA | Endpoint, política de seguridad, usuario, contraseña y ciclo |
| Siemens S7 | IP, puerto (102), rack, slot, ciclo en ms |
| Modbus TCP | Host, puerto (502), Unit ID, timeout, ciclo en ms |
| Beckhoff ADS | IP, puerto TCP (48898), AMS Net ID del PLC, puerto ADS (851 o 801, según el PLC), AMS Net ID local, timeout |
El ciclo admite de 50 a 60000 ms. Es un objetivo, no una garantía de tiempo real.
Enlazar un campo
En Variables despliega la estructura y pulsa Enlace… en el campo. El formulario cambia según el protocolo de la conexión elegida.
Siemens S7: DB, byte, codificación (BOOL, BYTE, INT, DINT, REAL) y bit para BOOL.
| Variable | Dirección | Significado |
|---|---|---|
| Motor.marcha | %DB1.DBX0.0 |
Bit 0 del byte 0 del DB1 |
| Motor.velocidad | %DB1.DBW2 |
Entero de 16 bits en el byte 2 |
| Deposito.nivel | %DB2.DBD4 |
REAL de 32 bits en el byte 4 |
Acceso absoluto
El adaptador S7 lee bloques DB por dirección absoluta. Los nombres SCADA no son símbolos del programa PLC. Desactiva el acceso optimizado del DB en la configuración del PLC.
Modbus TCP: área (coils, discrete inputs, holding o input registers), offset base 0, codificación (uint16 … float64) y orden de bytes/registros. El holding register 40001 de un manual corresponde al offset 0.

Beckhoff ADS: escribe el símbolo tal como aparece en el programa del PLC (MAIN.rVelocidad, GVL.aMotores[2].bMarcha) y su tipo PLC (BOOL … LREAL, STRING). También admite grupo:offset, por ejemplo 0x4020:0 para %MB0. El PLC debe tener una ruta estática hacia el AMS Net ID del SCADA. La guía paso a paso está en examples/beckhoff/README.md.
Probar sin PLC Beckhoff
python -m abscada.ads_simulator arranca un PLC ADS simulado en 127.0.0.1:48898 para el ejemplo examples/beckhoff.
Calidad de los datos
| Calidad | Significado |
|---|---|
| good | Lectura correcta o variable interna válida |
| uncertain | Todavía no hay primera lectura |
| bad | Fallo de comunicación; se conserva el último valor |
Un valor con calidad bad nunca se presenta como lectura válida: los pilotos pasan a ámbar y los textos muestran —.
OPC UA
El enlace usa un NodeId, por ejemplo nsu=urn:latolva:plc;s=FV1.Temperatura. El cliente resuelve el namespace al conectar y lee periódicamente. La contraseña se introduce con Contraseña… y se guarda en secrets.json (base64, no cifrado). Los certificados desconocidos deben revisarse y aceptarse; consulta OPC UA.