The international standard IEC 61131-3 specifies programming languages for programmable controllers (aka programmable logic controllers, or PLCs), including ladder diagram (LD), structured text (ST), function block (FB), instruction list (IL), and sequential function chart (SFC). Of these, instruction list and structured text are considered textual languages, meaning they use text, numbers, and punctuation — like natural language — while the others are considered graphical, using symbols and visual relationships to specify instructions. The IEC introduced this standard set of languages for PLCs to give programmers a toolbox of languages that can address virtually any application, while keeping software vendor-independent.
Note that sequential function chart (SFC) is not technically a language, but rather a graphical means of partitioning code and visually displaying the machine state or mode.
Instruction list was one of the first PLC programming languages, along with ladder logic. The instruction list language is considered a low-level language, meaning it is very close to machine code — the binary language that a computer’s CPU executes directly. With instruction list language, each instruction, or machine command, is placed on a new line. (This method of arranging commands in stacked lines is sometimes referred to as a “stack-based logic solver,” similar to that used in RPN logic on some calculators.) Instructions consist of operators, operands, and modifiers, using mnemonics for the operators (for example, “A” for “and” or “MOV” for “move”).
A benefit of low-level languages, including instruction list, is that they are very fast and efficient — especially when compared to graphical languages — and use less memory. For this reason, instruction list language is typically used in applications such as control loops, which require very fast processing speeds.
However, instruction list programs can be prone to run-time errors, and they can cause infinite loops or illegal arithmetic operations. Most importantly, though, in today’s manufacturing environments, personnel other than programmers — including maintenance engineers and electricians — should be able to troubleshoot issues or faults with equipment, including controls and programs. And while instruction list language is very programmer-friendly, without special training in the language, it’s very difficult to analyze and troubleshoot the code.
In other words, support personnel need to be trained specifically in instruction list language, which is simply not practical, especially when there are other languages (especially graphical ones) that can address the same applications and problems and are more user-friendly to non-programmers.
To this end, edition 3.0 of the technical report IEC TR 61131-8 (November 2017), Industrial-process measurement and control – Programmable controllers – Part 8: Guidelines for the application and implementation of programming languages, notes that in the IEC 61131-1:2013 standard, the instruction list language is marked as deprecated (discouraged from use) for the next release of the standard. The committee’s stated reason for this deprecation indicates that, “… an assembler-like language is not up-to-date in modern development environments.”
This editor’s research suggests that instruction list has not been a popular language for PLC programming in quite some time, with its use being rare in modern motion control applications. This limited use, together with its deprecation by the IEC, means PLC hardware and software manufacturers may very well stop supporting instruction list programming in future versions of their products.
Feature image credit: RealPars