v1.102 ← Back to Simulator

ACC PLC Simulator

Browser-based Series Ladder Logic Simulator  ·  v1.102  ·  accautomation.ca

The ACC PLC Simulator is a fully functional, browser-based ladder logic simulator. It runs entirely in a single HTML file with no installation, no server, and no dependencies beyond a modern web browser.

Use it to learn ladder logic fundamentals, prototype control programs, demonstrate PLC concepts in a classroom, or connect to 3D industrial scenes for a visual simulation experience.

Key Features

  • Full ladder logic editor — contacts, coils, timers, counters, analog compare, MOV
  • Real-time scan cycle — 100 ms scan with live power-flow highlighting
  • Analog I/O — AX1–AX8 inputs (slider-driven, 0–4095) and AY1–AY4 outputs
  • Parallel branches — OR logic, up to any depth
  • Save / Load — 10 named slots in browser localStorage plus JSON file export/import
  • 3D Scene connection — BroadcastChannel link to interactive machine visualisations
  • No installation — single HTML file, works offline after first load
Tip: Press F5 to start the scan, F4 to stop. Double-click any element on the ladder to edit it.

Interface Tour

Layout of the main simulator window

Toolbar (top)

ControlDescription
▶ RUNStart the continuous scan cycle (100 ms interval). Also F5.
■ STOPHalt the scan. All outputs de-energise. Also F4.
⏭ STEPExecute exactly one scan. Only available in STOP mode with no scene connected. Fades out (disabled) when a 3D scene is linked.
✕ CLEARDelete all rungs and reset all memory (with confirmation). Also clears the undo history.
↩ UNDOReverse the last edit. Greyed out when no history is available. Also Ctrl+Z.
↪ REDORe-apply an undone edit. Also Ctrl+Y or Ctrl+Shift+Z.
☀ THEMEToggle between dark (default) and light theme. Your preference is saved and restored automatically on the next visit.
💾 SAVESave the current program to a named slot or file.
📂 LOADRestore a previously saved program.
CONNECTOpen the 3D Scene browser to link a machine visualisation.
LED + StateGreen pulsing = RUN, red = STOP.
Scan counterShows last scan time (ms) and total scan count.

Zoom Controls

A − / 100% / + / 1:1 control cluster sits in the bottom-right corner of the ladder panel.

ControlDescription
Zoom out 10% per click. Minimum 30%.
+Zoom in 10% per click. Maximum 300%.
1:1Reset zoom to 100%.
Ctrl + ScrollHold Ctrl (⌘ on Mac) and scroll the mouse wheel over the ladder panel to zoom smoothly.
Persistent: Zoom level is saved in browser storage and restored automatically on the next page load.

Left Panel — Instruction Palette

Click an instruction type to select it (it highlights in blue). Then right-click any contact on the ladder to insert the selected type before or after it. The address field pre-fills with the next available address for that type.

A ◀ collapse tab sits on the right edge of the palette. Click it to collapse the panel to a thin strip, giving the ladder more horizontal space. Click the ▶ tab again to restore it.

Centre — Ladder Canvas

The main programming area. Rungs are displayed as horizontal rails. In STOP mode, contact bars show bit state (green = energised). In RUN mode, powered wires and energised coils glow green.

  • Double-click any element to open the Edit dialog.
  • Double-click the rung header bar (the comment area) to edit the rung comment directly. A faint placeholder text appears on rungs with no comment.
  • Right-click any contact for the context menu (insert, delete, add parallel branch).
  • Drag the handle on the rung header (STOP mode only) to reorder rungs.
  • Hover between rungs to reveal the Insert Rung strip.
  • + button (STOP mode) appends a contact slot to the rung input area.

Right Panel — I/O Tabs

Seven tabs: I/O (used addresses summary), X, Y, C, T, CT, AN (analog). See the I/O Panel Tabs section for details.

A ▶ collapse tab sits on the left edge of the I/O panel. Click it to collapse the panel and give the ladder more space. Click the ◀ tab again to restore it.

Tip: Collapse both panels at once for a full-width ladder view — ideal on smaller screens or when editing a large program. The ladder automatically re-flows to fill the available space.

Light / Dark Theme

Click the ☀ THEME button in the toolbar to switch between the default dark theme and a softer light theme. The button label changes to 🌙 THEME when light mode is active.

In the light theme, energised contacts and I/O indicators use a bright vivid green with a glow halo to ensure ON states remain clearly distinguishable from OFF states.

Persistent: Your theme choice is saved in browser storage and restored automatically every time you open the simulator — no need to switch again after refreshing the page.

Status Bar (bottom)

Displays the current mode (RUN/STOP), contextual hints, and the system clock. After most actions a confirmation message appears here.

Quick Start

Get a rung running in under two minutes

  1. Open acc-plc-simulator.html in any modern browser.
  2. The default Start/Stop/Jog program loads automatically.
  3. Press F5 (or click RUN) — the LED turns green and the scan begins.
  4. On the X tab (right panel), click X1 to toggle the Start input ON — Y1 energises.
  5. Click X1 again to release it — Y1 stays on (seal-in circuit).
  6. Click X2 to pulse the Stop — Y1 de-energises.
  7. Press F4 to stop the scan.

Adding Your First Rung

  1. In STOP mode, hover near the bottom of the ladder until the ⊕ Add New Rung strip appears. Click it.
  2. The Rung Template picker opens — choose XIC → OTE for a simple contact/output rung.
  3. Double-click the new contact (address shown in amber) to open Edit. Change the address to X4 and click Apply.
  4. Double-click the output coil and change its address to Y4.
  5. Press F5 to run, then toggle X4 on the X tab to see Y4 energise.
Note: Programs auto-restore on page load from the most recent saved slot. Use 💾 SAVE to commit your work.

Rungs & Editing

Creating, modifying, and organising rungs

Inserting a Rung

Hover between any two existing rungs to reveal the ⊕ Insert rung after XXXX strip, or hover below the last rung for ⊕ Add New Rung. Clicking opens the Rung Template Picker with pre-built patterns.

Deleting a Rung

Click the ✕ circle button on the top-right of any rung header. A confirmation dialog prevents accidental deletion.

Reordering Rungs

In STOP mode, drag the ⠿ handle on the left of the rung header to a new position. An amber drop-indicator line shows the insertion point.

Editing Elements

Double-click any element to open the Edit Instruction dialog. You can change the instruction type, address, preset value, and add a comment. You can also edit the rung comment from here.

Editing the Rung Comment

Double-click anywhere on the rung header bar (the row showing the rung number and comment text) to open the Edit Rung Comment dialog. Type the new comment and click Apply or press Enter. Leave the field blank and apply to clear the comment.

Rungs with no comment show a faint "double-click to add comment…" placeholder to make the feature discoverable.

Tip: Rung comments are a great way to document your intent — for example "Start / Stop seal-in" or "Conveyor speed ramp". They are saved with the program and exported in JSON files.

Right-Click Context Menu

ActionDescription
Edit ElementOpens the Edit dialog for the clicked contact.
Insert Contact BeforeInserts a new contact immediately before the clicked one.
Insert Contact AfterInserts a new contact immediately after the clicked one.
Add Parallel BranchWraps the contact in a parallel group or adds a branch.
Edit Parallel GroupOpens the Parallel Branch Editor for the enclosing group.
Remove This BranchRemoves the branch containing the clicked contact.
Delete ContactRemoves the contact from the rung (minimum one input required).

Rung Structure Rules

  • Every rung must have at least one input contact and exactly one output element (coil or block) on the right rail.
  • Input contacts are evaluated left-to-right; the result drives the output.
  • Timer and counter blocks occupy the output position — wire continuation exits from their right side carrying the DN bit.

Contacts

Input-side bit-reading instructions

SymbolNameAddressDescription
-| |- XIC X, Y, C, T/DN, CT/DN, AX· Examine If Closed (Normally Open). Passes power when the addressed bit is 1 (ON). The most common contact type.
-|/|- XIO X, Y, C, T/DN, CT/DN Examine If Open (Normally Closed). Passes power when the addressed bit is 0 (OFF). Use for Stop buttons, interlocks, and fault conditions.

Address Examples

  • X1 — Digital input 1
  • Y3 — Digital output 3 (used as a contact to read back its state)
  • C100 — Internal control relay 100
  • T1/DN — Timer 1 Done bit
  • T1/EN — Timer 1 Enable bit
  • T1/TT — Timer 1 Timing bit
  • CT1/DN — Counter 1 Done bit
  • Bare T1 resolves to T1/DN automatically

In STOP Mode

Contact bars show the current bit state regardless of power flow. A green bar means the bit is 1. Wires remain dark — power flow is only shown in RUN mode.

Tip: Use Y1 as an XIC contact in a seal-in branch — it reads the physical output state, creating a latching circuit without a dedicated C relay.

Outputs

Output coil instructions — right-rail elements

SymbolNameAddressDescription
-( )- OTE Y, C Output Energize. Sets the bit to 1 when powered; resets it to 0 every scan when not powered. Standard output — mirrors rung power state each scan.
-(L)- OTL Y, C Output Latch (Set). Sets the bit to 1 when powered. The bit stays 1 even if the rung loses power. Use with OTU on a separate rung to unlatch.
-(U)- OTU Y, C Output Unlatch (Reset). Resets the bit to 0 when powered. Used as the companion to OTL.
STOP Mode: When the PLC switches to STOP, all Y and C bits are cleared. In STOP mode you can force Y outputs ON/OFF via the Y tab or I/O tab.

Timers

TON and TOF — time-based control

SymbolNameDescription
[TON] TON Timer On-Delay. When the rung becomes TRUE the accumulator starts counting. When Acc ≥ Preset the DN bit sets. When rung goes FALSE the timer resets (Acc = 0, DN = 0).
[TOF] TOF Timer Off-Delay. When the rung is TRUE the DN bit is immediately set. When the rung goes FALSE the accumulator starts counting. DN clears when Acc ≥ Preset.

Timer Parameters

  • AddressT1 through T256
  • Preset — time in milliseconds. 1000 = 1 second, 5000 = 5 seconds.
  • Accumulator — counts up from 0 each scan (approximately 100 ms steps).

Timer Bits

BitAddressDescription
DNT1/DN or T1Done — set when Acc ≥ Preset
ENT1/ENEnable — set while rung is TRUE (TON) or was TRUE (TOF)
TTT1/TTTiming — set while timer is actively counting (EN && !DN)
Tip: Use T1/TT as an XIC contact to create a flashing output — it toggles roughly every Preset milliseconds.

Reset

Add a RES block (address T1) on a separate rung. When that rung is powered, Acc resets to 0 and DN clears.

Counters

CTU, CTD and RES — event counting

SymbolNameDescription
[CTU] CTU Count Up. Increments the accumulator on each rising edge (OFF→ON) of the rung. When Acc ≥ Preset the DN bit sets.
[CTD] CTD Count Down. Decrements the accumulator on each rising edge. DN sets when Acc ≤ 0.
-(R)- RES Reset. When powered, clears the Acc to 0 and resets DN. Address must match the timer or counter to reset (e.g. CT1 or T1).

Counter Parameters

  • AddressCT1 through CT256
  • Preset — integer count target (no units)
  • DN bitCT1/DN or bare CT1
Note: Rising-edge detection means you need the input to go OFF then ON again to increment — holding a contact ON does not keep counting.

Analog I/O

AX inputs (0–4095) and AY outputs (0–4095)

The simulator supports 12-bit analog channels using 12-bit AX/AY registers. All values are integers in the range 0–4095, representing 0–10 V (or 4–20 mA in real hardware).

Analog Inputs — AX

RegisterHow to setSource
AX1–AX8Drag slider on the AN tab, or connect a 3D sceneManual / Scene

Analog Outputs — AY

RegisterHow to setSource
AY1–AY4Driven by MOV rungs during RUN; manually typed in STOP modeProgram / Manual

Analog Compare Instructions

SymbolNameCondition
[GRT]GRTGreater Than — passes power if AXn > Comparand
[LES]LESLess Than — passes if AXn < Comparand
[GEQ]GEQGreater or Equal — passes if AXn ≥ Comparand
[LEQ]LEQLess or Equal — passes if AXn ≤ Comparand
[EQU]EQUEqual — passes if AXn = Comparand
[NEQ]NEQNot Equal — passes if AXn ≠ Comparand

Analog compare blocks sit in the input area of a rung and pass or block power flow on every scan based on the live AX register value versus the fixed comparand.

MOV — Move Value to AY

The MOV block occupies the output position. When the rung is powered it writes the Source value to the destination AY register. The source can be a constant (e.g. 2048) or an AX register (e.g. AX1).

Tip: For a 2-state analog output (low/high), use two rungs — one with GRT driving MOV to AY1 = 4095, another with LEQ driving MOV to AY1 = 0.

Parallel Branches

OR logic — multiple paths to the output

A parallel group connects two or more contact paths in parallel. If any branch passes power the output is energised — this is Boolean OR logic.

Adding a Parallel Branch

  • Right-click a contact and choose Add Parallel Branch. The contact is wrapped in a two-branch group; the new branch contains a default XIC contact.
  • Or click the ‖+ button that appears below an existing parallel group in STOP mode.

Editing the Parallel Group

Right-click any contact in the group and choose Edit Parallel Group, or double-click the left rail of the group, to open the Parallel Branch Editor.

In the editor you can:

  • Add/remove contacts within each branch (series AND logic inside a branch)
  • Add new branches (more OR paths)
  • Remove branches (minimum 2 required; removing down to 1 unwraps the group)

Series contacts inside a branch

Each branch can contain multiple contacts in series — all must be TRUE for that branch to pass power (AND logic within the OR group).

Example: Start OR Seal-In — classic motor starter: Branch 1 = Start PB (XIC X1), Branch 2 = Run relay (XIC C1) in series with Jog interlock (XIO C2).

Memory Map

All addressable registers in the simulator

PrefixRangeTypeDescription
XX1–X16Digital InputPhysical inputs. Toggle on X tab or I/O tab. Can be driven by a connected 3D scene.
YY1–Y16Digital OutputPhysical outputs. Set by OTE/OTL/OTU rungs. Sent to connected scene each scan.
CC1–C256Internal RelayProgram-internal bits. Not physical I/O. Toggle on C tab. Use C100+ by convention to avoid conflicts.
TT1–T256TimerEach T register holds EN, DN, Acc, Pre. Addressed as T1 (DN), T1/DN, T1/EN, T1/TT.
CTCT1–CT256CounterEach CT register holds DN, Acc, Pre. Addressed as CT1 (DN) or CT1/DN.
AXAX1–AX8Analog Input12-bit read-only input registers (0–4095). Set by slider on AN tab or by a connected scene.
AYAY1–AY4Analog Output12-bit output registers (0–4095). Written by MOV rungs. Sent to connected scene. Manually editable in STOP mode.
Addressing tip: C relays conventionally start at C100 so they cannot be confused with timer/counter numbers. The simulator enforces this default in nextAddr().

I/O Panel Tabs

Right-side panel — seven tabs for monitoring and forcing

TabContentsInteractive?
I/OOnly addresses referenced in the current program. Shows X toggles, Y force-LEDs, C toggles, T/CT progress bars, AX sliders, AY bars.Full — all controls active
XAll X1–X16 digital inputsClick to toggle ON/OFF
YAll Y1–Y16 digital outputsSTOP: click LED to force ON/OFF
CC1–C16 internal relaysClick to toggle ON/OFF
TActive timers — Acc, Pre, DN, progress barRead-only
CTActive counters — Acc, Pre, DN, progress barRead-only
ANAX1–AX8 sliders (input simulation) + AY1–AY4 bars with editable valuesAX: drag slider. AY: type value in STOP mode.
I/O tab: The most efficient view during development — only shows addresses you actually use, so you don't hunt through 16 X inputs to find the ones in your program.

Run / Stop / Step

PLC operating modes

STOP Mode

The PLC is halted. No scan cycle runs. All Y and C outputs are de-energised and AY registers are cleared. You can:

  • Edit the program (add, move, delete rungs and elements)
  • Toggle X inputs and C relays to preview contact states
  • Force Y outputs ON/OFF via the Y tab or I/O tab
  • Manually set AY values via the AN tab or I/O tab
  • Execute a single scan with STEP — only available when no scene is connected

RUN Mode

The scan cycle executes every 100 ms. The ladder canvas shows live power flow (green = energised). Inputs from a connected scene update each scan. Editing is disabled in RUN mode.

STEP Mode

While in STOP mode and with no scene connected, press STEP to execute exactly one scan. Useful for tracing logic one step at a time without continuous scanning.

Scene connected: The STEP button is automatically disabled (faded) whenever a 3D scene is linked to the simulator. This prevents stepping through program logic while a live scene is driving inputs — reconnect or use RUN mode instead. STEP re-enables as soon as the scene disconnects.

Scan Cycle

How the simulator executes your program each 100 ms

Read Inputs
(X, AX from scene)
Execute Program
(Rung 0 → last)
Write Outputs
(Y, AY to scene)
Update Display
(redraw ladder + I/O)

Execution Order

  1. Rungs execute from Rung 0000 to the last rung, top to bottom.
  2. Within each rung, elements are evaluated left to right.
  3. Parallel branches: all branches are evaluated; the rung is powered if any branch is TRUE.
  4. OTE outputs are cleared at the start of each scan; they are only set when their rung is powered.
  5. OTL/OTU bits persist across scans — they only change when a latch/unlatch rung is powered.

Timing Resolution

The nominal scan interval is 100 ms. Timer accumulators increment by the actual elapsed time since the last scan (capped at 500 ms). The scan time counter in the toolbar shows the most recent execution time in milliseconds.

Forcing I/O

Manually overriding bit and register states

Forcing X Inputs

Click any X button on the X tab or I/O tab at any time (RUN or STOP). In RUN mode the forced value is used in the next scan immediately. In STOP mode it triggers a display refresh of contact states.

Forcing Y Outputs

Y bits can only be forced in STOP mode. Click the LED on the Y tab or I/O tab to toggle. The change propagates to a connected scene immediately via BroadcastChannel.

Forcing C Relays

Click any C button on the C tab or I/O tab at any time. Useful for simulating latch states or internal flags without having to construct a full rung to set them.

Forcing AX Analog Inputs

Drag the slider on the AN tab or I/O tab for any AX channel. The new value takes effect on the next scan in RUN mode, or updates contact comparisons immediately in STOP mode.

Forcing AY Analog Outputs

In STOP mode only, type a value (0–4095) into the AY input field on the AN tab or I/O tab and press Enter. In RUN mode the field is read-only — the program controls AY via MOV rungs.

Save & Load

Program storage — browser slots and JSON files

Saving

  1. Click 💾 SAVE in the toolbar.
  2. Type a name in the Program Name field.
  3. Click Save — the program is stored in browser localStorage under that name.
  4. If a slot with the same name already exists it is overwritten. Up to 10 slots are kept.

Loading

  1. Click 📂 LOAD.
  2. Click a slot to load it (confirmation required to prevent accidental overwrite).
  3. Memory resets on load (X inputs retain state; Y, C, T, CT, AX, AY clear).

Auto-Restore

On page load the simulator automatically restores the most recently saved slot. No manual action is needed between sessions.

File Export / Import

In the Save/Load dialog, use ⬇ Export .json to download the program as a JSON file. Use ⬆ Import .json to load a previously exported file — useful for sharing programs between computers.

Warning: Browser localStorage is cleared by "Clear site data" in browser settings. Export to JSON for long-term backup.

Rung Templates

Pre-built rung patterns for common tasks

When inserting a new rung the Rung Template Picker opens. Addresses are auto-filled with the next available address for each type — you will rarely need to edit them manually.

TemplateDescription
XIC → OTEOne normally-open contact energises one output. Starting point for most rungs.
XIC → OTLContact sets (latches) an output. Use with XIC → OTU to create a Set/Reset pair.
XIC → OTUContact resets (unlatches) an output.
PAR → OTETwo contacts in parallel (OR) driving an output. Useful for start/seal-in circuits.
XIC → TONOn-delay timer — preset 2 seconds. Double-click block to change preset.
XIC → TOFOff-delay timer — preset 2 seconds.
XIC → CTUCount-Up counter — preset 10 counts.
XIC → RESReset rung targeting a counter by default. Edit the address to target a timer.
GRT → OTEAnalog compare — output ON when AX > 2048 (mid-scale). Edit comparand as needed.
GRT → OTL/OTUTwo-rung hysteresis band — inserts both the Set (high threshold) and Reset (low threshold) rungs together.
XIC → MOVMove a constant value to an AY register when the contact is ON.

Connecting a 3D Scene

Linking the simulator to an interactive machine visualisation

3D Scenes are separate HTML files that display animated industrial machines. When connected to the simulator they exchange I/O state in real time via the browser's BroadcastChannel API — no server or network connection is needed.

How to Connect

  1. Place the scene HTML file in the same folder as acc-plc-simulator.html.
  2. Ensure acc-scenes.js is also in the same folder and lists the scene.
  3. Click CONNECT in the simulator toolbar.
  4. The Connect dialog lists all available scenes from acc-scenes.js.
  5. Click LAUNCH ↗ next to the scene you want — it opens in a new browser window.
  6. Once the scene loads, the CONNECT button changes to LINKED with a pulsing blue dot.
  7. The connected scene name appears next to the button.
Tip: Open the scene in a separate window (not a tab) for best performance. A dedicated window gets its own browser process and runs at full speed.

Disconnecting

Close the scene window. The simulator detects the loss of heartbeat messages within 2 seconds and resets the CONNECT button to its idle state.

Only One Scene at a Time

Only one scene can be connected simultaneously. If a scene is already linked, the LAUNCH buttons for other scenes are disabled (shown as BUSY). Close the current scene window before connecting a different one.

Standalone Scenes

Running a 3D scene without the simulator

Each scene HTML file is fully self-contained and can be opened directly in a browser without the simulator running. In standalone mode the scene operates as a 3D demonstration — you can interact with the machine but PLC logic is not executed.

Opening a Scene Standalone

  1. Open the scene HTML file directly in your browser (e.g. acc-conveyor-scene.html).
  2. The scene will initialise and display the machine in its default state.
  3. Interact with the machine elements as designed (click buttons, observe animations).

Connecting the Simulator Later

With the scene already open in one window, open acc-plc-simulator.html in a second window. The scene will detect the simulator's presence via BroadcastChannel and link automatically — you do not need to re-open the scene.

Note: BroadcastChannel only works between pages in the same browser on the same device. It does not work across different computers or browsers.

Use Cases for Standalone Scenes

  • Demonstrating machine operation without needing to explain ladder logic
  • Exploring the 3D environment before writing the control program
  • Classroom display on a projector while students write programs on their own machines

Scene I/O Mapping

Which signals are exchanged between the simulator and a scene

The BroadcastChannel (acc-plc-link) carries two message types each direction:

Scene → Simulator (Inputs)

SignalTypeDescription
X1–X16DigitalPhysical pushbuttons, limit switches, sensors in the scene. Arrive as a boolean array.
AX1–AX8Analog 0–4095Analog sensors — e.g. position pot, pressure transducer, temperature. Arrive as integer array.

Simulator → Scene (Outputs)

SignalTypeDescription
Y1–Y16DigitalMotor contactors, solenoids, pilot lights, alarms. Sent as boolean array after every scan.
AY1–AY4Analog 0–4095Speed reference, valve position, display value. Sent as integer array after every scan.

Scene I/O Chips

When you open the CONNECT dialog, each scene card shows coloured chips listing its specific I/O assignments — green chips are inputs to the simulator (from the scene), olive chips are outputs from the simulator (to the scene).

Example: A conveyor scene might use X1 = Start button, X2 = Stop button, X3 = Part sensor, Y1 = Conveyor motor, AX1 = Speed pot (0–4095), AY1 = Motor speed reference.

Keyboard Shortcuts

All keyboard shortcuts available in the simulator

KeyAction
F5Start RUN mode (continuous scan)
F4Switch to STOP mode
Ctrl+ZUndo last edit
Ctrl+YRedo (re-apply undone edit)
Ctrl+Shift+ZRedo (alternative shortcut)
EscClose any open dialog or modal
EnterApply / confirm the currently open dialog
Dbl-clickOpen Edit dialog for any ladder element
Dbl-click headerEdit the rung comment
Right-clickOpen context menu for a contact

Undo / Redo

The simulator maintains an undo history of up to 50 states. A snapshot is taken automatically before every edit operation, including:

  • Inserting or deleting a contact
  • Editing an instruction (address, type, preset, comment)
  • Adding, editing, or removing parallel branches
  • Inserting or deleting a rung
  • Dragging rungs to reorder them

The ↩ UNDO and ↪ REDO buttons in the toolbar are greyed out when there is nothing to undo or redo. Loading a program (via LOAD or Import) and using CLEAR both reset the history to start fresh.

Note: Undo/Redo is only available in STOP mode — the history is not affected by the scan cycle running in RUN mode.

Address Reference

Complete syntax for all register types

AddressTypeRangeNotes
XnDigital InX1–X16Boolean. Toggleable from X/IO tabs.
YnDigital OutY1–Y16Boolean. Forceable in STOP mode.
CnInternalC1–C256Boolean. Use C100+ by convention.
TnTimerT1–T256Resolves to Tn/DN.
Tn/DNTimerT1–T256Done bit — Acc ≥ Pre.
Tn/ENTimerT1–T256Enable bit — rung powered.
Tn/TTTimerT1–T256Timing bit — EN && !DN.
CTnCounterCT1–CT256Resolves to CTn/DN.
CTn/DNCounterCT1–CT256Done bit — Acc ≥ Pre.
AXnAnalog InAX1–AX8Integer 0–4095. Used in compare blocks.
AYnAnalog OutAY1–AY4Integer 0–4095. Written by MOV blocks.

Example Programs

Common ladder logic patterns

1 — Start / Stop / Seal-In (Motor Starter)

RungLogicPurpose
0000(XIC X1 || XIC C1) && XIC X2 → OTE C1Start PB or Seal-In, gated by Stop PB. C1 = Run relay.
0001XIC C1 → OTE Y1Run relay drives motor output.

2 — Jog Circuit (no seal-in)

RungLogicPurpose
0000(XIC X1 || XIC C1) && XIC X2 && XIO C2 → OTE C1Normal run, interlocked against jog (C2).
0001XIC X3 && XIO C1 → OTE C2Jog PB, interlocked against run.
0002(XIC C1 || XIC C2) → OTE Y1Motor runs on either relay.

3 — On-Delay Timer (Fan delay)

RungLogicPurpose
0000XIC X1 → TON T1 Pre=5000Start 5-second timer when X1 is ON.
0001XIC T1 → OTE Y1Y1 energises 5 s after X1 goes ON.

4 — Analog Threshold (High-level alarm)

RungLogicPurpose
0000GRT AX1 > 3276 → OTE Y3Alarm ON when AX1 > 80% (3276/4095). Drag AX1 slider to test.

5 — Hysteresis Band (Heating control)

RungLogicPurpose
0000GRT AX1 > 2500 → OTL Y4Heater OFF when temperature rises above setpoint.
0001LES AX1 < 1500 → OTU Y4Heater ON when temperature falls below lower threshold.