Testing your new device

In order to test that your new device is compliant with IEC-61131, we propose the following basic test suite.

R1020: Time : sleep (ST)
R1022: TP (pulse) (ST)
R1023: TON time FB (ST)
R1024: TOF time FB (ST)
R0001: Type conversions (ST)
R0002: Type conversions numeric (ST)
R0003: Global vars in pou (ST)
R0005: Global vars in FB and functions (ST)
R0006: TEMP vars in PROGRAM (ST)
R0007: AT vars in PROGRAM (ST)
R0008: Enumerated types (ST)
R0009: MUX function (ST)
R0010: Nested structures with initialization (ST)
R0012: AT vars with Globals (ST)
R0015: Structures: manipulation and passing as arguments (ST)
R0016: Nested arrays (ST)
R0017: Nested arrays/structs with initialization (ST)
R0018: Nested struct/arrays (ST)
R0019: Arrays with date times and other types (ST)
R0020: Initialization of primitive types (ST)
R0023: Comparison operators (ST)
R0024: SEL and MUX functions (ST)
R0025: Bits/boolean types (ST)
R0026: Operators (ST)
R0028: Operators precedence (ST)
R0030: IF-ELSE construct (ST)
R0035: CASE statement (ST)
R0040: FOR loop (ST)
R0051: WHILE loop (ST)
R0052: REPEAT loop (ST)
R0053: EXIT from loop (ST)
R0060: RANGE types (ST)
R0080: RETURN keyword (ST)
R0085: All variants of function calls (ST)
R0090: Formal call to a FunctionBlock (ST)
R0091: BOOL_EDGE type in user defined FB (ST)
R0095: Standard function blocks: counter, triggers (ST)
R0096: Function blocks as global vars (ST)
R0100: Formal call to functions (ST)
R0101: Function/FB calls : persistence (ST)
R0105: Function calls inside loops (ST)
R0110: Function call : informal (ST)
R0111: Functions calls, EN/ENO (ST)
R0113: FB/function informal calls, with OUT arguments (ST)
R0114: FB/function informal calls, with INOUT arguments (ST)
R0115: Extensible functions (ST)
R0120: Repetead calling of Function Blocks (ST)
R0130: EN input in FunctionBlocks (ST)
R0140: ENO output in FunctionBlocks (ST)
R0150: Date/time types and functions (ST)
R0160: String functions (ST)
R0162: More string functions (ST)
R0163: Custom string functions (ST)
R0165: Strings with length (ST)
R0170: IL: jump to label (ST,IL)
R0175: Calling IL function with no arguments (ST,IL)
R0176: IL PV and similar special operators (ST,IL)
R0180: Several function calling syntaxes (CAL) in IL (ST,IL)
R0185: Deferred expressions in IL (ST,IL)
R0190: Test INOUT parameters (ST)
R0195: Test RETAIN (ST)
R0200: Basic ladder (LD)
R0210: Ladder with function NOT (LD)
R0216: Convertions Boolean/Word (LD)
R0220: Var refs in ladders (LD)
R0230: Function Block in ladder (LD)
R0240: Connector item in ladder (LD)
R0245: Arrays in FBD (ST,LD)
R0250: Wired-or connections (LD)
R0251: latched coils (LD)
R0253: Ladder items: execution order (LD)
R0255: Boolean NOT in ladder (LD)
R0256: Negated inputs in ladder (LD)
R0257: Functions and variables in ladder (ST,LD)
R0258: Jumps and Labels (LD)
R0259: Aribtrary expressions and indexed variable references (LD)
R0260: Ladder with counter CTU and initialization in ST, several runs (ST,LD)
R0265: Wired or, several runs (ST,LD)
R0270: Simple loop in IL (ST,IL)
R0280: ENO=false in Function Block (ST)
R0281: ENO=false in Function Block 2 (ST)
R0290: TEMP variable (ST)
R0295: Floating point types (ST)
R0297: References (ST)
R0300: Function Block initialization (ST)
R0900: External lib (ST)
R1001: Bad assert; this should give two errors (ST)
R1002: No problems (ST)
R1003: integer and bit types (ST)
R1005: ASSERT test in FBD (LD)
R1008: Integer data types (ST)
R1021: Time/date functions and convertions (ST)