โ๏ธ What a PLC Actually Is
Before any wiring or programming: what a PLC actually is, why it exists, and how it's different from a regular computer or a microcontroller like the Raspberry Pi.
A PLC (Programmable Logic Controller) is an industrial computer built to control machinery โ conveyor belts, motors, valves, pumps, packaging lines, elevators, traffic lights โ reliably, continuously, for years, in environments a regular computer would never survive: heat, vibration, dust, electrical noise, and constant on/off power cycling.
Before PLCs existed (pre-1970s), factory control was done entirely with physical relays โ electromechanical switches wired together in large panels. Changing the control logic meant physically rewiring the panel. A PLC replaced that panel with a computer that runs a program instead โ the same physical wiring stays in place, and changing the logic means editing software, not rewiring hardware.
| Regular Computer | Microcontroller (e.g. Raspberry Pi) | PLC | |
|---|---|---|---|
| Built for | General-purpose computing | Hobbyist/embedded projects, prototyping | Industrial control, running for years unattended |
| Environment | Climate-controlled office/home | Usually indoors, mild conditions | Factory floors โ heat, vibration, dust, electrical noise |
| How it runs logic | Multitasking OS, many programs at once | Usually one program, general-purpose code (Python, C) | One continuous scan cycle (this module, below), often ladder logic |
| Failure tolerance | Reboots are normal/expected | Reboots are normal/expected | Designed to almost never need a reboot โ an unplanned stop can halt a whole production line |
A PLC doesn't run code top-to-bottom once and stop โ it repeats the same three-step cycle continuously, often hundreds of times per second, for as long as it's powered on:
CPU Module
Runs the scan cycle and stores the program โ the "brain" of the system.
Power Supply
Converts incoming AC power (often 120V/240V) into the low-voltage DC (typically 24V) the PLC's electronics actually run on.
Input Modules
Where field devices connect in โ switches, sensors, pushbuttons โ read every scan cycle (Module 2).
Output Modules
Where field devices connect out โ motor starters, solenoid valves, indicator lights โ written every scan cycle.
Backplane/Rack
The physical chassis the modules plug into, providing power and a communication bus between them.
Programming Software
Runs on a separate laptop/PC, used to write, download, and monitor the program running on the PLC โ not run on the PLC itself.
| Brand | Notes |
|---|---|
| Allen-Bradley / Rockwell Automation | Extremely common in the US, including many government/military facilities |
| Siemens | Dominant in Europe, very common globally |
| Schneider Electric (Modicon) | Widespread, invented the first commercial PLC line |
| Omron, Mitsubishi | Common in machine building and robotics, especially in Asia |
๐ Digital I/O โ Inputs, Outputs & Wiring
How real switches, sensors, and motors actually connect to a PLC โ voltage levels, sourcing vs. sinking, and the two contact types every electrician needs to recognize on sight.
A digital input reads one of two states: ON or OFF (also called 1/0, TRUE/FALSE, or High/Low). A pushbutton, a limit switch, a proximity sensor โ anything that's simply "triggered or not" connects to a digital input. A digital output is the same idea in reverse: the PLC turns something ON or OFF โ a motor starter coil, an indicator light, a solenoid valve.
| Voltage | Where You'll See It |
|---|---|
| 24V DC | The most common industrial I/O voltage โ sensors, pushbuttons, most modern PLC I/O modules |
| 120V AC | Older/legacy equipment, some motor control circuits directly |
| 5V DC / 3.3V DC | Rare directly on PLC I/O โ this is more the territory of microcontrollers like the Raspberry Pi's GPIO |
This describes which direction current flows through an input or output, and it's the single most common point of confusion for anyone new to industrial wiring.
| Sourcing (PNP) | Sinking (NPN) | |
|---|---|---|
| Current flows | Out of the PLC module, through the device, to ground | Into the PLC module, from the device, from the supply |
| The PLC module provides | The positive voltage | The path to ground (0V) |
| More common in | North America | Europe and Asia |
Every switch, sensor, or pushbutton has a "resting" state before it's triggered โ this is what NO/NC describes, and it matters enormously for both wiring and logic design.
| Type | Resting State | When Triggered | Typical Use |
|---|---|---|---|
| Normally Open (NO) | Circuit open โ no current flows | Closes, current flows | Start buttons โ you want "nothing happens" until pressed |
| Normally Closed (NC) | Circuit closed โ current flows | Opens, current stops | Stop buttons and safety circuits โ see the callout below |
When the button is pressed, it completes the circuit from 24V, through the button, into Input 1 โ the module reads that as ON. Release the button, the circuit opens, the module reads OFF. Every digital input works on this same basic principle, regardless of the specific sensor or switch involved.
๐ช Ladder Logic Fundamentals
The most common PLC programming language, designed on purpose to look like the relay wiring diagrams it replaced. Rails, rungs, contacts, and coils โ the entire visual vocabulary.
A ladder logic program is drawn to look like a ladder: two vertical lines (the rails) representing power and ground, with horizontal rungs connecting them โ each rung is one independent piece of logic, evaluated top to bottom, every scan cycle.
Electricians already read relay diagrams this way โ ladder logic was designed deliberately to feel familiar to someone who already understood relay control panels, which is exactly why it became the dominant PLC language.
| Symbol | Name | True (passes power) Whenโฆ |
|---|---|---|
โโโค โโโ | Normally Open contact (XIC) | The referenced bit is ON |
โโโค/โโโ | Normally Closed contact (XIO) | The referenced bit is OFF |
A contact doesn't control power itself โ it represents a condition being checked. "Is this input ON?" (Normally Open contact) or "Is this input OFF?" (Normally Closed contact). If the condition is true, that contact "passes power" along the rung, continuing to the next element.
| Symbol | Name | Behavior |
|---|---|---|
โโ( )โโ | Output Energize (OTE) | Turns ON when the rung's conditions are true, turns OFF when they're false โ re-evaluated every scan |
โโ(L)โโ | Output Latch (OTL) | Turns ON when triggered and stays ON even after the condition goes false โ until explicitly unlatched |
โโ(U)โโ | Output Unlatch (OTU) | Turns a latched output back OFF |
A coil sits at the end of a rung and represents the actual output โ either a real physical output (a light, a motor starter) or an internal memory bit used elsewhere in the program.
How contacts are arranged on a rung directly maps to logical AND/OR โ exactly like circuit theory.
This single pattern is one of the most common circuits in all of industrial control โ it appears constantly starting in Module 8's motor control circuits.
Pressing Start energizes the Motor coil. The Motor's own contact (wired in parallel with Start) also closes at the same moment โ so even after you release the Start button, that parallel contact "seals in" the circuit, keeping the motor running. Pressing Stop breaks the circuit entirely, dropping the seal-in along with it.
โฑ๏ธ Timers & Counters
The building blocks that turn simple on/off logic into real automation โ delaying an action, counting parts, and building a repeating sequence.
The most common timer type. Starts counting the moment its input goes true; once the preset time elapses, its Done (DN) bit turns ON. If the input goes false before the preset is reached, the timer resets to zero.
| Parameter | Meaning |
|---|---|
| PRE (Preset) | How long to wait, e.g. 3000ms (3 seconds) |
| ACC (Accumulated) | How much time has elapsed so far, resets to 0 whenever the input goes false |
| DN (Done) bit | Turns ON once ACC reaches PRE โ this is what the rest of your program reacts to |
The mirror image of TON. The DN bit turns ON immediately when the input goes true, and stays ON for the preset duration after the input goes false โ useful for "keep something running a little longer after the trigger stops," like a cooling fan.
| Scenario | Timer Choice |
|---|---|
| Wait before starting something | TON |
| Keep something running briefly after it should've stopped | TOF |
Like a TON, except the accumulated time is not reset when the input goes false โ it holds its progress and resumes counting next time the input goes true again. Requires a separate explicit "reset" instruction to zero it out. Used for things like tracking total accumulated run-time toward a maintenance interval, across many separate on/off cycles.
| Counter | Behavior |
|---|---|
| CTU (Count Up) | Increments by 1 every time its input transitions from false to true; DN bit turns ON once the count reaches the preset |
| CTD (Count Down) | Decrements by 1 on each true transition โ commonly paired with a CTU to count something down from a starting batch size |
A real, common pattern: count 10 boxes onto a pallet, then pause 5 seconds (to let a wrapper machine finish), then reset and start the next pallet.
๐ Analog I/O & Scaling
Not everything in the real world is simply on or off. Temperature, pressure, level, speed โ these need analog I/O, and a conversion step called scaling to turn raw numbers into something meaningful.
A digital signal is one of two states โ on or off. An analog signal is a continuously variable value โ a tank's water level isn't "full or empty," it's anywhere from 0% to 100%. Analog inputs/outputs read and write these continuous values, most commonly using one of two standard signal ranges.
| Signal Standard | Range | Notes |
|---|---|---|
| 4-20mA current loop | 4mA = 0%, 20mA = 100% | The industrial standard โ resistant to electrical noise over long wire runs |
| 0-10V DC | 0V = 0%, 10V = 100% | Common on shorter wire runs, simpler wiring |
An analog input module doesn't directly store "4-20mA" โ it converts the incoming signal into a raw digital number, typically over a range like 0-32767 (a common 15-bit resolution). The PLC program then has to convert that raw number into an actual engineering value (like degrees, PSI, or gallons) โ this conversion is called scaling.
Scaling maps one range of numbers onto another โ the raw count range onto the real-world engineering unit range.
Worked example: a pressure transmitter reads 4-20mA, scaled by the analog module into raw counts 0-32767. The transmitter is rated for 0-150 PSI. If the current raw reading is 16,384 (roughly the midpoint):
Analog outputs work the same way in reverse โ the program calculates a desired real-world value (like "run this valve 60% open"), scales it back down into a raw count, and the output module converts that into an actual 4-20mA or 0-10V signal driving the physical device (often a variable speed drive or a proportional valve).
๐ข Data Types & Memory Addressing
Every input, output, timer, and calculated value needs somewhere to live in the PLC's memory, and a type describing what kind of value it holds. This is the vocabulary every ladder rung and every piece of documentation depends on.
| Type | Holds | Example Use |
|---|---|---|
| BOOL | A single bit โ ON/OFF, TRUE/FALSE | A digital input, a coil, an internal flag |
| INT | A whole number, typically -32768 to 32767 | A part count, a raw analog value |
| DINT | A larger whole number (32-bit) | A large running total, a high-resolution counter |
| REAL | A decimal/floating-point number | A scaled engineering value like 75.3 PSI |
| TIMER / COUNTER | A structured type bundling PRE, ACC, and status bits together (Module 4) | Every TON, TOF, CTU, CTD instruction |
| Direct Addressing (older style) | Tag-Based (modern style) | |
|---|---|---|
| Looks like | I:1/0, O:2/3 | ConveyorMotorRunning, Tank1_Level |
| Meaning | A specific memory location/module slot/bit position | A human-readable name you assign yourself |
| Readability | Requires memorizing what each address represents | Self-documenting โ the name describes the purpose |
- Be specific and consistent โ
Conveyor1_MotorRunningbeatsM1for anyone maintaining the program later, including future-you. - Group related tags with a shared prefix โ
Tank1_Level,Tank1_HighAlarm,Tank1_LowAlarmmakes it obvious at a glance which equipment a tag belongs to. - Match physical labels where possible โ if the wiring diagram calls a device "PB-101" (pushbutton 101), naming the tag
PB101_Startkeeps the software and the physical panel traceable to each other.
I:1/0-style addresses and zero documentation is one of the most common frustrations in industrial maintenance โ nobody currently on staff may remember what half the addresses actually control. Good tag names are cheap to write now and expensive to reconstruct later.๐๏ธ Program Organization โ Routines & Structured Text
A real facility's program can be thousands of rungs long. Here's how it's kept manageable โ breaking it into organized pieces, and a second PLC language better suited to math-heavy logic than ladder.
A single flat ladder program thousands of rungs long is nearly impossible to navigate, test, or safely modify. Real PLC programs are broken into routines (sometimes called programs or subroutines depending on platform) โ each one handling one specific piece of equipment or one specific job, called from a main routine that coordinates them.
Ladder Logic isn't the only PLC programming language โ it's one of five standardized languages defined by IEC 61131-3, the international standard nearly every PLC platform follows in some form.
| Language | Looks Like | Best For |
|---|---|---|
| Ladder Diagram (LD) | Relay-style rungs (Module 3) | On/off control logic, the most common starting language |
| Structured Text (ST) | Text-based code, resembling Pascal/BASIC | Math-heavy logic, loops, complex calculations |
| Function Block Diagram (FBD) | Connected boxes representing functions | Signal-flow-style processes (common in process/chemical industries) |
| Sequential Function Chart (SFC) | A flowchart of steps and transitions | Clearly sequential, step-by-step processes (like a batching recipe) |
| Instruction List (IL) | Low-level, assembly-like | Rare today โ mostly legacy |
The same conveyor gate-delay example from Module 4, written in Structured Text instead of ladder โ notice how much more naturally a mix of conditions and math reads as text versus as rungs.
IF ConveyorRunning THEN GateDelayTimer.TON(IN := TRUE, PT := T#3s); ELSE GateDelayTimer.TON(IN := FALSE, PT := T#3s); END_IF; IF GateDelayTimer.Q THEN DischargeGate_Open := TRUE; END_IF;
๐ Motor Control Circuits
The single most common thing a PLC actually controls in the real world. Motor starters, overload protection, and the standard start/stop pattern from Module 3, now applied to a real physical motor.
A PLC's digital output is only rated for a small current โ enough to energize a relay coil, not enough to directly handle a motor's actual running current. Instead, the PLC output energizes a motor starter (a large relay/contactor plus overload protection), and the starter's much heavier-duty contacts handle the motor's real current.
A motor starter includes overload relays โ devices that monitor the actual current the motor is drawing and trip the circuit if it draws too much for too long (a sign of a jammed mechanism, a failing motor, or a mechanical overload). This protects the motor from burning out, and the overload's own contact is typically wired directly into the motor's stop circuit โ hardware-level protection that works even if the PLC program has a bug.
This is Module 3's seal-in rung, now with real motor control components labeled:
Notice the overload relay's contact is wired the same way as the Stop button โ Normally Closed, in series. If the overload trips (motor drawing too much current), that contact opens exactly like someone pressed Stop, and the motor shuts down.
For motors that need variable speed rather than just on/off, a VFD sits between the motor starter and the motor, controlling the motor's speed by varying the frequency of the power sent to it. The PLC typically controls a VFD one of two ways:
| Control Method | How It Works |
|---|---|
| Analog output | A 0-10V or 4-20mA signal (Module 5) tells the VFD what speed to run at |
| Digital communication | The PLC sends speed commands over a network protocol (Module 11) instead of a wired analog signal |
๐ Safety Systems & E-Stops
The single most important module in this course. Safety circuits protect people, and they're built on a principle that shows up everywhere else you've seen it so far: fail safely, in hardware, not just in software.
A PLC program can have bugs. A PLC can freeze, lose power unexpectedly, or run corrupted logic. Because of this, safety-critical functions โ emergency stops, guard door interlocks, light curtains โ are built using dedicated hardware safety circuits that work independently of whether the PLC's program is even running correctly at all.
An E-stop is a Normally Closed, mushroom-head pushbutton (Module 2's fail-safe principle, applied at its most critical) wired directly into a hardware safety circuit โ pressing it physically breaks the circuit supplying power to the hazard, immediately, regardless of what the PLC program is doing.
| Property | Why |
|---|---|
| Normally Closed | A cut wire or failed button trips the safety circuit exactly like pressing it โ fails safe, not silent |
| Mushroom-head, red on yellow | Instantly recognizable and easy to hit under stress, standardized internationally |
| Latching (stays pressed until twisted/pulled to release) | Prevents the machine from restarting the instant someone releases the button |
A safety relay is a specialized relay built specifically for safety circuits, often monitoring TWO independent contacts for every safety input โ if those two contacts ever disagree with each other, the safety relay assumes a fault has occurred and trips to the safe state, rather than guessing which one is correct.
Machine safety standards (like ISO 13849) define Categories and Performance Levels describing how robust a safety circuit needs to be, based on the severity and likelihood of the hazard it's protecting against. This is genuinely deep, certification-level territory โ the key beginner takeaway is simply that not every safety circuit needs to be built identically; the required level of redundancy and monitoring scales with how dangerous the specific hazard actually is.
| Device | Purpose |
|---|---|
| Light curtains | An invisible infrared barrier โ breaking it (e.g., reaching into a machine) trips the safety circuit |
| Guard door interlocks | A switch confirming a safety guard/door is fully closed before allowing the machine to run |
| Two-hand control | Requires both of an operator's hands on separate buttons simultaneously to run a cycle, physically keeping hands out of a hazard zone |
๐ฅ๏ธ HMI Basics
The touchscreen an operator actually interacts with on the factory floor โ how it connects to the PLC, and the design principles that separate a genuinely usable HMI from a confusing one.
An HMI (Human-Machine Interface) is the screen an operator uses to monitor and control a process โ start/stop buttons, live readings (tank levels, temperatures, speeds), alarms, and setpoint entry. It's a separate device from the PLC, communicating with it over a network connection (Module 11) to read and write the same tags the ladder program uses.
An HMI screen doesn't run its own independent logic โ every button, gauge, and indicator on the screen is bound directly to a PLC tag. Pressing an HMI "Start" button writes TRUE to a tag; the ladder program's Start rung reads that exact same tag, same as if a physical button had been pressed.
Tank1_Level tag gets used in the ladder logic, the HMI's gauge, and the alarm system, all pointing at one single source of truth.An HMI's alarm system watches specific tags against defined limits (e.g., "Tank1_Level below 10%") and displays an alert when the condition is true โ often with a log of every alarm's time, description, and whether it's been acknowledged by an operator. Good alarm design deliberately limits how many alarms can fire at once; a screen flooded with 200 simultaneous alarms during a real emergency is far less useful than a screen showing the 3 that actually matter right now.
- Match the physical layout โ if Tank 1 is physically on the left side of a building, put it on the left side of the overview screen too. Operators build a mental map that should match reality.
- Use color deliberately, not decoratively โ red should consistently mean "problem," green "running/good," rather than colors chosen for visual appeal that end up meaning different things on different screens.
- Show what matters, hide what doesn't โ an overview screen with 40 dense data points is harder to act on quickly than one showing the 5 numbers that actually drive a decision, with detail screens available a tap away.
- Confirm destructive actions โ stopping a whole production line or resetting a batch should require a confirmation step, not a single accidental tap.
๐ก Communication Protocols
How a PLC talks to an HMI, other PLCs, and the wider plant network. Real networking concepts, applied to the industrial floor.
A single machine rarely stands alone โ a PLC typically needs to talk to an HMI (Module 10), other PLCs controlling adjacent equipment, and often a central SCADA (Supervisory Control and Data Acquisition) system giving plant-wide visibility. Communication protocols are the agreed-upon rules that let all of this talk to each other reliably.
| Protocol | Notes |
|---|---|
| Modbus (RTU / TCP) | Simple, extremely widespread, works over serial (RTU) or standard Ethernet (TCP) โ often the "universal fallback" that nearly everything supports |
| EtherNet/IP | Allen-Bradley/Rockwell's primary Ethernet-based protocol, very common in North America |
| PROFINET | Siemens' primary Ethernet-based protocol, very common in Europe |
| DeviceNet, PROFIBUS | Older, non-Ethernet industrial networks โ still found on existing equipment, less common in new installs |
Modbus is worth understanding in a bit more detail since it's so widespread. It organizes data into simple numbered registers โ a device (the "slave"/"server") holds data at specific register addresses, and a controller (the "master"/"client") reads or writes those registers.
| Register Type | Holds |
|---|---|
| Coils | Single ON/OFF bits, read/write |
| Discrete Inputs | Single ON/OFF bits, read-only |
| Holding Registers | 16-bit numeric values, read/write |
| Input Registers | 16-bit numeric values, read-only |
Ethernet-based industrial protocols use the same IP addressing concepts from general networking โ every PLC, HMI, and networked device gets its own IP address on the plant network. Industrial networks are very commonly segmented (kept physically or logically separate from the general office network) specifically for security and reliability โ a problem on the office network shouldn't be able to affect production equipment, and vice versa.
๐ ๏ธ Troubleshooting a PLC System
Everything from this course, applied to the actual job of figuring out why a machine stopped working โ a real methodology, not just guessing.
Every PLC programming platform has an "online" or "monitor" mode โ connecting a laptop to the running PLC and watching the actual ladder logic execute in real time, with every contact and coil highlighted to show its current true/false state. This is the single most powerful troubleshooting tool available: instead of guessing what the program is doing, you watch it happen.
- Check the physical machine first โ is there an obvious mechanical jam, a tripped overload, a door interlock open? Many "PLC problems" are actually simple physical/electrical issues.
- Check field device power โ does the sensor/switch actually have power? A surprising number of "broken sensor" calls are actually a blown fuse or a loose terminal.
- Check the physical input LED on the PLC module โ most input/output modules have small indicator LEDs showing each point's current state, independent of the program. If the input LED isn't lighting when it should, the problem is upstream of the PLC program entirely (wiring, the sensor itself, power).
- Go online and monitor the actual rung โ if the input LED is correct but the expected output still isn't happening, the issue is in the logic itself โ trace power flow through the rung as described above.
- Check the output LED and the field wiring beyond it โ if the program is correctly energizing the output but the physical device still isn't responding, the problem has moved back out to the field wiring or the device itself.
| Symptom | Common Cause |
|---|---|
| Input LED never lights, regardless of the switch | Loose wire terminal, blown fuse, or the field device itself has failed |
| Motor won't start, Start button LED confirms it's pressed | Overload tripped, seal-in contact not sealing, wrong tag referenced in the rung |
| Everything worked, then suddenly the whole system stopped | E-stop circuit tripped somewhere โ check every E-stop and safety device in the chain |
| Analog reading is a fixed, obviously-wrong number (like 0 or full-scale) | Broken signal wire, disconnected sensor, or the 4-20mA fault-detection scenario from Module 5 |
๐ Capstone โ Program a Complete Automated Sorting System
Every module in this course, combined into one system: a conveyor that runs, counts boxes, sorts rejects with a pusher, tracks a batch total, and shuts down safely โ on command or in an emergency.
A small sorting station: boxes arrive on a conveyor. A sensor detects each box. A second sensor (a simple height/weight-style "reject" sensor) flags bad boxes. Good boxes continue to the end; bad boxes get pushed off onto a reject line by a pneumatic pusher. The system tracks how many boxes have passed, pauses briefly for the pusher to cycle, and can be stopped instantly at any time.
Every real PLC project starts with a documented I/O list before a single rung is written โ directly applying Module 6's tag naming discipline.
| Tag Name | Type | Description |
|---|---|---|
| StartPB | BOOL (Input) | Start pushbutton, Normally Open |
| StopPB | BOOL (Input) | Stop pushbutton, Normally Closed |
| EStop | BOOL (Input) | Emergency stop, Normally Closed, hardwired safety circuit (Module 9) |
| BoxSensor | BOOL (Input) | Detects any box arriving |
| RejectSensor | BOOL (Input) | Detects a box that fails inspection |
| ConveyorMotor | BOOL (Output) | Runs the conveyor, via a motor starter (Module 8) |
| PusherSolenoid | BOOL (Output) | Fires the reject pusher |
| BoxCount | DINT | Running total of good boxes passed |
Directly from Modules 3 and 8, with the E-stop added as an additional Normally Closed condition in series โ anywhere along this chain going false stops the conveyor immediately.
Only count a box as "good" if it triggered the box sensor but not the reject sensor โ Module 3's series/AND logic combined with a Normally Closed contact acting as a NOT condition.
Directly applying Module 4's TON pattern โ the reject sensor triggers the pusher, and a timer holds it extended just long enough to push the box off, then automatically retracts it.
Applying Module 10's principles: an overview screen showing conveyor running/stopped status (color-coded, matching Module 10's "red means problem" convention), the live BoxCount, a Start and Stop button bound to the same tags the ladder logic reads, and an alarm tile that lights if EStop is ever tripped.
| System | Passes Whenโฆ |
|---|---|
| Start/Stop/Seal-in | Conveyor starts on Start, keeps running after the button is released, and stops immediately on Stop or E-stop |
| Safety | E-stop breaks the circuit in the same rung as Stop โ not as a separate "check" elsewhere in the program |
| Counting | BoxCount increments only for good boxes โ verified against Module 4's "counts transitions, not scans" rule |
| Reject handling | Pusher fires for exactly 500ms per reject and correctly retracts โ no sticking on or staying retracted |
| Documentation | A complete I/O list exists, with tag names any future maintainer could understand without asking you |
Build, Simulate, and Explain It
Using any PLC simulation software (many vendors offer free trial/educational versions, or use a ladder logic simulator), build this complete system from the I/O list up. Then โ the part that actually proves understanding โ write a one-paragraph explanation of what happens, in order, if the E-stop is pressed while a box is mid-reject-cycle. Being able to trace that exact sequence through your own rungs is the real test of whether you understand the system, not just whether it runs.
- A complete, documented I/O list with clear tag names
- Start/Stop/Seal-in conveyor control with E-stop wired into the same safety chain
- Accurate box counting that only counts good boxes, verified against transition-counting logic
- A working timed reject-pusher cycle
- A written explanation tracing the E-stop-during-reject scenario through your actual logic