What is PickettPLC?
PickettPLC is a browser-based Ladder Logic simulator. Build, edit, and run PLC programs visually — no hardware required. Ladder logic is the standard programming language used in industrial automation to control motors, conveyors, pumps, and machinery.
Key Concepts
⚡ Rung
A horizontal circuit in the ladder. One logical rule. Power flows left-to-right when all conditions are satisfied.
─┤ ├─ Contact
A condition check. Passes power if the linked I/O bit matches the expected state (ON or OFF).
─( )─ Coil
An output action. When the rung energizes, the coil writes a bit in memory or drives a physical output.
🔄 Scan Cycle
Every 100ms the PLC reads all inputs, evaluates every rung top-to-bottom, then writes all outputs. Repeats continuously.
Quick Start
STEP 1
Select tool from toolbar
›
STEP 2
Click + slot in a rung
›
›
›
STEP 5
Press inputs in I/O table
💡
The default program already loaded is a Seal-In (Motor Start/Stop) circuit — the most common PLC pattern. Press RUN, then hold I0.0 (Start) to see it energize. Release it — the motor stays on. Press I0.1 (Stop) to stop it.
Contact Instructions — Conditions
─┤ ├─
NO — Normally Open
CONTACT
Passes power when bit = 1 (ON). Most common instruction. Used for start buttons and sensor triggers.
─┤/├─
NC — Normally Closed
CONTACT
Passes power when bit = 0 (OFF). Used for stop buttons, E-stops, and interlocks.
─┤↑├─
POS — Positive Edge
CONTACT
Passes power for exactly one scan on 0→1 transition. Good for one-shot triggers on button press.
─┤↓├─
NEG — Negative Edge
CONTACT
Passes power for exactly one scan on 1→0 transition. Triggers on button release.
─┤T├─
TDN — Timer Done
CONTACT
Passes power when a timer's .DN bit is set. Place after a TON or TOF block to act on completion.
Coil Instructions — Actions
─( )─
OUT — Output Coil
OUTPUT
Sets bit to 1 while rung is energized; clears to 0 when rung de-energizes. Standard output.
─(/)─
NOT — Negated Coil
OUTPUT
Inverse of OUT. Bit is 0 while rung energized, 1 when de-energized.
─(S)─
SET — Latch
LATCH
Sets bit to 1 on rung energize. Bit stays ON even after rung de-energizes — requires RST to clear.
─(R)─
RST — Reset (Unlatch)
UNLATCH
Clears bit to 0 on rung energize. Use with SET coil to build latching circuits.
Timer Instructions
| Type | Name | Behaviour |
| TON | Timer On-Delay | Counts up while rung is energized. DN bit goes ON when accumulator reaches preset. Resets when rung de-energizes. |
| TOF | Timer Off-Delay | DN bit stays ON while rung is energized. Starts counting when rung de-energizes; DN bit clears after preset elapses. |
⚠
Add a timer with TON or TOF, then use a TDN contact on a separate rung to read its Done bit. The timer address (e.g. T0) must match in both instructions.
Building a Program
Select an instruction from the toolbar. Click any + slot in a rung to insert it there. A dialog lets you choose the I/O address and an optional label. To delete an element, hover it — a red ✕ appears in the corner.
Managing Rungs
| Button | Action |
| + ADD RUNG | Appends a new empty rung at the bottom. |
| ✕ DEL RUNG | Deletes the selected rung. Click the number badge on the left to select. |
| ↑ / ↓ MOVE | Reorders the selected rung up or down. |
Seal-In (Latch) Circuit
The default program is the most common PLC pattern. Branch A has the Start button (NO) in series with the Stop button (NC). Branch B has the Seal bit (NO) in series with the Stop button. The branches are in parallel — pressing Start energizes the rung and sets the Seal bit, which keeps the rung alive after Start is released. Press Stop to break both branches.
Memory Bits (M addresses)
Memory bits like M0.0 are internal flags — no physical wiring. They pass information between rungs and build stateful logic.
| Pattern | How it works |
| Seal-in | Place an NO contact for M0.0 in a parallel branch of the same rung that drives the M0.0 OUT coil — once energized it holds itself ON. |
| Step sequencer | M0.0 → M0.1 → M0.2: each rung fires when the previous M bit is ON, then sets the next and resets itself. |
| Interlock | Set an M bit on a fault condition. Use NC contact for it on any rung that must stop when the fault is active. |
| One-shot | POS edge contact sets an M bit for exactly one scan — use to trigger timers without re-triggering every cycle. |
⚠
OUT coils are cleared each scan and re-written by the coil. SET coils are latching — they persist until a RST coil explicitly clears them. Use SET/RST when the bit must survive after the trigger condition goes away.
Running the Simulation
Press ▶ RUN to start. The scan dot in the header flashes every 100ms. Toggle inputs in the I/O table. Press ⏹ STOP to halt — all OUT coil outputs are safely cleared on stop.
Choose a Simulation
🏭
Conveyor Belt
Belt moves when Q0.0 is ON. Box sensor I0.2 triggers automatically when a package passes.
🛢️
Tank Fill / Drain
Pump Q0.0 fills the tank. HIGH sensor I0.2 fires at 82% fill. Tank drains slowly at all times.
💡
I/O LED Panel
All I/O addresses shown as LEDs. Click blue input LEDs to toggle. Green = outputs. Amber = memory bits.
Practice Exercises
| Exercise | Goal | Animation |
| Motor Start/Stop | Hold Start (I0.0), release — motor stays on. Press Stop (I0.1) to kill it. | Conveyor |
| Level Control | Pump ON below 20%, pump OFF above 82%. Hysteresis using two rungs. | Tank |
| Timed output | Trigger a TON timer from I0.0. Use TDN contact to turn ON Q0.1 after 3 seconds. | LED Panel |
| Seal with interlock | Motor runs via seal-in. M0.0 fault bit from a second button locks it out via NC contact. | Conveyor |
✅
Switch between animations at any time using the dropdown above the simulation panel — your ladder program keeps running unchanged.
Address Types
| Prefix | Type | Description |
| I | Input | Physical field devices — push buttons, sensors, limit switches. Toggle manually or driven by an animation. |
| Q | Output | Physical actuators — motors, solenoids, indicator lights. Written by coil instructions in your program. |
| M | Memory | Internal bits with no physical connection. Used for seals, step flags, interlocks, and intermediate logic. |
Adding Addresses
Use the bar at the bottom of the I/O table. Select the type, type an address like I0.3, add an optional name, then click + ADD. New addresses appear immediately in the instruction insert dialog.
Pressing Inputs
Each Input row has a green PRESS button. Hold it down to activate the input — release to deactivate. This simulates a momentary push button on the shop floor.
💡
Output (Q) and Memory (M) bits are read-only in the I/O table — they are written entirely by your ladder program logic. You can watch their values change in real time as the scan cycle runs.
Address Naming
Follow standard IEC addressing: I0.0–I0.7 for inputs, Q0.0–Q0.7 for outputs, M0.0–M9.7 for memory. The simulator accepts any address as long as the prefix matches the type.