CODESYS Ladder - santiagoguti17/ejercicio_TanqueQuimico GitHub Wiki
2. CODESYS — Diseño del Ladder
Herramienta: CODESYS V3.5 SP22 Patch 3 8(Referencias), con programación en Ladder según IEC 61131-3 5(Referencias) · Dispositivo CODESYS Control Win V3 (runtime de simulación) · PLC_PRG en lenguaje Ladder (LD).
Archivo: codesys/EjercicioTanqueQuimico_HMI.project
2.1 Variables de PLC_PRG
| Variable | Tipo | Función |
|---|---|---|
B1_TankEmpty |
BOOL | Sensor B1 (inferior): 1 = hay líquido en el fondo |
B2_MinLevel |
BOOL | Sensor B2 (medio): 1 = se alcanzó el nivel mínimo |
B3_Overflow |
BOOL | Sensor B3 (superior): 1 = nivel de rebose |
H1_NivelOK |
BOOL | Lámpara verde: nivel correcto |
H2_NivelBajo |
BOOL | Lámpara amarilla: nivel bajo |
H3_NivelAlto |
BOOL | Lámpara amarilla: nivel alto / rebose |
H4_TanqueVacio |
BOOL | Lámpara roja: tanque vacío |
H5_Error |
BOOL | Lámpara roja: error de sensor (señal incoherente) |
tonParpadeoOn, tonParpadeoOff |
TON | Temporizadores del reloj de parpadeo (500 ms cada uno) |
Parpadeo_500ms, Fase_OFF |
BOOL | Salidas del reloj de parpadeo |
H3_Parpadeo, H5_Parpadeo |
BOOL | Versiones intermitentes de H3 y H5, solo para el HMI |
2.2 Redes del Ladder
Cada red lleva un título y un comentario con la fila de la tabla de verdad y la ecuación que implementa.
| Red | Condición | Salida |
|---|---|---|
| 1 | /B3 · /B2 · /B1 |
H4_TanqueVacio |
| 2 | /B3 · /B2 · B1 |
H2_NivelBajo |
| 3 | /B3 · B2 · B1 |
H1_NivelOK |
| 4 | B3 · B2 · B1 |
H3_NivelAlto |
| 5 | B3 · (/B2 + /B1) + /B3 · B2 · /B1 (ramas en paralelo = OR) |
H5_Error |
| 6 | /tonParpadeoOff.Q → TON(500 ms) |
Parpadeo_500ms (= tonParpadeoOn.Q) |
| 7 | tonParpadeoOn.Q → TON(500 ms) |
Fase_OFF (reinicia ambos TON) |
| 8 | H5_Error · Parpadeo_500ms |
H5_Parpadeo |
| 9 | H3_NivelAlto · Parpadeo_500ms |
H3_Parpadeo |
Figura 1. Redes 1–3 en modo en línea (estado 000: se energiza la red de H4).
Figura 2. Redes 3–5.
Figura 3. Red 5: la rama en paralelo implementa el OR de las condiciones de error.
Figura 4. Redes 6–7: reloj de parpadeo con dos temporizadores TON de 500 ms (se observa el tiempo transcurrido ET).
Figura 5. Redes 8–9: lámparas intermitentes de error y rebose (solo HMI).
2.3 Decisiones de diseño
- Una sola bobina para H5. El enunciado define una única lámpara de error. Una versión inicial usaba dos bobinas (
H5_ErroryH5_Errormin) porque CODESYS no admite escribir la misma bobina en dos redes; se resolvió reuniendo las condiciones en una sola red con ramas en paralelo, de modo que H5 cubre las cuatro combinaciones inválidas. - H3 exige los tres sensores. En una versión previa H3 solo evaluaba
B3, lo que contradecía la condición de error (rebose con sensores inferiores incoherentes). Se corrigió aB3 · B2 · B1. - Variables unificadas Ladder–HMI. Un defecto temprano dejó el HMI escribiendo variables (
B1_TankEmpty…) distintas de las que leía el Ladder (B1…), por lo que H4 permanecía encendida. Se unificaron los nombres; la lección es verificar que programa y visualización usen exactamente las mismas variables. - Elemento controlado por tiempo. El proceso es combinacional, pero se añadió un reloj de 1 s (dos TON encadenados: 500 ms en cada fase) para que el HMI haga parpadear las lámparas de alarma (H3 y H5). Las salidas lógicas
H3_NivelAltoyH5_Errorno cambian: el parpadeo vive en variables auxiliares (H3_Parpadeo,H5_Parpadeo), de modo que el Ladder que se migra a OpenPLC permanece idéntico. - Documentación. Cada red lleva título y comentario con la fila de verdad y la ecuación, y cada variable tiene su comentario de declaración.