0
0
FreertosHow-ToBeginner · 4 min read

How PLC Works: Basics of Programmable Logic Controllers

A PLC (Programmable Logic Controller) works by continuously scanning its inputs, executing a user-defined program, and updating its outputs to control machines or processes. It repeats this cycle rapidly to respond to changes in real time.
📐

Syntax

A PLC program typically follows a scan cycle with these parts:

  • Input Scan: Reads the current state of all input devices like sensors and switches.
  • Program Execution: Runs the logic written by the user to decide what outputs should do.
  • Output Update: Sets the output devices like motors or lights based on the program results.
  • Housekeeping: Internal tasks like communication and diagnostics.
text
PLC Scan Cycle:
1. Read Inputs
2. Execute Program Logic
3. Write Outputs
4. Perform Housekeeping Tasks
💻

Example

This simple example shows a PLC program that turns on a motor when a start button is pressed and turns it off when a stop button is pressed.

structured_text
(* PLC Ladder Logic Example *)

(* Inputs *)
StartButton : BOOL; (* TRUE when pressed *)
StopButton : BOOL;  (* TRUE when pressed *)

(* Output *)
Motor : BOOL;

(* Internal Memory *)
MotorOn : BOOL;

(* Program Logic *)
IF StartButton AND NOT MotorOn THEN
    MotorOn := TRUE;
ELSIF StopButton THEN
    MotorOn := FALSE;
END_IF;

Motor := MotorOn;
Output
When StartButton is TRUE and Motor is off, Motor turns ON. When StopButton is TRUE, Motor turns OFF.
⚠️

Common Pitfalls

Some common mistakes when working with PLCs include:

  • Not properly debouncing input signals, causing false triggers.
  • Forgetting to initialize internal memory variables, leading to unpredictable outputs.
  • Writing logic that does not handle all input states, causing the output to get stuck.
  • Ignoring the scan cycle timing, which can cause delays or missed events.
structured_text
(* Wrong: No memory to hold motor state *)
Motor := StartButton AND NOT StopButton;

(* Right: Use memory to hold motor state *)
IF StartButton AND NOT MotorOn THEN
    MotorOn := TRUE;
ELSIF StopButton THEN
    MotorOn := FALSE;
END_IF;
Motor := MotorOn;
📊

Quick Reference

PLC TermDescription
Input ScanReads all input devices' current states
Program ExecutionRuns user logic to decide outputs
Output UpdateSets output devices based on logic
Scan CycleComplete loop of input, logic, output, housekeeping
MemoryInternal variables to store states between scans

Key Takeaways

A PLC works by scanning inputs, running a program, and updating outputs repeatedly.
Use internal memory to hold states for reliable control logic.
Understand the scan cycle to avoid timing and logic errors.
Always handle all input conditions to prevent outputs from getting stuck.
Debounce inputs to avoid false triggers in your program.