Sie sind auf Seite 1von 17

L3 AUTOMATIQUE API Langage à contacts 2020

______________________________________________________________________________________

Chapitre II : Langage à contacts


II.1. Introduction :
II.1.1. Diagramme unifilaire :
Avant l'apparition des microprocesseurs, les systèmes automatiques étaient commandés par des séquenceurs
câblés. Ces derniers étaient fabriqués à base de relais de temporisateurs et de compteurs. Les circuits de
commandes étaient représentés par des schémas appelés diagrammes unifilaires. Un diagramme unifilaire
est un diagramme qui montre la logique d'un circuit électrique ou d'un système en utilisant des symboles
standards. C'est seulement la relation entre les circuits et leurs composants qui est montrée mais pas la
position réelle des composants. Le circuit suivant représente un exemple concernant la commande d'un
moteur.

L2
L1

START

STOP

Moteur Démarreur Manuel

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.

II.1.2. Zones de mémoires des automates S7 de SIEMENS :


Avant de passer au langage à contacts, nous commençons par un aperçu sur les différentes parties de la
mémoire des automates S7 de SIEMENS (utilisés dans les travaux pratiques de la matière). La figure
suivante représente les différentes zones de mémoire.

Figure (II-2) : Les différentes zones de mémoires des CPU S7 de SIEMENS (S7 300, 400, 1200, 1500)

II.1.2.1 Les entrées et les sorties :


L'accès aux valeurs des entrées et aux valeurs des sorties dans le programme ne se fait pas directement à
partir des entrées physiques. Une mémoire image des entrées (sorties) est utilisée. Le programme accède
seulement à cette mémoire. Le système d'exploitation de l'automate se charge de l'actualisation de cette
mémoire de façon périodique (à chaque cycle automate). L'avantage de cette structure est d'avoir une image
stable des valeurs de procédé (entrées/sorties) durant une exécution du programme (cycle scan). L'accès à la
MIE se fait en utilisant le préfixe I (Input) et l'accès à la MIS se fait en utilisant le préfixe Q (Output). Les
entrées et les sorties sont groupées en groupes de 8 (octets).

Type d'accès Entrées Sorties

Bits %I1.0 : Octet 1 bit 0 %Q1.1 : Bit 1 de l'octet 1 des sorties

%I3.4 : Octet 3 bit 4 %Q7.4 : Bit 4 de l'octet 7 des sorties

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.

Double Mots ID30=(IB30:IB31:IB32:IB33) QD40=(QB40:QB41:QB42:QB43), Noter que QD40 et


QW40 chevauchent.

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

II.1.2.3. Mémoire de mémentos :


Stockage de résultats intermédiaires durant l'exécution du programme utilisateur. L'accès se fait en utilisant
le préfixe M.

Type d'accès Mémentos

Bits %M1.0 : Octet 1 bit 0


%M3.4 : Octet 3 bit 4

Octets MB7 : Octet n° 7 des mémentos

Mots MW10 = (MB10:MB11)

Double Mots MD30=(MB30:MB31:MB32:MB33). Notez que MW30 et MD30 chevauchent

II.1.2.4. Mémoire locale :


Stockage des résultats intermédiaires durant l'exécution de sous-programmes (fonctions). L'accès se fait en
utilisant le préfixe L.

Type d'accès Mémoire locale

Bits %L1.0 : Octet 1 bit 0

%L3.4 : Octet 3 bit 4

Octets LB7 : Octet n° 7 des mémentos

Mots LW10 = (LB10:LB11)

Double Mots LD30=(LB30:LB31:LB32:LB33). Notez que LW30 et LD30 chevauchent

II.1.2.5. Blocs de données :


Les blocs de données permettent de manipuler un ensemble de données et sont aussi utilisés avec les blocs
fonctionnels comme données d'instance. Ainsi il y a deux types de blocs de données : les blocs de données
globaux et les blocs de données d'instances.

Accès Bloc de données global Bloc de données d'instance

Bits %DBX1.0 : Octet 1 bit 0 %DIX1.1 : Bit 1 de l'octet 1 des sorties

%DBX3.4 : Octet 3 bit 4 %DIX7.4 : Bit 4 de l'octet 7 des sorties

Octets DBB7 : Octet n° 7 des entrées DIB7 : Octet n°7 des sorties (QB7≠IB7)

Mots DBW10 =(DBB10:DBB11) DIW20=(DIB20:21) avec DIB20 est l'octet de


poids fort.

Double DBD30=(DBB30:DBB31:DBB32:DBB33) DID40=(DIB40:DIB41:DIB42:DIB43), Noter


Mots que DID40 et DIW40 chevauchent.

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 ;

Figure (II-3) : Un réseau en langage à contacts.

II.2.2. Opérations sur bit en langage à contacts :

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).

Figure (II-4) : Exemple de réseau en langage à contacts

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 :

Bascule SR R S <oprnd>=Lecture et Q=Lecture


0 0 Garde ancien état (mémorisation)

0 1 1 (mis à 1 SET)

1 0 0 (mis à 0 RESET)

Applique mis à 1 ensuite remise à zéro dans cet ordre (Mis


1 1
à 0 prioritaire car il détermine l'état final de la bascule)

Figure (II-5) Bascule SR et sa table de vérité.


Bascule RS : Fait le même opération que la bascule SR, seulement pour le cas où S=R=1, on commence par
la remise à 0 ensuite la mise à1 (Mis à 1 prioritaire car il détermine l'état final de la bascule).

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.

L'opération relais de détection de front montant détecte le passage de 0 à 1 du RLO (état de


l'arc à gauche Av) et montre ceci par un signal égal à un à sa droite. L'opérande (ici M10.2)
est utilisé pour sauvegarder l'ancien état du RLO.

Si Av=1 et M10.2=0) alors Ap←1 ensuite M10.2=Av. Sinon Ap←0 ensuite M10.2=Av.

L'opération relais de détection de front descendant détecte le passage de 1 à 0 du RLO (état


de l'arc à gauche Av) et montre ceci par un signal égal à un à sa droite. L'opérande (ici
M10.2) est utilisé pour sauvegarder l'ancien état du RLO.
Si Av=0 et M10.2=1) 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.

L'opération contact de détection de front montant Fm détecte le passage de 0 à 1 de


l'opérande combine Fm avec le RLO de sa droite selon l'opération AND. Le mémento de
sauvegarde de l'ancien état de l'opérande est donné en dessous du contact (ici M10.2).

Si <oprnd>=1 et M10.2=0) alors Ap← Av&Fm ensuite M10.2=<oprnd>. Sinon (Fm←0 et


Ap←Av&Fm) ensuite M10.2=<oprnd>.

L'opération contact de détection de front descendant Fd détecte le passage de 1 à 0 de


l'opérande et combine Fd avec le RLO de sa droite selon l'opération AND. Le mémento de
sauvegarde de l'ancien état de l'opérande est donné en dessous du contact (ici M10.2).
Si <oprnd>=0 et M10.2=1) alors (Fd←1 et Ap←Av&Fd) ensuite M10.2=<oprnd>. Sinon
(Fd←0 et Ap←Av&Fd) ensuite M10.2=<oprnd>.

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.

---(OPN) ---(OPNI) (Ouvrir bloc de


II.2.6. Opération d'ouverture de blocs de données : données) :
Cette opération ouvre un bloc de données
(DB) ou un bloc de données d'instance
(DI). Il s'agit d'un appel inconditionnel
d'un bloc de données. Le numéro du bloc
de données est transféré au registre DB ou
DI. Les commandes suivantes relatives à
Dans l'exemple : Le bloc de données 10 (DB10) est ouvert et son des DB et des DI accèdent aux blocs
numéro est mis dans le registre DB. L'adresse du contact (DBX0.0) correspondants selon le contenu des
se réfère au bit zéro de l'octet de données zéro de l'enregistrement registres.
en cours se trouvant dans le bloc de données DB10. L'état de signal
de ce bit est affecté à la sortie Q 4.0.

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

II.2.11. Les temporisateurs :

II.2.11.1. Les temporisateurs SIMATIC :


Temporisations sous forme d'impulsions : S_PULSE : (Paramétrer et démarrer
S : entrée démarrage de la temporisation (START) temporisation sous forme d'impulsion)
TV : Valeur de temps ou durée de la temporisation en format S5T Cette opération démarre la temporisation
R: L'entrée remise à zéro de la temporisation précisée en cas de front montant à l'entrée
Q : sortie de la temporisation de démarrage S. Un changement d'état de
BI : la valeur de temps restante en binaire
signal est toujours nécessaire pour activer
10
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
BCD : La valeur de temps restante en BCD une temporisation. La valeur de temps
indiquée à l'entrée TV s'écoule tant que
l'état de signal à l'entrée S est égal à 1.
Tant que la temporisation s'exécute, l'état
de signal à la sortie Q égale 1. En cas de
passage de 1 à 0 à l'entrée S avant que le
temps n'ait expiré, la temporisation
s'arrête. Dans ce cas, l'état de signal à la
Durée T.TV T.TV sortie Q est 0.
T.TV
Si l'état de signal passe de 0 à 1 à l'entrée
de remise à zéro R, alors que la
Entrée T.S temporisation s'exécute, cette dernière est
remise à zéro. La valeur de temps en
cours et la base de temps sont alors
Entrée T.R
également mises à 0. L'état de signal 1 à
Temps l'entrée R de la temporisation n'a aucun
restantT.BI effet si la temporisation ne s'exécute pas.
La valeur de temps en restant peut être lue
Sortie T.Q en format binaire à la sortie BI et en
format décimal codé binaire à la sortie
BCD. La valeur de temps restant
Chronogramme d'une temporisation sous forme d'impulsion correspond à la valeur initiale en TV
moins la valeur de temps écoulée depuis
Exemple (voir réseau) : le démarrage de la temporisation.
Dans l'exemple : La temporisation T0 est
Les autres types de temporisation qu'on peut utiliser sont : démarrée si l'état de signal passe de 0 à 1
S_PEXT : Temporisation sous forme d'impulsion étendue (mémorisée). à l'entrée I0.0 (front montant du RLO). Le
S_ODT : Temporisation sous forme de retard à la montée. temps de deux secondes (10min) indiqué
S_ODTS : Temporisation sous forme de retard à la montée mémorisée. s'écoule tant que I0.0 est à 1. Si l'état de
S_OFFDT : Temporisation sous forme de retard à la retombée. signal en I0.0 passe de 1 à 0 avant que le
temps n'ait expiré, la temporisation
s'arrête. Si l'état de signal à l'entrée I0.1
passe de 0 à 1 alors que la temporisation
s'exécute, cette dernière est remise à zéro.
L'état de signal à la sortie Q4.0 est 1 tant
que la temporisation s'exécute. Cet état de
signal est 0 si la temporisation a expiré ou
si elle a été remise à zéro.

Temporisation sous forme d'impulsion étendue (Extended) :


T.TV
Durée T.TV T.TV T.TV
T.TV

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
______________________________________________________________________________________

Temporisation sous forme de retard à la monté :

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.

Temporisation sous forme de retard à la monté mémorisée :

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 restantT.BI
mémorisée est une tempo sous
forme de retard à la montée mais Sortie T.Q
qui continue à s'exécuter même si
l'entrée S passe à zéro avant que Chronogramme d'une temporisation sous forme de retard à la montée mémorisée
la tempo s'est complètement
écoulée. Si la sortie de la tempo
est à un et que l'entrée S passe de
0 à 1, la tempo ne va pas démarrer
car elle nécessite d'être remise à
zéro avant d'être lancée.

Temporisation sous forme de retard à la retombée :

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.

II.2.11.2. Les temporisateurs IEC :

II.2.12. Les compteurs :


II.2.12.1. Les compteurs SIMATIC :
Opérations de comptage : Comptage : (Paramétrage et compteur
d'incrémentation/décrémentation)
1. Un front montant à l'entrée S de cette
opération initialise le compteur à la valeur
figurant dans l'entrée PV.
2. Un 1 à l'entrée R remet le compteur, et
donc la valeur de comptage, à zéro (cette entrée
travail avec niveau).
3. Le compteur est incrémenté d'une unité si
S_CUD : Compteur à incrémentation est à décrémentation. l'état de signal à l'entrée CU passe de 0 à 1
S_CU : Compteur à incrémentation. (front montant) et que la valeur du compteur est
S_CD: Compteur à décrémentation. inférieure à 999 (l'entrée CU travail avec front
Dans l'exemple : Si l'état de signal à l'entrée I 0.2 passe de 0 à 1, montant).
le compteur est initialisé à la valeur figurant dans le mot de 4. Le compteur est décrémenté d'une unité si
mémento MW10. Si l'état de signal en I 0.0 passe de 0 à 1, la l'état de signal à l'entrée CD passe de 0 à 1
valeur du compteur C0 est incrémentée de un à moins qu'elle ne (front montant) et que la valeur du compteur est
soit déjà égale à 999. Si l'état de signal en I0.1 passe de 0 à 1, la supérieure à 0 (l'entrée CD travail avec front
valeur du compteur C0 est décrémentée de un à moins qu'elle ne montant).
soit déjà égale à 0. Si l'état du signal %I0.3 est un, le compteur 5. En cas de front montant aux deux entrées
sera remis zéro. L'état de signal de la sortie Q4.0 est 1 si C10 est de comptage, les deux fonctions sont exécutées
différent de zéro. et la valeur de comptage reste inchangée.
6. Si le compteur est mis à 1 et si le RLO = 1
aux entrées CU/CD, le compteur compte de la
même manière dans le cycle suivant, même si
13
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
aucun changement de front n’a eu lieu.
7. L'état du signal à la sortie Q est à 1
lorsque la valeur de comptage est supérieure à
0 ; il est à 0 lorsque la valeur de comptage est
égale à 0.
Nota: Il est recommandé d'utiliser un compteur à
un seul emplacement dans le programme (risque
d’erreurs de comptage).

II.2.12.2. Les compteurs IEC :

II.2.13. Les instructions de sauts :


Permettent de changer l'ordre d'exécution des réseaux du programme en langage à contacts. Les composants
utilisés sont les relais (saut si le RLO est 1) et (Saut si le RLO est nul). On peut utiliser
ces deux relais avec des conditions en langage à contacts pour obtenir des sauts conditionnels ou

inconditionnels. La destination du saut est définie en utilisant le composant LABEL à


l'intérieur duquel on spécifié l'étiquette associé au réseau en question.

Saut si RLO=1 Saut si RLO=0

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 :

Pour programmer une fonction sous


STEP7, on commence par insérer un
bloc vide. Ensuite on l'ouvre et on
configure son interface en utilisant sa
table de variable local ci-contre. Dans
cette table, on spécifie les entrées, les
sorties les entrées/sorties ainsi que les
variables temporaires et leurs types.

Ensuite, on écrit le programme de la


fonction dedans en utilisant l'un des
langages gérés par STEP7. A la fin, on
sauvegarde et on ferme le bloc de la
fonction.

Dans le programme principale, on insère


la fonction que nous avons programmée
comme n'importe quel autre bloc du
langage à contact et on lui assigne les
variables d'entrées et de sorties. La
fonction que nous avons configurée ci-
dessus aura la forme ci-contre dans le
programme principal.

Les variable {I124.0, MD40, I124.1,


MD255} sont les paramètres effectifs et
les variables {demarrage, Vleur_Init,
Jours, Succès} sont les paramètres
formels. Les paramètres formels servent
comme des paramètres génériques pour
15
L3 AUTOMATIQUE API Langage à contacts 2020
______________________________________________________________________________________
les paramètres réels.

II.2.14.2. Les blocs fonctionnels :


Un bloc fonctionnel est un bloc de code crée par l'utilisateur. Un bloc de données d'instance doit être associé
à chaque bloc fonctionnel. Ce bloc de données d'instances doit contenir les paramètres formels du bloc
fonctionnel ainsi que ses variables statiques. Ces données ne seront pas perdues à la fin de l'exécution du
bloc fonctionnel FB. Dans la table des variables locales d'un bloc fonctionnel, on aura une ligne
supplémentaire (qui précède les variables temporaires). Cette ligne (stat) permet de déclarer les variables
statiques qui seront enregistrées dan le bloc de données d'instance.
Noter aussi que les variables "in", "out" et "in_out" sont aussi enregistrées dans le bloc de données
d'instance. Seuls les variables temporaires ne sont pas enregistrés dans le bloc de données d'instance.

II.2.15. Les fonctions de mise à l'échelle (SCALE et UNSCALE) :


Ces fonctions permettent la mise à l'échelle des variables issues de et envoyées vers du procédé. On leur
donne la valeur de la variable à traiter, sa valeur maximale, sa valeur minimale et on spécifie si cette
variable peut changer de signe. Les deux blocs qui représentent les deux fonctions, leurs caractéristiques
ainsi que les expressions mathématiques qui régissent leurs fonctions sont données ci-après.

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

Das könnte Ihnen auch gefallen