04Nivel 2
Semáforo de un cruce
Dos semáforos coordinados con un solo temporizador de ciclo y contactos de comparación sobre su tiempo transcurrido.
El simulador está pensado para computadores (pantallas de 1024 px o más).
Planta virtual
Calle A: apagado. Calle B: apagado
Vista en reposo. En el simulador la planta se mueve según las salidas de tu programa.
Entradas y salidas
| Dirección | Nombre | Descripción |
|---|---|---|
| I0.0 | MARCHA | Interruptor de funcionamiento |
| Q0.0 | ROJO_A | Luz roja, calle A |
| Q0.1 | AMBAR_A | Luz ámbar, calle A |
| Q0.2 | VERDE_A | Luz verde, calle A |
| Q0.3 | ROJO_B | Luz roja, calle B |
| Q0.4 | AMBAR_B | Luz ámbar, calle B |
| Q0.5 | VERDE_B | Luz verde, calle B |
| T0 | CICLO | Temporizador del ciclo de 20 s |
| M0.0 | FIN_CICLO | Pulso al terminar cada ciclo |
Programa
Diagrama de escalera (Ladder, LD)
Peldaño 1 — Temporizador de ciclo de 20 s que se reinicia solo.
Peldaño 2 — Calle A: verde de 0 a 8 s.
Peldaño 3 — Calle A: ámbar de 8 a 10 s.
Peldaño 4 — Calle A: rojo de 10 a 20 s.
Peldaño 5 — Calle B: rojo de 0 a 10 s.
Peldaño 6 — Calle B: verde de 10 a 18 s.
Peldaño 7 — Calle B: ámbar de 18 a 20 s.
Diagrama de bloques de funciones (FBD)
Red 1 — Temporizador de ciclo de 20 s que se reinicia solo.
Red 2 — Calle A: verde de 0 a 8 s.
Red 3 — Calle A: ámbar de 8 a 10 s.
Red 4 — Calle A: rojo de 10 a 20 s.
Red 5 — Calle B: rojo de 0 a 10 s.
Red 6 — Calle B: verde de 10 a 18 s.
Red 7 — Calle B: ámbar de 18 a 20 s.
Texto estructurado (ST)
(* Semáforo de un cruce — convertido desde Ladder *)
VAR
CICLO : TON;
END_VAR
(* Peldaño 1: Temporizador de ciclo de 20 s que se reinicia solo. *)
CICLO(IN := MARCHA AND NOT FIN_CICLO, PT := T#20s);
FIN_CICLO := CICLO.Q;
(* Peldaño 2: Calle A: verde de 0 a 8 s. *)
VERDE_A := MARCHA AND T0.ET < T#8s;
(* Peldaño 3: Calle A: ámbar de 8 a 10 s. *)
AMBAR_A := MARCHA AND T0.ET >= T#8s AND T0.ET < T#10s;
(* Peldaño 4: Calle A: rojo de 10 a 20 s. *)
ROJO_A := MARCHA AND T0.ET >= T#10s;
(* Peldaño 5: Calle B: rojo de 0 a 10 s. *)
ROJO_B := MARCHA AND T0.ET < T#10s;
(* Peldaño 6: Calle B: verde de 10 a 18 s. *)
VERDE_B := MARCHA AND T0.ET >= T#10s AND T0.ET < T#18s;
(* Peldaño 7: Calle B: ámbar de 18 a 20 s. *)
AMBAR_B := MARCHA AND T0.ET >= T#18s;Lista de instrucciones (IL)
(* Semáforo de un cruce — convertido desde Ladder *)
VAR
CICLO : TON;
PELDANO_1 : BOOL;
END_VAR
(* Peldaño 1: Temporizador de ciclo de 20 s que se reinicia solo. *)
LD MARCHA
ANDN FIN_CICLO
ST PELDANO_1
CAL CICLO(IN := PELDANO_1, PT := T#20s)
LD CICLO.Q
ST FIN_CICLO
(* Peldaño 2: Calle A: verde de 0 a 8 s. *)
LD MARCHA
AND( T0.ET
LT T#8s
)
ST VERDE_A
(* Peldaño 3: Calle A: ámbar de 8 a 10 s. *)
LD MARCHA
AND( T0.ET
GE T#8s
)
AND( T0.ET
LT T#10s
)
ST AMBAR_A
(* Peldaño 4: Calle A: rojo de 10 a 20 s. *)
LD MARCHA
AND( T0.ET
GE T#10s
)
ST ROJO_A
(* Peldaño 5: Calle B: rojo de 0 a 10 s. *)
LD MARCHA
AND( T0.ET
LT T#10s
)
ST ROJO_B
(* Peldaño 6: Calle B: verde de 10 a 18 s. *)
LD MARCHA
AND( T0.ET
GE T#10s
)
AND( T0.ET
LT T#18s
)
ST VERDE_B
(* Peldaño 7: Calle B: ámbar de 18 a 20 s. *)
LD MARCHA
AND( T0.ET
GE T#18s
)
ST AMBAR_B
Paso a paso
- 1Pulsa ▶ Ejecutar (F5) y activa el interruptor MARCHA (I0.0).
- 2El peldaño 1 es un temporizador de 20 s que se reinicia solo: cuando termina, FIN_CICLO se activa, su contacto NC abre el temporizador y todo vuelve a empezar.
- 3Los demás peldaños comparan el tiempo transcurrido (CICLO.ET) con límites fijos: verde A de 0 a 8 s, ámbar A de 8 a 10 s, rojo A de 10 a 20 s; la calle B hace lo opuesto.
- 4Revisa en el monitor el valor de T0.ET y comprueba que nunca hay dos luces verdes a la vez. Prueba cambiando los tiempos de los contactos de comparación.