Introduction au langage FBD
Le langage FBD fait partie des cinq langages standardisés par la norme IEC 61131-3.
Le langage FBD permet la programmation d’automate avec un aspect très visuel où tu manipules des blocs fonctions plutôt que du code texte. D’où son nom en Français « Digramme de blocs fonction »
Ici on détailles :
- Les bases et la structure du FBD
- Comment l’intégrer avec d’autres langages comme le ST dans des blocs personnalisé.
- Les types de variables des langages automates.
- Les meilleures pratiques pour optimiser ton code
De mon point de vue la programmation en langage ST est la meilleure manière de programmer un automate industriel, la courbe d’apprentissage est certes un peu plus raide que sur des langages graphiques mais les fonctionnalité sont beaucoup moins restrictive.
Variables et connexions en langage FBD
Les connexions entre blocs suivent des règles précises. Les entrées se trouvent toujours sur le côté gauche des blocs, tandis que les sorties se trouvent à droite. Tu dois respecter la compatibilité des types de données entre les connexions – une sortie numérique ne peut pas se brancher sur une entrée booléenne.
Pour créer un programme efficace :
- Vérifie que chaque variable d’entrée correspond au type attendu par le bloc
- Assure-toi que les sorties sont compatibles avec les variables de destination
- Utilise les arcs de liaison pour connecter les blocs entre eux
Le flux d’exécution suit naturellement tes connexions, de gauche à droite et de haut en bas. Cette organisation te permet de visualiser facilement le cheminement logique de ton programme.
Blocs fonction standard en langage FBD
Les blocs fonction se divisent en plusieurs catégories principales :
Type de Bloc | Fonction |
---|---|
Opérateurs booléens | Fonctions logiques (ET, OU, NON) |
Blocs mathématiques | Calculs et opérations numériques |
Blocs contrôle temporisation | Gestion des événements et temporisation |
Blocs E/S | Gestion des entrées/sorties numériques et analogiques |
Voici un exemple très basique de programme en FBD ici si on a IN_bool1 actif ou IN_bool2 actif et que IN_int1 est supérieur à IN_int2 alors on active la sortie booléenne OUT_bol1
Blocs fonction de contrôle et de temporisation
Les temporisateurs sont essentiels dans ton programme. Tu disposes de plusieurs types :
- TON (retard à l’enclenchement) : active la sortie après un délai programmé
- TOF (retard au déclenchement) : maintient la sortie active pendant un temps défini
- Détection de front : réagit aux changements d’état de tes signaux
Fonctions mathématiques et logiques
Tu as accès à une large gamme de blocs pour tes programmes :
Catégorie | Fonctions disponibles |
---|---|
Logique | ET, OU, NON |
Mathématique | Addition, Soustraction, Multiplication |
Conversion | Mise à l’échelle, Conversion de type |
Les blocs personnalisés te permettent d’optimiser tes ressources système. Tu peux les concevoir pour des fonctions spécifiques à ton application.
Quand tu développe ton programme automate, peu importe le langage, garde bien en tête des choses toutes bêtes mais qui aideront à ce que ton programme soit bien lisible :
- Commente ton code pour faciliter sa reprise par d’autres développeurs.
- Structure tes programmes en blocs logiques bien définis.
- Utilise des noms de variables explicites pour éviter les ambiguïtés.
- Évite les variables globales inutiles, qui peuvent consommer de la mémoire inutilement.
Les blocs fonction sur mesure
Certaines plateformes de code comme Codesys que j’utilise permettent également de créer des blocs fonctions sur mesure.
Ces blocs peuvent être codés en d’autres langages, mais on garde l’aspect visuel dans le programme global. Voici un exemple détaillé ci-dessous :
Dans cet exemple, j’ai créé un bloc fonction qui exécute la même fonction que notre bout de programme réalisé ci-dessus.
Cela permet de garder l’aspect visuel du code FBD allié à la puissance du code ST.
Création d’un bloc fonction en langage ST
Pour commencer, il faut déclarer les variables d’entrée et de sortie du bloc. J’ai repris les mêmes que sur notre ancien bout de programme.
Les VAR_INPUT seront placés à gauche de notre bloc et les VAR_OUTPUT en sortie à droite. Le nom de notre bloc est déclaré après FUNCTION_BLOCK.
Puis, il faut réaliser le programme du bloc fonction (ici, on a répété la même fonction que sur notre exemple précédent).
On retrouve donc notre bloc fonction ayant exactement la même fonction que notre ensemble de flocs fonction standard mais dans un blocs fonction sur mesure codé en ST.
Les types de variables des langages de programmation IEC 61331-3
Pour rappel voici les types de variables qui sont utilisés dans les langages de programmation de la normes IEC 61131-3 :
Types de données booléennes
Type | Description | Exemple |
---|---|---|
BOOL | Booléen (valeur logique) | TRUE/FALSE |
Types de données numériques entiers
Type | Description | Exemple |
---|---|---|
SINT | Entier signé sur 8 bits | -128 à 127 |
INT | Entier signé sur 16 bits | -32768 à 32767 |
DINT | Entier signé sur 32 bits | -2 147 483 648 à 2 147 483 647 |
LINT | Entier signé sur 64 bits | Très grand nombre |
USINT | Entier non signé sur 8 bits | 0 à 255 |
UINT | Entier non signé sur 16 bits | 0 à 65535 |
UDINT | Entier non signé sur 32 bits | 0 à 4 294 967 295 |
ULINT | Entier non signé sur 64 bits | Très grand nombre |
Types de données numériques en virgule flottante
Type | Description | Exemple |
---|---|---|
REAL | Nombre décimal en simple précision (32 bits) | -3.402e38 à 3.402e38 |
LREAL | Nombre décimal en double précision (64 bits) | Très grande plage de valeurs |
Types de données temporelles
Type | Description | Exemple |
---|---|---|
TIME | Durée ou intervalle | T#5s, T#1h30m |
DATE | Date | DATE#2024-12-06 |
TIME_OF_DAY / TOD | Heure du jour | TOD#12:30:15 |
DATE_AND_TIME / DT | Date et heure | DT#2024-12-06-12:30:15 |
Types de données bit et mot
Type | Description | Exemple |
---|---|---|
BYTE | Octet de 8 bits | 0x00 à 0xFF |
WORD | Mot de 16 bits | 0x0000 à 0xFFFF |
DWORD | Double mot de 32 bits | 0x00000000 à 0xFFFFFFFF |
LWORD | Long mot de 64 bits | Très grand nombre |
Choisis les types de données appropriés pour économiser la mémoire. Par exemple, utilise SINT
au lieu de DINT
pour les petites valeurs.
Notre avis sur la programmation en langage FBD
Le langage FBD offre une approche visuelle intuitive pour programmer des automates industriels, pour faire la conception de processus complexes tout en simplifiant leur maintenance.
Grâce à sa compatibilité avec d’autres langages comme le ST, il combine lisibilité et puissance, permettant aux développeurs de tirer parti des avantages des types de langages.
Cependant, comme pour tout langage, la maîtrise du FBD repose sur de bonnes pratiques : structuration rigoureuse, choix judicieux des types de données, et documentation claire. Ces éléments garantissent des programmes performants, modulables et facilement transmissibles.
En combinant les forces des blocs fonction standards et personnalisés, tu pourras concevoir des solutions adaptées aux besoins spécifiques de tes installations industrielles.
À toi maintenant d’explorer et d’expérimenter le langage FBD pour optimiser tes projets !
Contenu