I / Les Automates
Programmables Industriels
1 – Présentation
2 – Structure et fonctionnement 3 - Caractéristiques
II / La Programmation IEC 1131-3 sous CoDeSys
1 – L'adressage des données 2 – Le langage IL
3 – Le langage ST 4 – Le Langage LD 5 – Le langage FBD
6 – Le langage CFC (non IEC 1131-3) 7 – Le langage SFC
III / Le bus de terrain ASi
1 – Présentation 2 – Couche Physique
3 – Couche liaison de données 4 – Couche Application
IV / Protocole Modbus
1 – Présentation
2 – Supports de communication 3 – Principe des échanges
Plan du Cours :
I / Les Automates Programmables Industriels
1 - Introduction
Les automates programmables industriels sont apparus à la fin des années soixante, à la demande de l'industrie automobile américaine, qui réclamait plus d' adaptabilité de leurs systèmes de commande.
Les coûts de l'électronique permettant alors de remplacer avantageusement les technologies alors utilisées.
Avant : utilisation de relais électromagnétiques et de systèmes pneumatiques pour la réalisation des parties commandes
⇒ logique câblée
Inconvénients : cher, pas de flexibilité, pas de communication possible
Contraintes du milieu industriel (1) :
✔ Influences externes :
- poussières, - température, - humidité, - vibrations,
- parasites électromagnétiques, …
→ Solution : utilisation de systèmes à base de microprocesseurs permettant une modification aisée des automatismes.
⇒ logique programmée
Contraintes du milieu industriel (2) :
✔ Personnel : - dépannage possible par des techniciens de formation électromécanique
- possibilité de modifier le système en cours de fonctionnement
✔ Matériel :
- Evolutif - Modulaire
- Implantation aisée
L'Automate Programmable Industriel (API) est un appareil électronique programmable, adapté à l'environnement industriel, qui réalise des fonctions d'automatisme pour assurer la commande de préactionneurs et d'actionneurs à partir d'informations logique, analogique ou numérique.
Définition :
Les API sont utilisés dans divers secteurs d'activités, que l'on peut regrouper
en trois catégories :
- Les systèmes automatisés de production (SAP), dont l'objectif est d'apporter de la valeur ajoutée à une matière première, en respectant certaines contraintes (financières, normes de sécurité etc...).
- L'industrie automobile, la métallurgie,
- La production d'énergie (centrales nucléaires, thermiques, hydrauliques...)
- L'industrie agro-alimentaire, pharmaceutique, - Le génie-chimique, la pétrochimie,
- Les chaînes de conditionnement,
- etc ...
- L'automatisation des bâtiments (GTB : Gestion Technique des Bâtiments), dont les objectifs sont :
- L'amélioration du confort (gestion des ascenseurs, régulation de températures...),
- La sécurité (alarmes anti-intrusion, détection de fumées...)
- La réduction des dépenses énergétiques (gestion automatisée des consignes de température et d'éclairage...)
- Engins de chantiers (grues...), - Tri postal,
- etc...
- L'automatisation de machines spéciales :
Nature des informations traitées par l'automate :
➢ Analogique : l'information est continue et peut prendre une valeur comprise dans une plage bien déterminée. C'est le type d'information délivrée par un capteur (pression, température …).
Une grandeur analogique (tension, courant...) doit être convertie en grandeur numérique par une carte d'entrée spécifique pour pouvoir être traitée par le programme automate.
➢ Numérique : l'information est contenue dans des mots codés sous forme binaire ou bien hexadécimale. Il peut s'agir d'une variable interne du programme (compteur...).
➢ Tout ou rien (T.O.R.) : l'information ne peut prendre que deux états (vrai/faux,
0 ou 1 …). C'est le type d'information délivrée par un détecteur, un bouton
poussoir …
Architecture des systèmes automatisés :
Partie Commande
(P.C) Partie Opérative
(P.O) Partie Relation
(P.R)
API (CPU)
Préactionneurs Actionneurs
Effecteurs
Détecteurs / Capteurs Conditionneurs
E Ana E TOR
S Ana & S TOR
Procédé Superviseur
Pupitres opérateurs Commande &
signalisation
(1)
(2)
(3)
(4)
(6) (5)
(7) (8)
(9)
(1) : l'API transmet les ordres de commandes aux préactionneurs, sous forme de niveaux électriques TOR (0/24V) ou analogiques (0-10V, +/-10V, 4-20mA, 0-20mA)
(2) : Le préactionneur converti ces ordres en commandes contenant l'énergie nécessaire au pilotage des actionneurs. Exemples : contacteurs, distributeurs électro-pneumatique, variateurs de vitesse...
(3) : L'actionneur assure la conversion d'énergie pour agir sur le procédé (exemples : moteur asynchrone, vérin hydraulique, résistance chauffante...).
(4) : l'effecteur se situe entre l'actionneur et le procédé à contrôler (exemples : arbre moteur + pâles pour un malaxeur mu par un moteur asynchrone, ventouse de saisie pour un vérin destiné au
déplacement de plaques métalliques etc...
(5) : Les paramètres physiques utiles à la commande du procédé (exemples : températures, pressions, présences...) sont surveillés grâce à des détecteurs (TOR) et des capteurs (analogiques).
(6,7) : Ces informations électriques sont transmises à la P.C - directement reliées aux cartes TOR pour les détecteurs, parfois par le biais d'un conditionneur (et/ou d'un transmetteur) pour l'analogique.
(8) : Un réseau local industriel dédié à la supervision permet de lier la P.C et la P.R (et donc
indirectement la P.O). Certains éléments de signalisation peuvent néanmoins se faire par le biais des cartes d'E/S (voyants, b.p ...).
Architectures compactes et modulaires :
Automates modulaires Automates compacts
Crouzet Millenium
Siemens 1200
Schneider Zelio Schneider M340
Siemens 1500
Wago 750
Informations
(capteurs, dialogue) Entrées
Sorties Ordres
(pré actionneurs, dialogue)
Programme
Traiter les informations entrantes pour émettre des ordres de sorties
en fonction d’un programme.
2 - Structure & Fonctionnement d’un API
Le cycle de fonctionnement est organisé en 4 tâches :
Bus Entrées / Sorties
Unité de Traitement
RAM
Module d' Entrées
Module Sorties de
Tâche 1 : Gestion du système (auto-contrôle de l’automate)
Tâche 2 : Acquisition des données en entrée (mémorisation)
Tâche 3 : Traitement des données (exécution du programme)
Tâche 4 : Affectation des sorties (émission des ordres)
Déroulement d'un Cycle-automate :
Traitement Interne
Lecture des Entrées
Exécution du Programme
Ecriture des Sorties
➢ Présentation du contrôleur WAGO 750-849 :
Ports Ethernet pour le
chargement des programmes, la supervision...
Interface série (configuration)
Bornes pour l'alimentation 24Vcc
➢ Caractéristiques du contrôleur WAGO 750-849 :
Interface d'entrée : elle permet de recevoir les informations de la P.O (ou du pupitre) et de mettre en forme (filtrage, ...) ce signal tout en l'isolant électriquement (optocouplage) :
Le contact "N.O"
"ferme le 24 V" sur l'entrée de l'API lorsqu'il est actif
Le contact "N.F"
"ouvre le 24 V" sur l'entrée de l'API lorsqu'il est actif
➔ Coupleur d'entrées : « du bornier vers la mémoire image »
Mise à jour de façon ponctuelle, à chaque cycle automate
+ - + - + - + -
E1
E2
E3
E4
Bornier d'entrée Isolation / Filtrage Mémoire Image
%IX 0.0 E1
%IX 0.1 E2
%IX 0.2 E3
%IX 0.3 E4
... ….
... ...
➢ Exemple de Carte D'E TOR (750-400) :
➢ Exemple de Carte D'E analogiques avec conditionneur pour PT100 (750-461) :
Le signal délivré par la sonde est converti (montage 3 fils) en valeur numérique mise à l'échelle au
format INT.
La température est représentée en 100eme de degrés, sur une plage -200°C / + 200°C.
➢ Exemple de Carte D'E analogiques 0-10V (750-459) :
la gamme de tension [0 V to +10V] est convertie par un CAN 12 bit, puis mise à l'échelle ; la gamme numérique
obtenue est [0 ; 32760].
Mettre en évidence dans le tableau suivant le format des données et la résolution du convertisseur :
➢ Exemple de Carte D'E analogiques 4-20mA (750-454) :
Cette borne d’entrées analogiques traite des signaux sur une plage de courant standardisée de 0-20 mA ou de4-20 mA respectivement.
Le signal d’entrée est séparé galvaniquement et le transfert à l’unité centrale se fait avec une résolution de 12 bits.
+ - + -
+ - + -
S1
S2 S3 S4
Bornier de sorties Isolation / Amplification -
Relayage Mémoire Image
des sorties
S1
%QX 0.0S2
%QX 0.1S3
%QX 0.2S4
%QX 0.3... ….
... ...
Variables du
programme
Bits de sorties
Interface de sortie :
elle permet de commander les préactionneurs et éléments de signalisation du S.A.P. tout en assurant l'isolement électrique entre P.C et P.O.Mise à jour de façon ponctuelle, à chaque cycle automate
➢ Exemple de Carte De S TOR à Relais (750-513) :
➢ Caractéristiques :
La tension commutée par une sortie à Relais peut être une
source continue ou alternative
La fréquence de commutation admise est relativement faible
( < 1 Hz)
➢ Exemple de Carte De S TOR à Transistors (750-501) :
➢ Cractéristiques :
La tension commutée par une sortie à
transistor es nécessairement
continue
La fréquence de commutation peut être élevée (plrs kHz)
➢ Exemple de Carte De S ANA +/-10V :
Mettre en évidence dans le tableau suivant le format des données et la résolution du convertisseur :
La Norme IEC 1131-3 définit les règles d 'écriture des programmes pour les API.
Les fabricants d'API fournissent des logiciels de programmation plus ou moins fidèles à cette norme (de plus en plus tout de même).
Le logiciel CoDeSys est une plateforme de développement ouverte,
multimatérielle utilisée pour programmer les contrôleurs WAGO utilisés en TP.
Il obéit aux spécification de la norme CEI 61131-3
II / La Programmation IEC 1131-3
Toute donnée traitée par un programme automate possède : - Une Direction (Entrée, Sortie, Interne)
- Un format (Bit, Octet, Mot ...)
- Une Adresse (Chiffre indiquant la position de la donnée dans le plan mémoire de l'API).
La syntaxe pour toute donnée est la suivante :
% 'Direction' . 'Format' . 'Adresse'
1 / L'adressage des Données.
La direction :
Une entrée est une valeur, provenant du terrain, qui ne peut être que lue par le programme chargé dans le contrôleur.
Notation : %I.x.x
Exemple : capteur, détecteur, bouton poussoir etc...
Une sortie est une donnée à destination du terrain, dont la valeur peut être fixée par l'automate. (Remarque : Une sortie peut aussi être lue par le programme)
Notation : %Q.x.x
Exemple : voyant lumineux, commande d'un contacteur etc...
Une variable interne est une donnée qui n'est pas directement liée au terrain, mais une information gérée par le programme chargé dans l'API.
Exemples : valeur d'un compteur, d'une temporisation, étape d'un grafcet …
Notation : %M.x.x
Le format :
✔ Un bit est une valeur binaire ou encore booléenne dont la valeur est « VRAIE » (notée TRUE) ou « FAUSSE » (notée FALSE).
Notation : %x.X.x.x
Exemple : Un voyant lumineux est relié à la 4eme borne de la 1°carte de sorties T.O.R du rack automate. Son état correspondra à la variable booléenne :
% Q X 0.3
✔ Un octet est une donnée codée sur 8 bits
Notation : %x.B.x
✔ Un mot est une donnée codée sur 16 bit Notation : %x.W.x
Exemple : Un capteur de température est relié à la 3eme entrée analogique du rack automate. La valeur numérique correspondante sera stockée dans la variable :
✔ Un double mot est une variable codée sur 32 bits Notation : %x.DW.x
% I W 2
38
ITII2 Automatisme
Les valeurs numériques peuvent être représentées sous formes décimales, hexadécimales (en ajoutant 16# devant la valeur) ou binaires (2#...)
➔exemples : 125 → 125 1A216 → 16#1A2 01102 → 2#0110
En plus du format, on peut définir un type pour les variables internes (liste non exhaustive) : BOOL : valeur booléenne ('TRUE' ou 'FALSE')
INT : valeur entière signée sur 16 bits
UINT : valeur entière non signée sur 16 bits DINT : valeur entière signée sur 32 bits
DUINT : valeur entière non signée sur 32 bits REAL : valeur réelle sur 32 bits
TIME : durée définie en h/mn/s/ms Notation : t # ...h ...m ...s ...ms DATE : date définie en année/mois/jour Notation : d # ...-...-...
TIME_OF_DAY : heure du jour définie en h/mn/s Notation : tod # ... : ... : ...
DATE_AND_TIME : date & heure Notation : dt # ...-...-... - ... : ... : ...
STRING : chaîne de caractères. Notation : ' Ma Chaine '
Les adresses :
Le dernier champ d'adressage d'une donnée est son adresse.
Elle est constituée:
- de 2 chiffres séparés par un point pour les bits, le 1° indique le n° du mot, le second la position du bit dans ce mot (0 à 15).
- d'un seul chiffre pour tous les autres types.
Exemple (bit d'entrée) : %IX0.2
Il s'agit de la 3° entrée (les adresses commencent à 0) de la 1ere carte d'E T.O.R.
Exemple (Mot interne) : %MW42 Il s'agit du mot interne d'adresse 42.
Déclaration de variables :
Un programme doit réaliser des calculs et utilise donc des variables. Ces variables doivent être déclarées en en-tête de celui-ci.
Une variable peut être :
- une variable d'entrée s'il s'agit d'une variable que le programme utilise (valeur calculée par un autre sous-programme, état d'un capteur...);
- une variable de sortie s'il s'agit d'une variable que le programme modifie (affectation d'une sortie, résultat d'un calcul...)
- D'une variable interne, si cette variable est uniquement utlisée pour faire un calcul intermédiaire.
variable interne du programme "prog" de type booléen, initialisée à '0' et associée à la sortie physique TOR 4.0.
Variable de sortie du programme "prog", de type 'temps', et initialisée à la valeur 1s et 500ms.
Variable booléenne interne à "prog" initialisée à '1'.
Exemples de déclaration :
Variable d'entrée du programme "prog", de type
"mot" et associée à l'entrée analogique 0.
Organisation du projet :
Le Projet CoDeSys contient au minimum le programme PLC_PRG (programme principal), qui peut éventuellement appelé :
- des fonctions : une fonction retourne une valeur, et ne peut mémoriser aucune
variable entre deux appels.
- des programmes : un programme peut posséder des entrées, des sorties et des variables internes qui peuvent être
mémorisées entre deux appels.
- des blocs fonctionnels : possède les mêmes caractéristiques qu'un programme mais peut être appelé plusieurs fois. Chaque appel
consiste en une instanciation du bloc et
apparaît comme une déclaration de variable.
2 / Langage IL (Instruction List).
Il s'agit d'un langage textuel proche du langage machine de l'API. Il s'apparente à
l'assembleur d'un microcontrôleur. Ce langage n'est plus trop utilisé à l'heure actuelle.
Exemple : Soit l'équation logique suivante →
... se traduit par le code suivant :
%I1.3 .
%I1.4) 1.5)
((%I1.0.%I
%Q2.0
La norme IEC 1131-3 définit 5 langages de programmation : IL, ST, SFC, LD et FDB.
3 / Langage ST (Structured Text).
Il s'agit d'un langage textuel proche des langages évolués tels que le C. Il s'avère
indispensable dès lors que l'on a besoin de faire des traitements numériques par exemple.
Exemple : Soit l'équation logique suivante →
... se traduit par le code suivant :
%I1.3 .
%I1.4) 1.5)
((%I1.0.%I
%Q2.0
%Q2.0 := ( (%I1.0 AND %I1.5) OR %I1.4 ) AND NOT( %I1.3) ;
➢ Comparaison (alternative IF … ELSE … … END_IF):
➢ Incrémentation d'une variable :
CPT := CPT + 1 ;
Affectation :
« := »
➢ Boucle FOR :
➢ Boucle WHILE :
FOR i := 0 TO 9 BY 1 DO
... ; END_FOR;
WHILE condition = TRUE DO ... ;
END_WHILE;
➢ Opérations Numériques :
Le choix du langage ST s'impose dès lors que l'on doit faire des traitements numériques sur des variables. Les opérations de bases sont :
- Addition :
- Soustraction :
- Multiplication :
- Division :
Res := Op1 + Op2 ; Res := Op1 - Op2 ;
Res := Op1 * Op2 ;
Res := Op1 / Op2 ;
- modulo :
- Conversion Entier → Réel :
- Conversion Réel → Entier :
- Conversion Mot → Réel :
Res := Op1 MOD Op2 ;
Nb_Re := INT_TO_REAL ( Nb_ent) ;
Nb_ent := REAL_TO_INT ( Nb_Re) ;
Nb_Re := WORD_TO_REAL ( Mot) ;
4 / Langage LD (LaDder ).
Il s'agit d'un langage graphique que l'on pourra par exemple utiliser pour coder les équations logiques des réceptivités d'un grafcet.
Le principe est le suivant :
- Les variables d'entrée sont symbolisés par des contacts électriques (NO ou NF), les variables de sortie par des bobines.
On considère que l'extrémité gauche du réseau constitue la borne + d'une alimentation (imaginaire) et la partie droite sa borne -
La mise en série, en // de contacts (variables d'E) NO ou NF permet l'alimentation conditionnelle de la bobine (variable de S), donc
L'implantation d'équation logique.
➢ Opérations logiques de Base :
ET : OU : NON :
Exemple : Soit l'équation logique suivante →
Cette équation se traduit en LD par la ligne suivante :
%I1.3 .
%I1.4) 1.5)
((%I1.0.%I
%Q2.0
✔
Mémoire RS :
✔
Front montant :
t t t
A B x
t
t t
A
x
t
x
tA
✔
Front descendant :
➢ Temporisation : retard à l'activation
➢ Temporisation : retard au déclenchement
➢ Temporisation : monostable
t
t
A
x
3s
t
t
A
x
3s
t
t
A
x
3s
3s
3s
TON
TOF
TP
➢ Compteur décompteur :
Nom Type Rôle
CU BOOL Entrée de comptage (sur front) CD BOOL Entrée de dé comptage (sur front) RESET BOOL Entrées de remise à zéro
LOAD BOOL entrée de préchargement PV INT valeur de préchargement
QU BOOL Sortie, passe à 'TRUE' lorsque CV >=PV QD BOOL Sortie, passe à 'TRUE' lorsque CV = 0
5 / Langage FBD (Functionnal Bloc Diagram ).
Il s'agit également d'un langage graphique fonctionnant sur le même principe que LD mais avec les symboles s'apparentant à ceux que l'on utilise pour les logigrammes.
Exemple : Soit l'équation logique suivante →
Cette équation se traduit en FBD par le diagramme suivant :
%I1.3 .
%I1.4) 1.5)
((%I1.0.%I
%Q2.0
AND
OR
AND
%I1.4
%I1.3
%Q2.0
%I1.5
%I1.0
6 / Langage CFC (Component Functional Chart).
Ce langage n'est pas défini par la norme CEI, mais sera utilisé dans l'environnement de
programmation CODeSys. Il reprend les éléments utilisés en FBD, mais les symboles peuvent être placés librement sur le schéma (et non pas ligne par ligne comme en FBD).
De plus, la plupart des opérateurs définis en ST sont également utilisables (opérations numériques etc...).
On ne peut pas l'utiliser pour coder les réceptivités.
En revanche, on l'utilisera comme langage de programmation principal qui appellera les différentes tâches.
Mémoire RS
Opérations numériques
opérations logiques
Compteurs Comparaisons
Détection de Fronts
7 / Langage SFC (Sequential Functional Chart ).
Il s'agit du langage Grafcet. On l'utilisera pour décrire les différentes tâches séquentielles de l'automatisme.
Il est constitué d'étapes auxquelles sont associées des actions. Les étapes sont séparées par des réceptivités. Lorsqu'une étape est active les actions associées à l'étape sont
activées.
Lorsque la réceptivité qui suit l'étape active devient vraie, l'étape en cours se désactive, et l'étape suivante devient l'étape active.
Réceptivité
étape
Action
Étape initiale
Important : Il faut toujours respecter l'alternance
Étape/transition
✔ Étapes :
L'étape initiale est matérialisée par un double rectangle
A chaque étape correspond un nom unique, auquel seront associées les variables :
→ "nom.t" : variable de type "TIME"
représentant la durée passée dans l'étape nom.t : durée passée dans l'étape
→ "nom.x" : variable de type "BOOL"
représentant l'état de l'étape ('TRUE' si l'étape est en cours, 'FALSE' dans le cas contraire)
Entrées TOR
Temporisation
Sorties TOR,
activées pendant la durée de
l'étape (attribut 'N' : normal.
✔ Réceptivités : ✔ Actions :
Les réceptivité sont des valeurs booléennes, qui peuvent apparaître directement sur le grafcet (langage ST). Elles peuvent prendre la forme :
- De valeurs booléennes constantes (TRUE ou FALSE) - De variables booléennes simples
- De combinaisons logiques ( exemple : (a OR b) AND NOT c )
- De comparaison entre des valeurs numériques ou temporelles (exemples : A > 100, A<>B, A=5, etape1.t>t#1s500ms)
- De combinaisons des éléments précédents
Note 1 : il est impossible de réaliser une affectation (:=) dans une réceptivité.
Note 2 : il sera également possible d'utiliser les langages LD et FBD pour coder les réceptivités ; dans ce cas chaque réceptivité sera programmée dans une section spécifique.
Les attributs suivants peuvent être associés aux actions en SFC :
Attribut Paramètre Description
N Aucun Action Normale : L'action est activée lorsque l'étape
associée est active, et se désactive automatiquement à la sortie de l'étape.
S, R Aucun Action Mémorisée : l'attribut « S » (Set) permet de mémoriser l'activation de l'action, celle-ci restera active
jusqu'à ce que l'attribut « R » (Reset) soit rencontré dans le grafcet sur la même action.
L Durée
d'activation : t#...
Action limitée dans le temps : L'action est activée à
l'entrée dans l'étape, puis désactivée automatiquement au bout du temps, spécifié (ou à la sortie de l'étape).
D Temps de
retard : t#...
Action Retardée : L'action est activée avec le retard spécifié après l'entrée dans l'étape.
Le chronogramme suivant récapitule l’exécution des différents types
d'action possibles : t
t t tr0
t t t t t t t tr1
tr2 Init.X Step2.X Step3.X A B C D
1s
✔Structure OU : Alternative. Elle permet d'effectuer un choix entre plusieurs séquences. Notez bien la structure de la divergence et de la convergence.
Divergence
Convergence
✔ Cas particulier d'utilisation de la branche OU :
Reprise de séquence
saut d'étapes
✔Structure ET : Parallélisation. Elle permet d'effectuer un choix entre deux séquences.
Notez bien la structure de la divergence et de la convergence.
Divergence
Convergence
✔ Convergence en ET : Synchronisation.
Une branche en ET converge généralement au moyen d'étapes vides (sans actions) qui terminent chacune des branche parallèles ; avec une réceptivités en aval de la convergence toujours vraie.
Cela permet une
exécution des différents cycles parallélisés
parfaitement
indépendante ; et lorsque tous ces cycles sont
achevés, le grafcet reprend sa branche principale
➢ Variables "drapeau" :
Ce sont des variables utilisables dans les programmes et blocs programmés en SFC, définis dans la bibliothèque "iec_sfc.lib", et qui permettent d'agir sur un grafcet. En voici quelques unes (consulter l'aide pour une liste exhaustive) :
• SFCReset (BOOL) → Réinitialisation du grafcet (retour à l'étape initiale et arrêt de l’exécution)
● SFCInit (BOOL) → Retour à l'étape initiale
● SFCPause (BOOL) → Figeage du grafcet
● SFCError → Dépassement du temps maximal affecté à une étape
● SFCCurrentStep (STRING) → Nom de l'étape SFC en cours
● SFCTip, SFCTipMode (BOOL) → Lorsque SFCTipMOde est 'TRUE', le grafcet passe en mode pas à pas, la validation des réceptivités sont alors validées avec SFCTip.
En outre, il est également possible de programmer des actions exécutée une seule fois à l'entrée ou à la sortie d'une étape. Ces actions, appelées "actions d'entrée" et "action de sortie" sont effective pendant un seul cycle automate et peuvent être programmées en LD, FBD ou ST :
Action d'entrée
Action de sortie
Exemple de programmation d'action d'entrée en langage ST
t t t Step2.X
Action d'entrée Action de sortie
➢ Actions programmées (langage SFC) :
➢ Actions programmées - suite (langage SFC) :
Une action programmée peut également être de type continue, c'est à dire éxécutée pendant toute la durée de l'étape (comme une action CEI de type 'N').
Cela permet de coder les actions dans le langage de son choix. On peut utiliser cette méthode pour créer des actions condistionnelles :
t t Step2.X
Cond A
➢ Actions programmées - suite (langage SFC) :
L'exemple ci-dessous reprend le fonctionnement précédent mais en kangage LD :
t t Step2.X
Cond A
➢ Appel & Synchronisation de programmes :
➔Programme Principal PLC_PRG :
➔ Bloc Fonctionnel G2 :
➔ Bloc Fonctionnel G1 :
Étapes de synchronisation
➔ Bloc Fonctionnel G1 : Déclaration des variables d' E/S
➔ Bloc Fonctionnel G2 : Déclaration des variables d' E/S
➢ Structures "objets" :
On peut également synchroniser l'exemple précédent en utilisant les structures analogues à celles utilisées dans les langages orientés "objet" mises en œuvre dans CoDeSys.
On peut ainsi échanger des variables entre programmes. Dans le cas du SFC, pour chaque étape, les 2 variables suivantes sont automatiquement créées :
Nom_etape . t : durée d'activité de l'étape (type TIME) Nom_etape . x : activité de l'étape (type BOOL)
Pour synchroniser deux grafcets, on pourra donc utiliser :
'PLC_PRG' . 'nom d'instance du bloc' . 'nom de l'étape' . x Si le programme SFC est un bloc fonctionnel, ou bien :
'nom_du_programme' . 'nom de l'étape' . x Si le programme SFC est un programme
➢ Présentation :
● Liaison série Multipoint (2 fils) pour relier l'ensemble des capteurs et des préactionneurs à l'automate.
● Celui-ci possède une carte spécifique appelée « coupleur » et qui est maître de la liaison, c'est à dire capable d'interroger les capteurs et de commander les préactionneurs.
● Chaque nœud (capteur ou préactionneur) connecté au bus possède sa propre adresse lui permettant d'être identifié par l'automate via le coupleur.
● Il existe plusieurs protocoles de communication
pour les bus capteurs/Actionneurs. Le plus répandu est ASi (Actuator Sensor Interface).
III / Le Bus de terrain ASi
E/S E/S
API
Maître AS-Interface
API
Câblage « traditionnel » Câblage « Bus »
➔
Comparaison Câblage traditionnel / Câblage Bus :
Coupleur
Bus
Esclaves (capteurs + préactionneurs)
➢ Intérêts des bus capteurs/actionneurs :
●
Câblage simplifié
●
Réduction des coûts de maintenance
●
Réduction des coûts et des durées d'installation.
Technologie prise vampire :
connexion rapide et aisée des capteurs/actionneurs ou modules
câble plat codé mécaniquement
deux fils pour les données et la puissance Gaine isolante IP67 autocicatrisante
inutile de dénuder pour raccorder un nouveau composant sur le bus
montage dans toutes les positions
➢ Le Câble ASi :
• Transmission par courants porteurs :
Un seul câble pour alimenter les capteurs & actionneurs (jusqu'à 8A) connectés au bus, et le transfert des données.
• Alimentation en mode différentiel (TBTS):
Bonne immunité aux perturbations (CEI 1000-4).
Redressement
=
Primaire L
L R V+
Découplage
AS-i +
AS-i -
30 V=
V-
R
Codage Manchester par courant porteur
AS
t
U alim 30V
Alim. + transfert des données
➢ Alimentation et Signaux électriques sur le bus:
0 0 1 0 1 1 1 0 1
ÉmissionRéception
Bits à coder
Codage Manchester
Signal après filtrage (Modulation APM)
détection fronts descendants
détection fronts montants
Bits décodés (RS)
Asi est basé sur une architecture
maître/esclave, avec 1 seul maître pâr bus qui peut initier une
communication.
Cette technique permet de garantir la durée du temps de cycle (temps nécessaire à l'interrogation de tous les esclaves connectés au bus).
➢ Système Maître / Esclave :
Maître
Esclave 1
Esclave 2
Esclave 31 Requête maître
Réponse esclave 1
Requête maître Réponse esclave 2
Requête maître Réponse esclave n
Esclave n
Requête maître Réponse esclave 31
31 esclaves maximum Temps de cycle
caractéristique: 5 ms pour 31 esclaves
➢ Polling des esclaves :
Le coupleur ASI gère de façon autonome (ou IMPLICITE) la communication avec les esclaves ; il s’agit d’une tâche de fond qui n’est pas accessible au programmeur.
Maître:
polling cyclique des esclaves
Esclave AS-i : adresse de 1 à 31
mise à jour des sorties
acquisition de l'état des entrées
Requête maître Réponse esclave
1 Esclave AS-i supporte:
4 interfaces logiques
(entrées, sorties ou bidirectionnelles) et au besoin,
4 paramètres
pour sélectionner un état particulier
• Un seul mâitre Asi peut donc gérer jusqu'à 62 x 8 = 496 E/S T.O.R (en Asi v2.0 ou supérieur – 248 pour Asi v1.0)
Esclave Maître
Les échanges Maître / Esclave :
Ad=1 Ad=2
Ad=3 Ad=4
Echanges des données d'entrées / sorties Paramètres Services
1 cycle AS-i
Q. Ad1 R.1 Q. Ad2 R.2 Q. Ad3 R.3 Q. Ad4 R.4 P. Adx R.x S. Ady R.y
Etat des entrées
Mise à jour des sorties
Q. Ad1 R.1
ST CB A4 A3 A2 A1 A0 I4 I3 I2 I1 I0 PB EB
ST I3 I2 I1 I0 PB EB
Requête du maître :
Réponse de l ’esclave :
5 bits d'information fonction du type de la requête
4 bits d'information retournée au maître Bit de début
ST = 0
Bit de début ST = 0
Bit de fin EB = 1
Bit de fin EB = 1 Bit de contrôle
0 = échange de paramètres, données, définis par I0 à I4 1 = commande définie par I0 à I4
Bit de contrôle de parité paire n'incluant pas le bit de fin
Bit de contrôle de parité paire n'incluant pas le bit de fin 5 bits d'adresse esclave (1 à 31) 0 réservé à la fonction adressage automatique
➢ Mise en trame :
Exercice :
Calculer la durée minimale d'un cycle de traitement AS-i lorsque le nombre
maximum d'esclaves est connecté au maître et vérifier la durée annoncée par les caractéristiques du bus AS-i.
Le débit sur la ligne est maximum (170 kBps)
Réponse :
Tcycle = (31 + 1 + 1) * (14 + 7) / 170.103 = 4,07 ms < 5ms
[Nombre de trames] * [Nombre de bits/trame] / [débit]
Catalogue des requêtes du maître :
CB
0 A4 A3 A2 A1 A0 0 S3 S2 S1 S0
Echange de données Ecriture de paramètres Ecriture d'adresse Reset esclave Reset adresse
Lecture I/O Configuré Lecture code ID
Lecture Status esclave
Lecture et reset Status esclave
0 A4 A3 A2 A1 A0 0 P3 P2 P1 P0
0 0 0 0 0 0 A4 A3 A2 A1 A0
1 A4 A3 A2 A1 A0
1 A4 A3 A2 A1 A0
1 A4 A3 A2 A1 A0
1 A4 A3 A2 A1 A0
1 A4 A3 A2 A1 A0
1 A4 A3 A2 A1 A0
1 1 1 0 0
0 0 0 0 0
0 0 0 0
1
0 0 0
1 1
1 1 1 0
1 1 1
1
1 1
5 bits d'adresse esclave 5 bits d'information Requêtes du maître
Catalogue des réponses des esclaves:
Réponse esclave
E3 E2 E1 E0
P3 P2 P1 P0
1 1
0 0
1 1
0 0
1 1
0 0
C3 C2 C1 C0
ID3 ID2 ID1 ID0 St3 St2 St1 St0 St3 St2 St1 St0 4 bits d'information
Pi = paramètres renvoyés en écho
Ack de l'esclave '6 Transaction 15 ms max Ack de l'esclave '6 Transaction 2 ms max Ack de l'esclave '6
I/O code esclave de '0 à 'F ID code esclave de '0 à 'F
Sti = 4 bits d'états de l'esclave
Sti = 4 bits d'états de l'esclave avant RAZ Ei = entrées esclave
Profils ASi.
Chaque équipement ASi dispose d'un profil, qui va permettre de garantir l'interopérabilité des produits ASi entre fabricants.
Ce profil prend la forme d'une valeur (1 octet), notée en hexadécimal, et définit le comportement de l'esclave sur le bus :
- Données d'entrées et de sorties échangées - Paramètres accessibles
- Type de capteur / actionneur
Ci-après, deux exemples de profils éxistants.
✔
Plan Mémoire du maître ASi :
L'automate crée automatiquement un plan mémoire image pour l'ensemble des entrées, et un autre pour les sortie gérées par le coupleur Asi.
Pour une configuration standard, avec le coupleur en première position dans le rack, les esclaves ASi T.O.R seront adressés comme suit dans le programme automate :
@2 @3 XXX @1
@6 @7 @4 @5
@10 @11 @8 @9
@14 @15 @12 @13
... ...
... @16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
%IW4
%QW4
%IW5
%QW5
%IW6
%QW6
%IW7
%QW7
%IW8
%QW8
Bit :
Exemples de composant ASi :
D0 = commutation D1 = signalisation D2 = état
D3 = test
P0 =temporisation P1 = inversion P2 = distance
P3 = fonction spéciale
capteur ou Actionneur
énergie
Esclave avec circuit intégré AS-
Interface Un boîtier
Une connexion
Structure :
Exemple de capteur :
Cellule Photoélectrique XUJK... (Schneider) :
Distance de détection (P1)
Dark-on / Dark-off (P2)
AS-i
Alimentation par le bus :
Paramètres :
Données :
Détection (entrée I1)
Encrassement lentille (entrée I2)
Exemple d'actionneur (pré) :
Distriubteur électropneumatique AC2027 (ecomot) :
D0 = capteur 1 D1 = capteur 2
D2 = actionneur 1 D3 = actionneur 2 P0
Jusqu’à 4 capteurs ou/et
4 actionneurs
énergie
Esclave avec circuit intégré AS-
Interface
Un boîtier Auto-surveillance
interface AS-i pour capteurs/actionneurs conventionnels :
Exemple de maître Asi pour API :
Borne WAGO 750-655 pour contrôleur 750-xxx :
Console d'adressage ASi:
- Adressage des esclaves Asi (Modes A/B),
- Fonctions de Diagnostique (Tension Bus etc...),
- Lecture des profils ASi, - etc...
1 - Présentation
1.1 – Objectifs
1.2 – Exemple d’application
1.3 – Types de données
1.4 – Principales fonctions
2 – Supports de Communication
2.1 – RS232
2.2 – RS485
2.3 – Ethernet
2.4 - Synthèse
3 – Transactions Modbus
3.1 principe des échanges
3.2 Trames Modbus RTU
3.3 Trames Modbus TCP
Annexes
Principales fonctions Modbus
Extraits de documentations
IV / Le Protocole Modbus
1 - PRÉSENTATION
1-1 – Objectifs
Groupe Schneider / Merlin Gerin / Télémécanique (Modicon à l’époque) à l’origine du projet
Système de communication basé sur une liaison série
Faire communiquer entre eux différents équipements d’automatisme (automates, variateurs, IHM…)
Echanger des données sous formes de Bits et de Mots
Exemple :
API (maître) IHM
@1
Affichage état de l’état
fonctionnement
Ordres de pilotage
Liaison Modbus
q
1-2 – Exemple d’application
q L’architecture suivante permet la supervision d’une installation électrique destinée à la ventilation d’un local :
q
q 4 variateurs de vitesse Schneider ATV61 sont utilisés pour piloter les moteurs d’entraînement des ventilateurs
q
q Un coupleur* Modbus Wago 750-312 muni d’une carte 8 entrées TOR est utilisé pour relevé l’état des disjoncteurs de l’installation. Les contacts auxiliaires des disjoncteurs sont reliés comme suit :
qQ1 (extraction 1) : ED1
qQ2 (extraction 2) : ED2
qQ3 (insufflation 1) : ED3
qQ4 (insufflation 2) : ED4
qQ0 (général) : ED5 (ED6, ED7, ED8 : N.C)
q
q Un compteur d’énergie communicant Schneider IEM3150 effectue différents relevés (puissance instantanée, énergie consommée, courants, tensions…)
q
Réseau Ethernet
Liaison RS485**
Poste de supervision PC + carte réseau Logiciel de supervision utilisant Modbus (TCP)
@IP : 192.168.0.100
Extraction 1 Variateur ATV61
@ Modbus : 1
Extraction 2 Variateur ATV61
@ Modbus : 4
Insufflation 1 Variateur ATV61
@ Modbus : 2
Insufflation 2 Variateur ATV61
@ Modbus : 3
Surveillance disjoncteurs Coupleur 750-312
Carte 8E TOR
@ Modbus : 6
Compteur Energie iem3150
@ Modbus : 5 Passerelle MB
Ethernet/RS485
@IP :
192.168.0.101
1-3 – Types de données
4 types de données sont définis par le protocole:
● Type d’objet ● Accès ● Exemples
● Discret Inputs ● Bit ● R - entrées TOR
- Fin de course
- Contact auxiliaire de disjoncteur
● Coils ● Bit ● R/W - Sorties TOR
- Bit interne
- RAZ d’un compteur d’énergie
● Input Registers ● Mot ● R - Entrées analogiques
- Lecture d’un capteur
● Holding Registers ● Mot ● R/W - Sorties analogiques
- Variable d’un programme (ex: temporisation, opérande d’un calcul…)
- Valeur de paramétrage d’un équipement (ex : consigne de vitesse d’un variateur…)
ü Les données d’un équipement sont identifiées par des adresses codées sur 16 bits.
ü Exemple (compteur d’énergie Schneider iem3150) :
Les fonctions Modbus permettent à des équipements d’échanger ces différents types de données :
➢ Code Fonction ➢ Description
➢ 1 ➢ Lecture de bits (coils)
➢ 2 ➢ Lecture de bits d’entrée (discret inputs)
➢ 3 ➢ Lecture de mots (holding registers)
➢ 4 ➢ Lecture de mots d’entrée (input registers)
➢ 5 ➢ Ecriture de 1 bit
➢ 6 ➢ Ecriture de 1 mot
➢ 15 ➢ Ecriture de n bits
➢ 16 ➢ Ecriture de n mots
Exemples (installation ventilation du §1.2) :
• Fixer la vitesse de rotation d’un ventilateur : fonction 6
• Relever les mesures du compteur d’énergie : fonction 3 ou 4
• Afficher l’état des disjoncteurs : Fonction 1
1-4 – Principales Fonctions
2 – SUPPORTS DE COMMUNICATION
2.1 - RS 232
ü Liaison Point à Point
ü 3 Fils minimums : Emission (Tx) – Réception (Rx) – Masse/référence commune (Gnd)
ü Niveaux de tension +12V (‘0’) / -12V (‘1’)
ü D < 30m
‘0’ ‘1’ ‘0’ ‘0’ ‘1’ ‘1’ ‘0’ ‘0’ ‘1’
+12V
-12V
Vrs232
Connectique :
2.2 - RS 485
ü Liaison Multipoints (jusqu’à 63 esclaves en Modbus)
ü 2 Fils minimums : D0 – D1
ü Transmission différentielle (Niveaux de tension 0V/5V)
ü D < 120m (1000m avec répéteurs)
‘0’ ‘1’ ‘0’ ‘0’ ‘1’ ‘1’ ‘0’ ‘0’ ‘1’
+5V
0V
VD0
Comparaison RS232 / RS 485 :
Dans tous les cas (RS232 et RS485), on doit définir les paramètres de la communication considérée, et vérifier que le paramétrage soit identique sur toutes les stations :
Débit binaire (« Baudrate ») : Egalement appelé « vitesse de transmission », Il s’exprime en Bauds (Bds) et correspond au nombre de bots par seconde.
Par défaut, le débit est de 19200 Bds en Modbus. Autres débits usuels : 1200 Bds, 2400 Bds, 4800 Bds, 9600 Bds.
Parité (« Parity ») : Bit de contrôle insérer à la fin de chaque octet transmis vérifiant, selon le paramétrage choisi, que le nombre de bits à ‘1’ dans l’octet est paire (« even ») / impaire (« odd »).
Le contrôle de parité peut aussi être désactivé (« none »)
Bit(s) de stop : Un bit de Start à ‘0’est inséré au début de chaque octet à transmettre. L’utilisateur peut également paramétrer 1 ou 2 bits de STOP (à
‘1’) à la fin de celui-ci.
Contrôle de flux : Matériel (utilisation des signaux RTS/CTS), logiciel ou aucun.
Connectique :