// Rung 0: Ascensor en Piso 1
--[I0.3]------------------(M0.0)
// Si el sensor de fin de carrera del Piso 1 está activado, setea M0.0 (Ascensor en Piso 1).
// Rung 1: Ascensor en Piso 2
--[I0.4]------------------(M0.1)
// Si el sensor de fin de carrera del Piso 2 está activado, setea M0.1 (Ascensor en Piso 2).
// Rung 2: Ascensor en Piso 3
--[I0.5]------------------(M0.2)
// Si el sensor de fin de carrera del Piso 3 está activado, setea M0.2 (Ascensor en Piso 3).
// Rung 3: Petición Ir a Piso 1
--[I0.0]------------------(SET M0.3)
// Si se presiona el botón de llamada del Piso 1, setea M0.3.
// Rung 4: Reset Petición Ir a Piso 1 (cuando llega al piso 1 y puertas se abren)
--[M0.0]--[M0.6]----------(RST M0.3)
// Si el ascensor está en el Piso 1 Y la puerta está abierta, resetea M0.3.
// Rung 5: Petición Ir a Piso 2
--[I0.1]------------------(SET M0.4)
// Rung 6: Reset Petición Ir a Piso 2
--[M0.1]--[M0.6]----------(RST M0.4)
// Rung 7: Petición Ir a Piso 3
--[I0.2]------------------(SET M0.5) // Rung 9: Lógica Motor Subir
--[M0.7]----[I1.2 /]----[M1.2 /]----[
--[M0.0]--[M0.4]--
--[M0.0]--[M0.5]--
--[M0.1]--[M0.5]--
]---------------------(Q0.0)
// El motor sube si:
// - La puerta está cerrada (M0.7)
// - NO hay Parada de Emergencia (I1.2 normalmente cerrado)
// - NO hay fallo (M1.2)
// - Y alguna de estas condiciones se cumple:
// - Está en Piso 1 Y hay petición para Piso 2
// - Está en Piso 1 Y hay petición para Piso 3
// - Está en Piso 2 Y hay petición para Piso 3
// Rung 10: Lógica Motor Bajar
--[M0.7]----[I1.2 /]----[M1.2 /]----[
--[M0.2]--[M0.4]--
--[M0.2]--[M0.3]--
--[M0.1]--[M0.3]--
]---------------------(Q0.1)
// El motor baja si:
// - La puerta está cerrada (M0.7)
// - NO hay Parada de Emergencia (I1.2 normalmente cerrado)
// - NO hay fallo (M1.2)
// - Y alguna de estas condiciones se cumple:
// - Está en Piso 3 Y hay petición para Piso 2
// - Está en Piso 3 Y hay petición para Piso 1
// - Está en Piso 2 Y hay petición para Piso 1
// Rung 11: Bit de Motor en Movimiento
--[Q0.0]------------------(M1.0)
--[Q0.1]------------------|
// Rung 12: Bit de Ascensor Detenido (cuando no hay movimiento)
--[M1.0 /]----------------(M1.1)
// Si el motor NO está en movimiento, el ascensor está detenido.
// Rung 8: Reset Petición Ir a Piso 3
--[M0.2]--[M0.6]----------(RST M0.5)
// Rung 13: Lógica Abrir Puerta
--[M1.1]----[ // Solo abrir si el ascensor está detenido
--[M0.0]--[M0.3 /]--[I0.6]-- // Si está en Piso 1 y NO hay petición para Piso 1 O pulsador
de abrir
--[M0.1]--[M0.4 /]--[I0.6]-- // Si está en Piso 2 y NO hay petición para Piso 2 O pulsador
de abrir
--[M0.2]--[M0.5 /]--[I0.6]-- // Si está en Piso 3 y NO hay petición para Piso 3 O pulsador
de abrir
--[I1.0]-------------------- // O si hay un obstáculo en la puerta (prioridad)
--[I1.1]-------------------- // O si hay presencia en la cabina (para mantener abierta)
]---------------------(Q0.2)
// La puerta se abre si:
// - El ascensor está detenido (M1.1)
// - Y alguna de estas condiciones se cumple:
// - El ascensor llegó a su destino (Piso X y NO hay petición para ese Piso X)
// - Se presiona el pulsador de abrir puerta (I0.6)
// - Hay un obstáculo en la puerta (I1.0)
// - Hay presencia en la cabina (I1.1)
// Rung 14: Lógica Cerrar Puerta
--[M1.1]----[I1.0 /]----[I1.1 /]----[
--[I0.7]-- // Pulsador cerrar
--[T0]---- // Temporizador de puerta abierta (ver Timer más abajo)
]---------------------(Q0.3)
// La puerta se cierra si:
// - El ascensor está detenido (M1.1)
// - NO hay obstáculo (I1.0 /)
// - NO hay presencia en cabina (I1.1 /)
// - Y alguna de estas condiciones se cumple:
// - Se presiona el pulsador de cerrar puerta (I0.7)
// - El temporizador de puerta abierta ha terminado (T0)
// Rung 15: Bit Puerta Abierta
--[Q0.2]------------------(M0.6)
// Si la salida de Abrir Puerta está activa, setea M0.6.
// Rung 16: Bit Puerta Cerrada
--[Q0.3]------------------(M0.7)
// Si la salida de Cerrar Puerta está activa, setea M0.7.
// Rung 17: Temporizador de Puerta Abierta
--[M0.6]------------------[TON T0, 500] // TON = Timer ON Delay (5 segundos)
// Si la puerta está abierta (M0.6), inicia un temporizador de 5 segundos.
// Después de 5 segundos, la salida T0 (bit de finalización del temporizador) se activa.
// Rung 18: Luz Piso 1
--[M0.0]------------------(Q0.4)
// Rung 19: Luz Piso 2
--[M0.1]------------------(Q0.5)
// Rung 20: Luz Piso 3
--[M0.2]------------------(Q0.6)
// Rung 21: Parada de Emergencia
--[I1.2 /]----------------(M1.2)
// Si el pulsador de Parada de Emergencia (NC) se desactiva, activa el bit de fallo (M1.2).
// Cuando M1.2 se activa, desenergiza los motores y cierra las puertas (lógica en otras rung).
// Rung 22: Alarma/Campanilla por Emergencia
--[M1.2]------------------(Q0.7)