The parts of IEC 61131-3 the LADV Structured Text compiler and runtime implement, and the values of the parameters the standard leaves to the implementer.
| Document | IEC 61131-3 compliance statement |
| Code | LADV-CS |
| Revision | 1.0, 1 November 2026 |
| Firmware | V1.0.0 |
| Issued by | Wartens, makers of LADX |
This is a statement by Wartens of what LADV implements. It is not a certification by PLCopen or by any test body.
1. Languages
| Language | Status |
|---|---|
| Structured Text (ST) | Implemented, as described below |
| Ladder Diagram (LD) | The LADX ladder dialect: contacts, coils, latches, one-shots, timers, counters, compares, math, JSR |
| Function Block Diagram (FBD) | Not implemented |
| Sequential Function Chart (SFC) | Not implemented |
| Instruction List (IL) | Not implemented; deprecated in the third edition |
2. Structured Text features
| Feature | Status |
|---|---|
| Elementary types: BOOL, SINT to ULINT, BYTE to LWORD, REAL, LREAL, TIME, LTIME, DATE, TOD, DT, STRING, WSTRING, CHAR, WCHAR | Implemented |
| Typed, based and duration literals | Implemented |
| Enumerations, subranges, arrays (multi-dimensional), structures, nested initialisation | Implemented |
| Variable sections VAR, VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_TEMP, VAR_GLOBAL | Implemented |
| RETAIN, NON_RETAIN, CONSTANT, AT with direct addresses | Implemented |
| FUNCTION, FUNCTION_BLOCK, PROGRAM; formal and informal calls; output assignment with => | Implemented |
| IF, CASE with lists and ranges, FOR, WHILE, REPEAT, EXIT, CONTINUE, RETURN | Implemented |
| Bit access, x.3 | Implemented |
| CONFIGURATION, RESOURCE, TASK with INTERVAL, SINGLE and PRIORITY; PROGRAM WITH | Implemented |
| Standard functions and function blocks | Implemented; listed in LADV-IR-ST |
| Classes, methods, interfaces, properties | Not implemented |
| REF_TO and dereferencing | Not implemented |
| Namespaces | Not implemented |
| Actions and SFC elements in ST source | Not implemented |
3. Implementation-dependent parameters
| Parameter | LADV |
|---|---|
| Maximum identifier length | 64 characters, case-insensitive |
| Default and maximum STRING length | 80 characters by default, STRING[n] up to 1024 |
| Integer overflow | Wraps, two's complement, at the width of the type (INT 32767 + 1 = -32768) |
| LINT, ULINT and LWORD range | Exact to 53 bits (plus or minus 9,007,199,254,740,991), saturating beyond |
| REAL and LREAL | IEC 60559 single and double precision |
| REAL to integer conversion | Rounds half to even (IEC 60559 default); TRUNC truncates |
| Integer division | Truncates toward zero; MOD takes the sign of the dividend |
| Integer division by zero | Faults the controller with code F310 and the line number; outputs go off |
| REAL division by zero | Gives infinity or NaN as IEC 60559 defines; no fault |
| Array index out of range | Faults the controller with code F311 and the line number |
| TIME and LTIME | TIME: signed 32-bit milliseconds. LTIME: milliseconds with fractions to 1 ns |
| DATE, TOD, DT | Milliseconds since 1970-01-01 (UTC); TOD to 1 ms |
| Timer resolution | The interval of the task that calls the timer |
| Task scheduling | Non-preemptive. At each tick the due tasks run in priority order (0 is highest), then declaration order |
| Default task | One cyclic task at the program's scan time, 100 ms unless set |
| Warm restart (STOP to RUN) | RETAIN variables keep their values on retentive CPUs; all others take their initial values |
| Cold restart | Every variable, RETAIN included, takes its initial value |
| Watchdog | A tick that takes longer than the CPU's watchdog time faults the controller (F300) |
| Loop protection | Checked against the watchdog every 1,024 statements, so an endless loop faults rather than hangs |
| Maximum array size | 65,536 elements |
| Direct addresses | %IXb.n and %QXb.n are digital channel 8b+n; %IWn and %QWn are analog channel n; %M is internal memory |
| Analog range | 0 to 1000 is 0.0 to 100.0 percent across the LADV line |
4. Checks at compile time
Undeclared names, with the nearest declared name suggested; type mismatches, with the conversion to use; literals out of range for their type; assignments to constants and inputs; unknown functions and block inputs; recursion; EXIT and CONTINUE outside a loop; two variables at one address.