IEC 61131-3 is the first real endeavor to standardize industrial automation programming languages. It is independent of any single company with its worldwide support.
The entire software is required to solve a particular control problem can be formulated as a configuration at the highest level. A configuration is specific to a particular control system type, including the arrangement of the hardware, e.g. memory addresses for I/O channels, processing resources, and system capabilities.
A configuration can define one or more resources. One can look at a resource as a processing facility that is able to execute IEC programs. One or more Tasks can be defined within a resource. Tasks control the execution of a set of programs and/or Function Block. These can be either executed periodically or upon the occurrence of a specified trigger, such as the change of a variable.
Programs are built from a number of different software elements written in any of the IEC defined languages. Typically, a program contains of a network of Functions and Function Blocks, which are able to exchange the data. Function and Function Blocks are the basic of building blocks, containing an algorithm and a data structure.
If we compare this to a conventional PLC then this contains one resource, running one task, controlling one program, running in a closed loop. IEC 61131-3 adds much to this, making it open to the future. A future that includes event driven and multi-processing programs. And this future is not so far, just look at real time control systems or distributed systems. IEC 61131-3 is suitable for a broad applications range, without having to learn additional programming languages.
IEC has defined user defined functions and standard functions. Standard functions are for example ADD(ition), ABS(absolute), SINus, SQRT, and COSinus. User defined functions can be used over and over again.