Topic outline

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

     In this kind of training, we will deal with the notions of structured programming after having a well-developed functional analysis for each problem to be solved. On the other hand, this programming aspect   will suggest the possibility of boosting the acquired knowledge in terms of advanced programming which will openly lead to palpable applications.

     في هاته  الدعامة البيداغوجية، سوف نتعامل مع مفاهيم البرمجة المنظمة وذلك بعد تكييف التحليل الوظيفي المتطور الخاص بكل مشكلة المراد دراستها. من ناحية أخرى، فإن هذا الجانب من البرمجة سوف يقترح إمكانية زيادة المعرفة المكتسبة من حيث البرمجة المتقدمة التي ستؤدي علنا إلى تطبيقات واضحة وملموسة ان على المستوى النظري او العملي

    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.

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

     Porte coulissante automatisée

    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.

     

    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)

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

    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. Partie Combinatoire

    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.

    Modélisation Grafcet

    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.

    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 conviviale de simulation en utilisant le Wincc Runtime advanced comme s’est indiqué sur la figure suivante :

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

    In this section, we mainly aim to highlight the performance and advantages of advanced programming in the field of industrial controllers and subsequently to develop a suitable scheme that takes into account the complete understanding of the subject to be studied as well as the  convection effort, which is a decisive factor in properly translating the problem encountered into concepts that can be incarnate by well-developed approaches in terms of interconnected tasks in order to fulfill the role entrusted to them, which in turn reveals concrete facts and leads to tangible applications intimately linked to the real world.

    في هذه المداخلة نهدف بالاساس الى ابراز خصائص و مميزات البرمجة المتقدمة في مجال الاليات الصناعية ووضع خطة عمل تاخذ في الحسبان الاحاطة الشاملة بالموضوع محل الدراسة الى جانب قوة الطرح التي تعد عامل حاسم في ترجمة المشكلة الى مفاهيم قابلة للتجسيد من خلال مقاربات محكمة على شكل مهام مترابطة من اجل اداء الدور المنوط بها و الذي بدوره يؤول و يتكشف على حقائق ملموسة في الواقع المعيش.

    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.

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

    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.

    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.

    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.

    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ésirables  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.

    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.

    • Chapitre III

      Programmation Multitâches & Parallélisme

       Jeudi 23/04/2020                                                                                                       Pr.Benouaret

      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 home-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 multi-tâ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.

      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" ? 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, 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.

      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.

      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.

      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.

      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.

      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.

        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.

        III.Application, 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.

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

        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.

                         

        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.

        Le programme faisant référence à cette tâche est suffisamment détaillé sur le schéma à contacts « Ladder » ci-dessous :

        La figure suivante illustre la topologie du faceplate censé être responsable de la gestion de la température pour cette application.

        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.

        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.

        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.

        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.

        • Topic 5

          • Topic 6

            • Topic 7

              • Topic 8

                • Topic 9

                  • Topic 10