The Fast Guide to

IEC 61131-3

Open Control Standard & Software

IEC 61131-3 is the first vendor independent standardized programming language for industrial automation. It was established by the International Electrotechnical Commission (IEC), a worldwide standard organization founded in 1906 and recognized worldwide for standards in the controls industry by over 50 countries. The standard is already well established in Europe and is rapidly gaining popularity in North America and Asia as the programming standard for industrial and process control.

The adoption of IEC 61131-3 by the industry is driven by the increasing software complexity of control and automation requirements. Labor costs and the time to create and maintain control software have a major impact on control projects which can be improved using the IEC 61131-3 vendor independent programming language standard. Applying a standard programming language has a positive impact on the software lifecycle that includes requirements analysis, design, construction, testing (validation), installation, operation, and maintenance. The impact on maintenance is important since control software maintenance, including upgrades, is generally 2 to 4 times that of the labor of initial programming.

The IEC 61131-3 standard, combined with new powerful Freescale chip architectures, enables an entire controller to be delivered in an embedded device. Control programs can run distributed and independently rather than concentrated in large controllers. No longer are thousands of lines of control programs required running in one controller for complex automation applications. This increases performance, improves reliability and simplifies programs.

IEC 61131-3 provides multiple language support within a control program. The control program developer can select the language that is best suited to a particular task, greatly increasing their productivity. Plus, with a standardized programming interface that is completely independent of the hardware platform, users can greatly reduce the cost of program maintenance and training across companywide automation applications.

IEC 61131-3 is hardware independent. The ability to transport automation solutions to other platforms is vastly improved over PLC applications offering users and system integrators a level of reusability never before available. IEC 61131 increases the efficiency and speed of implementing new automation solutions by using readily available control components developed on other projects and by outside developers.

Companies that have chosen to implement IEC 61131-3 find that they reduce human resource costs in training, debugging and maintenance, and improve productivity from its higher reusability.

IEC 61131-3 resources

Want to learn more about IEC 61131-3?

Subscribe to our Automation Education email series to learn the ins and outs of IEC 61131-3 and the top industrial protocols in a byte-size weekly format!

IEC 61131-3 Training

View the courses offered through Industrial Networking University:

  • Basics of IEC 61131-3 Course – This course will cover the basics of IEC 61131-3. When you have completed this course, you should have a basic understanding of how IEC 61131-3 works.

Technology Overview

IEC 61131-3 is the international standard for programmable controller programming languages. As such, it specifies the syntax, semantics and display for the following suite of PLC programming languages:

  • Ladder diagram (LD)
  • Sequential Function Charts (SFC)
  • Function Block Diagram (FBD)
  • Structured Text (ST)
  • Instruction List (IL)

IEC 61131-3 is the third component (Part 3) of the IEC 61131 family that consists of these five parts.

  • Part 1 General Overview
  • Part 2 Hardware
  • Part 3 Programming Languages
  • Part 4 User Guidelines
  • Part 5 Communication

The easiest way to view the standard is to split it into two parts, Common Elements and Programming Languages.


Data Typing

Data Typing is a common element of the standard with the purpose to prevent errors early on in development. It defines the type of parameters that will be used, and attempts to avoid errors like dividing a date by an integer. The different types of data supported are boolean, integer, real, byte, word, date, time-of-day and string. The standard also allows users to define their own variables. These are known as derived data types. In this way an engineer would be able to define an analog input channel as a data type and re-use it over and over again.

Variables are assigned only to explicit hardware addresses or explicit inputs and outputs. These can be assigned in custom configurations and programs. An IEC 61131 system is highly independent and able to function with little to no messaging from an external network.

The scope of the variable is limited to the organization unit in which they are declared. The great benefit of this feature is that their names can be reused in other parts without any conflict, eliminating another source of errors. If the variables have global scope, they can be declared as global. Parameters can be assigned their initial value at start up and restart.

Configuration, Resources, and Tasks

At the highest level, the entire software required to solve a particular control problem can be formulated as a configuration. A configuration is specific to a particular type of control system, including the arrangement of the hardware, i.e. processing resources, memory addresses for I/O channels and system capabilities.

One can define resources within a configuration. A resource can be thought of as a processing facility that can execute IEC programs. Within a resource, one or more tasks can be defined. Tasks control the execution of a set of programs and/or function blocks. These can either be executed periodically or upon the occurrence of a specified trigger.

For instance, in an IEC 61131 enabled drive, a trigger could be set when RPMs fall below a predefined value. The trigger could start a task to increase speed. These results are instant and come directly from the drive. There is no lag or handshaking by an external PLC. This means that there is virtually no risk of losing a message or miscommunication. Feedback is nearly instantaneous compared to a programmable controller with an I/O and program scan time.

Programs are built from a number of different software elements written in any of the IEC-defined languages mentioned above: LDs, SFCs, FBDs, STs or ILs. It’s typical for a program to consist of a series of high-level function blocks written in one or more of these languages.

Program Organizations Units

Within IEC 61131-3, the programs, function blocks and functions are called program organization units, or POUs. IEC 61131-3 includes defined standard functions instances, such as ADD, ABS, SQRT, SIN, and COS. Or the user can create a custom function block and use that function block multiple times.

Function blocks are software objects that represent a level of more detailed control. They can contain data as well as an algorithm. As software objects, they have well-defined interfaces and hidden internals. This creates a clear line between the different levels of the programs. With the characteristics just mentioned, functions, and function blocks reflect best practices as embraced by object-oriented programming principles.

In most cases, function blocks can be written in any of the IEC languages, even C. Programs can be written using any of the previously mentioned basic building blocks.

SFCs are used to control the sequential behavior of a control program and support synchronization and concurrency.

Like what you’re reading?

Subscribe to our Automation Education email series to learn the ins and outs of the top industrial protocols in a byte-size nuggets sent bi-weekly to your inbox!


Within IEC 61131-3, the syntax and semantics are defined for five standard programming languages, leaving no room for dialects. Once you have learned them, you can use a wide variety of systems based on this standard.

The end user can choose a programming language based on their knowledge, the problem at hand, external components, interfaces, or simple preference. All languages are linked and provided a common suite with a link to existing experience. In this way, they also provide a communication tool, combining people of different backgrounds. Because the standard’s structure is built on functions and function blocks, users are able to adopt either a top-down or bottom-up strategy to develop their programs.

CoDeSys (
CoDeSys is one of the most powerful IEC 61131-3 programming tools for controllers. CoDeSys supports all five programming languages of the standard, combining the power of advanced programming languages, such as C or Pascal, with the easy handling and operational functions of PLC programming systems.

Unlike some competitive IEC 61131-3 offerings, CoDeSys produces native machine code for a large number of common processors. Native machine code is inherently faster and more reliable than interpreted solutions.

The entire programming kit including a manual and online assistance is available in German, English or French. Parts of the tool, e.g. the online help are available in other languages like Russian, Chinese or Spanish.

CoDeSys Provides Competitive Advantages

  • Fast Customization – 3S (the software company in Germany) is able to perform a complete test adaptation (including online functionality) on any standard processor hardware within two days’ time. CoDeSys has ready backends for all current processors. To keep customization time and resulting expenses to a minimum the run time system, programming system and code generation are perfectly coordinated, saving you time and ensuring your products reach the marketplace quickly.
  • A Practical, Easy-to-Use Approach – Functions, such as Autodeclare, Autoformat and context-sensitive input assistance, greatly simplify the use of CoDeSys. All functions are accessible by use of the keyboard. What also ensures fast and efficient work is the exceptionally low number of resources CoDeSys requires.
  • High Performance – Native code generators for all common processors guarantee the optimal use of your control system. Due to intelligent algorithms, such as incremental compile, large projects with thousands of global variables and hundreds of components can be realized in surprisingly short compiling time spans. CoDeSys supplies users with a broad range of high-performance program development functionalities, such as: almost all data types specified in the IEC 61131-3; offline simulation; and, powerful online functions such as breakpoints, single stepping, power flow, sampling trace and online change.

Banner Engineering Application Story

A custom-programmed HMI allows access to a Banner SureCross DX80 Gateway Pro with CoDeSys software. Using a free, open source, designers can now program the gateways to manipulate data like a PLC.

Real Time Automation recently created this type of solution for Banner Engineering Corp., in Minneapolis, and their wireless product developer, Seasonix Inc., in Plymouth Minn., using CoDeSys 1131-3 open control software. Through a customizable browser-based HMI interface, users can access and manipulate data from multiple wireless sensors.

Placing PLC functionality on the gateway reduces network traffic and can eliminate the need for a PLC in applications like this, reducing the footprint and cost of automating applications. In addition, the browser-based functionality allows users the ability to access data from any internet connection.


Want to learn more or have a project you’d like to discuss with us?