Beruflich Dokumente
Kultur Dokumente
______________________________________________________________________________________
L2
L1
START
STOP
Figure (II-1) : Commande d'un moteur. (a) Connexion. (b) Diagramme unifilaire de la commande.
Bouton poussoir STOP : Au repos le contact est fermé. (Contact normalement fermé).
Bouton poussoir START : Au repos le contact est ouvert (Contact normalement ouvert)
L'état du contact M dépend de la bobine M (les deux composants sont dans le même boîtier.
Les relais de protection contre les surcharges s'ouvrent quand la grandeur surveillée et dépassée.
Après l'apparition des automates programmables, le premier langage qui a été adopté pour leur
programmation est le langage à contacts. Ce dernier est un langage graphique qui utilise des composants
graphiques qui ressemblent ceux utilisés dans les diagrammes unifilaires. Ceci pour permettre aux
1
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
techniciens qui travaillent dans les installations industrielles de passer facilement de l'utilisation de la
commande câblée vers les APIs.
Figure (II-2) : Les différentes zones de mémoires des CPU S7 de SIEMENS (S7 300, 400, 1200, 1500)
Octets IB7 : Octet n° 7 des entrées QB7 : Octet n°7 des sorties (QB7≠IB7)
Mots IW10 =(IB10:IB11) QW20=(QB20:21) avec QB20 est l'octet de poids fort.
2
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
II.1.2.2. Les périphéries d'entrées et les périphéries de sorties :
L'accès se fait en utilisant le préfixe PI pour les périphéries des entrées et le préfixe PQ pour les périphéries
des sorties. L'accès aux périphéries n'est possible que par mot ou double mots.
PIW10 : Mot 10 des périphéries des entrées PQW10 : Mot 10 des périphéries des sorties
Octets DBB7 : Octet n° 7 des entrées DIB7 : Octet n°7 des sorties (QB7≠IB7)
3
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
II.2. Les composants du langage à contacts :
II.2.1. Les élément à usage général :
Le programme en langage à contacts est organisé sous forme d'un ensemble de réseaux. Un réseau se
présente sous la forme indiquée par la figure suivante ;
Contact normalement ouvert (NO) : Le contact est ouvert si l'opérande interrogé "<oprnd>" est
égal à 0, le courant ne passe pas de gauche vers la droite et l'état de l'arc de liaison droite est 0. Si
"<oprnd>"=1, le contact sera fermé et le courant passe de gauche à droite. L'état du RLO (bit de résultat
logique ou l'état de l'arc de liaison après le contact) après interrogation devient égal à l'état de l'arc de la
droite.
Contact normalement fermé (NC) : Le contact est fermé si l'opérande interrogé "<oprnd>" est égal
à 0 et le courant passe de gauche à droite. L'état du RLO (bit de résultat logique ou l'état de l'arc de liaison
après le contact) après interrogation devient égal à l'état de l'arc de la droite. Si "<oprnd>"=1, le contact sera
ouvert, le courant ne passe pas de gauche vers la droite et l'état de l'arc de liaison droite est 0.
Bobine de sortie : Cette opération copie l'état du RLO (signal de droite) dans l'opérande "<oprnd>".
Cette opération ne peut être insérée qu'à l'extrémité droite du réseau. On peut placer jusqu'à 16 sorties
multiples.
: Cette opération inverse l'état du bit de résultat logique (inverse l'état de l'arc de liaison ou de
signal).
4
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
Connecteur : laisse passer le signal du côté gauche vers le côté droite et copie son état dans
<oprnd> c'est à dire l'opérande en accès.
Mis à un (SET) : Cette opération met à 1 l'opérande en accès quand le signal à sa gauche est 1, et
laisse l'<oprnd> inchangé sinon. Cette opération ne peut être insérée qu'à l'extrémité droite du réseau.
Mis à zéro (RESET) : Cette opération met à 0 l'opérande en accès quand le signal à sa gauche est
1, et laisse l'<oprnd> inchangé sinon. Cette opération ne peut être insérée qu'à l'extrémité droite du réseau.
Bascule SR : Combine les deux relais S et R dans un seul bloc. Sa forme et sa table de vérité sont comme
suit :
0 1 1 (mis à 1 SET)
1 0 0 (mis à 0 RESET)
Détection de front montant et de front descendant : La forme des deux composants (relais) représentant
l'opération diffèrent entre TIA PORTAL et les versions antérieures de STEP7.
Si Av=1 et M10.2=0) alors Ap←1 ensuite M10.2=Av. Sinon Ap←0 ensuite M10.2=Av.
5
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
Il faut aussi noter que le TIA portal possède aussi des contacts de détection de fronts. Ces contacts diffèrent
des relais de détection de front dans le sens où ils détectent le front sur l'opérande associé et pas sur le RLO
à gauche, ensuite il combine le front détecté avec le RLO de gauche selon l'opération "AND".
Dans le TIA portal, il y a aussi F_TRIG (Falling Edge) et R_TRIG (Rising Edge). Mais ces opérations
doivent être utilisées seulement à la fin du réseau.
Pour tous les cas, le mémento de sauvegarde (ici M10.2) ne doit pas être utilisé deux fois dans le même
programme et doit obligatoirement se trouver dans la zone des mémentos ou dans un DB.
6
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
MOVE (Affecter valeur) :
II.2.3. Opération de Transfert ou de chargement : Cette opération est activée par l'entrée de
validation EN. La valeur indiquée dans
l'entrée IN est copiée à l'adresse précisée
dans la sortie OUT. L'état de signal de
ENO est identique à celui de EN.
Dans l'exemple : L'opération est exécutée si I0.0 est à 1. Le contenu de L'opération MOVE ne permet de copier
MD10 est alors copié dans le mot de données DBD12 du bloc de données que des octets, des mots ou des doubles
en cours. La sortie Q4.0 est mise à 1 si l'opération est exécutée. mots. Pour copier des types de données
utilisateur tels que des tableaux ou des
structures, vous devez faire appel à la
fonction système "BLKMOV" (SFC 20).
CMP ? I (Comparer entiers de 16 bits):
II.2.4. Opérations de comparaison : Cette opération, que vous pouvez utiliser
CMP?I : Comparer des entiers de 16 bits et placer comme un contact normal,
compare les entrées MW20 et MW22
selon le type de comparaison que vous
avez sélectionné (≥ pour la première).
Si la comparaison est vraie, le résultat
logique (RLO) est 1. Ce résultat est
combiné au RLO du trajet de courant
entier selon ET si l'élément de
comparaison est utilisé en série ou selon
OU s'il est utilisé en parallèle.
Des blocs similaires sont utilisés pour comparer les nombres réelles est Dans l'exemple, la sortie Q4.0 est mise à 1
les entiers en format double sur 32 bits ainsi que des données en format si l'état de signal est 1 aux entrées I0.0 ET
Time. I0.1 ET si MD0 >= MD4 ET si l'état de
signal est 1 à l'entrée I0.2. Sinon Q4.0
garde son état précédent.
7
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
Bcd16 to Int : (Convertir nombre DCB
II.2.5. Opérations de conversion : en entier de 16 bits)
(exemple convertir un nombre BCD en entier de 16 bits) Cette opération lit le contenu du
paramètre d’entrée IN comme nombre
décimal codé binaire à trois chiffres (DCB
+/- 999), le convertit en un nombre entier
de 16 bits et range le résultat dans le
paramètre de sortie OUT. ENO et EN ont
toujours un état de signal identique.
Dans l'exemple : Si l’état de signal est 1 à
l’entrée En du bloc de conversion, le
contenu du mot de mémento MW40 est lu
comme nombre DCB à trois chiffres (16
bits) et converti en nombre entier de 16
Des blocs de conversions similaires existent pour les opérations : bits. Le résultat est rangé dans le mot de
Int to BCD16 : Conversion d'entiers 16 bits → à BCD 3 chiffres si (- mémento MW110. La sortie ENO du bloc
999)BCD<IN<(+999)BCD. S'il y a dépassement ENO=0. de conversion est mise à 1 et le reste du
Dint to BCD32 : conversion d'entiers 32 bits → à BCD 7 chiffres si (- réseau est exécuté. Si la conversion n’est
9999999)BCD<IN<(+9999999)BCD. S'il y a dépassement ENO=0 pas exécutée (ENO = EN = 0), le reste du
Int_DI : Extension d'entier 16 bits→entier en format double 32bits. réseau ne sera pas exécuté. En cas de
DInt to Real : Conversion d'entier double → réelle. débordement, la sortie ENO de ce bloc est
INV pour Int et DInt, NEG pour Int DInt et real : sont les compléments à mise à 0.
un et 1 à 2 respectivement des entiers 16 bits et des entiers 32 bits.
TRUNC, CEIL et FLOOR: sont utilisés pour la conversion de nombres
réels en entier 32 bits en utilisant la troncature, arrondi vers +∞ et arrondi
vers -∞ respectivement.
8
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
ADD_I :(Additionner entiers de 16 bits)
II.2.7. Opérations arithmétiques sur entiers en format Cette opération additionne les entrées IN1
simple ou double ou des réels : et IN2 si l'état de signal est 1 à l'entrée de
(exemple additions de deux entiers) validation EN. Le résultat est rangé dans
la sortie OUT. Si ce résultat est hors de la
plage autorisée pour un nombre entier de
16 bits, les bits DEB et DM du mot d'état
sont mis à 1 et la sortie ENO est à 0.
Ainsi, les opérations suivant cette
opération arithmétique et qui y sont
connectées par ENO (cascade) ne sont pas
exécutées.
Pour les nombres d'autres formats nous avons : Dans l'exemple : L'opération ADD_R est
ADD DInt : Addition de deux entiers en formats double (32bits). exécutée si l'état de signal est 1 à l'entrée I
SUB Int, SUB Dint : soustraction de deux entiers en formats simple est 0.0. Le résultat de l'addition MD0 + MD4
double respectivement. est rangé dans le double mot de mémento
MUL Int, MUL DInt : Multiplication d'entiers MD8. Si ce résultat est hors de la plage
DIV Int, DIV DInt : Division d'entiers. autorisée pour un nombre réel ou si cette
MOD DInt (seulement): Reste de division 32 bits addition n'est pas traitée, la sortie Q 4.0
Pour les opérations sur des nombres réels nous avons : est mise à 1.
ADD Real, SUB Real, DIV Real, MUL Real, SIN, ASIN, COS, ACOS,
TAN, ATAN, SQR, SQRT, EXP, LN.
SHR_I (Décalage vers la droite d'un
II.2.8. Opération de décalage entier de 16 bits)
(exemple décalage signé à droite d'un entier à 16 bits) : Cette opération est activée si l'état de
signal est 1 à l'entrée de validation EN.
Elle décale bit par bit vers la droite les
bits 0 à 15 de l'entrée IN. Les bits 16 à 31
… ne sont pas affectés. Le nombre de bits de
décalage est indiqué dans l'entrée N. Si N
est supérieur à 16, tout se passe comme
si N était égal à 16. Les positions binaires
libérées à gauche prennent l'état de signal
du bit 15 (bit de signe du nombre entier).
Elles prennent donc la valeur 0 s'il s'agit
d'un nombre entier positif et la valeur 1
s'il s'agit d'un nombre entier négatif. Le
résultat du décalage est rangé dans la
sortie OUT. L'opération SHR_I met les
bits BI0 et DEB à 0 si N est différent de 0.
Exemple : ENO a le même état de signal que EN.
Dans l'exemple : L'opération SHR_I est
exécutée si l'état de signal est 1 à l'entrée
I 0.0. Le mot de mémento MW0 est
chargé et décalé vers la droite du nombre
de bits précisé dans MW2. Le résultat est
rangé dans MW4. La sortie Q4.0 est mise
à 1.
Pour les opérations de décalage non signé, nous pouvons utiliser :
SHL_W, SHL_DW : décalage non signé vers la gauche de mots ou de
doubles mots.
SHR_W, SHR_DW : décalage non signé vers la droite de mots ou de
doubles mots.
Pour les opérations de décalage non signé, les positons décalés sont
remplies par des zéros.
ROL_DW (Rotation vers la gauche d'un
II.2.9. Opérations de rotations : double mot)
9
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
(exemple vers la gauche d'un double mot) : Cette opération est activée si l'état de
signal est 1 à l'entrée de validation EN.
Elle déclenche la rotation bit par bit vers
la gauche du contenu entier de l'entrée IN.
Le nombre de bits de rotation est indiqué
dans l'entrée N. Si N est supérieur à 32, le
double mot IN fait l'objet d'une rotation de
((N-1) modulo 32)+1 positions. Les
positions binaires libérées à droite
prennent l'état de signal des bits qui ont
fait l'objet de la rotation vers la gauche.
Le résultat de la rotation est rangé dans la
sortie OUT. L'opération ROL_DW met
les bits BI0 et DEB à 0 si N est différent
de 0.
ENO a le même état de signal que EN.
Pour l'exemple : L'opération ROL_DW
La est exécutée si l'état de signal est 1 à
rotation à droite des doubles mots est effectuée par l'opération ROR_DW l'entrée I0.0. Le double mot de mémento
MD0 est chargé et fait l'objet d'une
rotation vers la gauche du nombre de bits
précisé dans MW4. Le résultat (double
mot) est rangé dans MD10. La sortie Q4.0
est mise à 1.
WAND_W (ET mot)
II.2.10. Opérations logiques sur mots: Cette opération est activée si l'état de
(exemple le et logique de deux mots bit à bit) signal est 1 à l'entrée de validation EN.
Elle combine, bit par bit selon la table de
vérité ET, les deux mots indiqués dans les
entrées IN1 et IN2. Ces valeurs sont
interprétées comme profils binaires purs.
Le résultat est rangé dans la sortie OUT.
L'état de signal de ENO est identique à
celui de EN.
Cette opération est exécutée si l'état de signal est 1 à l'entrée I0.0. Seuls
les bits 0 à 3 de MW0 sont significatifs ; les autres bits sont masqués par
le profil binaire donné dans l'entrée IN2.
MW0 = 01010101 01010101
IN2 = 00000000 00001111
MW2←(MW0 ET IN2) = 00000000 00000101
La sortie Q4.0 est mise à 1 si l'opération est exécutée.
Pour les autres opérations logiques sur mots et doubles mots nous avons :
WOR_W : Le OU logique de deux mots bit à bit.
WOR_DW : Le OU logique de deux doubles mots
WAND_DW : Le ET logiques de deux doubles mots
WXOR_W : L'exclusive OR de deux mots
WXOR_DW : L'exclusive OR de deux double mots
Entrée T.S
Entrée T.R
Temps
La temporisation étendue continue restantT.BI
à s'écouler jusqu'à sa fin même
après que son entrée START passe Sortie T.Q
à zéro. C'est ce qui la différencie
de la temporisation sous forme
Chronogramme d'une temporisation sous forme d'impulsion Prolongée (Mémorisée)
d'impulsion.
11
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
T.TV
Durée T.TV T.TV T.TV
T.TV
Entrée T.S
Entrée T.R
La sortie de la temporisation sous Temps
forme de retard à montée passe à restantT.BI
1 si la temporisation s'est écoulée
avec succès et que son entrée de Sortie T.Q
démarrage S est toujours à 1. Si
l'entrée passe de 0 à 1 avant que Chronogramme d'une temporisation sous forme de retard à la montée
la tempo s'est écoulée, alors sa
sortie Q reste à l'état zéro.
T.TV
Durée T.TV T.TV T.TV
T.TV
Entrée T.S
Entrée T.R
12
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
T.TV
Durée T.TV T.TV T.TV
T.TV
Entrée T.S
Entrée T.R
Temps
restantT.BI
Cette temporisation commence
son exécution seulement aux Sortie T.Q
fronts descendant sur l'entrée S. Q
devient =1 si S passe à 1 mais le Chronogramme d'une temporisation sous forme de retard à la retombée
comptage ne commence que si S
repasse à 0.
Note : La valeur de T.TV programmée doit être très grande devant la durée du cycle scan de l'automate
(temps d'exécution du programme) pour que la temporisation soit précise 𝑇. 𝑇𝑉 ≫ 𝑇𝑠𝑐𝑎𝑛 . Si ce n'est pas le
cas, il faut procéder autrement en utilisant des interruptions.
Utilisation de l'étiquette pour définir la destination L'instruction "RET" permet de retourner à partir
du saut : d'une fonction vers le programme appelant en
mettant le RLO dans la sortie ENO de la fonction.
14
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
II.2.14. Programmation de fonctions et de bloc fonctionnels (sous programmes) :
II.14.1. Les fonctions :
Une fonction est un bloc de code sans mémoire. Les variables temporaires d'une fonction sont enregistrées
dans la pile des données locale. Ces données sont perdues à l'achèvement de la fonction. Les fonctions
peuvent faire appel à des blocs de données globaux pour l'enregistrement de données.
Example de création de fonction :
OUT OUT
HILIM 𝑘2
𝑘1 LOLIM
IN IN
𝑘2 HILIM
LOLIM 𝑘1
𝐻𝐼𝐿𝐼𝑀 − 𝐿𝑂𝐿𝐼𝑀 𝑘2 − 𝑘1
𝑂𝑈𝑇 = 𝑓𝑙𝑜𝑎𝑡 𝐼𝑁 − 𝑘1 𝑂𝑈𝑇 = 𝐼𝑁 − 𝐿𝑂𝐿𝐼𝑀 + 𝑘1
𝑘2 − 𝑘1 𝐻𝐼𝐿𝐼𝑀 − 𝐿𝑂𝐿𝐼𝑀
+ 𝐿𝑂𝐿𝐼𝑀
Dans cette expression, il y a deux cas :
Dans cette expression, il y a deux cas :
1. Si bipolaire=1, alors 𝑘1 = −27648 et 𝑘2 =
1. Si bipolaire=1, alors 𝑘1 = −27648 et 𝑘2 = +27648.
+27648.
2. Si bipolaire=0, alors 𝑘1 = 0 et 𝑘2 = +27648.
2. Si bipolaire=0, alors 𝑘1 = 0 et 𝑘2 = +27648.
Si 𝐿𝑂𝐿𝐼𝑀 > 𝐻𝐼𝐿𝐼𝑀 alors OUT est inversement
Si 𝐿𝑂𝐿𝐼𝑀 > 𝐻𝐼𝐿𝐼𝑀 alors OUT est inversement
proportionnelle à IN
16
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
17