IEC 61131-3 is the third part (of 10) of the international standard IEC 61131 for programmable logic controllers. It was first published in December 1993 by the IEC; the current (fourth) edition was published in May 2025. Part 3 of IEC 61131 deals with basic software architecture and programming languages of the control program within PLC. The current edition defines three graphical and one textual programming language standards:
Ladder diagram (LD), graphical Function block diagram (FBD), graphical Structured text (ST), textual Sequential function chart (SFC), has elements to organize programs for sequential and parallel control processing, graphical. Previous editions also included:
Instruction list (IL), textual. Deprecated in the third edition (2013) and removed in the fourth edition (2025).
Data types
Elementary Data Types (basic) Bit Strings – groups of on/off values BOOL - 1 bit (0,1) BYTE – 8 bit (1 byte) WORD – 16 bit (2 byte) DWORD – 32 bit (4 byte) LWORD – 64 bit (8 byte) INTEGER – whole numbers (Considering byte size 8 bits) SINT – signed short integer (1 byte) INT – signed integer (2 byte) DINT – signed double integer (4 byte) LINT – signed long integer (8 byte) USINT – Unsigned short integer (1 byte) UINT – Unsigned integer (2 byte) UDINT – Unsigned double integer (4 byte) ULINT – Unsigned long integer (8 byte) REAL – floating point IEC 60559 (same as IEEE 754-2008) REAL – (4 byte) LREAL – (8 byte)
Elementary Data Types (Date and Time)
Duration TIME – (implementer specific). Literals in the form of T#5m90s15ms LTIME – (8 byte). Literals extend to nanoseconds in the form of T#5m90s15ms542us15ns Date DATE – calendar date (implementer specific) LDATE – calendar date (8 byte, nanoseconds since 1970-01-01, restricted to multiple of one day) Time of day TIME_OF_DAY / TOD – clock time (implementer specific) LTIME_OF_DAY / LTOD – clock time (8 byte) Date and time of Day DATE_AND_TIME / DT – time and date (implementer specific) LDATE_AND_TIME / LDT – time and date (8 byte, nanoseconds since 1970-01-01)
Elementary Data Types (Character / Character string)
Existing CHAR – Single-byte character (1 byte, limited to characters 0 to 255 of ISO/IEC 10646) WCHAR – Double-byte character (2 byte, limited to characters 0 to 65535 of ISO/IEC 10646) STRING – Variable-length single-byte character string. Literals specified with single quote, 'This is a STRING Literal' WSTRING – Variable-length double-byte character string. Literals specified with a double quote, "This is a WSTRING Literal" New in version 4 of the standard UCHAR – Single character encoded according to UTF-8 USTRING - Variable-length character string in which each character is encoded according to UTF-8
Generic Data Types Only available for the input / output/ in-out variables of system-defined Program Organization Units (POUs, see below)
ANY ANY_DERIVED ANY_ELEMENTARY ANY_MAGNITUDE ANY_NUM ANY_REAL: LREAL, REAL ANY_INT ANY_UNSIGNED: ULINT, UDINT, UINT, USINT ANY_SIGNED: LINT, DINT, INT, SINT ANY_DURATION: TIME, LTIME ANY_BIT: LWORD, DWORD, WORD, BYTE, BOOL ANY_CHARS ANY_STRING: STRING, WSTRING ANY_CHAR: CHAR, WCHAR ANY_DATE: DATE_AND_TIME (DT), DATE_AND_TIME(LDT), DATE, TIME_OF_DAY (TOD), LTIME_OF_DAY(LTOD)
User-defined Data Types Enumerated data type Enumerated data type with named value Subrange data type – puts limits on value i.e., INT(4 .. 20) for current Array data type – multiple values stored in the same variable. Structured data type – composite of several variables and types. Directly derived data type – type derived from one of the above types to give new name and initial value as a type. References – a kind of strongly typed pointer. Arithmetic operation of the value of this type is prohibited.
Variables Variable attributes: RETAIN, CONSTANT, AT
Global Direct (local) I/O Mapping – Input, Output, I/O External Temporary
Configuration Resource – Like a CPU Tasks – Can be multiple per CPU. Programs – Can be executed once, on a timer, on an event.
Program organization unit (POU) Functions Standard: ADD, SQRT, SIN, COS, GT, MIN, MAX, AND, OR, etc. Custom Function Blocks Standard: Custom – Libraries of functions can be supplied by a vendor or third party. Programs
Configuration, resources, tasks Configuration – processing resources, memory for IO, execution rates, number of tasks.
Object oriented programming (OOP) The 3rd revision of the standard describes how to implement OOP within the application programming
References
External links PLCopen [1] IEC 61131-3:2025 Programmable controllers – Part 3: Programming languages CODESYS – an implementation independent of device manufacturers, includes object oriented programming (OOP) as an option de:STEP 7 implementation for Siemens devices, only
