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
Interface Tour
Layout of the main simulator window
Toolbar (top)
| Control | Description |
|---|---|
| ▶ RUN | Start the continuous scan cycle (100 ms interval). Also F5. |
| ■ STOP | Halt the scan. All outputs de-energise. Also F4. |
| ⏭ STEP | Execute exactly one scan. Only available in STOP mode with no scene connected. Fades out (disabled) when a 3D scene is linked. |
| ✕ CLEAR | Delete all rungs and reset all memory (with confirmation). Also clears the undo history. |
| ↩ UNDO | Reverse the last edit. Greyed out when no history is available. Also Ctrl+Z. |
| ↪ REDO | Re-apply an undone edit. Also Ctrl+Y or Ctrl+Shift+Z. |
| ☀ THEME | Toggle between dark (default) and light theme. Your preference is saved and restored automatically on the next visit. |
| 💾 SAVE | Save the current program to a named slot or file. |
| 📂 LOAD | Restore a previously saved program. |
| CONNECT | Open the 3D Scene browser to link a machine visualisation. |
| LED + State | Green pulsing = RUN, red = STOP. |
| Scan counter | Shows 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.
| Control | Description |
|---|---|
| − | Zoom out 10% per click. Minimum 30%. |
| + | Zoom in 10% per click. Maximum 300%. |
| 1:1 | Reset zoom to 100%. |
| Ctrl + Scroll | Hold Ctrl (⌘ on Mac) and scroll the mouse wheel over the ladder panel to zoom smoothly. |
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.
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.
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
- Open
acc-plc-simulator.htmlin any modern browser. - The default Start/Stop/Jog program loads automatically.
- Press F5 (or click RUN) — the LED turns green and the scan begins.
- On the X tab (right panel), click X1 to toggle the Start input ON — Y1 energises.
- Click X1 again to release it — Y1 stays on (seal-in circuit).
- Click X2 to pulse the Stop — Y1 de-energises.
- Press F4 to stop the scan.
Adding Your First Rung
- In STOP mode, hover near the bottom of the ladder until the ⊕ Add New Rung strip appears. Click it.
- The Rung Template picker opens — choose XIC → OTE for a simple contact/output rung.
- Double-click the new contact (address shown in amber) to open Edit. Change the address to
X4and click Apply. - Double-click the output coil and change its address to
Y4. - Press F5 to run, then toggle X4 on the X tab to see Y4 energise.
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.
Right-Click Context Menu
| Action | Description |
|---|---|
| Edit Element | Opens the Edit dialog for the clicked contact. |
| Insert Contact Before | Inserts a new contact immediately before the clicked one. |
| Insert Contact After | Inserts a new contact immediately after the clicked one. |
| Add Parallel Branch | Wraps the contact in a parallel group or adds a branch. |
| Edit Parallel Group | Opens the Parallel Branch Editor for the enclosing group. |
| Remove This Branch | Removes the branch containing the clicked contact. |
| Delete Contact | Removes 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
| Symbol | Name | Address | Description |
|---|---|---|---|
| -| |- | 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 1Y3— Digital output 3 (used as a contact to read back its state)C100— Internal control relay 100T1/DN— Timer 1 Done bitT1/EN— Timer 1 Enable bitT1/TT— Timer 1 Timing bitCT1/DN— Counter 1 Done bit- Bare
T1resolves toT1/DNautomatically
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.
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
| Symbol | Name | Address | Description |
|---|---|---|---|
| -( )- | 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. |
Timers
TON and TOF — time-based control
| Symbol | Name | Description |
|---|---|---|
| [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
- Address —
T1throughT256 - Preset — time in milliseconds. 1000 = 1 second, 5000 = 5 seconds.
- Accumulator — counts up from 0 each scan (approximately 100 ms steps).
Timer Bits
| Bit | Address | Description |
|---|---|---|
| DN | T1/DN or T1 | Done — set when Acc ≥ Preset |
| EN | T1/EN | Enable — set while rung is TRUE (TON) or was TRUE (TOF) |
| TT | T1/TT | Timing — set while timer is actively counting (EN && !DN) |
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
| Symbol | Name | Description |
|---|---|---|
| [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
- Address —
CT1throughCT256 - Preset — integer count target (no units)
- DN bit —
CT1/DNor bareCT1
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
| Register | How to set | Source |
|---|---|---|
| AX1–AX8 | Drag slider on the AN tab, or connect a 3D scene | Manual / Scene |
Analog Outputs — AY
| Register | How to set | Source |
|---|---|---|
| AY1–AY4 | Driven by MOV rungs during RUN; manually typed in STOP mode | Program / Manual |
Analog Compare Instructions
| Symbol | Name | Condition |
|---|---|---|
| [GRT] | GRT | Greater Than — passes power if AXn > Comparand |
| [LES] | LES | Less Than — passes if AXn < Comparand |
| [GEQ] | GEQ | Greater or Equal — passes if AXn ≥ Comparand |
| [LEQ] | LEQ | Less or Equal — passes if AXn ≤ Comparand |
| [EQU] | EQU | Equal — passes if AXn = Comparand |
| [NEQ] | NEQ | Not 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).
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).
Memory Map
All addressable registers in the simulator
| Prefix | Range | Type | Description |
|---|---|---|---|
| X | X1–X16 | Digital Input | Physical inputs. Toggle on X tab or I/O tab. Can be driven by a connected 3D scene. |
| Y | Y1–Y16 | Digital Output | Physical outputs. Set by OTE/OTL/OTU rungs. Sent to connected scene each scan. |
| C | C1–C256 | Internal Relay | Program-internal bits. Not physical I/O. Toggle on C tab. Use C100+ by convention to avoid conflicts. |
| T | T1–T256 | Timer | Each T register holds EN, DN, Acc, Pre. Addressed as T1 (DN), T1/DN, T1/EN, T1/TT. |
| CT | CT1–CT256 | Counter | Each CT register holds DN, Acc, Pre. Addressed as CT1 (DN) or CT1/DN. |
| AX | AX1–AX8 | Analog Input | 12-bit read-only input registers (0–4095). Set by slider on AN tab or by a connected scene. |
| AY | AY1–AY4 | Analog Output | 12-bit output registers (0–4095). Written by MOV rungs. Sent to connected scene. Manually editable in STOP mode. |
I/O Panel Tabs
Right-side panel — seven tabs for monitoring and forcing
| Tab | Contents | Interactive? |
|---|---|---|
| I/O | Only 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 |
| X | All X1–X16 digital inputs | Click to toggle ON/OFF |
| Y | All Y1–Y16 digital outputs | STOP: click LED to force ON/OFF |
| C | C1–C16 internal relays | Click to toggle ON/OFF |
| T | Active timers — Acc, Pre, DN, progress bar | Read-only |
| CT | Active counters — Acc, Pre, DN, progress bar | Read-only |
| AN | AX1–AX8 sliders (input simulation) + AY1–AY4 bars with editable values | AX: drag slider. AY: type value in STOP mode. |
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.
Scan Cycle
How the simulator executes your program each 100 ms
(X, AX from scene)
(Rung 0 → last)
(Y, AY to scene)
(redraw ladder + I/O)
Execution Order
- Rungs execute from Rung 0000 to the last rung, top to bottom.
- Within each rung, elements are evaluated left to right.
- Parallel branches: all branches are evaluated; the rung is powered if any branch is TRUE.
- OTE outputs are cleared at the start of each scan; they are only set when their rung is powered.
- 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
- Click 💾 SAVE in the toolbar.
- Type a name in the Program Name field.
- Click Save — the program is stored in browser localStorage under that name.
- If a slot with the same name already exists it is overwritten. Up to 10 slots are kept.
Loading
- Click 📂 LOAD.
- Click a slot to load it (confirmation required to prevent accidental overwrite).
- 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.
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.
| Template | Description |
|---|---|
| XIC → OTE | One normally-open contact energises one output. Starting point for most rungs. |
| XIC → OTL | Contact sets (latches) an output. Use with XIC → OTU to create a Set/Reset pair. |
| XIC → OTU | Contact resets (unlatches) an output. |
| PAR → OTE | Two contacts in parallel (OR) driving an output. Useful for start/seal-in circuits. |
| XIC → TON | On-delay timer — preset 2 seconds. Double-click block to change preset. |
| XIC → TOF | Off-delay timer — preset 2 seconds. |
| XIC → CTU | Count-Up counter — preset 10 counts. |
| XIC → RES | Reset rung targeting a counter by default. Edit the address to target a timer. |
| GRT → OTE | Analog compare — output ON when AX > 2048 (mid-scale). Edit comparand as needed. |
| GRT → OTL/OTU | Two-rung hysteresis band — inserts both the Set (high threshold) and Reset (low threshold) rungs together. |
| XIC → MOV | Move 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
- Place the scene HTML file in the same folder as
acc-plc-simulator.html. - Ensure
acc-scenes.jsis also in the same folder and lists the scene. - Click CONNECT in the simulator toolbar.
- The Connect dialog lists all available scenes from
acc-scenes.js. - Click LAUNCH ↗ next to the scene you want — it opens in a new browser window.
- Once the scene loads, the CONNECT button changes to LINKED with a pulsing blue dot.
- The connected scene name appears next to the button.
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
- Open the scene HTML file directly in your browser (e.g.
acc-conveyor-scene.html). - The scene will initialise and display the machine in its default state.
- 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.
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)
| Signal | Type | Description |
|---|---|---|
| X1–X16 | Digital | Physical pushbuttons, limit switches, sensors in the scene. Arrive as a boolean array. |
| AX1–AX8 | Analog 0–4095 | Analog sensors — e.g. position pot, pressure transducer, temperature. Arrive as integer array. |
Simulator → Scene (Outputs)
| Signal | Type | Description |
|---|---|---|
| Y1–Y16 | Digital | Motor contactors, solenoids, pilot lights, alarms. Sent as boolean array after every scan. |
| AY1–AY4 | Analog 0–4095 | Speed 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).
Keyboard Shortcuts
All keyboard shortcuts available in the simulator
| Key | Action |
|---|---|
| F5 | Start RUN mode (continuous scan) |
| F4 | Switch to STOP mode |
| Ctrl+Z | Undo last edit |
| Ctrl+Y | Redo (re-apply undone edit) |
| Ctrl+Shift+Z | Redo (alternative shortcut) |
| Esc | Close any open dialog or modal |
| Enter | Apply / confirm the currently open dialog |
| Dbl-click | Open Edit dialog for any ladder element |
| Dbl-click header | Edit the rung comment |
| Right-click | Open 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.
Address Reference
Complete syntax for all register types
| Address | Type | Range | Notes |
|---|---|---|---|
| Xn | Digital In | X1–X16 | Boolean. Toggleable from X/IO tabs. |
| Yn | Digital Out | Y1–Y16 | Boolean. Forceable in STOP mode. |
| Cn | Internal | C1–C256 | Boolean. Use C100+ by convention. |
| Tn | Timer | T1–T256 | Resolves to Tn/DN. |
| Tn/DN | Timer | T1–T256 | Done bit — Acc ≥ Pre. |
| Tn/EN | Timer | T1–T256 | Enable bit — rung powered. |
| Tn/TT | Timer | T1–T256 | Timing bit — EN && !DN. |
| CTn | Counter | CT1–CT256 | Resolves to CTn/DN. |
| CTn/DN | Counter | CT1–CT256 | Done bit — Acc ≥ Pre. |
| AXn | Analog In | AX1–AX8 | Integer 0–4095. Used in compare blocks. |
| AYn | Analog Out | AY1–AY4 | Integer 0–4095. Written by MOV blocks. |
Example Programs
Common ladder logic patterns
1 — Start / Stop / Seal-In (Motor Starter)
| Rung | Logic | Purpose |
|---|---|---|
| 0000 | (XIC X1 || XIC C1) && XIC X2 → OTE C1 | Start PB or Seal-In, gated by Stop PB. C1 = Run relay. |
| 0001 | XIC C1 → OTE Y1 | Run relay drives motor output. |
2 — Jog Circuit (no seal-in)
| Rung | Logic | Purpose |
|---|---|---|
| 0000 | (XIC X1 || XIC C1) && XIC X2 && XIO C2 → OTE C1 | Normal run, interlocked against jog (C2). |
| 0001 | XIC X3 && XIO C1 → OTE C2 | Jog PB, interlocked against run. |
| 0002 | (XIC C1 || XIC C2) → OTE Y1 | Motor runs on either relay. |
3 — On-Delay Timer (Fan delay)
| Rung | Logic | Purpose |
|---|---|---|
| 0000 | XIC X1 → TON T1 Pre=5000 | Start 5-second timer when X1 is ON. |
| 0001 | XIC T1 → OTE Y1 | Y1 energises 5 s after X1 goes ON. |
4 — Analog Threshold (High-level alarm)
| Rung | Logic | Purpose |
|---|---|---|
| 0000 | GRT AX1 > 3276 → OTE Y3 | Alarm ON when AX1 > 80% (3276/4095). Drag AX1 slider to test. |
5 — Hysteresis Band (Heating control)
| Rung | Logic | Purpose |
|---|---|---|
| 0000 | GRT AX1 > 2500 → OTL Y4 | Heater OFF when temperature rises above setpoint. |
| 0001 | LES AX1 < 1500 → OTU Y4 | Heater ON when temperature falls below lower threshold. |