arvau

Wikipedia / IEC 61131-3

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:

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)

Unit

Description

d

Day

h

Hour

m

Minute

s

Second

ms

Millisecond

us

Microsecond

ns

Nanosecond

Duration literals

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)

Escape sequence

Produces

$$

$

$'

'

$L

linefeed

$N

newline

$P

page (form feed)

$R

return

$T

tab

$xx

hex value

STRING escape sequences

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