Appearance
Troubleshooting Ladder Logic
Last updated
License feature: Ladder LogicFirst checks
- Is the task Running? (Card badge or status bar.)
- Is the routine the program's Main, or called by a JSR whose rung is true?
- Is the program scheduled (no (off) next to it) and the rung enabled (not grayed)?
- Switch to Monitor and follow the rung left to right to the first element that isn't green.
- Look at the status bar for a red fault message.
| Symptom | Cause | Fix |
|---|---|---|
| Ladder Logic isn't in the sidebar, or the page is refused | The Ladder Logic license feature is not enabled | Update the license |
| Task was running, stopped after a restart | Enabled is off in Task Settings | Tick Enabled and Save |
| Add SFC Chart is missing | No Sequential Function Charts feature | Update the license |
| Palette entries are grayed out | No rung selected | Click a rung first |
| New element appears at the end of the rung | That's where the palette adds them | Drag it into position |
| Can't find Branch Start / Branch End | Branches aren't palette items | Select an instruction and click its branch button — see The Ladder Editor |
| Rung shows Branches overlapping another group are ignored | A branch partly overlaps another group | Widen or shrink it to match the other group exactly, or to sit beside it |
| After Save, a different routine is shown | The editor reloads the first program's Main routine | Click your routine again |
| Edits vanished after adding or renaming a routine | The editor reloaded without saving | Save before changing routines or programs |
| Delete of a task, program or routine fails | Delete is admin-only | Ask an administrator |
| A dashboard button to start/stop a task shows an error for operators | Operators can run this is off for that task | Tick it in Task Settings, or start the task from a schedule or workflow |
| Coil shows on in Monitor but the PLC output doesn't change | Tag Write Access is off for the device, the device is offline, or the driver refused the write | Open the task log: a write_error entry names the tag, the device and the reason |
| PLC output keeps switching back | Something else (another HMI, the PLC program) writes it too | Ladder re-sends its value every 2 s while they disagree — decide which one owns the output |
| Contact never goes true on a PLC bit | The tag holds text such as ON, or the device is offline and the last value was 0 | Check the value on the Tags page; contacts accept true/false/1/0 or numbers |
| Internal tag always 0 | Address doesn't start with B, N, F or ST (e.g. Count) | Rename it N_Count |
T4:0/DN or C5:0.ACC always 0 | No timer or counter has that address, or it is a Task Tag on one side and a Program Tag on the other | Set the same Address type and value on the timer/counter |
| Compare with EQU never true on a float | Exact equality | Use GEQ/LEQ |
| CPT result always 0 or wrong | The tag in {id:path} isn't used by any other element, the device id is wrong, or the expression contains a function name | Use the tag in another element, check Device # in the tag browser, or use math blocks |
| CTU stays done and keeps counting | Nothing resets it | Give it an address and add a rung with RES |
| RTO stays done | Nothing resets it | Give it an address and reset it with RES |
| TON finishes immediately after a JSR starts calling its routine again | The timer counted the time the routine wasn't called | Put the TON in a routine scanned every scan, or reset it by removing power first |
| FOR loop runs once, or not at all | No NXT after it (the element panel says so), or Initial is already past Terminal | Add the NXT rung; check Initial, Terminal and the sign of Step |
| Status bar: FOR loop in "…" ran more than 10000 times in one scan | Terminal unreachable with that Step, or the loop body changes the index | Fix Step/Terminal; don't write the Index Tag inside the loop |
| COP/FLL copies only one value | Length is 1 | Set Length in the element panel |
| Status bar: Call stack overflow (max 32) | Routines calling each other in a loop | Remove the recursive JSR |
| Status bar: SFC routine "…" has no initial step | Chart with no initial step | Select a step and Make initial step |
| Task shows Running but no outputs change, with a fault shown | A fault every scan blocks all output writes | Fix the fault. A critical alarm named after the task fires while this is happening, so it's also visible on the Alarms page, not just the editor or task log |
| Task stopped itself with the driver service is not running | The task uses tags on a real device, and the driver service is down | Check Driver Health; start the task again once the drivers are back |
| Task faulted with Watchdog: the scan was still running after 1000 ms | A JMP to an earlier rung that never goes false, or a very heavy continuous task | Fix or simplify the loop, then start the task again — the watchdog already stopped it, no restart needed |
| High CPU, slow pages | Continuous scan mode, or many Local Tags outputs per scan, or history on ladder-written tags | Periodic 100–500 ms; internal tags for internal logic; see The Scan Cycle |
| Motor still on after Stop | The task leaves outputs as they are | Set When the task is stopped to Switch outputs off in Task Settings, if that is safe |
| Chart doesn't move | Transition condition empty or false, or nothing runs the chart | Check the issue bar and the Monitor banner; click the amber transition |
| Chart stuck with no active step | The active step was deleted | Reset chart |
| Dashboard lost the SFC step tag | Step, chart, program or task was renamed | Rebind to the new path |