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 (third) edition was published in February 2013.

Part 3 of IEC 61131 deals with basic software architecture and programming languages of the control program within PLC. It defines three graphical and two textual programming language standards:
 * Ladder diagram (LD), graphical
 * Function block diagram (FBD), graphical
 * Structured text (ST), textual
 * Instruction list (IL), textual (deprecated in 3rd edition of the standard )
 * Sequential function chart (SFC), has elements to organize programs for sequential and parallel control processing, graphical.

Data types

 * Elementary Data Type
 * 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)
 * 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)
 * Character / Character string
 * 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"
 * 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