Programmation avancée des API
Programmation Avancée Des automates
Programmables Industriels
Dans cette formation, nous allons aborder les notions développées de la programmation
structurée après avoir adapté une analyse fonctionnelle bien décortiquée pour chaque
problématique à résoudre. En revanche, cet aspect de programmation laissera entrevoir la
possibilité de booster davantage les connaissances acquises en termes de la programmation
avancée qui vont déboucher ostensiblement sur des applications palpables.
Matériels demandés :
- Stations de type S7-314C-2PN/2DP ainsi que les stations modulaires S7-1200/ S7-1500
- Moteur Asynchrone et porte coulissante sécurisée.
- PT100, Relais Statique, plaque chauffante.
- Moteur pas-à-pas Nima 17 avec son driver pour gérer les compteurs rapides.
- Système hydraulique (vérins à double effets, vérin à simple effet, distributeur compresseur,
magasin à quatre colonnes + photocellule)
- Pupitre opératoire pour la supervision.
Forum des nouvelles
1
Section 1 : Programmation structurée &
création des composants Exemple 1 : Porte
coulissante automatisée et sécurisée
1- Problématique :
On désir piloter une porte coulissante par un moteur asynchrone (M1) en aval avec un variateur
de fréquence de type MM420 et une station S7-314-2PN/DP de Siemens. En effet, la porte
s'ouvre automatiquement suite à la détection de la présence d'une personne via le capteur
photoélectrique (PHTC) et se ferme après avoir terminé un cycle complet incluant une
temporisation de 15 secondes. En pratique, l'ouverture s’effectuera à partir de l'état initial (Step1:
Door close) en grande vitesse jusqu'au capteur de position (Sw3) où le mouvement passera
systématiquement à vitesse modérée pour s'arrêter complètement en atteignant le capteur
(Sw4 : Door open). En l’absence de toute détection et après une temporisation adéquate de 15
secondes, la porte se rebrousse en grande vitesse au capteur (Sw2) où la fermeture se poursuit
à faible vitesse pour s'achever complètement en enfonçant le capteur (Sw1: position initiale).
2- Travail demandé :
Modélisation graphique et élaboration d’un croquet globale décrivant
le fonctionnement d’un tel système en utilisant le grafcet.
Configuration matérielle de la station en question ainsi que le
variateur de vitesse pour générer des fréquences fixes selon les
exigences imposées par la conception mécanique.
Confection d’un câblage professionnel entre les différentes parties de
la commande (API, Variateur, Moteur et le pupitre de commande HMI)
Implémentation finale en deux modes de fonctionnement en
l’occurrence manuel et automatique, en utilisant la notion de la
programmation structurée et avancée.
2
3- Présentation de l’équipement :
L’ensemble "Porte automatique sécurisée" est constitué de deux sous-ensembles (partie
commande et partie opérative), Il représente une porte de parking ou d’un garage avec ouverture
et fermeture commandées via un moteur électrique solidaire avec un variateur de vitesse et
l’ensemble doit être géré par un automate programmable industriel.
Partie commande :
Généralement, elle est constituée d’un coffret électrique industriel assurant le fonctionnement de
la porte. Il contient les organes de commande et de protections habituels (interrupteur général,
disjoncteur magnétothermique, automate programmable, variateur de vitesse, voyants de
signalisation, boutons de commande...). Cet ensemble est conçu pour fonctionner avec différents
modules ou automates programmables.
Partie opérative :
De sa part, elle représente un modèle de porte coulissante mettant en œuvre toutes les sécurités
de fonctionnement imposées par les normes en vigueur. Elle intègre outre le moteur, les capteurs
de position de la porte, les détections de passage, de sécurité anti-écrasement, un variateur de
vitesse MM420 pour piloter le moteur, des boutons et des voyants pour transmettre des
informations entre l’automatisme et l’utilisateur.
4- Objectifs éducatifs et finalités pédagogiques :
Dans cette réalisation nous allons adopter une méthodologie ascendante faisant intervenir la
notion de la programmation structurée portant sur le découplage de la partie combinatoire à la
partie séquentielle et consiste également à appréhender d’une manière holistique et explicite le
problème posé à partir d’un fondement théorique aussi bien développé que décortiqué pour
atteindre certains objectifs pédagogiques permettent la découverte des :
Automatismes (programmation List, Ladder et Grafcet) et par la suite l’apprentissage de la
programmation de fonctions modulaires plus avancées :
- Comptage / temporisation.
- Analyse séquentielle (Le grafcet).
- Les modes de fonctionnement (Automatique, Manuel)
- Le dialogue opérateur (HMI, Simatic Manager, Tia Portal V15, Wincc flexible et Advanced
RunTime).
- Le travail sur mots.
Il permet également d’étudier la technologie des composants installés :
- Détecteur photoélectrique.
- Détecteur de proximité
- Pupitre operateur numérique (Panel)
3
- Couplage Y-Δ d’un moteur asynchrone.
La "Porte automatique sécurisée" permet en revanche d’étudier et de respecter les règles de
sécurité et les protections des utilisateurs. Les manipulations sont effectuées sur un équipement
correspondant à la réalité quotidienne.
5- Ébauche préliminaire & solution suggérée :
Avant de se lancer dans la phase d’implémentation finale de la structure adoptée, Il est commode
d’énumérer les entrées/sorties pouvant être utilisées lors de la programmation des taches
spécifiques selon notre cahier des charges sus-indiqué.
Digital Inputs Digital Outputs
Start M20.0 In-Service M20.5
Stop M20.1 Automatic M20.6
Aut/Man M20.2 Manual M20.7
Validate M20.3 Door_state M30.0
Forward M30.5 Speed_State MW40
Reverse M30.6
Il est également indispensable de préciser le protocole de communication entre la station cible et
l’environnement de la supervision ainsi que le variateur MM420. Le tableau ci-dessous illustre
l’ensemble des paramètres nécessaires pour établir la communication entre les différents
organes de notre station.
MM420 Inputs Speed state HMI texte liste
DINT3 DINT2 DINT1 Codage Value(P1001-P1004)
4
0 0 0 0 0 Door is Stoped
0 0 1 8 -7Hz High Speed Left
0 1 0 16 -4Hz Low Speed Left
0 1 1 4 4Hz Low Speed Right
0 1 1 1 7Hz High Speed Right
Tout d’abord, la partie combinatoire sera confiée à une fonction Fc1 pour décrire convenable le
mode de fonctionnement du système automatisé. Pour ce faire, nous allons utiliser le langage
familier baptisé « Ladder » pour pouvoir bien cerner le problème à étudier et être en mesure de
vérifier le basculement entre les deux modes de
fonctionnement.
Après avoir créé le premier bloc Fc1 (Objet du composant relatif à la partie combinatoire) nous
nous focalusons sur la modélisation graphique en utilisant le langage habituel du grafcet pour
décrire la partie séquentielle en lui associant un bloc fonctionnel Fb1 où nous avons l'envie de le
définir comme étant le composant principal pouvant faire appel à la fonction précédente pour
assurer la cohérence entre les différentes tâches lorsqu'elles sont exécutées en temps réel dans
le bloc principal OB1.
5
7- Configuration matérielle :
La connexion réseau entre les organes constitutifs de notre station se fait à l'aide du profinet pour
assurer un trafic de communication souhaitable et plus stable lors de la commande du variateur
de vitesse qui entraînera à son tour un moteur asynchrone censé être mécaniquement solidaire
avec la porte coulissante.
6
8- Simulation
Avant de procéder à l’implémentation finale de cette architecture sur notre station cible, il est
commode de tester le bon déroulement de cette application dans un environnement convivial de
simulation en utilisant le Wincc Runtime advanced comme s’est indiqué sur la figure suivante :
Discussion et réflexionChat
J'espère que vous serez séduit par le support présenté et que vous serez
également en mesure d'y apporter une contribution positive notamment :
1- essayez de faire une traduction lucide du problème posé à partir du grafcet
vers le langage "Ladder" (contact) pour mieux appréhender l'aspect de la
programmation avancée.
2- de bien s'accointer et se familiariser avec la supervision (HMI) en utilisant le
Wincc flexible ou bien le Runtime advenced dans Tia portal.
Finally I remain at your disposal for further discussions.
Pour renforcer davantage vos connaissances, je vous
envoie la documentation nécessaire et indispensable
tout au long de votre parcours.
Documentations supplémentaires
7
Docs_AII_2020
[Link]
GRAPH_TIAPortal_V15_V1.0_en.pdf
MICROMASTER [Link]
Download folder
Forum sur la programmation de la porte coulissante
Vous pouvez laisser vos remarques et poser vos
questions dans ce Forum, je vous répondrai au fur et
à mesure .
Programmation Structurée et
Synchronisation HMI
Préambule :
Dans cette section, nous visons principalement à mettre en exergue les performances et les
avantages de la programmation avancée dans le domaine des automates industriels et
subséquemment à développer un plan de travail approprié qui prend en compte la maîtrise
complète du sujet à étudier ainsi que l'effort de conviction, qui est un facteur décisif pour traduire
convenablement la problématique rencontrée en concepts pouvant être incarnés par des
approches étroitement épluchées sous la forme des tâches interconnectées dans un souci de
remplir le rôle qui leur est confié et qui à leur tour révèlent des faits concrets et débouchent sur
des applications tangibles intiment liées au monde réel.
Introduction :
Afin de satisfaire les performances optimales d'une structure d'un programme avancée, il est
essentiel d'envisager de développer une méthodologie de recherche visant à découpler les
spécifications initiales du problème en plusieurs tâches tout en ayant recours à l'insertion des
blocs fonctionnels à l'instar des fonctions et des blocs de données pour faciliter leur mise en
œuvre sur la station cible et de contrôler leurs évolutions dans le bloc principal OB1.
8
Il est également primordial de garantir et d’assurer la synchronisation entre les deux types de
configurations dans l’environnement Simatic Manager or Tia Portal ainsi que l’outil de la
supervision HMI.
Application : Système de gestion des feux de
circulation
I- Problématique
Le problème à résoudre consiste à gérer l'encombrement de la circulation des véhicules d’un
carrefour (point d'intersection avec deux voies) via un automate programmable industriel bien
adapté. Pour ce faire, il est préconisé d'installer un système de gestion des feux tricolores
possédant deux modes de fonctionnement respectivement le mode "Normal" et le mode
"Clignotant"(Blinking). Ainsi, la sélection du mode s'effectue à l'aide d'un interrupteur Aut/Man,
où l'état logique "1" indique le choix du mode "Normal". Le système sera mis en service après
9
avoir appuyé sur le bouton poussoir "Start" suivi d'une validation du mode présélectionné tout en
mobilisant d'un autre bouton poussoir nommé "Validate". Il est à noter que le cycle de
fonctionnement en termes de temps alloué aux indicateurs Rouge, Jaune et Vert est laissé aux
utilisateurs pour les modifier à leur convenance. En revanche, le temps de clignotement sera
réglé à une seconde. De toute évidence, le bouton-poussoir d'arrêt nommé "Stop" sera utilisé
pour mettre le système hors service pour une éventuelle maintenance.
Figure 3 Vue générale des feux de circulation d'un point d'intersection.
II- Modélisation & Analyse fonctionnelle
Il nous semble primordial de diviser, en premier lieu, l'espace des variables mentionnées dans la
phase de description en variables d'entrées/sorties et d'essayer par la suite de proposer une
machine à états finis pouvant conduire à une programmation avancée selon le mode choisi et le
langage adopté pour cette démarche. La machine d'état (FSM) donne une vue holistique du
mécanisme de déroulement du système de gestion de manière explicite et conduit facilement à la
mise en œuvre du programme final. En outre le timing de la figure ci-dessous determine
strictement le cycle de fonctionnement ainsi que le temps alloué à chaque voyant de signalisation
pour les deux voies. Ensuite, en vertu de ce diagramme fonctionnel nous pouvons facilement
formuler les expressions logiques qui sont directement liées à chaque type des feux tricolores.
10
Figure 4. Pupitre de commande pour le système de gestion des feux de circulation
Figure 5. Le diagramme opérationnel de la machine à états finis (FSM mapping) pour le
contrôleur des feux de circulation.
11
III- Configuration & validation du programme
Notre préoccupation principale est basée sur le fait de créer un bloc fonctionnel réutilisable ayant
ses propres signaux nécessaires qui fera partie intégrante des paramètres du bloc qui sera
physiquement connecté à la liste des variables globales censées être répertoriées dans la table
des mnémoniques. Après avoir utilisé l'adressage symbolique, nous serons en mesure de
générer le programme utilisateur et de pouvoir charger et tester le bloc principal. Cet aspect de
programmation a pour vocation d'assurer entre autres :
1- Un large éventail et panoplie de commandes.
2- Une structure de programmation facilement assimilable apprenable.
3- Un éditeur de programme fonctionnant intuitivement conforme à Windows.
4- Des outils puissants pour les nouveaux arrivants et les amateurs ainsi que pour les
programmeurs chevronnés.
5- Un gain de temps et du coût lors de la phase d’implémentation.
12
Le programme détaillé est donné par le diagramme de réseaux en moyennant le langage «
Ladder » qui se prête bien à contrôler le fonctionnement du système qui a été amplement discuté
dans cette application.
13
14
15
Afin d'atteindre nos objectifs qui ont été assignés lors de la phase d'analyse fonctionnelle, nous
allons montrer la mise en service et le monitoring du système de gestion des feux de circulation
via la supervision (HMI ) en utilisant la variété de la galerie de Wincc Runtime advanced qui peut
s'appairer facilement avec Tia portal comme le montre la figure suivante.
IV Réalisation Pratique :
Pour ceux qui veulent s’intéresser à la réalisation pratique je mets à leur disposition deux circuits
additionnels pour mener à bien cette application. Donc il faut mobiliser outre l’alimentation de 24v
DC, les relais et le fameux Driver ULN2803A pour assurer d’une part la commande des relais tout
en évitant la naissance indésirable des effets de self (spikes) en collaboration avec les diodes
roues libres et d’autre part, il va établir une véritable interface entre la commande et la partie de
puissance du secteur 220V. De plus, des résistances de protection doivent être prévues en
fonction du choix de l'ampérage de l'alimentation à utiliser pour cette application.
16
I- Travail escompté :
Dans un souci de bien cerné la problématique sus-indiqué, On laisse le soin aux étudiants de
faire, en guise de travail à domicile, une traduction fidèle du programme illustré par les réseaux
exprimés en langage « Ladder » vers le langage évolué par le biais du langage « Graph ». Il leur
incombe également de refaire le volet HMI soit en moyennant Wincc flexible qui va de pair avec
Simatic Manager soit d’utiliser Wincc Runtime advanced qui s’accole bien avec Tia portal.
Finally I am looking forward to the students' replies for further discussion.
17
Chapitre III
Programmation Multitâches & Parallélisme
Préliminaires :
Tout au long du processus de développement des systèmes inhérents au contrôle avancé, les
ingénieurs font face à des défis tels que le temps de développement plus court, les exigences de
qualité et de flexibilité plus élevées et la réutilisation du code de contrôle. Étant donné que les
technologies et les approches classiques sont limitées par leur efficacité, de nouvelles approches
sont nécessaires.
Ce cours vise à apprendre à l’étudiant , à travers une application spécifique et bien ciblée, à
programmer en utilisant le langage Ladder et par la suite le langage Graph (Grafcet) dans
l'environnement Tia portal or Simatic Manager pour step 7. On va également réaliser l'interface
homme-machine « HMI » pour controller l'évolution du système faisant l'objet de cette
application. Mais comme vous le savez sans aucun doute, il existe plusieurs autres "paradigmes
» pour créer de la programmation avancée en se basant sur la notion de multitâches tout en
ayant recours à l’aspect du parallélisme, ce qui nous va conduire à programmer avec
compétence et aisance la problématique confrontée ainsi que de réduire considérablement la
complexité algorithmique et par conséquent rendre notre programme plus lucide et intiment
cohérent avec le contexte adopté pour cette application.
Au cours de cette présentation, l'étudiant sera confronté à des problèmes de programmation
réels qui peuvent être résolus sur n'importe quel contrôleur programmable (API) ou n'importe
quel autre système en temps réel. En espérant que ce support soit non seulement consistant et
cohérent en termes de la programmation avancée qui sera consacrée pour apprendre comment
diviser le cahier de charges initial en plusieurs tâches découplées pour en faciliter davantage leur
implémentation en temps réel, mais également que cette notion fasse partie de la bibliothèque de
référence technique personnelle de l’étudiant.
I. Cycle de fonctionnement & configuration
Les automates peuvent lire et écrire des signaux vers différents appareils via les modules d'E/S.
Les modules d'E/S peuvent être des cartes d'E/S simples ou des périphériques d'E/S
décentralisés complexes. Les périphériques d'entrée se présentent sous forme des capteurs, des
claviers et des commutateurs. Les dispositifs de sortie peuvent être des voyants de signalisation,
des solénoïdes, des contacteurs, de petits moteurs, des vérins pneumatiques ou hydrauliques.
Les API peuvent communiquer avec différents appareils intelligents tels que les contrôleurs de
robots, les variateurs de fréquence, les caméras, les serveurs de base de données, etc. Tous
ces appareils communiquent via différents types de bus de terrain.
I.1 scanning cycle (scrutation or balayage) :
Lorsque l'automate est mis en mode exécution, il exécute une étape d'initialisation. En l'absence
de problème, l'automate exécute autant de fois la séquence du cycle de balayage (scanning
cycle) . Le cycle de scrutation "scan" prend généralement quelques millisecondes. Il est à noter
que le cycle de scan comprend cinq étapes principales.
18
I.2 Balayage de l'entrée (Input scan):
L'état de tous les modules d'entrée est copié dans la zone de mémoire appelée table d'images
d'entrée. Cela évite les cas où une entrée peut avoir un changement dès le départ jusqu'à la fin
du programme.
I.3 Analyse du programme (Program scan):
Les données dans la zone de la mémoire image d'entrée sont appliquées au
programme utilisateur. Le programme utilisateur est exécuté et la zone de la mémoire image de
sortie est mise à jour.
I.4 Balayage de sortie( Output scan):
Les données, extraites de la zone image de sortie, sont envoyées à tous les modules de sortie
du système.
I.5 Entretien ménager( Housekeeping):
Il existe également d'autres étapes comme les vérifications des systèmes et la mise à jour des
valeurs actuelles du compteur interne et du temporisateur. En général, il s'agit de connecter et de
lier le système de contrôle avec son code de contrôle. L'objectif est d'utiliser une approche
centrée sur l'application, au lieu d'une approche classique centrée sur le dispositif. Enfin, nous
attribuons le matériel des systèmes de contrôle aux composants des applications, représentant le
code de contrôle au lieu de la procédure standard lorsqu'un utilisateur commence d'abord par
une configuration matérielle, puis écrit le code de chaque contrôleur dans la configuration
retenue. Nous devons représenter le système de contrôle (CPU), qui exécute le code de contrôle
et les composants de l'application ciblée et son comportement.
II- Exemple d’application :
Pour une meilleure illustration et explication, nous présentons l'aspect de la programmation
modulaire par l'exemple. Nous allons introduire toutes les notions sus-indiquées.
Considérons qu'il existe une station de remplissage simple (Bottle filling station) composée de
deux vannes digitales, de leurs relais de 24v DC, un réservoir de 100 litres de capacité, pupitres
de commande et convoyeur à bande de 11m de langueur. En plus, le convoyeur à bande est
doté d’un moteur approprié. Quatre boutons poussoirs seront mobilisés pour gérer le
fonctionnement de la station. Le bouton »Start" sert d'un élément de démarrage qui mettra le
processus en service ; le bouton "Reset" prend particulièrement soin de l'état de la bouteille en
cas de panne ou d'anomalie pouvant survenir lors de la phase de remplissage de cette dernière.
Le bouton "Reset" va permettre donc d'initialiser l'opération en cours pour éviter toute sorte de
blocage ou de plantage du programme de gestion. Il va donc de soi que le bouton "Stop" ?
19
mettra le système hors service pour une éventuelle maintenance. Quant au quatrième bouton qui
a pour mission d’interrompre l’exécution de la supervision HMI et de revenir vers l’environnement
de programmation pour pouvoir y apporter des modifications si le besoin se fait sentir.
En ce qui concerne le tapis roulant (conveyor belt) qui peut acheminer la bouteille ? à partir de la
zone d'approvisionnement vers la position de remplissage qui se trouve juste au milieu du
réservoir et sous la portée de la vanne 2 (Valve 2). A ce moment-là le moteur doit s'arrêter ainsi
que la vanne 1 (Valve 1) et après l'écoulement du temps de 3 seconds la vanne 2 s'ouvre pour
remplir la bouteille présente dont sa présence sera notifiée par un signal " Bottle_present".
Lorsque la quantité du liquide versé dans la bouteille atteint 10 Litres (Bottle_Value) un signal
"Bottle_Fill" indique la fin de l'opération du remplissage et par conséquent le moteur tourne de
nouveau pour amener la bouteille vers la zone de stock. Le cycle est terminé et le système va
répéter l'opération autant de fois d'une façon automatique.
Il est à noter que le débit des vannes (Valve 1) est d'environ 2L/s, par contre celui de la vanne 2
(Valve 2) est fixé à 1L/ s. en revanche, le convoyeur se déplace à une vitesse constante
d'environ 1m /s.
En ayant recours uniquement aux composants primitifs de l'environnement Tia portal tels que
Compteur, temporisations, Bascules SR, manipulation des mots... etc.) pour concrétiser,
façonner et bien confectionner cette application.
III. Modélisation & complexité algorithmique :
Tout d'abord, nous devons créer des modèles orientés objet représentant des parties générales
de la station de remplissage et implémenter leur code PLC pour décrire le comportement de
chaque tâche en interactions avec les autres tâches parallèles. Deuxièmement, nous créons
l'application particulière constituée d'une hiérarchie spécifique de chaque composant. Ensuite,
20
nous examinerons l’aspect de l'optimisation pour réduire considérablement la complexité
algorithmique et accélérer d’avantage les performances du système de contrôle.
III.1 Variables globales (PLC-Tags)
La meilleure façon de ne pas se tromper lors de l’implémentation des tâches particulière est de
veiller à bien lister, dans un tableau, l’ensemble des variables nécessaires pour faciliter la
description de chaque partie du programme. Le tableau suivant illustre la signification et
détermine l'intention de cette désignation.
PLC Tag Type Address Comments
H_displacement Int %MW40 Conveyor displacement
Reset Bool %M5.2 Reset counter after one cycle
bottle_Present Bool %M7.4 Bottle present indicator
Run Bool %M10.5 System in Run mode (In service)
Motor Bool %Q0.0 Motor for motion control
Start Bool %M10.0 Putting the system into service
Stop Bool %M10.1 Decommission the system
Tank_Low Bool %M7.0 Tank Low level indicator
Tank_High Bool %M7.1 Tank High Level indicator
Valve1 Bool %Q0.1 Valve 1 as a digital output
Tank_Value Int %MW20 Evolution of the tank value in liters
bottle_Fill Bool %M7.5 Bottle is Fill indicator
Valve2 Bool %Q0.2 Valve 2 as digital output
Bottle_Value Int %MW60 Evolution of the bottle value in liters
To_Stock Bool %M7.6 To stock indicator signal
Init_Bottle Bool %M7.3 Button for bottle value Reset
III.2 Gestion de la vanne 1 & remplissage du réservoir principal.
Le croquet global décrivant le fonctionnement de la station peut être divisé en trois tâches qui
seront bien développées pour répondre lucidement à la contrainte imposée par le cahier des
charges initial. Ainsi, le premier composant se réfère à la valve 1 (valve 1) dont le but est
d'assurer le remplissage du réservoir principal.
21
Il découle de cette représentation de la machine d'état un composant portant sur le langage
"Ladder" ayant pour vocation de corroborer le lien ? intime entre la description explicite et la
traduction fidèle de la tâche à réaliser pour satisfaire l'exigence demandée par le utilisateur.
22
23
III.3 Gestion de la vanne 2 & remplissage des bouteilles.
La deuxième tâche à réaliser concerne la valve 2 (valve 2) qui est dédiée au contrôle de
l'évolution de la quantité de liquide à mettre dans la bouteille ? dont le taux de remplissage est
fixé à 1L /s. Pour ce faire, un compteur cadencé à 1 seconde qui sera associé à un comparateur
pour garantir le bon fonctionnement de cette partie de l'application complète.
Ensuite, le programme correspondant est illustré par les deux réseaux suivants, exprimés en
langage "Ladder" pour effectuer cette tâche qui est parfaitement indispensable pour réduire de
manière significative la complexité algorithmique intrinsèque.
24
III.4 Gestion du tapis roulant (Conveyor Belt).
En tant que troisième composant, autrement dit la dernière tâche, s'occupe principalement du
mouvement du convoyeur qui assure le déplacement des bouteilles à partir de la zone
d’approvisionnement jusqu'au dépôt du produit dans la zone de stockage. Le mouvement du
tapis roulant est assuré par un moteur approprié. La figure ci-dessous montre le diagramme
fonctionnel se forme d’une machine d’état (FSM) pour aider à l’implémentation de cette partie.
Enfin, le programme relatif à cette partie est donné par les trois réseaux qui ont été construits en
utilisant le langage "Ladder" qui est bien adapté à cette situation.
25
Pour éviter toute répercussion fâcheuse lors de l'exécution du programme global, il est impératif
de prévoir une initialisation des variables connexes.
26
VI- Simulation & Validation du programme
Chapitre VI
Liaison des Variables API (Plc Tags) aux Faceplates Dynamiques
Jeudi 30/04/2020
Pr. Benouaret
I- Introduction :
Tout d'abord, permettez-moi de vous décrire la situation qui a conduit à la nécessité d'une façade
complètement dynamique(faceplate). Un étudiant pour finaliser son projet de fin d'étude m'a
confié un projet nécessitant une interface HMI permettant aux opérateurs d'ajouter, de supprimer
et de modifier à leur guise, des étapes dans une séquence définie par l'utilisateur. Chaque étape
de la séquence avait un type et plusieurs valeurs booléennes, entières et à virgule flottante (real)
que l'opérateur peut les manipuler pour modifier les valeurs désirées (setpoints) pour cette étape.
Étant donné que seuls certains des paramètres ont été utilisés dans chaque type d'étape et qu'il
y avait beaucoup de paramètres, nous avons décidé qu'il serait plus simple que l'interface
« HMI » affiche uniquement les paramètres pertinents pour le type d'étape sélectionné. La
solution dans telle situation consiste à créer une façade (faceplate) qui va interpréter
dynamiquement le mode de gestion d'une étape, réduisant ainsi le besoin de la logique classique
et qui va permettre également de relier d'innombrables des étiquettes individuelles (PLC
Tags)aux étapes que nous voulons affichées à l'écran.
27
II- Structure HMI
À un niveau élevé, On peut considérer la façade dynamique (faceplate) comme étant une boîte
de jonction qui connecte les objets "HMI" à différentes étiquettes API (plc Tags), selon le type
d'étape. Pour l'exemple suivant, le faceplate contient 21 objets, sept commutateurs, sept menus
déroulants et sept champs IO, qui sont tous liés à des "Tags internes" de la façade. Le faceplate
dispose également de 15 connexions d'interface, quatre booléennes, trois entières et huit réelles,
qui peuvent se connecter à des étiquettes API. Lorsque le bloc d'affichage reçoit un nouveau
mode, il extrait les valeurs des variables API et les place dans les objets "HMI" correspondants.
Lorsque la valeur d'un objet "HMI" est modifiée, le bloc d'affichage assure le transfert de cette
valeur vers la valeur correspondante (PLC Tags).
Le type d'étape est un entier 32 bits (il utilise les 28 bits inférieurs) que le faceplate interprète
comme sept "nibs" à quatre bits. Chaque "nib" contient un nombre de 0 à 15 qui correspond à un
espace vide ou à l'une des 15 connexions d'interface.
Ainsi, pour chaque zéro reçu par le faceplate, elle affichera un espace vide et chaque nombre
supérieur à zéro affichera un objet "HMI" correspondant au type de données de cette interface,
des champs d'E/S pour les réels, des listes déroulantes pour les entiers et des commutateurs
pour les booléens.
[Link], système de dosage & mixage dans un réservoir.
III.1 Introduction :
Pour l'un des besoins accrus de rapprocher l'université du monde réel et de permettre aux
étudiants de booster leurs connaissances en termes de programmation avancée, nous trouvons
indispensable de concevoir un système destiné à piloter une ligne de production spécifique. Il se
compose d'un système de dosage et de mélange utilisé, entre autres, pour les industries
pharmaceutique, agro-alimentaire, chimique, plastique ou cosmétique. Le système devait
prendre en charge le dosage et le mélange des matériaux appropriés, par exemple pour
fabriquer le gel hydroalcoolique pour attaquer COVID-19, nous aurons donc besoin de trois
produits essentiels en l’occurrence : 98% d'éthanol, 3% de peroxyde d'hydrogène, 98% de
glycérol et de l'eau distillée.
III-2 Problématique :
Notre souci majeur consiste à concevoir un système automatique dans lequel deux matériaux
sont collectés dans un réservoir principal où ils vont subir le traitement adéquat avant d’âtre
acheminer vers le système de remplissage et de conditionnement. Ainsi, tous les matériaux
doivent être mélangés jusqu'à ce qu'ils atteignent un point de température prédéfini.
28
Dans cet exemple, nous allons adopter la station S7-1200 ( Nous pouvons également utiliser
d'autres API ).
Deux capteurs de niveau sont utilisés pour détecter le niveau du matériau A et
du matériau B. Également un capteur de niveau inférieur utilisé pour détecter le
niveau inférieur (Empty).
Pour contrôler le niveau de ce système, une vanne à simple effet est utilisée qui a
deux états, soit complètement ouvert ou complètement fermée.
Il est notamment prévu de mélanger le matériau A et le matériau B dans un réservoir
principal. Nous pouvons utiliser des compteurs associés avec des temporisateurs de
type TON pour l’opération de remplissage ainsi que pour le drainage afin de contrôler
le débit d’entrée et de sortie qui estimé à 5L/s.
Le moteur agitateur peut fonctionner uniquement dans l’intervalle allant du
niveau matériau A jusqu’à le niveau du matériau B.
29
La plaque chauffante ne fonctionnera que lorsque le niveau du matériau A sera
dûment rempli et s'arrêtera lorsque le seuil de la température souhaitée ? sera atteint.
Une fois le mélange terminé avec succès, la vanne de sortie est actionnée pour
drainer le matériau mélangé. Il convient également de noter que la vanne de sortie
(valve 3) ne s'ouvre que lorsque la température demandée est confirmée.
Lorsque le processus de mélange est terminé, le cycle sera automatiquement
réactivé.
III-3 Modélisation & solution proposée
Comme d'habitude, il est préférable de commencer à identifier les variables nécessaires à la
création des composants relatifs à cette application. Nous adopterons l'aspect de la
programmation multitâche impliquant les notions de blocs utilisateurs (UDT) pour faciliter la
création du faceplate pour l'interface "HMI". Il convient de noter que le problème posé peut être
divisé en deux tâches parallèles (composants), à savoir :
1- La tâche principale sera confiée à la gestion du réservoir principal
2- La tâche secondaire sera consacrée au contrôle de la température à l'intérieur de l'enceinte du
réservoir (Teperature Task) qui sera gérée par le faceplate.
30
III-3-1 Température & circuit de conditionnement:
La première tâche à réaliser s'articule autour de la description du régulateur de la température.
En effet, il faut commencer par la modélisation de cette partie pour simplifier sa mise en œuvre
lors de la phase finale. Le régulateur choisi est de type ON/OFF avec hystérésis (Tout ou rien) ce
qui lui permet de se comporter comme un simple circuit à trois états : Set, Reset et mémorisation
pour la zone neutre.
31
Pour des raisons purement pratiques, il est commode de mettre à l'échelle l'ensemble des
paramètres requis à cet effet pour éviter tout type d'anomalies pouvant survenir pendant
l'exécution de cette tâche.
32
Le programme faisant référence à cette tâche est suffisamment détaillé sur le schéma à contacts
« Ladder » ci-dessous :
33
La figure suivante illustre la topologie du faceplate censé être responsable de la gestion de la
température pour cette application.
34
III-3-1 Réservoir principal & circuit de fonctionnement
Le deuxième organe faisant l’objet de la tâche principale porte essentiellement sur le contrôle du
réservoir. Pour assurer la cohérence entre les deux tâches, il faudrait envisager d'établir un
mécanisme de coordination tout en réduisant d’avantage la complexité algorithmique. Pour ce
faire, nous présenterons la machine à états finis à travers le circuit du diagramme ci-dessous,
permettant ainsi de modéliser cette entité qui représente le point angulaire dans cette structure.
Nous pouvons constater aisément la présence des données (variables) en provenance du
premier composant relatif à la tâche de gestion de la température. Cet aspect de découplage doit
assurer l’interaction, l'efficacité et l'effectivité entres les différentes tâches constituants le
programme principal.
35
Il découle de ce circuit ? un ensemble des réseaux basés sur le langage "Ladder" pour simplifier
la phase d'implémentation et aider à mieux comprendre ce segment du programme.
36
37
38
39
III-3-3 Simulation & validation du programme
Pour montrer la faisabilité de cet aspect de programmation, nous vous donnons cette illustration
qui présente le volet pratique pour rapprocher d’avantage le monde réel aux étudiants tout en les
incitant et les encourageant à entamer des applications qui peuvent déboucher sur des idées
innovantes et conduire à des conceptions tangibles. Ainsi, la figure ci-dessous montre l’efficacité,
l’effectivité et la cohérence de cette approche qui a été adoptée pour assurer la synchronisation
entre les tâches du programme et la supervision dans l’environnement convivial de Wincc
Runtime Advanced.
40
III-3-4 Travail demandé & Application pratique
Pour inculquer aux étudiants un savoir faire consistant et digne d'attention, d'attraction et de
toutes formes d'acceptation, On leur demande de réaliser les travaux suivants :
1- En guise de TD, essayez de donner un modèle de grafcet décrivant par précision l’évolution
de ce processus.
2- Créez une interface "HMI" en utilisant le principe des "Faceplates" vus précédemment pour
faciliter la supervision entre le programme et l’opérateur.
3- Donnez ainsi le programme détaillé (sous forme d’un TP) en ayant recours soit à "Simatic
Manager" accompagné par "Wincc flexible" or par le biais du Tia Portal associé avec "Wincc
Runtime Advanced" comme s'est indiqué sur la figure précédente.
4- Pour plus ample discussion j’attends avec impatience d'exprimer vos besoins en termes
d'assistance à la programmation avancée.
Enfin n’oubliez pas que la meilleure façon de ne pas cogner les doigts, en enfonçant un clou,
c’est de tenir le manche d’un marteau⚒ à deux mains.
41