PLC-Based Elevator Control System
ENMT211 Industrial Automation · Team of 2 · Omron PLC / CX-Programmer
Summary
Designed and implemented a PLC-based control system for a multi-floor elevator rig in the Controls Lab using an Omron PLC (CX-Programmer). Working in a team of two, we developed a finite state machine-based scheduling algorithm, a custom motion controller (no built-in PID blocks allowed), door interlock logic, and full button/light interface behaviour.
The system operated under hardware supervision from an embedded MCU that would override unsafe behaviour. The final implementation achieved reliable floor stopping, realistic door behaviour, and fair request scheduling without indefinite user waits.
Project Context
This was a real PLC controlling a physical elevator rig permanently installed in the lab — not a simulation. This included real motors, limit switches, quadrature encoder feedback, analogue motor control (0–5 V DAC output), physical doors with interlocks, and an MCU safety supervisor that would take control if unsafe conditions occurred (doors open during movement, incorrect voltage, etc.). The PLC had to control the system without triggering MCU intervention.
Motion Control
Built a custom motion controller from scratch (built-in PID blocks were prohibited). The controller implements four distinct motion phases: Accelerate → Cruise → Decelerate → Hold. Encoder-based position tracking issued directional speed commands via DAC. A calibrated hold voltage (unique per rig) was applied when stationary to satisfy the MCU tolerance window. Overshoot prevention required careful deceleration tuning based on encoder counts before floor detection.
Door Logic & Safety Interlocks
Doors only open when the elevator is at a floor (limit switch active) and the carriage output is at the hold value. Doors must fully close before movement begins. Open/close commands are deactivated once the limit switch confirms state — failure to release would trigger MCU override. The implementation includes a door state machine with timed open duration, explicit interlock conditions, and movement inhibit logic. Doors never open while in motion.
Scheduling Algorithm
Implemented a direction-based elevator scheduling algorithm: continue servicing requests in the current direction, queue requests behind the direction change, reverse only when no further requests exist in the current direction, and move to the nearest pending request when idle. This prevents starvation and mirrors real elevator dispatch logic. The scheduling logic was implemented as a structured FSM for clarity.
My Contribution
Designed the elevator scheduling FSM, implemented the custom motion control logic (accel/decel profile), integrated encoder feedback for floor positioning, developed door interlock logic, structured the Ladder program for clarity, debugged overshoot and hold-value drift, and tested under real hardware constraints.
Artifacts
Elevator Program Files (.zip) — Elevator simulator files
Project Files (.zip) — CX-Programmer ladder logic project
Key Skills & Tools
Industrial Automation
- Omron PLC programming (CX-Programmer)
- Ladder Logic
- Structured Text (IEC 61131-3)
- High-speed counter configuration
- Analogue DAC motor control
Control Systems
- Custom motion controller design
- Encoder-based positioning
- Acceleration/deceleration profiling
- Industrial safety interlocks
Software Engineering
- Finite State Machine design
- Request scheduling algorithms
- Symbol-based PLC programming
- Hardware–software integration