Limitations
The Ladder Diagram frontend is under active development and is gated behind the
ENABLE_LD_FRONTEND build option. This page records what is currently
supported and the known restrictions.
Supported constructs
- Contacts and coils — normally-open and normally-closed contacts; output, Set, and Reset coils.
- Timers —
TON(on-delay) andTOF(off-delay), with their retainedET/Qstate evaluated per scan.TP(pulse) blocks are accepted but currently simplified toTONsemantics — see Restrictions below. - Counters —
CTU(count-up) andCTD(count-down), edge-triggered on the count input, with reset handling. - Arithmetic function blocks —
ADD,SUB,MUL,DIV, andMOVE. - Variable types —
BOOL, and the integer typesINT/DINT/TIME(modelled as 32-bit integers). - Properties — the five kinds described in Property Format.
Restrictions
- Input format. Programs must be supplied as PLCopen XML. Other LD serialisations are not parsed.
TPpulse timers.TPblocks are modelled withTON(on-delay) semantics:Qrises afterINhas been held forPTticks, rather than emitting a fixed-width pulse on a rising edge ofIN. Properties that depend on accurate pulse-timer behaviour are not faithfully checked yet.- Property expression syntax. Expressions in
invariantandabsenceproperties are Boolean-only: variable names combined with!,&&,||, and parentheses. Arithmetic relations (for exampleCounter >= 5) are not yet accepted in property expressions. - Bounded results.
responseproperties are complete only up to their justifiedmax_scans. Under BMC,reachabilityand all other properties are checked only up to the unwind bound; use--k-inductionfor an unbounded safety proof. - Integer width. Integer variables are fixed at 32 bits; configurable widths are not modelled.
Reporting issues
The frontend is evolving. Please report bugs or missing constructs on the GitHub issue tracker, ideally with the PLCopen XML and the property file that reproduce the problem.