Already a subscriber? 

MADCAD.com Free Trial
Sign up for a 3 day free trial to explore the MADCAD.com interface, PLUS access the
2009 International Building Code to see how it all works.
If you like to setup a quick demo, let us know at support@madcad.com
or +1 800.798.9296 and we will be happy to schedule a webinar for you.
Security check
Please login to your personal account to use this feature.
Please login to your authorized staff account to use this feature.
Are you sure you want to empty the cart?

IEC 61131-3 Ed. 4.0 b:2025 Programmable controllers – Part 3: Programming languages, 2025
- English [Go to Page]
- CONTENTS
- FOREWORD
- 1 Scope
- 2 Normative references
- 3 Terms and definitions
- 4 Architectural models [Go to Page]
- 4.1 Software model
- 4.2 Communication model
- 4.3 Programming model
- 5 Compliance [Go to Page]
- 5.1 General
- 5.2 Feature tables
- 5.3 Implementer’s compliance statement
- 6 Common elements [Go to Page]
- 6.1 Use of printed characters [Go to Page]
- 6.1.1 Character set
- 6.1.2 Identifiers
- 6.1.3 Keywords
- 6.1.4 Use of white space
- 6.1.5 Comments
- 6.2 Pragma
- 6.3 Literals – External representation of data [Go to Page]
- 6.3.1 General
- 6.3.2 Numeric literals and string literals
- 6.3.3 Character string literals
- 6.3.4 Duration literal
- 6.3.5 Date and time of day literal
- 6.4 Data types [Go to Page]
- 6.4.1 General
- 6.4.2 Elementary data types (BOOL, INT, REAL, STRING, etc.)
- 6.4.3 Generic data types
- 6.4.4 User-defined data types
- 6.5 Variables [Go to Page]
- 6.5.1 Declaration and initialization of variables
- 6.5.2 Variable sections
- 6.5.3 Variable length ARRAY variables
- 6.5.4 Constant variables
- 6.5.5 Directly represented variables ( % )
- 6.5.6 Retentive variables (RETAIN, NON_RETAIN)
- 6.6 Program organization units (POUs) [Go to Page]
- 6.6.1 Common features for POUs
- 6.6.2 Functions
- 6.6.3 Function blocks
- 6.6.4 Programs
- 6.6.5 Classes
- 6.6.6 Interface
- 6.6.7 Object-oriented features for function block types
- 6.6.8 Polymorphism
- 6.7 Sequential function chart (SFC) elements [Go to Page]
- 6.7.1 General
- 6.7.2 Steps
- 6.7.3 Transitions
- 6.7.4 Actions
- 6.7.5 Rules of evolution
- 6.8 Configuration elements [Go to Page]
- 6.8.1 General
- 6.8.2 Tasks
- 6.9 Synchronization of concurrent execution [Go to Page]
- 6.9.1 General
- 6.9.2 Mutex
- 6.9.3 Object-oriented mutex
- 6.9.4 Semaphore
- 6.9.5 Object-oriented semaphore
- 6.10 Namespaces [Go to Page]
- 6.10.1 General
- 6.10.2 Declaration
- 6.10.3 Usage
- 6.10.4 Namespace directive USING
- 7 Textual languages [Go to Page]
- 7.1 Common elements
- 7.2 Structured text (ST) [Go to Page]
- 7.2.1 General
- 7.2.2 Expressions
- 7.2.3 Statements
- 8 Graphical languages [Go to Page]
- 8.1 Common elements [Go to Page]
- 8.1.1 General
- 8.1.2 Representation of variables and instances
- 8.1.3 Representation of lines and blocks
- 8.1.4 Direction of flow in networks
- 8.1.5 Evaluation of networks
- 8.1.6 Execution control elements
- 8.2 Ladder diagram (LD) [Go to Page]
- 8.2.1 General
- 8.2.2 Power rails
- 8.2.3 Link elements and states
- 8.2.4 Contacts
- 8.2.5 Coils
- 8.2.6 Functions and function blocks
- 8.2.7 Order of network evaluation
- 8.3 Function block diagram (FBD) [Go to Page]
- 8.3.1 General
- 8.3.2 Combination of elements
- 8.3.3 Order of network evaluation
- Annex A (normative) Formal specification of the language elements
- Annex B (informative) List of major changes and extensions of Edition 4 of IEC 61131-3 [Go to Page]
- B.1 General
- B.2 New features
- B.3 Significant changes
- B.4 Deletions
- B.5 Deprecations
- Annex C (informative) Relating strings, characters, and their literals to ISO/IEC 10646
- Bibliography
- Figures [Go to Page]
- Figure 1 – Software model
- Figure 2 – Communication model
- Figure 3 – Combination of programmable controller language elements
- Figure 4 – Implementer’s compliance statement (Example)
- Figure 5 – Hierarchy of the generic data types
- Figure 6 – Initialization by literals and constant expressions (Rules)
- Figure 7 – Variable declaration keywords (Summary)
- Figure 8 – Usage of VAR_GLOBAL, VAR_EXTERNAL and CONSTANT (Rules)
- Figure 9 – Conditions for the initial value of a variable (Rules)
- Figure 10 – Formal and non-formal representation of call (Examples)
- Figure 11 – Data type conversion rules – implicit and explicit (Summary)
- Figure 12 – Implicit type conversions overview
- Figure 13 – Data type conversion from string types to array of bytes
- Figure 14 – Data type conversion from array of bytes to string types
- Figure 15 – Usage of function block input and output parameters (Rules)
- Figure 16 – Usage of function block input and output parameters (Illustration of rules)
- Figure 17 – Standard timer function blocks – timing diagrams (Rules)
- Figure 18 – Recommended implementation in pseudo code for timer
- Figure 19 – Overview of inheritance and interface implementation
- Figure 20 – Inheritance of classes (Illustration)
- Figure 21 – Interface with derived classes (Illustration)
- Figure 22 – Inheritance of interface and class (Illustration)
- Figure 23 – Function block types with optional body and methods (Illustration)
- Figure 24 – Inheritance of function block body with SUPER() (Example)
- Figure 25 – ACTION_CONTROL function block – External interface (Summary)
- Figure 26 – ACTION_CONTROL function block body (Summary)
- Figure 27 – Action control (Example)
- Figure 28 – SFC evolution (Rules)
- Figure 29 – SFC errors (Example)
- Figure 30 – Configuration (Example)
- Figure 31 – CONFIGURATION and RESOURCE declaration (Example)
- Figure 32 – The reference implementation of mutex functions
- Figure 33 – The reference implementation of object-oriented mutex
- Figure 34 – The reference implementation of semaphore functions
- Figure 35 – The reference implementation of object-oriented semaphore
- Figure 36 – Accessibility using namespaces (Rules)
- Figure 37 – Common textual elements (Summary)
- Figure C.1 – Relation between ISO/IEC 10646 and IEC 61131-3
- Figure C.2 – Example of encoded strings in memory
- Tables [Go to Page]
- Table 1 – Character set
- Table 2 – Identifiers
- Table 3 – Comments
- Table 4 – Pragma
- Table 5 – Numeric literals
- Table 6 – Character string literals
- Table 7 – Two-character combinations in character strings
- Table 8 – Duration literals
- Table 9 – Date and time of day literals
- Table 10 – Elementary data types
- Table 11 – Declaration of user-defined data types and initialization
- Table 12 – Reference operations
- Table 13 – Declaration of variables
- Table 14 – Initialization of variables
- Table 15 – Variable-length ARRAY variables
- Table 16 – Directly represented variables
- Table 17 – Partial access of ANY_BIT variables (except BOOL)
- Table 18 – Execution control graphically using EN and ENO
- Table 19 – Function declaration
- Table 20 – Function call
- Table 21 – Typed and overloaded functions
- Table 22 – Data type conversion function
- Table 23 – Data type conversion of numeric data types
- Table 24 – Data type conversion of bit data types
- Table 25 – Data type conversion of bit and numeric types
- Table 26 – Data type conversion of date and time types
- Table 27 – Data type conversion of character types
- Table 28 – Numerical and arithmetic functions
- Table 29 – Arithmetic functions
- Table 30 – Bit shift functions
- Table 31 – Bitwise Boolean functions
- Table 32 – Selection functions d
- Table 33 – Comparison functions
- Table 34 – Character string functions
- Table 35 – Numerical functions of time and duration data types
- Table 36 – Additional functions of time data types CONCAT and SPLIT
- Table 37 – Function for endianness conversion
- Table 38 – Functions of enumerated and named values data types
- Table 39 – Validate functions
- Table 40 – Function ASSERT
- Table 41 – Function block type declaration
- Table 42 – Function block instance declaration
- Table 43 – Function block call
- Table 44 – Standard bistable function blocksa
- Table 45 – Standard edge detection function blocks
- Table 46 – Standard counter function blocks
- Table 47 – Standard timer function blocks
- Table 48 – Program declaration
- Table 49 – Class
- Table 50 – Class instance declaration
- Table 51 – Textual call of methods – Formal and non-formal parameter list
- Table 52 – Interface
- Table 53 – Assignment attempt
- Table 54 – Object-oriented function block type
- Table 55 – SFC step
- Table 56 – SFC transition and transition condition
- Table 57 – SFC declaration of actions
- Table 58 – Association between step and action
- Table 59 – Action block
- Table 60 – Action qualifiers
- Table 61 – Action control features
- Table 62 – Sequence evolution – graphical
- Table 63 – Configuration and resource declaration
- Table 64 – Task
- Table 65 – Mutex type and operations
- Table 66 – Semaphore type and operations
- Table 67 – Namespace
- Table 68 – Nested namespace declaration options
- Table 69 – Namespace directive USING
- Table 70 – Operators of the ST language
- Table 71 – ST language statements
- Table 72 – Graphical execution control elements
- Table 73 – Power rails and link elements
- Table 74 – Contacts
- Table 75 – Coils
- Français [Go to Page]
- SOMMAIRE
- AVANT-PROPOS
- 1 Domaine d’application
- 2 Références normatives
- 3 Termes et définitions
- 4 Modèles architecturaux [Go to Page]
- 4.1 Modèle logiciel
- 4.2 Modèle de communication
- 4.3 Modèle de programmation
- 5 Conformité [Go to Page]
- 5.1 Généralités
- 5.2 Tableaux de caractéristiques
- 5.3 Déclaration de conformité de l’intégrateur
- 6 Éléments communs [Go to Page]
- 6.1 Utilisation des caractères d’impression [Go to Page]
- 6.1.1 Jeu de caractères
- 6.1.2 Identificateurs
- 6.1.3 Mots-clés
- 6.1.4 Utilisation de l’espace blanc
- 6.1.5 Commentaires
- 6.2 Pragma
- 6.3 Littéraux – Représentation externe de données [Go to Page]
- 6.3.1 Généralités
- 6.3.2 Littéraux numériques et littéraux de chaîne
- 6.3.3 Littéraux de chaîne de caractères
- 6.3.4 Littéraux de durée
- 6.3.5 Littéraux de date et heure
- 6.4 Types de données [Go to Page]
- 6.4.1 Généralités
- 6.4.2 Types de données élémentaires (BOOL, INT, REAL, STRING, etc.)
- 6.4.3 Types de données génériques
- 6.4.4 Types de données définis par l’utilisateur
- 6.5 Variables [Go to Page]
- 6.5.1 Déclaration et initialisation de variables
- 6.5.2 Sections de variables
- 6.5.3 Variables ARRAY de longueur variable
- 6.5.4 Variables constantes
- 6.5.5 Variables directement représentées (%)
- 6.5.6 Variables persistantes (RETAIN, NON_RETAIN)
- 6.6 Unités d’organisation de programme (POU) [Go to Page]
- 6.6.1 Caractéristiques communes pour les POU
- 6.6.2 Fonctions
- 6.6.3 Blocs fonctionnels
- 6.6.4 Programmes
- 6.6.5 Classes
- 6.6.6 Interface
- 6.6.7 Caractéristiques orientées objet pour les types de bloc fonctionnel
- 6.6.8 Polymorphisme
- 6.7 Éléments de diagramme fonctionnel séquentiel (SFC) [Go to Page]
- 6.7.1 Généralités
- 6.7.2 Étapes
- 6.7.3 Transitions
- 6.7.4 Actions
- 6.7.5 Règles d'évolution
- 6.8 Éléments de configuration [Go to Page]
- 6.8.1 Généralités
- 6.8.2 Tâches
- 6.9 Synchronisation de l’exécution simultanée [Go to Page]
- 6.9.1 Généralités
- 6.9.2 Mutex
- 6.9.3 Mutex orienté objet
- 6.9.4 Sémaphore
- 6.9.5 Sémaphore orienté objet
- 6.10 Espaces de noms [Go to Page]
- 6.10.1 Généralités
- 6.10.2 Déclaration
- 6.10.3 Utilisation
- 6.10.4 Directive d’espace de noms USING
- 7 Langages textuels [Go to Page]
- 7.1 Éléments communs
- 7.2 Texte structuré (ST) [Go to Page]
- 7.2.1 Généralités
- 7.2.2 Expressions
- 7.2.3 Énoncés
- 8 Langages graphiques [Go to Page]
- 8.1 Éléments communs [Go to Page]
- 8.1.1 Généralités
- 8.1.2 Représentation de variables et d’instances
- 8.1.3 Représentation de traits et de blocs
- 8.1.4 Sens du flux dans les réseaux
- 8.1.5 Évaluation des réseaux
- 8.1.6 Éléments de contrôle d’exécution
- 8.2 Diagramme à contacts (LD) [Go to Page]
- 8.2.1 Généralités
- 8.2.2 Rails de puissance
- 8.2.3 Éléments de liaison et états
- 8.2.4 Contacts
- 8.2.5 Bobines
- 8.2.6 Fonctions et blocs fonctionnels
- 8.2.7 Ordre d'évaluation des réseaux
- 8.3 Diagramme de bloc fonctionnel (FBD) [Go to Page]
- 8.3.1 Généralités
- 8.3.2 Combinaison d'éléments
- 8.3.3 Ordre d'évaluation des réseaux
- Annexe A (normative) Spécification formelle des éléments de langage
- Annexe B (informative) Liste des modifications et extensions majeures de l’Édition 4 de l’IEC 61131-3 [Go to Page]
- B.1 Généralités
- B.2 Nouvelles fonctionnalités
- B.3 Modifications significatives
- B.4 Suppressions
- B.5 Éléments désormais déconseillés
- Annexe C (informative) Relation entre les chaînes, les caractères et leurs littéraux du présent document et l'ISO/IEC 10646
- Bibliographie
- Figures [Go to Page]
- Figure 1 – Modèle logiciel
- Figure 2 – Modèle de communication
- Figure 3 – Combinaison d’éléments de langage pour automate programmable
- Figure 4 – Déclaration de conformité de l’intégrateur (exemple)
- Figure 5 – Hiérarchie des types de données génériques
- Figure 6 – Initialisation par des littéraux et des expressions constantes (règles)
- Figure 7 – Mots-clés pour une déclaration de variable (résumé)
- Figure 8 – Utilisation de VAR_GLOBAL, VAR_EXTERNAL et CONSTANT (règles)
- Figure 9 – Conditions associées à la valeur initiale d’une variable (règles)
- Figure 10 – Représentation formelle et informelle d’appel (exemples)
- Figure 11 – Règles de conversion d’un type de données – implicite et explicite (résumé)
- Figure 12 – Vue d’ensemble des conversions de type implicites
- Figure 13 – Conversion de type de données depuis des types de chaîne vers un tableau d’octets
- Figure 14 – Conversion de type de données depuis un tableau d’octets vers des types de chaîne
- Figure 15 – Utilisation des paramètres d’entrée et de sortie de bloc fonctionnel (règles)
- Figure 16 – Utilisation des paramètres d’entrée et de sortie de bloc fonctionnel (représentation des règles)
- Figure 17 – Blocs fonctionnels normaux minuteur – Chronogrammes (règles)
- Figure 18 – Mise en œuvre recommandée dans le pseudo-code pour le minuteur
- Figure 19 – Présentation de la mise en œuvre d’héritage et d’interface
- Figure 20 – Héritage de classes (exemple)
- Figure 21 – Interface avec classes dérivées (exemple)
- Figure 22 – Héritage d’interface et de classe (exemple)
- Figure 23 – Types de bloc fonctionnel avec corps et méthodes facultatifs (exemple)
- Figure 24 – Héritage de corps de bloc fonctionnel avec SUPER() (exemple)
- Figure 25 – Bloc fonctionnel ACTION_CONTROL – Interface externe (résumé)
- Figure 26 – Corps de bloc fonctionnel ACTION_CONTROL (résumé)
- Figure 27 – Contrôle d’action (exemple)
- Figure 28 – Évolution d’un SFC (règles)
- Figure 29 – Erreurs de SFC (exemple)
- Figure 30 – Configuration (exemple)
- Figure 31 – Déclaration de CONFIGURATION et de RESOURCE (exemple)
- Figure 32 – Mise en œuvre de référence des fonctions mutex
- Figure 33 – Mise en œuvre de référence d’un mutex orienté objet
- Figure 34 – Mise en œuvre de référence des fonctions de sémaphore
- Figure 35 – Mise en œuvre de référence d’un sémaphore orienté objet
- Figure 36 – Accessibilité à l’aide des espaces de noms (Règles)
- Figure 37 – Éléments textuels communs (résumé)
- Figure C.1 – Relation entre l’ISO/IEC 10646 et l’IEC 61131-3
- Figure C.2 – Exemple de chaînes codées en mémoire
- Tableaux [Go to Page]
- Tableau 1 – Jeu de caractères
- Tableau 2 – Identificateurs
- Tableau 3 – Commentaires
- Tableau 4 – Pragma
- Tableau 5 – Littéraux numériques
- Tableau 6 – Littéraux de chaîne de caractères
- Tableau 7 – Combinaisons de deux caractères dans les chaînes de caractères
- Tableau 8 – Littéraux de durée
- Tableau 9 – Littéraux de date et heure
- Tableau 10 – Types de données élémentaires
- Tableau 11 – Déclaration des types de données définis par l’utilisateur et initialisation
- Tableau 12 – Opérations sur les références
- Tableau 13 – Déclaration de variables
- Tableau 14 – Initialisation de variables
- Tableau 15 – Variables ARRAY de longueur variable
- Tableau 16 – Variables directement représentées
- Tableau 17 – Accès partiel aux variables ANY_BIT (sauf BOOL)
- Tableau 18 – Contrôle de l’exécution en utilisant graphiquement EN et ENO
- Tableau 19 – Déclaration de fonction
- Tableau 20 – Appel d’une fonction
- Tableau 21 – Fonctions typées et en surcharge
- Tableau 22 – Fonction de conversion de type de données
- Tableau 23 – Conversion de type de données des types de données numériques
- Tableau 24 – Conversion de type de données des types de données binaires
- Tableau 25 – Conversion de type de données des types binaires et numériques
- Tableau 26 – Conversion de type de données des types date et heure
- Tableau 27 – Conversion de type de données des types de caractère
- Tableau 28 – Fonctions numériques et arithmétiques
- Tableau 29 – Fonctions arithmétiques
- Tableau 30 – Fonctions de décalage de bit
- Tableau 31 – Fonctions booléennes bit à bit
- Tableau 32 – Fonctions de sélection d
- Tableau 33 – Fonctions de comparaison
- Tableau 34 – Fonctions de chaîne de caractères
- Tableau 35 – Fonctions numériques des types de données de temps et de durée
- Tableau 36 – Fonctions supplémentaires des types de données de temps CONCAT et SPLIT
- Tableau 37 – Fonctions de conversion de boutisme
- Tableau 38 – Fonctions des types de données énumérés et avec valeurs nommées
- Tableau 39 – Fonctions de validation
- Tableau 40 – Fonction ASSERT
- Tableau 41 – Déclaration du type de bloc fonctionnel
- Tableau 42 – Déclaration d’instance de bloc fonctionnel
- Tableau 43 – Appel de bloc fonctionnel
- Tableau 44 – Blocs fonctionnels normaux bistables
- Tableau 45 – Blocs fonctionnels normaux de détection de front
- Tableau 46 – Blocs fonctionnels normaux compteur
- Tableau 47 – Blocs fonctionnels normaux minuteur
- Tableau 48 – Déclaration de programme
- Tableau 49 – Classe
- Tableau 50 – Déclaration d’instance de classe
- Tableau 51 – Appel textuel de méthodes – Liste des paramètres formels et informels
- Tableau 52 – Interface
- Tableau 53 – Tentative d’affectation
- Tableau 54 – Type de bloc fonctionnel orienté objet
- Tableau 55 – Étape d’un SFC
- Tableau 56 – Transition et condition de transition d’un SFC
- Tableau 57 – Déclaration des actions d’un SFC
- Tableau 58 – Association entre étape et action
- Tableau 59 – Bloc d’action
- Tableau 60 – Qualificateurs d’action
- Tableau 61 – Caractéristiques de contrôle d’action
- Tableau 62 – Évolution de séquence – graphique
- Tableau 63 – Déclaration de configuration et de ressource
- Tableau 64 – Tâche
- Tableau 65 – Type de mutex et opérations
- Tableau 66 – Type de sémaphore et opérations
- Tableau 67 – Espace de noms
- Tableau 68 – Options de déclaration d’espace de noms imbriqué
- Tableau 69 – Directive d’espace de noms USING
- Tableau 70 – Opérateurs du langage ST
- Tableau 71 – Énoncés en langage ST
- Tableau 72 – Éléments de contrôle d’exécution graphiques
- Tableau 73 – Rails de puissance et éléments de liaison
- Tableau 74 – Contacts
- Tableau 75 – Bobines [Go to Page]