0% ont trouvé ce document utile (0 vote)
32 vues94 pages

Stagerprt

Le projet vise à développer un système SCADA intégré utilisant des réseaux de neurones artificiels pour surveiller les vibrations des moteurs électriques. En analysant les données historiques, cette approche permet de prédire les défaillances et d'optimiser les performances de maintenance. Cela se traduit par une amélioration des indicateurs clés tels que le temps moyen entre les pannes et la réduction des coûts de maintenance.

Transféré par

Abdelilah Oubi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues94 pages

Stagerprt

Le projet vise à développer un système SCADA intégré utilisant des réseaux de neurones artificiels pour surveiller les vibrations des moteurs électriques. En analysant les données historiques, cette approche permet de prédire les défaillances et d'optimiser les performances de maintenance. Cela se traduit par une amélioration des indicateurs clés tels que le temps moyen entre les pannes et la réduction des coûts de maintenance.

Transféré par

Abdelilah Oubi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Département Automatique, Electronique, Electrotechnique et

Electromécanique

Rapport PFA :

Système SCADA Intégré avec Réseaux de


Neurones Artificiels pour la Surveillance
Avancée des Vibrations des Machines
Équipées de Moteurs Électriques

Réalisé par :

MIZEB Abdelmouncif

OUBI Abdelilah

Soutenue devant :

Mr. MKHIDA

Année universitaire : 2024 / 2025


Remerciements

Tout d’abord, je remercie Allah le tout puissant de m’avoir donné le courage et la

patience nécessaires à mener ce travail à son terme.

Un remerciement particulier est adressé à notre encadrant, Monsieur BADDOU , dont

la disponibilité, la rigueur scientifique et la qualité de son accompagnement ont grande-

ment contribué à la réussite de notre travail. Nous apprécions sincèrement le temps qu’il

nous a consacré et les conseils précieux qu’il a partagés avec intérêt et compréhension.

Que les membres de jury trouvent, ici, l’expression de mes sincères remerciements pour

l’honneur qu’ils me font en prenant le temps de lire et d’évaluer ce travail.

Pour finir, je souhaite remercier toute personne ayant contribué de prés ou de loin à la

réalisation de ce travail.
Résumé

Le projet, intitulé ≪ Conception d’un système SCADA intégré à des réseaux de neu-

rones artificiels pour une analyse vibratoire avancée des moteurs électriques ≫ , vise à

développer une solution novatrice pour la surveillance des vibrations des moteurs électriques.

En exploitant les données historiques et les leçons tirées des pannes passées, nous utilisons

la puissance des réseaux de neurones en Deep Learning, une branche de l’intelligence

artificielle, pour anticiper les défaillances et prédire leur nature.

Cette méthode permet non seulement d’améliorer la précision des diagnostics, mais aussi

d’optimiser les indicateurs clés de performance KPIs en maintenance, tels que l’aug-

mentation du temps moyen entre les pannes MTBF, la réduction du temps moyen de

réparation MTTR, ainsi que la diminution des arrêts et des coûts de maintenance.
Table des matières

Remerciements 1

Résumé 2

Introduction Générale 1

I Présentation de l’organisme d’accueil et le Procédé de fabrication : 2

I.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

I.2 Présentation d’organisme d’accueil : . . . . . . . . . . . . . . . . . . . . . . 2

I.2.1 Historique de LafargeHolcim : . . . . . . . . . . . . . . . . . . . . . 2

I.2.2 La fusion de LafargeHolcim Maroc : . . . . . . . . . . . . . . . . . . 3

I.2.3 La fusion de LafargeHolcim Maroc : . . . . . . . . . . . . . . . . . . 4

I.2.4 Usine LafargeHolcim de Meknès : . . . . . . . . . . . . . . . . . . . 5

I.2.4.1 Présentation de LafargeHolcim l’usine de Meknès : . . . . 5

I.2.4.2 Localisation : . . . . . . . . . . . . . . . . . . . . . . . . . 5

I.2.4.3 Les dates historiques de l’entreprise : . . . . . . . . . . . 5

I.2.4.4 L’organigramme de LafargeHolcim Meknès : . . . . . . . . 6

I.3 Le processus de fabrication du ciment : . . . . . . . . . . . . . . . . . . . . 6

I.3.1 Présentation et généralité sur la fabrication du ciment : . . . . . . . 6

I.3.2 Les étapes de production du ciment : . . . . . . . . . . . . . . . . . 8

I.3.2.1 Extraction de la matière (la carrière) : . . . . . . . . . . . 8


I.3.2.2 Concassage : . . . . . . . . . . . . . . . . . . . . . . . . . 9

I.3.2.3 Pré-homogénéisation : . . . . . . . . . . . . . . . . . . . . 9

I.3.2.4 Broyage cru : . . . . . . . . . . . . . . . . . . . . . . . . . 10

I.3.2.5 Dépoussiérage : . . . . . . . . . . . . . . . . . . . . . . . 11

I.3.2.6 Homogénéisation : . . . . . . . . . . . . . . . . . . . . . . 11

I.3.2.7 Préchauffage : . . . . . . . . . . . . . . . . . . . . . . . . . 12

I.3.2.8 Cuisson de matière par le Four rotatif : . . . . . . . . . . . 12

I.3.2.9 Refroidissement . . . . . . . . . . . . . . . . . . . . . . . . 13

I.3.2.10 Broyeur Ciment : . . . . . . . . . . . . . . . . . . . . . . . 14

I.3.2.11 Ensachage et expédition : . . . . . . . . . . . . . . . . . . 15

I.4 Conclusion : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

II Contexte général du projet : 17

II.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

II.2 La Maintenance Prédictive dans l’Industrie 4.0 : . . . . . . . . . . . . . . 17

II.2.1 Les moteurs électriques dans la production de ciment : . . . . . . . 18

II.2.2 Principaux Défauts des Machines Équipées de Moteurs Électriques : 19

II.2.3 Importance de la Vibration comme Grandeur Physique : . . . . . . 19

II.2.4 Capteurs Utilisés pour la Surveillance des Vibrations sur les Ma-

chines à Moteurs Électriques : . . . . . . . . . . . . . . . . . . . . . 20

II.3 Théorie du capteur accéléromètre piézoélectrique : . . . . . . . . . . . . . . 21

II.3.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

II.3.2 Effet Piézoélectrique Direct : . . . . . . . . . . . . . . . . . . . . . . 22

II.3.2.1 Formulation Tensorielle : . . . . . . . . . . . . . . . . . . . 22

II.3.3 Relation Contrainte Mécanique et Déformation : . . . . . . . . . . . 23


II.3.4 Combinaison des Équations : . . . . . . . . . . . . . . . . . . . . . . 23

II.3.5 Génération de Charge : . . . . . . . . . . . . . . . . . . . . . . . . . 24

II.3.6 Application dans les Accéléromètres : . . . . . . . . . . . . . . . . . 24

II.4 Réseaux de Neurones Artificiels : . . . . . . . . . . . . . . . . . . . . . . . 25

II.4.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

II.4.2 Structure des Réseaux de Neurones Artificiels : . . . . . . . . . . . 26

II.4.3 Entraı̂nement des Réseaux de Neurones Artificiels : . . . . . . . . . 27

II.4.3.1 Calcul de l’Erreur : . . . . . . . . . . . . . . . . . . . . . . 27

II.4.3.2 Calcul du Gradient de la Fonction de Perte par Rapport

à la Sortie : . . . . . . . . . . . . . . . . . . . . . . . . . . 28

II.4.3.3 Calcul des Gradients pour les Couches Cachées : . . . . . 28

II.4.3.4 Mise à Jour des Poids et Biais : . . . . . . . . . . . . . . . 29

II.4.3.5 underfitting et overfitting : . . . . . . . . . . . . . . . . . . 29

II.5 Neurones Artificiels Récurrents (RNN) : . . . . . . . . . . . . . . . . . . . 31

II.5.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

II.5.2 Théorie des RNN : . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

II.5.2.1 Équations des RNN : . . . . . . . . . . . . . . . . . . . . . 32

II.5.3 Long Short-Term Memory (LSTM) : . . . . . . . . . . . . . . . . . 33

II.5.4 Intérêt des LSTM : . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

II.5.5 Conclusion : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

II.6 OPC-UA : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

II.6.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

II.6.2 Principe de fonctionnement : . . . . . . . . . . . . . . . . . . . . . 36

II.7 Conclusion : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
III Implémentation et création du modèle 38

III.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

III.2 Un modèle LSTM pour la détection d’anomalies : . . . . . . . . . . . . . . 38

III.2.1 Data : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

III.2.2 Création et entraı̂nement du modèle : . . . . . . . . . . . . . . . . . 39

III.2.3 Problèmes rencontrés avec cette approche : . . . . . . . . . . . . . . 41

III.3 Un modèle pour prédire la vibration (approche par séries temporelles) : . . 43

III.3.1 Data : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

III.3.2 Création et entraı̂nement du modèle : . . . . . . . . . . . . . . . . . 43

III.3.3 Chargement et prétraitement des données . . . . . . . . . . . . . . 43

III.3.4 Préparation des données pour l’entraı̂nement . . . . . . . . . . . . . 43

III.3.5 Construction du modèle . . . . . . . . . . . . . . . . . . . . . . . . 44

III.3.6 Entraı̂nement et évaluation . . . . . . . . . . . . . . . . . . . . . . 44

III.3.7 Prédictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

III.4 Un modèle pour prédire la durée restante avant la défaillance d’une machine : 45

III.4.1 Data : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

III.5 Création et entraı̂nement du modèle . . . . . . . . . . . . . . . . . . . . . . 46

III.5.1 Chargement et prétraitement des données . . . . . . . . . . . . . . 46

III.5.2 Division des données . . . . . . . . . . . . . . . . . . . . . . . . . . 46

III.5.3 Normalisation des données . . . . . . . . . . . . . . . . . . . . . . . 47

III.5.4 Construction du modèle de réseau de neurones . . . . . . . . . . . . 47

III.5.5 Entraı̂nement du modèle . . . . . . . . . . . . . . . . . . . . . . . . 47

III.5.6 Évaluation et prédiction . . . . . . . . . . . . . . . . . . . . . . . . 49

III.6 Implémentation en utilisant TIA Portal, OPC UA et Node-RED : . . . . . 49

III.6.1 Configuration de l’automate sur TIA Portal : . . . . . . . . . . . . 49


III.6.2 Simulation d’un capteur et utilisation du modèle comme client OPC

UA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

III.6.3 Création d’une page de supervision SCADA en utilisant Node-RED : 52

III.6.4 Dashbord : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

IV Conclusion : 55

V Annexe 1(Classification) : 57

VI Annexe 2 (prediction code) : 61

VII Annexe 3,4,5 (generating data with markov model) : 67

VII.1preprocessing : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

VII.2markov model : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

VIIIAnnexe 6 (model) : 73

IX Annexe 7(communication opcua) : 76


Table des figures

Figure 1 : Logo de LafargeHolcim. . . . . . . . . . . . . . . . . . . . . . . . . . 4

Figure 2 : L’organigramme de LafargeHolcim Meknès . . . . . . . . . . . . . . 6

Figure 3 : Les composants du ciment . . . . . . . . . . . . . . . . . . . . . . . . 7

Figure 4 : Processus de fabrication de ciment . . . . . . . . . . . . . . . . . . . 8

Figure 5 : la pré-homogénéisation . . . . . . . . . . . . . . . . . . . . . . . . . 10

Figure 6 : Broyeur cru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Figure 7 : Préchauffage (la Tour) . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Figure 8 : Le four rotatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Figure 9 : Le four rotatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Figure 10 : accéléromètre piézoélectrique . . . . . . . . . . . . . . . . . . . . . . 21

Figure 11 : Réseaux de Neurones Artificiels . . . . . . . . . . . . . . . . . . . . . 26

Figure 12 : RNNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Figure 13 : opcua logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Figure 14 : vibration data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Figure 15 : mae and loss while training . . . . . . . . . . . . . . . . . . . . . . . 44

Figure 16 : true and prediction values . . . . . . . . . . . . . . . . . . . . . . . . 45

Figure 17 : mae and loss while training . . . . . . . . . . . . . . . . . . . . . . . 48

Figure 18 : GPU acces on runpod . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Figure 19 : predictions for test data . . . . . . . . . . . . . . . . . . . . . . . . . 49


Figure 20 : server adress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Figure 21 : automate configuration . . . . . . . . . . . . . . . . . . . . . . . . . 50

Figure 22 : variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Figure 23 : Node-red flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Figure 24 : vibration reel et prediction en temps reel : . . . . . . . . . . . . . . . 53

Figure 25 : estimation du temps restant . . . . . . . . . . . . . . . . . . . . . . . 53

Figure 26 : estimation du temps restant . . . . . . . . . . . . . . . . . . . . . . 54


Introduction Générale

Introduction Générale

Dans le cadre de notre projet, nous avons eu l’opportunité de réaliser un stage de deux

mois au sein de l’usine LafargeHolcim à Meknès, un leader dans le secteur de la produc-

tion de ciment. Reconnue pour ses installations modernes et sa capacité à produire une

large gamme de ciments de haute qualité conformes aux normes internationales, l’usine de

Meknès incarne l’industrie 4.0, où les technologies avancées et les systèmes intelligents

sont essentiels pour optimiser les processus industriels.

La principale problématique de ce projet a été d’implémenter un système de sur-

veillance avancée des vibrations des moteurs électriques en utilisant Node-RED en

combinaison avec OPC UA pour créer une interface SCADA personnalisée. Ce système

permet de collecter en temps réel les données de vibrations via des capteurs installés sur

les équipements critiques. Ces données sont ensuite analysées avec des modèles de deep

learning en utilisant TensorFlow pour prédire la durée restante du fonctionnement nor-

mal de notre machine. Parallèlement, des réseaux de neurones en deep learning, tels que

les LSTM (Long Short-Term Memory), sont utilisés pour classifier précisément la nature

des pannes détectées.

PFA 1
Organisme d’accueil et Procédé de fabrication

Présentation de l’organisme d’accueil

et le Procédé de fabrication :

I.1 Introduction :

Le premier chapitre de ce rapport offre une vue d’ensemble de notre organisme d’ac-

cueil, LafargeHolcim à Meknès, ainsi que du processus de production de ciment. Nous

y exposerons également la problématique rencontrée au sein de LafargeHolcim Meknès,

et présenterons les grandes lignes de notre projet. Pour conclure, nous détaillerons les

objectifs de notre étude ainsi que la méthodologie que nous adopterons pour traiter cette

problématique.

I.2 Présentation d’organisme d’accueil :

I.2.1 Historique de LafargeHolcim :

En 1912, le ciment a commencé à être utilisé au Maroc, initialement pour de pe-

tites réparations, puis pour des travaux de grande envergure à Casablanca. Par exemple,

lors de la construction du port de Casablanca, une importante quantité de ciment a été

PFA 2
Organisme d’accueil et Procédé de fabrication

nécessaire, et celui-ci a dû être importé.

En 1913, la décision fut prise de construire la première usine de ciment à Casablanca, avec

une capacité de production de 10 000 tonnes par an. Le 1er juin 1995, ≪ Lafarge Maroc

≫ a vu le jour grâce à un accord entre la Société Nationale d’Investissement (SNI) et

Lafarge, créant une société détenue à 50% par chaque partie. Par la suite, l’ONA a acquis

la SNI, partageant ainsi la société à parts égales entre Lafarge et l’ONA. Ce partenariat

a renforcé la solidité financière de l’entreprise.

En 2016, la fusion entre Lafarge Ciments et Holcim Maroc a donné naissance à ≪ Lafar-

geHolcim Maroc ≫, positionnant l’entité comme leader national des matériaux de construc-

tion. Cette fusion a marqué la plus grande opération financière à la bourse de Casablanca,

avec une valeur de 9,1 milliards de dirhams. Aujourd’hui, ≪ LafargeHolcim Maroc ≫ do-

mine le marché, avec 85% de ses ventes provenant de la production de ciment. Depuis

1928, l’entreprise est active au Maroc dans divers domaines : ciment, granulats, béton,

plâtre, chaux et mortiers.

I.2.2 La fusion de LafargeHolcim Maroc :

Le 7 avril 2014, HOLCIM et Lafarge ont annoncé leur intention de fusionner au taux

d’une action HOLCIM pour une action Lafarge. Cette fusion a nécessité des désinvestissements

pour permettre la fusion. En mars 2015, suite à des pressions des actionnaires d’HOL-

CIM, de nouvelles exigences ont été formulées pour la fusion, incluant une nouvelle parité

d’échange ( 9 actions HOLCIM pour 10 actions Lafarge) et un nouveau président pour le

nouvel ensemble.

Le 10 juillet 2015, la fusion entre Lafarge et Holcim est devenue effective, avec des chan-

gements par rapport au projet initial, notamment une parité d’échange favorable aux

PFA 3
Organisme d’accueil et Procédé de fabrication

actionnaires d’HOLCIM et le choix de la Suisse comme siège du nouveau groupe.

I.2.3 La fusion de LafargeHolcim Maroc :

Le 7 avril 2014, HOLCIM et Lafarge ont annoncé leur intention de fusionner au taux

d’une action HOLCIM pour une action Lafarge. Cette fusion a nécessité des désinvestissements

pour permettre la fusion. En mars 2015, suite à des pressions des actionnaires d’HOL-

CIM, de nouvelles exigences ont été formulées pour la fusion, incluant une nouvelle parité

d’échange ( 9 actions HOLCIM pour 10 actions Lafarge) et un nouveau président pour le

nouvel ensemble.

Le 10 juillet 2015, la fusion entre Lafarge et Holcim est devenue effective, avec des

changements par rapport au projet initial, notamment une parité d’échange favorable aux

actionnaires d’HOLCIM et le choix de la Suisse comme siège du nouveau groupe. Le nouvel

ensemble a été officiellement lancé le 15 juillet 2015 sous le nom de ”LAFARGEHOLCIM”.

En juillet 2016, des désinvestissements ont été annoncés, notammentla vente des activités

en Inde et au Viêt Nam.

Figure 1 – Logo de LafargeHolcim.

PFA 4
Organisme d’accueil et Procédé de fabrication

I.2.4 Usine LafargeHolcim de Meknès :

I.2.4.1 Présentation de LafargeHolcim l’usine de Meknès :

L’usine de Meknès est la 2ème cimenterie, en termes de capacités, du groupeLafarge-

Holcim Maroc. Elle y occupe une position majeure grâce à sa situation géographique. Le

plateau de Meknès se présente comme étant un carrefour de routes entre le Moyen Atlas

au Sud et la plaine du Sebou et le Gharb au Nord et une zone de transition entre la plaine

du Saı̈s, la ville de Fès et l’Oriental à l’Est et la région de Rabat à l’Ouest .

I.2.4.2 Localisation :

La cimenterie LafargeHolcim Maroc -usine de Meknès est située au Nord-Est de la

ville de Meknès à proximité de commune d’Ouislane et de la route nationale de Meknès

et Fès .

I.2.4.3 Les dates historiques de l’entreprise :

Les dates clés :

— 1953 : Démarrage du premier four, en voie humide, 400t j ;

— 1971 : Extension des capacités avec l’installation d’un nouveau four de 650t/j et

augmentation de la capacité broyage ciment 650000t ;

— 1978 : Nouvelle extension du broyage ciment ;

— 1985 : Conversion du four en voie sèche avec l’installation d’un mini précalcinateur ;

— 1993 : Nouvelle extension avec démarrage d’une seconde ligne de cuisson d’une

capacité de 1200t/j de clinker ;

— 1998 : Modification du précalcinateur du premier four ;

— 2001 : Installation d’un nouveau broyeur ciment portant la capacité de l’usine à

PFA 5
Organisme d’accueil et Procédé de fabrication

1750000t ;

— 2002 : Certification ISO 14001 ;

— 2003 : Construction du silo n°7 et ensacheuse Haver 3 ;

— 2004 : Début d’utilisation des pneus au deuxième four comme combustible de

substitution. 2005 : Certification ISO 9001 ;

— 2006 : Implantation du filtre hybride au deuxième four ;

— 2008 : Remplacement du refroidisseur du premier four et augmentation du débit à

(1900 t/j).

I.2.4.4 L’organigramme de LafargeHolcim Meknès :

Figure 2 – L’organigramme de LafargeHolcim Meknès

I.3 Le processus de fabrication du ciment :

I.3.1 Présentation et généralité sur la fabrication du ciment :

La fabrication du ciment est un procédé industriel complexe qui nécessite une exper-

tise technique approfondie et une maı̂trise des technologies de production avancées. Ce

PFA 6
Organisme d’accueil et Procédé de fabrication

processus implique des contrôles qualité rigoureux et continus pour assurer la conformité

du produit final aux normes établies. En tant que liant hydraulique, le ciment est une

poudre inorganique qui, mélangée à de l’eau, forme une pâte capable de durcir suite à des

réactions d’hydratation.

Ce durcissement se poursuit même sous l’eau, permettant au ciment de maintenir sa

résistance et sa stabilité structurelle dans des conditions variées. Typiquement, le ciment

est produit par la cuisson à environ 1450 °C de mélanges soigneusement proportionnés de

calcaire, d’argile et de minerai de fer dans un four rotatif. Le produit de cette cuisson, le

clinker, est ensuite broyé très finement et mélangé avec une petite quantité de gypse pour

produire le ciment Portland, largement utilisé dans le secteur de la construction pour ses

excellentes propriétés mécaniques et sa durabilité.

Figure 3 – Les composants du ciment

PFA 7
Organisme d’accueil et Procédé de fabrication

I.3.2 Les étapes de production du ciment :

Figure 4 – Processus de fabrication de ciment

I.3.2.1 Extraction de la matière (la carrière) :

La carrière en cimenterie fournit les matières premières nécessaires à la fabrication

du ciment. Celui-ci est principalement composé de carbonates de calcium, d’alumine, de

silice et d’oxyde de fer, présents dans des matériaux tels que le calcaire, les argiles, les

marnes, les schistes, le minerai de fer et le sable. Le calcaire, extrait à proximité de l’usine,

constitue la matière première principale, tandis que les argiles et les autres matériaux sont

également extraits localement. Les matières de correction comme le minerai de fer et le

sable sont obtenus à partir de carrières plus éloignées ou de fournisseurs externes. Pour

Lafarge Meknès, deux carrières principales sont exploitées : une à 5 km de l’usine sur

150 hectares, et une autre à 1 km sur 50 hectares, assurant ainsi un approvisionnement

adéquat pour la production de ciment.

PFA 8
Organisme d’accueil et Procédé de fabrication

I.3.2.2 Concassage :

L’atelier de concassage, situé à seulement 50 mètres de la carrière de calcaire, joue

un rôle clé dans le processus de fabrication du ciment en préparant les matériaux pour

les étapes suivantes. Il est équipé d’un concasseur à double rotor, idéal pour traiter des

matériaux cassables ou semi-durs. Ce concasseur robuste a une capacité de traitement

impressionnante, capable de gérer des blocs allant jusqu’à 1,3 mètre de dimension, avec

un débit maximal de 1500 tonnes par heure.

La granulométrie des produits à la sortie de ce concasseur est remarquablement uniforme,

avec 99% des matériaux mesurant moins de 100 mm. Cette uniformité est cruciale pour

garantir la qualité et la consistance du ciment fini. En outre, l’atelier est équipé d’un

système de dépoussiérage efficace grâce à un filtre à manches.

Ce système ne se contente pas de minimiser l’émission de poussières, il permet également la

récupération des particules très fines, qui sont réintroduites dans le circuit de production.

Cette récupération non seulement augmente la productivité, mais contribue également à

réduire les nuisances environnementales, offrant ainsi un environnement de travail plus

sain pour le personnel et une efficacité accrue pour l’installation.

I.3.2.3 Pré-homogénéisation :

Cette étape vise à garantir la qualité et la stabilité du mélange de matières premières

avant leur introduction dans le broyeur. Après le concassage initial, la pierre concassée

est acheminée vers le dispositif de pré-homogénéisation polaire à chevrons par un trans-

porteur, communément appelé carboduc. Toutefois, une partie des pierres extraites des

carrières est dirigée vers une tour d’échantillonnage pour des contrôles de qualité.

L’usine dispose de deux dispositifs de pré-homogénéisation, chacun ayant une capacité de

PFA 9
Organisme d’accueil et Procédé de fabrication

18 000 tonnes. Leur rôle principal est de réaliser une première homogénéisation du cru en

formant deux tas de 18 000 tonnes chacun.

Cette opération permet de garantir une composition uniforme du mélange, essentielle

pour obtenir des performances constantes du ciment final. Une fois la pré-homogénéisation

achevée, le mélange de matières premières est dirigé vers le broyeur, où il sera finement

broyé pour former la poudre de cru.

Figure 5 – la pré-homogénéisation

I.3.2.4 Broyage cru :

Au cours de cette phase, la matière première, désignée sous le terme ”cru” car elle

n’a pas encore subi de cuisson, subit des transformations fondamentales. Tout d’abord, le

cru est acheminé vers un doseur afin d’ajuster sa composition en y ajoutant des schistes,

du minerai de fer et du calcaire pour en corriger les proportions. Par la suite, ce mélange

corrigé est introduit dans deux broyeurs verticaux, BC1, tous deux de type Loesche LM

27 à trois galets.

Ces broyeurs fonctionnent à une pression de marche de 75 bars et sont essentiels pour

réduire le cru en une poudre fine. Un ventilateur de tirage, situé à proximité, attire la

matière broyée vers le haut du dispositif, où elle est ensuite séchée par les gaz chauds

PFA 10
Organisme d’accueil et Procédé de fabrication

provenant de la tour E.V.S. La partie supérieure des broyeurs est équipée d’un séparateur

dynamique, qui agit comme une cage grillagée rotative.

Ce dispositif permet de séparer les grosses particules de matière, les obligeant à retomber

pour être broyées à nouveau, assurant ainsi un broyage optimal et une granulométrie

uniforme du produit final.

Figure 6 – Broyeur cru

I.3.2.5 Dépoussiérage :

Le dépoussiérage est une étape cruciale pour garantir un environnement de travail sûr

et respectueux de l’environnement. Le transport de la farine de cru par des aéroglisseurs

peut engendrer des émissions de poussières, présentant ainsi des risques pour la santé des

travailleurs et l’environnement. Pour maı̂triser ces émissions, un système de dépoussiérage

est mis en place, utilisant des filtres à manches ou des électrofiltres.

I.3.2.6 Homogénéisation :

La farine produite est transportée par des chaı̂nes vers un élévateur à godets et bandes,

puis stockée dans un silo d’homogénéisation. Le remplissage du silo, assuré par un pot

de distribution fluidisé et quatre aéroglisseurs, garantit une répartition uniforme de la

PFA 11
Organisme d’accueil et Procédé de fabrication

matière, optimisant ainsi l’homogénéisation à la sortie du silo. La cuisson comprend toutes

les étapes de transformation chimique de la farine crue en clinker.

I.3.2.7 Préchauffage :

Le préchauffage permet essentiellement de préparer la farine du point de vue chimique

et thermique. Cette préparation consiste à sécher, déshydrater et décarbonater partielle-

ment la matière crue en réutilisant une partie de l’énergie calorifique évacuée par les gaz

du four.

Quelque soient les technologies utilisées (préchauffeurs à cyclones, grilles...), les préchauffeurs

améliorent donc le rendement thermique global de l’installation de cuisson. La température

dans le sommet de la tour peut atteindre 300°C, et au niveau de la chambre de mélange

la température est d’une moyenne de 1000°[Link] méthode s’appelle récupération de

chaleur dans le cadre de l’efficacité énergétique de combustion.

Figure 7 – Préchauffage (la Tour)

I.3.2.8 Cuisson de matière par le Four rotatif :

La cuisson s’effectue selon le procédé voie sèche intégrale. La ligne de cuisson est

constituée de deux tours de préchauffage à cinq étages de cyclones chacune, ainsi d’un

pré-calcinateur et un four rotatif de 3,8 m de diamètre et de 90 m de longueur, incliné

PFA 12
Organisme d’accueil et Procédé de fabrication

par 3° et dont la vitesse de rotation peut atteindre 5,2 tr/min.

A la sortie de la tour, la farine arrive dans le four où s’effectue l’étape la plus importante

de sa transformation : la clinkérisation qui commence de 1200° à 1450°, l’alimentation en

farine est située à l’extrémité opposée de brûleur.

La matière sortant du four est le clinker, elle se présente sous forme des grains gris foncé,

arrondis à surface irrégulière et dont le diamètre peut aller jusqu’à 3cm.

Figure 8 – Le four rotatif

I.3.2.9 Refroidissement

Le refroidissement du clinker assure le durcissement adéquat du clinker pour obte-

nir une structure minéralogique et des dimensions cristallines favorables. Ils contribuent

également à abaisser la température du clinker afin de faciliter sa manipulation et son

stockage. Plusieurs types de refroidisseurs sont utilisés, tels que les refroidisseurs à grilles,

rotatifs ou planétaires. L’air chaud provenant de la première grille est réutilisé dans le

four pour la combustion du coke de pétrole, tandis qu’une partie est dirigée vers le pré-

calcinateur. Les gaz issus de la deuxième grille servent au séchage dans les broyeurs de

matières premières et de combustibles. Le reste des gaz est refroidi dans un échangeur

PFA 13
Organisme d’accueil et Procédé de fabrication

air-air, filtré par un dépoussiéreur à manches, puis évacué dans l’atmosphère par la che-

minée.

Le clinker produit dans le four est ensuite entreposé dans un silo en béton d’une capacité

de 60 000 tonnes, équipé de quatre casques d’extraction et d’un transporteur à godets

et à chaı̂nes. Ce stockage présente deux avantages majeurs : il assure une autonomie de

fonctionnement à l’atelier de broyage de ciment en cas d’arrêt imprévu du four, tout en

préservant le clinker des altérations physico-chimiques potentielles résultant d’un stockage

prolongé à l’air libre.

I.3.2.10 Broyeur Ciment :

Après son refroidissement, le clinker se présente sous forme de nodules gris foncé

d’environ 3 cm de diamètre. Pour la fabrication du ciment, le clinker est introduit dans un

broyeur vertical ayant une capacité de 115 tonnes par heure. Selon les exigences de qualité

du ciment désiré et conformément aux normes marocaines, des matériaux supplémentaires

tels que le gypse, qui agit comme régulateur de prise, le calcaire, la pouzzolane et les

cendres volantes, peuvent être ajoutés en proportions définies.

Le ciment obtenu est ensuite transporté à l’aide d’élévateurs à bandes et à godets avant

d’être stocké dans des silos en béton. Ces silos alimentent ensuite le système d’expédition

du ciment en vrac et les installations d’ensachage.

PFA 14
Organisme d’accueil et Procédé de fabrication

Figure 9 – Le four rotatif

I.3.2.11 Ensachage et expédition :

Pour l’ensachage du ciment, on utilise un procédé de fluidisation avec des suppresseurs

installés au niveau des silos de stockage. Une fois ensaché, le ciment est transporté par des

aéroglisseurs et des élévateurs à godets, puis il passe par des cribles pour éliminer les corps

étrangers. L’installation d’ensachage est équipée de trois ensacheuses automatiques. En ce

qui concerne l’expédition, les différents types de ciment sont conditionnés en sacs de 50 kg

ou en vrac, puis transportés soit par route. Le chargement des camions en sacs peut être

effectué soit par palettiseur, manuellement ou à l’aide des bras robotisent CARICAMATS.

PFA 15
Organisme d’accueil et Procédé de fabrication

I.4 Conclusion :

En résumé, le processus de fabrication du ciment est un enchaı̂nement rigoureux

d’étapes cruciales allant de l’extraction des matières premières à l’expédition du pro-

duit fini. Chaque phase, du concassage et de la pré-homogénéisation à la cuisson et au

broyage, joue un rôle clé dans l’assurance de la qualité et de la performance du ciment.

L’efficacité de ces étapes est optimisée grâce à des technologies avancées et à des systèmes

de contrôle sophistiqués, garantissant une production de haute qualité tout en minimisant

les impacts environnementaux. Cette approche intégrée permet d’obtenir un ciment de

qualité constante, essentiel pour répondre aux besoins de construction moderne.

PFA 16
Contexte général du projet

Contexte général du projet :

II.1 Introduction :

LafargeHolcim, leader mondial dans le secteur des matériaux de construction, embrasse

pleinement la transformation numérique apportée par l’Industrie 4.0. Cette transition

vers la digitalisation permet d’optimiser les processus de production, de réduire les coûts

de maintenance et de renforcer la compétitivité. En intégrant des technologies avancées

comme l’interconnexion des machines, l’analyse de données et l’intelligence artificielle,

LafargeHolcim modernise ses opérations pour rester à l’avant-garde de l’innovation et

garantir une efficacité accrue.

II.2 La Maintenance Prédictive dans l’Industrie 4.0 :

Dans le contexte de l’Industrie 4.0, la maintenance prédictive est essentielle pour op-

timiser les performances industrielles. En tirant parti de technologies telles que l’Internet

des objets (IoT), le Big Data et l’intelligence artificielle (IA), elle permet de prévoir les

pannes et de réduire les interruptions imprévues des lignes de production. Des capteurs ins-

tallés sur les équipements recueillent et analysent des données en temps réel pour détecter

PFA 17
Contexte général du projet

les signes avant-coureurs de défaillances. Cette approche proactive aide les entreprises à

planifier les interventions à l’avance, à optimiser les ressources et à améliorer la fiabilité

opérationnelle. En adoptant la maintenance prédictive, les entreprises parviennent ainsi

à diminuer les coûts, à minimiser les arrêts non planifiés et à accroı̂tre l’efficacité globale

de leurs opérations.

II.2.1 Les moteurs électriques dans la production de ciment :

Dans l’industrie cimentière, les moteurs électriques sont essentiels à plusieurs étapes

clés du processus de production, depuis la préparation des matières premières jusqu’à la

mouture finale du ciment. Ils garantissent le bon fonctionnement des machines suivantes :

— Broyeurs à cru : réduisent les matières premières en poudre fine avant la cuisson.

— Broyeurs à ciment : transforment le clinker en ciment fin.

— Fours rotatifs : chauffent les matières premières pour produire le clinker.

— Refroidisseurs de clinker : refroidissent le clinker après sa sortie du four.

— Concasseurs : broient les matières premières et granulats.

— Ventilateurs : assurent la circulation de l’air dans le four et les processus de com-

bustion.

— Convoyeurs : transportent les matières à différentes étapes de la production.

— Pompes : gèrent la circulation des fluides comme l’eau et les additifs.

— Compresseurs : fournissent de l’air comprimé pour les systèmes pneumatiques.

Ces moteurs sont cruciaux pour maintenir une production fluide et continue tout au

long du processus de fabrication du ciment.

PFA 18
Contexte général du projet

II.2.2 Principaux Défauts des Machines Équipées de Moteurs

Électriques :

Les machines équipées de moteurs électriques peuvent rencontrer divers défauts qui af-

fectent leur performance et leur fiabilité. Parmi les problèmes les plus courants, on trouve

les déséquilibres de charge, qui peuvent provoquer des vibrations excessives et une usure

prématurée des composants. Les défaillances d’isolement sont également préoccupantes,

car elles peuvent entraı̂ner des courts-circuits ou des décharges électriques, compromet-

tant ainsi la sécurité de l’équipement. La surchauffe, souvent due à un refroidissement

insuffisant ou à une surcharge, peut endommager les enroulements du moteur et réduire

sa durée de vie. D’autres problèmes incluent les défaillances mécaniques telles que les rou-

lements usés ou les alignements incorrects, qui peuvent provoquer des bruits anormaux

et une diminution de l’efficacité. Enfin, les problèmes électriques comme les fluctuations

de tension ou les défauts dans les circuits de commande peuvent également entraı̂ner

des performances erratiques et des arrêts imprévus. Une surveillance proactive et une

maintenance régulière sont essentielles pour détecter et corriger ces défauts avant qu’ils

n’affectent gravement les opérations des machines.

II.2.3 Importance de la Vibration comme Grandeur Physique :

La vibration est une grandeur physique cruciale pour évaluer l’état de fonctionne-

ment des machines. Elle fournit des informations précieuses sur la santé mécanique de

l’équipement en révélant des anomalies qui pourraient ne pas être immédiatement visibles.

En surveillant la vibration, il est possible de détecter des déséquilibres, des désalignements,

des défauts de roulements ou des problèmes de lubrification avant qu’ils ne provoquent des

défaillances majeures. Les variations dans les fréquences et les amplitudes de la vibration

PFA 19
Contexte général du projet

permettent également d’identifier des conditions de fonctionnement anormales, telles que

les surcharges ou les défauts dans les composants internes. En analysant les spectres de

vibration, les ingénieurs peuvent diagnostiquer la source des problèmes avec une précision

accrue, facilitant ainsi des interventions ciblées et une maintenance préventive efficace.

Ainsi, la surveillance de la vibration est essentielle pour maintenir la fiabilité et la per-

formance des machines, minimiser les arrêts imprévus et prolonger la durée de vie des

équipements.

II.2.4 Capteurs Utilisés pour la Surveillance des Vibrations sur

les Machines à Moteurs Électriques :

Pour la surveillance des vibrations des machines à moteurs électriques, plusieurs types

de capteurs sont couramment utilisés.

Les capteurs piézoélectriques, tels que les accéléromètres piézoélectriques, sont parti-

culièrement populaires en raison de leur haute sensibilité et de leur large plage de fréquence.

Ces capteurs convertissent les vibrations mécaniques en signaux électriques en utilisant

l’effet piézoélectrique, ce qui permet de mesurer avec précision les amplitudes et les

fréquences des vibrations.

Les capteurs de vitesse, souvent utilisés pour des applications à basse fréquence, mesurent

la vitesse de déplacement des vibrations et sont utiles pour détecter les défauts dans les

roulements et les désalignements.

Les capteurs de déplacement, quant à eux, mesurent le déplacement direct des pièces en

vibration et sont précieux pour des analyses détaillées des mouvements oscillatoires.

PFA 20
Contexte général du projet

II.3 Théorie du capteur accéléromètre piézoélectrique :

II.3.1 Introduction :

Les accéléromètres piézoélectriques sont des dispositifs de mesure essentiels utilisés

pour détecter et quantifier les accélérations dans divers contextes industriels, scientifiques

et technologiques. Leur fonctionnement repose sur le phénomène piézoélectrique, une pro-

priété de certains matériaux qui génèrent une charge électrique lorsqu’ils sont soumis à

une contrainte mécanique.

Figure 10 – accéléromètre piézoélectrique

PFA 21
Contexte général du projet

II.3.2 Effet Piézoélectrique Direct :

L’effet piézoélectrique direct est le phénomène par lequel certains matériaux génèrent

une charge électrique en réponse à une contrainte mécanique. C’est le principe de base

derrière les capteurs piézoélectriques, y compris les accéléromètres.

II.3.2.1 Formulation Tensorielle :

En utilisant les tenseurs, la relation entre le déplacement électrique D et la contrainte

mécanique T est donnée par :

Di = dijk Tjk (II.1)

Où :

— Di est la composante du vecteur de déplacement électrique dans la direction i.

— dijk est le tenseur de coefficient piézoélectrique, un tenseur d’ordre trois qui décrit

comment la contrainte dans la direction j −k affecte le déplacement électrique dans

la direction i.

— Tjk est la composante du tenseur de contrainte mécanique dans les directions j et

k.

PFA 22
Contexte général du projet

II.3.3 Relation Contrainte Mécanique et Déformation :

La contrainte mécanique T est liée à la déformation mécanique S par le tenseur de

rigidité élastique c. Cette relation est donnée par :

Tij = cijkl Skl (II.2)

Où :

— Tij est la composante du tenseur de contrainte dans les directions i et j.

— cijkl est le tenseur de rigidité élastique, un tenseur d’ordre quatre qui décrit com-

ment la déformation dans différentes directions entraı̂ne la contrainte.

— Skl est la composante du tenseur de déformation dans les directions k et l.

II.3.4 Combinaison des Équations :

Pour trouver le déplacement électrique dû à la déformation mécanique, nous combinons

les équations ci-dessus. Tout d’abord, exprimez le tenseur de contrainte en termes de

déformation :

Tjk = cijkl Slm (II.3)

Substituez cela dans l’équation du déplacement électrique :

Di = dijk Tjk = dijk (cjklm Slm ) (II.4)

Ainsi, le déplacement électrique Di peut être exprimé en termes du tenseur de déformation

Slm comme suit :

Di = dijk cjklm Slm (II.5)

PFA 23
Contexte général du projet

II.3.5 Génération de Charge :

La charge électrique Q générée à la surface d’un matériel piézoélectrique peut être

trouvée à partir du déplacement électrique. La charge totale Q sur une surface de surface

A est :

Q = Di · A = dijk cjklm Slm · A (II.6)

II.3.6 Application dans les Accéléromètres :

Dans un accéléromètre piézoélectrique, l’accélération a induit une force F sur l’élément

piézoélectrique en raison de sa masse m :

F =m·a

Cette force crée une contrainte mécanique T dans le matériau piézoélectrique :

F m·a
T = =
A A

Le déplacement électrique correspondant D à cette contrainte est alors :

m·a
D =d·T =d·
A

Et la charge de sortie Q est :

Q=D·A=d·m·a

Cette charge est convertie en un signal de tension par l’amplificateur de charge, qui est

proportionnel à l’accélération.

PFA 24
Contexte général du projet

L’utilisation de la notation tensorielle fournit une vue complète de la manière dont les

effets piézoélectriques se manifestent dans différentes directions et comment les relations

entre la contrainte et la déformation sont interconnectées dans le matériau.

II.4 Réseaux de Neurones Artificiels :

II.4.1 Introduction :

Les réseaux de neurones artificiels (RNA) sont un domaine fondamental de l’intelli-

gence artificielle (IA) inspiré par le fonctionnement du cerveau humain. Ils sont conçus

pour modéliser et résoudre des problèmes complexes en apprenant à partir de données. Un

réseau de neurones est constitué de nœuds appelés neurones, organisés en couches : une

couche d’entrée, des couches cachées et une couche de sortie. Chaque neurone reçoit des

entrées, les transforme à l’aide de poids et de biais, et passe le résultat à la couche suivante.

Les réseaux de neurones sont capables de capturer des relations non linéaires entre

les données grâce à des fonctions d’activation non linéaires. Ils sont utilisés dans diverses

applications telles que la reconnaissance d’images, le traitement du langage naturel et

les systèmes de recommandation. L’apprentissage dans un réseau de neurones se fait

généralement par rétropropagation, où les erreurs sont propagées en arrière à travers le

réseau pour ajuster les poids et améliorer les performances du modèle.

PFA 25
Contexte général du projet

Figure 11 – Réseaux de Neurones Artificiels

En raison de leur capacité à apprendre et à généraliser à partir de grandes quantités

de données, les réseaux de neurones artificiels sont devenus des outils puissants dans la

résolution de problèmes complexes, transformant ainsi de nombreux domaines technolo-

giques et industriels.

II.4.2 Structure des Réseaux de Neurones Artificiels :

Entrée : Les neurones reçoivent des entrées X = [x1 , x2 , . . . , xn ], où chaque xi représente

une caractéristique d’entrée.

Poids : Chaque entrée xi est multipliée par un poids wi . Les poids sont des paramètres

appris par le réseau.

Bias : Chaque neurone possède un biais b qui est ajouté à la somme pondérée des

entrées.

Somme Pondérée : La somme pondérée des entrées et du biais est calculée comme :

X
z= w i xi + b
i

PFA 26
Contexte général du projet

Fonction d’Activation : La somme pondérée z est passée à travers une fonction

d’activation f pour obtenir la sortie du neurone a. Les fonctions d’activation courantes

sont :

1
— Sigmoı̈de : σ(z) = 1+e−z

— ReLU (Rectified Linear Unit) : ReLU(z) = max(0, z)

ez −e−z
— Tanh (Tangente Hyperbolique) : tanh(z) = ez +e−z

II.4.3 Entraı̂nement des Réseaux de Neurones Artificiels :

La backpropagation est un algorithme d’apprentissage pour les réseaux de neurones

qui permet d’ajuster les poids et les biais du modèle afin de minimiser la fonction de perte.

Le processus se fait en deux étapes principales : la propagation avant (pour calculer les

sorties et l’erreur) et la propagation arrière (pour mettre à jour les poids et les biais en

fonction de l’erreur).

Voici une explication détaillée de la backpropagation en utilisant les équations princi-

pales :

II.4.3.1 Calcul de l’Erreur :

Pour commencer, on calcule l’erreur entre la sortie prédite ŷ et la sortie réelle y.

La fonction de perte courante est souvent l’erreur quadratique moyenne (MSE) pour

les problèmes de régression ou I’entropie croisée pour les problèmes de classification. La

fonction de perte E est :


1X
E= (yk − ŷk )2
2 k

PFA 27
Contexte général du projet

où : - yk est la sortie réelle pour la classe k.

- ŷk est la sortie prédite pour la classe k.

II.4.3.2 Calcul du Gradient de la Fonction de Perte par Rapport à la Sortie :

Pour chaque neurone de la couche de sortie, on calcule le gradient de la fonction de

perte par rapport à la sortie du neurone. Si la fonction d’activation de sortie est f , le

gradient pour un neurone k est :

(L) ∂E 
(L)



(L)

δk = (L)
= ak − yk · f zk
∂ak

où :
(L)
- δk est le terme d’erreur pour le neurone k dans la couche de sortie L.
 
(L)
- f ′ zk est la dérivée de la fonction d’activation f par rapport à la somme pondérée
(L)
zk .

II.4.3.3 Calcul des Gradients pour les Couches Cachées :

(l)
Pour les couches cachées, on calcule le terme d’erreur δj en propagant l’erreur en

arrière. Pour une couche cachée l avec des neurones j, le terme d’erreur est :

!
X  
(l) (l+1) (l+1) (l)
δj = δk wjk · f ′ zj
k

(l)
où : - δj est le terme d’erreur pour le neurone j dans la couche l.
(l+1)
- δk est le terme d’erreur pour le neurone k dans la couche suivante l + 1.
(l+1)
- wjk est le poids entre le neurone j dans la couche l et le neurone k dans la couche

l + 1.
 
′ (l) (l)
- f zj est la dérivée de la fonction d’activation f par rapport à zj .

PFA 28
Contexte général du projet

II.4.3.4 Mise à Jour des Poids et Biais :

(l) (l)
Enfin, les poids wij et les biais bj sont mis à jour en utilisant le gradient calculé : -

Poids :
(l) (l) ∂E
wij ← wij − η (l)
∂wij

où
∂E (l−1) (l)
(l)
= ai · δj
∂wij

- Biais :
(l) (l) ∂E
bj ← bj − η (l)
∂bj

où :
∂E (l)
(l)
= δj
∂bj

où :

- η est le taux d’apprentissage.

∂E (l)
- (l) est le gradient de l’erreur par rapport au poids wij .
∂wij

∂E (l)
- (l) est le gradient de l’erreur par rapport au biais bj .
∂bj

II.4.3.5 underfitting et overfitting :

L’underfitting et l’overfitting sont deux problèmes courants dans l’entraı̂nement des

réseaux de neurones artificiels, qui peuvent gravement nuire à la performance d’un modèle.

L’underfitting se produit lorsque le modèle est trop simple pour capturer la complexité

des données. Cela signifie qu’il n’apprend pas suffisamment bien les motifs sous-jacents

et généralise mal non seulement sur les données de test, mais aussi sur les données d’en-

traı̂nement. Les signes d’underfitting incluent une haute erreur de perte à la fois sur les

ensembles d’entraı̂nement et de test, même après un entraı̂nement prolongé. Ce problème

PFA 29
Contexte général du projet

peut survenir si le modèle n’a pas assez de paramètres (par exemple, trop peu de couches

ou de neurones) ou si le temps d’entraı̂nement est insuffisant.

L’overfitting, à l’inverse, se produit lorsque le modèle devient trop complexe et s’ajuste

trop étroitement aux données d’entraı̂nement, au point d’apprendre également le bruit

et les particularités de ces données, au lieu de se concentrer sur les motifs généralisables.

Un modèle surentraı̂né présente généralement une faible erreur de perte sur l’ensemble

d’entraı̂nement, mais une erreur beaucoup plus élevée sur l’ensemble de test. L’overfitting

peut être contré par diverses techniques, comme l’utilisation de la régularisation, de la

validation croisée, de la réduction du nombre de paramètres ou de l’augmentation des

données d’entraı̂nement.

En somme, l’objectif lors de l’entraı̂nement d’un réseau de neurones est de trouver un

équilibre entre ces deux extrêmes afin de maximiser la capacité du modèle à généraliser

aux nouvelles données.

Training
Stop training here! Testing
Loss

Training Iterations

PFA 30
Contexte général du projet

II.5 Neurones Artificiels Récurrents (RNN) :

II.5.1 Introduction :

Les neurones artificiels récurrents (RNN) sont conçus pour traiter des séquences de

données en introduisant une boucle dans la structure du réseau, permettant aux informa-

tions précédentes d’influencer les sorties futures. Un neurone récurrent prend non seule-

ment en entrée le vecteur actuel, mais aussi l’état caché de l’étape précédente, ce qui lui

permet de ”mémoriser” une certaine information sur les étapes passées.

Figure 12 – RNNs

II.5.2 Théorie des RNN :

Les RNN sont capables de modéliser des séquences temporelles grâce à leur capacité

à conserver une mémoire interne à travers l’état caché ht . Cette mémoire permet de cap-

turer des dépendances temporelles dans les données séquentielles, ce qui est crucial pour

des tâches telles que la prédiction de la prochaine valeur dans une série temporelle ou la

PFA 31
Contexte général du projet

génération de texte.

Cependant, en pratique, les RNN souffrent souvent de problèmes tels que l’explosion

ou la disparition du gradient lors de l’apprentissage par rétropropagation du gradient à

travers le temps (BPTT - Backpropagation Through Time). Cela rend difficile l’apprentis-

sage des dépendances à long terme. Pour surmonter ces limitations, des variantes comme

les LSTM (Long Short-Term Memory) et les GRU (Gated Recurrent Unit) ont été intro-

duites. Ces architectures intègrent des mécanismes de portes (gates) qui régulent le flux

d’information, permettant ainsi de mieux gérer les dépendances temporelles à long terme

tout en atténuant les problèmes liés aux gradients.

II.5.2.1 Équations des RNN :

Pour un RNN simple, à chaque étape temporelle

t, les équations suivantes s’appliquent :

1. Calcul de l’état caché :

ht = tanh (Whx xt + Whh ht−1 + bh )

Où :

- ht est l’état caché à l’instant t,

- xt est l’entrée à l’instant t,

- ht−1 est l’état caché à l’instant précédent t − 1,

- Whx est la matrice de poids entre l’entrée et l’état caché,

- Whh est la matrice de poids de la récurrence (entre les états cachés successifs),

PFA 32
Contexte général du projet

- bh est le biais pour l’état caché,

- tanh est la fonction d’activation hyperbolique tangentielle.

2. Calcul de la sortie :

yt = Why ht + by

Où :

- yt est la sortie à l’instant t,

- Why est la matrice de poids entre l’état caché et la sortie,

- by est le biais pour la sortie.

II.5.3 Long Short-Term Memory (LSTM) :

Les Long Short-Term Memory (LSTM) sont un type de réseau de neurones récurrents

(RNN) conçu pour résoudre le problème de l’apprentissage des dépendances à long terme

dans les séquences de données. Les LSTM sont particulièrement utiles pour les tâches

où les informations doivent être conservées sur de longues périodes, comme la traduction

automatique, la reconnaissance vocale ou la modélisation de séries temporelles.

II.5.4 Intérêt des LSTM :

Les RNN traditionnels ont du mal à capturer des dépendances longues en raison du

problème de gradient qui disparaı̂t ou explose lors de la rétropropagation à travers le

temps. Les LSTM ont été introduits pour pallier ces limitations grâce à une architecture

interne spécifique qui permet de conserver des informations sur de longues séquences.

Ils sont donc particulièrement adaptés aux problèmes nécessitant une mémoire sur des

PFA 33
Contexte général du projet

périodes étendues, ce qui les rend très efficaces pour des applications comme la prévision

de séries temporelles ou la génération de texte.

II.5.5 Conclusion :

En conclusion, les neurones artificiels et les réseaux de neurones récurrents (RNN)

représentent des avancées majeures dans le domaine de l’intelligence artificielle et de l’ap-

prentissage automatique. Les neurones artificiels, inspirés du fonctionnement du cerveau

humain, permettent aux systèmes informatiques de traiter et d’apprendre des données

complexes de manière efficace. Leur entraı̂nement, souvent réalisé par des algorithmes

d’optimisation tels que la rétropropagation, joue un rôle crucial dans la capacité du modèle

à généraliser et à effectuer des prédictions précises.

Les RNN, quant à eux, se distinguent par leur capacité à gérer des séquences de données en

mémorisant les informations passées et en les intégrant dans les prédictions futures. Cette

propriété les rend particulièrement utiles dans des applications où le contexte temporel est

essentiel, telles que la traduction automatique, la génération de texte, et la reconnaissance

vocale.

En somme, l’intégration de neurones artificiels et de RNN dans les systèmes d’IA ouvre

de nouvelles perspectives pour résoudre des problèmes complexes et améliorer les perfor-

mances des modèles dans divers domaines d’application. Leur développement continu et

leur affinement sont essentiels pour tirer pleinement parti de leur potentiel et pour relever

les défis futurs en intelligence artificielle.

PFA 34
Contexte général du projet

II.6 OPC-UA :

II.6.1 Introduction :

OPC-UA, pour Open Platform Communications Unified Architecture, est un proto-

cole de communication omni-plateforme destiné à l’automatisation industrielle. Peu im-

porte leur ancienneté, OPC-UA permet la communication entre les robots industriels, les

machines-outils et les automates programmables industriels (API).

Le protocole est développé et maintenu par la Fondation OPC, qui regroupe divers fa-

bricants. C’est un format d’échange de données indépendant de toute marque et de tout

système d’exploitation. Outre la standardisation du dialogue entre machines et systèmes

d’information, OPC-UA est principalement conçu pour sécuriser les flux de données lors

des échanges intra et/ou inter-équipements d’automatisation industrielle. Il est également

important de préciser qu’il s’agit d’un standard ouvert.

Le protocole OPC-UA étant standard, il permet la communication avec tous types

d’automates et de robots, quel que soit le fabricant, à condition que la machine soit rac-

cordée au réseau de l’entreprise et que le constructeur l’ait implémenté. Toute la communi-

cation est logicielle ; il n’est pas nécessaire d’utiliser un bus de communication additionnel,

ni de traduire les langages ou d’installer un équipement physique supplémentaire.

Figure 13 – opcua logo

PFA 35
Contexte général du projet

II.6.2 Principe de fonctionnement :

En langage informatique, le protocole OPC-UA adopte une architecture classique dite

client-serveur. Une machine utilisant ce protocole possède un logiciel embarqué, appelé

serveur, qui fournit les informations demandées par un client. Ce client est également un

logiciel dont la fonction est de passer des commandes au serveur, un peu comme dans un

restaurant. Le client analyse et traduit les informations demandées, par exemple par un

robot d’usine. Le serveur répond en fournissant les données demandées par la machine.

Les serveurs, étant également des clients, peuvent collecter et compiler des données pro-

venant d’autres serveurs pour les transmettre à leurs propres clients, et ainsi de suite. Les

informations échangées sont adaptées à chaque équipement.

Les données étant brutes, similaires et transitant via des ports de communication

sécurisés, il est facile d’encapsuler les messages dans des réseaux privés virtuels (VPN).

De ce fait, au-delà d’augmenter considérablement la sécurité informatique, le protocole

OPC-UA facilite l’analyse des données, améliore la performance des flux et permet la

mise à niveau matérielle et l’évolution de l’infrastructure, peu importe la topologie des

systèmes d’information et la géolocalisation des équipes de travail.

PFA 36
Contexte général du projet

II.7 Conclusion :

Dans ce chapitre, nous avons discuté de tous les outils utilisés pour mener à bien

ce projet, en commençant par le capteur approprié pour notre cas. Ensuite, nous avons

abordé les modèles de deep learning en utilisant les neurones artificiels et leur avantage

pour modéliser des problèmes très complexes. Enfin, nous avons parlé du protocole de

communication OPC UA et des avantages qu’il offre pour la remontée des données, ainsi

que du niveau de sécurité immense qu’il procure.

PFA 37
Implémentation et création du modèle

Implémentation et création du modèle

III.1 Introduction :

Dans cette partie, nous allons discuter des différentes approches ou modèles utilisés,

en présentant pour chacun leurs avantages et inconvénients. Nous aborderons également

comment entraı̂ner ces modèles, puis les enregistrer pour les utiliser séparément, les lier

avec OPC UA, et les intégrer avec SCADA dans le but de prévenir et détecter les pannes,

afin de réduire le MTTR et d’augmenter le MTBF.

III.2 Un modèle LSTM pour la détection d’anomalies :

III.2.1 Data :

Les données que nous allons utiliser sont des échantillons de vibration d’une machine

dans différents états. Nous utiliserons des neurones LSTM pour entraı̂ner le modèle à

classifier ces données et ainsi déterminer l’état de la machine.

PFA 38
Implémentation et création du modèle

Figure 14 – vibration data

III.2.2 Création et entraı̂nement du modèle :

Dans cette section, nous procédons à la création d’un modèle basé sur un réseau de

neurones récurrents, en particulier avec des couches LSTM (Long Short-Term Memory),

pour classer les états de vibration d’une machine.

1. Chargement et prétraitement des données : Les données de vibration sont

extraites à partir de fichiers CSV contenant des informations telles que les accélérations

en X, Y et Z (AccX, AccY, AccZ). Ces données sont ensuite normalisées à l’aide de Min-

MaxScaler afin de garantir que toutes les caractéristiques se situent dans la même échelle,

améliorant ainsi l’efficacité de l’apprentissage du modèle.

2. Étiquetage des états de défaillance :

Chaque fichier de données est associé à une étiquette représentant un état spécifique de la

machine (par exemple, déséquilibre mécanique ou défaillance électrique). Un dictionnaire

( fault-mapping ) est utilisé pour mapper les noms des fichiers à leurs classes respectives.

PFA 39
Implémentation et création du modèle

3. Préparation des données pour le modèle LSTM :

Les données sont divisées en ensembles d’entraı̂nement et de test. Elles sont également re-

modelées pour correspondre au format attendu par les couches LSTM, où chaque échantillon

contient 100 étapes temporelles et 3 caractéristiques (AccX, AccY, AccZ). Les étiquettes

sont ensuite encodées en one-hot pour la classification multi-classes.

4. Construction du modèle LSTM :

Le modèle est constitué de deux couches LSTM, suivies d’une couche de régularisation

par Dropout pour éviter le surapprentissage. Une couche dense finale avec une fonction

d’activation softmax permet de prédire la classe de défaillance. Le modèle est compilé

aveo l’optimiseur Adam et la fonction de perte categorical-crossentropy , adaptée à la

classification multi-classes.

5. Entraı̂nement et évaluation :

Le modèle est ensuite entraı̂né sur 50 époques avec un lot de 32 échantillons, et sa perfor-

mance est évaluée sur l’ensemble de test. Le modèle affiche une précision (accuracy) après

l’entraı̂nement, ce qui permet de vérifier sa capacité à classifier correctement les états de

la machine.

6. Prédictions :

Après l’entraı̂nement, des prédictions sont effectuées sur les données de test, permettant

de comparer les résultats prédits avec les étiquettes réelles.

voir annexe 1 :(tensorflow code)

PFA 40
Implémentation et création du modèle

III.2.3 Problèmes rencontrés avec cette approche :

L’approche basée sur les réseaux de neurones LSTM pour la détection des anomalies

dans les vibrations d’une machine présente plusieurs défis qui limitent son efficacité dans

certains contextes industriels. L’un des principaux inconvénients réside dans le temps de

réponse relativement long de cette méthode. En raison de la complexité inhérente aux

LSTM, qui sont conçus pour capturer des dépendances temporelles complexes dans les

données, le processus de classification et d’analyse peut être assez lent, surtout lorsqu’il

s’agit de traiter en temps réel de grandes quantités de données de vibration. Cette latence

peut poser des problèmes dans des environnements où une réaction rapide aux anomalies

est essentielle pour éviter des pannes graves ou des interruptions coûteuses de la produc-

tion.

En outre, cette approche peut également entraı̂ner une discontinuité dans la sur-

veillance des états de la machine. Les LSTM, bien qu’efficaces pour analyser des séquences

de données et identifier des motifs récurrents, ne permettent pas toujours une mise à jour

instantanée des prédictions lorsque de nouvelles données sont disponibles. Cela signifie

qu’il peut y avoir des moments où le modèle n’est pas en mesure de fournir des informa-

tions en temps réel sur l’état de la machine, augmentant ainsi le risque de passer à côté

d’anomalies critiques qui pourraient survenir soudainement.

Une alternative plus directe et souvent plus réactive consiste à définir des seuils de vi-

bration spécifiques pour la machine. En établissant des limites prédéfinies pour les valeurs

de vibration acceptables (comme les accélérations mesurées sur les axes X, Y, et Z), il est

possible de configurer un système qui déclenche immédiatement une alerte dès que ces

PFA 41
Implémentation et création du modèle

seuils sont dépassés. Cette méthode, bien que plus simple, offre l’avantage de permettre

une détection quasi-instantanée des anomalies, ce qui est particulièrement utile dans des

environnements où la prévention proactive des pannes est prioritaire.

Cependant, malgré les limitations associées à l’approche LSTM, celle-ci conserve une

utilité précieuse dans le diagnostic post-défaillance. Après qu’une panne se soit produite,

l’analyse des données de vibration à l’aide des LSTM peut fournir des informations

détaillées sur les causes sous-jacentes de la défaillance. Cette capacité à diagnostiquer

avec précision les problèmes après coup est essentielle pour les équipes de maintenance

et d’ingénierie, car elle permet non seulement de comprendre pourquoi une machine a

échoué, mais aussi de développer des stratégies pour prévenir de futurs incidents simi-

laires. En somme, bien que l’approche LSTM ne soit pas sans défauts, elle offre des

avantages significatifs lorsqu’elle est utilisée dans le cadre approprié, notamment pour

l’analyse approfondie des causes des défaillances.

PFA 42
Implémentation et création du modèle

III.3 Un modèle pour prédire la vibration (approche

par séries temporelles) :

III.3.1 Data :

Dans ce cas, nous utiliserons un échantillon des vibrations en condition de fonction-

nement normal pour prédire les valeurs futures des vibrations, en appliquant l’approche

des fenêtres glissantes et des horizons de prévision.

III.3.2 Création et entraı̂nement du modèle :

Dans cette section, nous procédons à la création d’un modèle de prédiction des vibra-

tions basé sur des séries temporelles pour estimer les futures valeurs de vibration.

III.3.3 Chargement et prétraitement des données

Les données de vibration sont extraites d’un fichier CSV contenant les mesures d’accélération

en fonction du temps (AccX). Nous utilisons la bibliothèque pandas pour charger les

données et matplotlib pour visualiser la série temporelle des vibrations. Cette visuali-

sation permet d’observer les variations de vibration au cours du temps et d’identifier des

motifs qui pourraient être utiles à la prédiction.

III.3.4 Préparation des données pour l’entraı̂nement

Les données de vibration sont ensuite divisées en deux ensembles : un ensemble d’en-

traı̂nement et un ensemble de test, en appliquant un ratio de 80% pour l’entraı̂nement et

20% pour le test. Pour préparer les données à la prédiction, nous utilisons une approche

PFA 43
Implémentation et création du modèle

de fenêtres glissantes et d’horizons de prédiction. Cette technique consiste à utiliser une

séquence de 30 pas de temps (fenêtre) pour prédire les 7 prochains pas de temps (hori-

zon). Cela permet au modèle de capturer les relations temporelles courtes dans les séries

de vibrations pour mieux prévoir les fluctuations futures.

III.3.5 Construction du modèle

Le modèle utilisé est un réseau de neurones entièrement connecté (Dense layers) com-

posé de plusieurs couches denses avec la fonction d’activation ReLU. Le modèle est conçu

pour apprendre les relations non linéaires dans les données de vibration. La dernière

couche utilise une activation linéaire pour produire les valeurs de vibration prédites. Le

modèle est compilé avec l’erreur absolue moyenne (MAE ) comme fonction de perte, et

l’optimisation est effectuée à l’aide de l’optimiseur Adam.

III.3.6 Entraı̂nement et évaluation

Le modèle est entraı̂né sur plusieurs époques à l’aide des fenêtres de données d’en-

traı̂nement. Pendant l’entraı̂nement, les performances du modèle sont évaluées sur l’en-

semble de test pour vérifier sa capacité à bien généraliser. L’entraı̂nement est réalisé avec

un mécanisme de validation pour sauvegarder le meilleur modèle à chaque époque.

Figure 15 – mae and loss while training

PFA 44
Implémentation et création du modèle

III.3.7 Prédictions

Après l’entraı̂nement, des prédictions sont effectuées sur l’ensemble de test. Les valeurs

prédites par le modèle sont comparées aux valeurs réelles de vibration à travers une

visualisation graphique, ce qui permet d’évaluer la précision du modèle. Ce processus

permet de vérifier si le modèle est capable de prédire correctement les futures variations des

vibrations de la [Link] remarque également que l’efficacité du modèle est acceptable

avec un taux de 76 %.

voir code Annexe 2 (prediction code).

Figure 16 – true and prediction values

III.4 Un modèle pour prédire la durée restante avant

la défaillance d’une machine :

III.4.1 Data :

Dans ce cas, il est difficile de trouver les données pour ce modèle, car il est nécessaire

d’avoir des échantillons de vibrations capturés de manière décroissante jusqu’au jour de la

défaillance de la machine. De plus, il ne suffit pas d’avoir un seul jeu de données avant la

défaillance, mais plusieurs, afin d’associer à chaque échantillon de vibration une durée bien

déterminée de jours avant la défaillance. Cela permettrait de mieux entraı̂ner le modèle.

PFA 45
Implémentation et création du modèle

Dans ce cas, nous avons généré de nouvelles données en utilisant un modèle de Markov

pour créer de nouvelles séquences de données. Nous avons ensuite combiné ces données

avec les vibrations de la machine en état proche de la défaillance. Enfin, nous avons

associé un label à chaque ensemble d’échantillons pour définir la période restante avant

la défaillance.

Voir les Annexes 3, 4 et 5 pour les codes utilisés pour la génération de ces données.

III.5 Création et entraı̂nement du modèle

Dans cette section, nous décrivons le processus de création et d’entraı̂nement d’un

modèle de réseau de neurones pour prédire la durée restante avant la défaillance d’une

machine, en utilisant des données de vibration.

III.5.1 Chargement et prétraitement des données

Les données sont chargées depuis un fichier CSV nommé data [Link]. La colonne

timestep est supprimée car elle n’est pas nécessaire pour l’entraı̂nement du modèle. Les

données sont ensuite préparées pour l’entraı̂nement en utilisant uniquement la colonne

Accx comme entrée et la colonne days comme cible.

III.5.2 Division des données

Les données sont divisées en ensembles d’entraı̂nement et de test avec un ratio de

80% pour l’entraı̂nement et 20% pour le test. Cette séparation est effectuée à l’aide de la

fonction train test split de scikit-learn.

PFA 46
Implémentation et création du modèle

III.5.3 Normalisation des données

Les caractéristiques sont normalisées à l’aide de StandardScaler pour que les données

aient une moyenne de 0 et un écart-type de 1. Cette étape est cruciale pour garantir que

toutes les entrées du modèle sont sur la même échelle, ce qui peut améliorer la performance

et la convergence du modèle.

III.5.4 Construction du modèle de réseau de neurones

Un modèle de réseau de neurones est construit en utilisant TensorFlow et Keras. Le

modèle est constitué de plusieurs couches denses (Dense layers) :

— Une première couche avec 1000 neurones et une fonction d’activation ReLU.

— Une deuxième couche avec 500 neurones, également avec une activation ReLU.

— Une troisième couche avec 250 neurones avec une activation ReLU.

— Une quatrième couche avec 50 neurones avec une activation ReLU.

— Une couche de sortie avec un seul neurone, qui prédit la durée en jours.

Le modèle est compilé avec l’optimiseur Adam et utilise l’erreur quadratique moyenne

(mean squared error ) comme fonction de perte.

III.5.5 Entraı̂nement du modèle

Le modèle est entraı̂né sur les données normalisées avec un nombre maximal d’époques

fixé à 50. L’entraı̂nement utilise un lot de taille 16 et une fraction des données d’en-

traı̂nement est réservée pour la validation (20%). Un mécanisme d’arrêt précoce (Ear-

lyStopping) est utilisé pour éviter le surapprentissage en surveillant la perte de vali-

dation et en arrêtant l’entraı̂nement si la perte ne s’améliore pas pendant 5 époques

consé[Link] l’entraı̂nement, nous avons utilisé les GPU de Runpod afin de réduire

PFA 47
Implémentation et création du modèle

le temps d’entraı̂nement à un niveau raisonnable. Le passage des CPU aux GPU a permis

de réduire le temps d’entraı̂nement de près de 20 heures.

Figure 17 – mae and loss while training

Figure 18 – GPU acces on runpod

PFA 48
Implémentation et création du modèle

III.5.6 Évaluation et prédiction

Après l’entraı̂nement, le modèle est évalué sur l’ensemble de test pour calculer la perte

finale. Les prédictions sont ensuite effectuées sur les données de test, et les résultats sont

affichés pour évaluer la performance du modèle. On remarque également que l’efficacité

est acceptable, atteignant 70%, même si les données ne sont pas réelles mais générées

uniquement à l’aide du modèle de Markov.

Code sur Annexe 6.

Figure 19 – predictions for test data

III.6 Implémentation en utilisant TIA Portal, OPC UA

et Node-RED :

III.6.1 Configuration de l’automate sur TIA Portal :

Pour configurer un automate sur TIA Portal, commencez par ouvrir le logiciel et créer

un nouveau projet. Ajoutez ensuite un nouveau périphérique en sélectionnant l’automate

souhaité dans la bibliothèque des appareils. Assurez-vous de configurer les paramètres de

PFA 49
Implémentation et création du modèle

communication, les modules d’entrées et de sorties, ainsi que les paramètres du réseau

selon les spécifications de votre installation.

Une fois l’automate configuré, activez le serveur OPC UA en accédant aux paramètres

de l’automate dans TIA Portal. Dans la section OPC UA, activez le serveur OPC UA et

configurez les paramètres nécessaires, tels que le port de communication et les paramètres

de sécurité. Il est essentiel de définir des groupes et des variables que vous souhaitez

exposer via OPC UA.

Pour récupérer le point de terminaison OPC UA, allez dans l’onglet OPC UA et

recherchez l’option pour obtenir l’URL du point de terminaison. Cette URL est nécessaire

pour établir une connexion entre le serveur OPC UA et les clients OPC UA. Copiez cette

URL pour l’utiliser dans vos configurations de clients ou pour intégrer l’automate dans

des systèmes de supervision et de contrôle.

Figure 20 – server adress

Figure 21 – automate configuration

PFA 50
Implémentation et création du modèle

Figure 22 – variables

III.6.2 Simulation d’un capteur et utilisation du modèle comme

client OPC UA

Ce code Python illustre la simulation d’un capteur de vibration et l’intégration d’un

modèle de prédiction en tant que client OPC UA.

Chargement et Prétraitement des Données : Les données de vibration sont

chargées à partir d’un fichier CSV contenant des informations sur l’accélération en X.

Ces données sont ensuite prétraitées en créant des fenêtres temporelles pour entraı̂ner

le modèle. Les fonctions make windows et make train test splits sont utilisées pour

découper les séries temporelles en fenêtres et séparer les données en ensembles d’en-

traı̂nement et de test.

Construction et Entraı̂nement du Modèle : Un modèle de réseau de neurones

dense est construit à l’aide de Keras, avec plusieurs couches entièrement connectées. Le

modèle est configuré pour prédire les valeurs de vibration futures sur un horizon donné,

utilisant une fonction d’activation linéaire pour la couche de sortie. Après l’entraı̂nement,

le modèle est chargé à partir d’un fichier préalablement sauvegardé et utilisé pour faire

PFA 51
Implémentation et création du modèle

des prédictions sur les données de test.

Simulation du Capteur et Intégration OPC UA : Le script se connecte à un

serveur OPC UA à l’aide de la bibliothèque opcua. Il écrit les valeurs prédites par le modèle

dans un nœud spécifique du serveur OPC UA. La fonction write value int convertit les

valeurs flottantes prédites en entiers avant de les envoyer au serveur. Le client OPC UA se

connecte, écrit les valeurs prédictives dans le serveur, puis se déconnecte en garantissant

la fermeture appropriée de la connexion.

En résumé, ce code permet de simuler un capteur de vibration, d’appliquer un modèle

de prédiction et de communiquer les résultats via le protocole OPC UA pour une intégration

et un suivi en temps réel.

voir code sur annexe 7.

III.6.3 Création d’une page de supervision SCADA en utilisant

Node-RED :

Figure 23 – Node-red flow

PFA 52
Implémentation et création du modèle

III.6.4 Dashbord :

Figure 24 – vibration reel et prediction en temps reel :

Figure 25 – estimation du temps restant

PFA 53
Implémentation et création du modèle

Figure 26 – estimation du temps restant

PFA 54
Implémentation et création du modèle

Conclusion :

Ce projet a permis de démontrer l’intégration efficace de diverses technologies pour

la surveillance et l’analyse des systèmes industriels. Nous avons développé un modèle de

prédiction des défaillances basé sur l’apprentissage automatique, en utilisant des données

de vibration simulées et un modèle de réseau de neurones dense. La configuration de

l’automate via TIA Portal et la récupération du point de terminaison OPC UA ont été

réalisées avec succès, facilitant la communication entre les dispositifs de terrain et les

systèmes de supervision.

Nous avons également simulé un capteur de vibration et utilisé notre modèle comme

client OPC UA pour intégrer les prévisions dans un environnement de supervision. La

connexion au serveur OPC UA a permis d’écrire les valeurs prédites dans un nœud

spécifique, illustrant la capacité du système à interagir en temps réel avec les données

de vibration.

La création d’une page de supervision SCADA en utilisant Node-RED a complété le

système en fournissant une interface utilisateur intuitive pour visualiser les données et

les prévisions. Ce projet a mis en évidence l’efficacité de l’utilisation combinée des outils

d’apprentissage automatique, des protocoles OPC UA, et des plateformes de supervision

pour améliorer la gestion et la surveillance des machines.

PFA 55
Implémentation et création du modèle

Malgré l’utilisation de données simulées et les défis associés, tels que le temps d’en-

traı̂nement du modèle et la configuration complexe des systèmes, les résultats ont montré

une performance acceptable. L’efficacité du modèle atteint environ 70%, ce qui est promet-

teur pour des données générées et non réelles. Les prochaines étapes incluront l’intégration

de données réelles et l’amélioration continue du modèle pour optimiser la précision des

prévisions.

En conclusion, ce projet a permis de mettre en place une solution complète pour la sur-

veillance prédictive des machines, démontrant la faisabilité et les avantages de l’approche

intégrée en combinant des technologies avancées pour des applications industrielles.

PFA 56
Implémentation et création du modèle

Annexe 1(Classification) :

import os

import pandas as pd

import numpy as np

from [Link] import MinMaxScaler

from sklearn.model_selection import train_test_split

import tensorflow as tf

from [Link] import Sequential

from [Link] import LSTM, Dense, Dropout

from [Link] import to_categorical

# Load data from CSV files

data_dir = ’/home/moncef/’

file_names = [Link](data_dir)

# Initialize lists to hold data and labels

data = []

labels = []

PFA 57
Implémentation et création du modèle

# Define fault labels based on the file names or your classification system

fault_mapping = {

’m1_half_shaft_speed_no_mechanical_load’: 0,

’m1_load_0.5Nm_half_speed’: 1,

’m1_mechanically_imbalanced_half_speed’: 2,

’m1_mechanically_imbalanced_load_0.5Nm’: 3,

’m1_electrically_50_ohm_fault’: 4,

’m1_electrically_100_ohm_fault’: 5,

’m1_electrically_150_ohm_fault’: 6,

’m1_electrically_50_ohm_fault_load_0.5Nm’: 7,

# Loop through all files, load them and assign appropriate labels

for file in file_names:

df = pd.read_csv([Link](data_dir, file))

# Assuming your data has AccX, AccY, AccZ columns

# Extract vibration data, normalize, and add to the data list

vibration_data = df[[’AccX’, ’AccY’, ’AccZ’]].values

scaler = MinMaxScaler()

vibration_data_scaled = scaler.fit_transform(vibration_data)

# Append data and corresponding label

[Link](vibration_data_scaled)

PFA 58
Implémentation et création du modèle

# Identify the label based on the filename

for key in fault_mapping.keys():

if key in file:

[Link](fault_mapping[key])

# Convert lists to numpy arrays

data = [Link](data)

labels = [Link](labels)

# Split data into training and test sets

X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2,

random_state=42)

# Reshape data to match LSTM input: [samples, time_steps, features]

# Assuming 100 time steps for each sample

time_steps = 100

X_train = X_train.reshape((X_train.shape[0], time_steps, 3))

X_test = X_test.reshape((X_test.shape[0], time_steps, 3))

# One-hot encode labels

y_train = to_categorical(y_train)

y_test = to_categorical(y_test)

PFA 59
Implémentation et création du modèle

# Build LSTM model

model = Sequential()

[Link](LSTM(units=64, return_sequences=True, input_shape=(time_steps, 3)))

[Link](Dropout(0.2))

[Link](LSTM(units=64))

[Link](Dropout(0.2))

[Link](Dense(units=64, activation=’relu’))

[Link](Dense(units=len(fault_mapping), activation=’softmax’))

# Compile the model

[Link](optimizer=’adam’, loss=’categorical_crossentropy’,

metrics=[’accuracy’])

# Train the model

history = [Link](X_train, y_train, epochs=50, batch_size=32,

validation_data=(X_test, y_test))

# Evaluate the model

test_loss, test_acc = [Link](X_test, y_test)

print(f’Test Accuracy: {test_acc}’)

# Make predictions

y_pred = [Link](X_test)

PFA 60
Implémentation et création du modèle

Annexe 2 (prediction code) :

import pandas as pd

df = pd.read_csv("/content/01 - m1_half_shaft_speed_no_mechanical_load.csv",

parse_dates=["Timestamp"],index_col=["Timestamp"])

[Link]()

import [Link] as plt

vib_in_time = [Link](df["AccX"])

vib_in_time.head()

vib_in_time.plot(figsize=(10, 7))

[Link]("vibration")

[Link]("vibration in time ", fontsize=16)

[Link](fontsize=14)

timesteps = vib_in_time.index.to_numpy()

vibration = vib_in_time["AccX"].to_numpy()

PFA 61
Implémentation et création du modèle

split_size = int(0.8 * len(vibration ))

X_train, y_train = timesteps[:split_size], vibration [:split_size]

X_test, y_test = timesteps[split_size:], vibration [split_size:]

len(X_train), len(X_test), len(y_train), len(y_test)

HORIZON = 7 # predict 1 step at a time

WINDOW_SIZE = 30 # use a week worth of timesteps to predict the horizon

full_windows, full_labels = make_windows(vibration,

window_size=WINDOW_SIZE, horizon=HORIZON)

len(full_windows), len(full_labels)

import numpy as np

def make_windows(x, window_size=30, horizon=7):

"""

Turns a 1D array into a 2D array of sequential windows of window_size.

"""

# 1. Create a window of specific window_size (add the horizon on the end for later l

window_step = np.expand_dims([Link](window_size+horizon), axis=0)

# print(f"Window step:\n {window_step}")

PFA 62
Implémentation et création du modèle

window_indexes = window_step +

np.expand_dims([Link](len(x)-

(window_size+horizon-1)), axis=0).T

# create 2D array of windows of size window_size

# print(f"Window indexes:\n {window_indexes[:3],

window_indexes[-3:], window_indexes.shape}")

# 3. Index on the target array (time series) with 2D array of multiple window steps

windowed_array = x[window_indexes]

# 4. Get the labelled windows

windows, labels = get_labelled_windows(windowed_array, horizon=horizon)

return windows, labels

def make_train_test_splits(windows, labels, test_split=0.2):

"""

Splits matching pairs of windows and labels into train and test splits.

"""

split_size = int(len(windows) * (1-test_split)) #

this will default to 80% train/20% test

train_windows = windows[:split_size]

PFA 63
Implémentation et création du modèle

train_labels = labels[:split_size]

test_windows = windows[split_size:]

test_labels = labels[split_size:]

return train_windows, test_windows, train_labels, test_labels

train_windows, test_windows, train_labels, test_labels = make_train_test_splits(

full_windows, full_labels)

len(train_windows), len(test_windows), len(train_labels), len(test_labels)

import tensorflow as tf

from [Link] import layers

# Set random seed for as reproducible results as possible

[Link].set_seed(42)

# Construct model

model_1 = [Link]([

[Link](300, activation="relu"),

[Link](300, activation="relu"),

[Link](300, activation="relu"),

[Link](HORIZON, activation="linear")

# linear activation is the same as having no activation

], name="model_1_dense") # give the model a name so we can save it

PFA 64
Implémentation et création du modèle

# Compile model

model_1.compile(loss="mae",

optimizer=[Link](),

metrics=["mae"])

# Fit model

model_1.fit(x=train_windows,

y=train_labels,

epochs=100,

verbose=1,

batch_size=128,

validation_data=(test_windows, test_labels),

callbacks=[

create_model_checkpoint(

model_name=’model_experiments/model_projet_dense.keras’)]

model_1 = [Link].load_model(

’model_experiments/model_experiments/model_projet_dense.keras’)

model_1.evaluate(test_windows, test_labels)

import [Link] as plt

PFA 65
Implémentation et création du modèle

# 1. Make predictions on the test data

predicted_values = model_1.predict(test_windows)

# 2. Plot the actual (test) values and the predicted values

[Link](figsize=(30, 6))

# Plot actual test labels (true values)

[Link](test_labels, label="True Values", color=’blue’)

# Plot predicted values from the model

[Link](predicted_values, label="Predicted Values", color=’red’)

# Add title and labels

[Link]("True vs Predicted Values")

[Link]("Time")

[Link]("Vibration Values")

# Add legend

[Link]()

# Show plot

[Link]()

PFA 66
Implémentation et création du modèle

Annexe 3,4,5 (generating data with

markov model) :

VII.1 preprocessing :

import pandas as pd

# Assuming you have loaded your data into a DataFrame called df

df = pd.read_csv("[Link]", header=None)

# To delete the first column (index 0)

df = [Link]([Link][0], axis=1)

# To delete the first column (index 0)

[Link]([Link][4:7], axis=1, inplace=True)

# Assign column labels

df = [Link]([Link][3], axis=1)

[Link] = [’Accx’, ’Accy’,"Accz"]

df[’timestep’] = range(len(df))

PFA 67
Implémentation et création du modèle

df.to_csv(’clean_data.csv’, index=False)

# Show the first few rows to confirm

print([Link]())

VII.2 markov model :

import numpy as np

import pandas as pd

# Assuming you already have a vibration dataset with AccX, AccY, AccZ

data = pd.read_csv("clean_data.csv")

# Step 1: Discretize the vibration data into states (bins)

n_bins = 10 # You can adjust the number of bins (states)

data[’AccX_discrete’] = [Link](data[’Accx’], bins=n_bins, labels=False)

data[’AccY_discrete’] = [Link](data[’Accy’], bins=n_bins, labels=False)

data[’AccZ_discrete’] = [Link](data[’Accz’], bins=n_bins, labels=False)

# Step 2: Create a Markov transition matrix for each axis (AccX, AccY, AccZ)

def create_transition_matrix(series, n_bins):

transition_matrix = [Link]((n_bins, n_bins))

PFA 68
Implémentation et création du modèle

for (i, j) in zip(series[:-1], series[1:]):

transition_matrix[i, j] += 1

# Normalize the rows to get probabilities

transition_matrix = transition_matrix / transition_matrix.sum(axis=1,

keepdims=True)

return transition_matrix

transition_matrix_x = create_transition_matrix(data[’AccX_discrete’].values,

n_bins)

transition_matrix_y = create_transition_matrix(data[’AccY_discrete’].values,

n_bins)

transition_matrix_z = create_transition_matrix(data[’AccZ_discrete’].values,

n_bins)

# Step 3: Generate new data using the transition matrices

def generate_markov_sequence(transition_matrix, initial_state, n_samples):

current_state = initial_state

states = [current_state]

for _ in range(n_samples - 1):

next_state = [Link](range(transition_matrix.shape[0]), p=transition_

[Link](next_state)

current_state = next_state

PFA 69
Implémentation et création du modèle

return [Link](states)

# Start the sequence with a random initial state

initial_state_x = [Link](n_bins)

initial_state_y = [Link](n_bins)

initial_state_z = [Link](n_bins)

# Generate synthetic data

n_samples_to_generate = 30000000 # 30 million rows

synthetic_acc_x = generate_markov_sequence(transition_matrix_x, initial_state_x,

n_samples_to_generate)

synthetic_acc_y = generate_markov_sequence(transition_matrix_y, initial_state_y,

n_samples_to_generate)

synthetic_acc_z = generate_markov_sequence(transition_matrix_z, initial_state_z,

n_samples_to_generate)

# Step 4: Map the discrete states back to continuous values

# (In this example, using the same bin boundaries as the original data)

def inverse_transform(binned_data, original_series, n_bins):

bin_edges = np.histogram_bin_edges(original_series, bins=n_bins)

return bin_edges[binned_data]

synthetic_acc_x_continuous = inverse_transform(synthetic_acc_x, data[’Accx’], n_bins)

synthetic_acc_y_continuous = inverse_transform(synthetic_acc_y, data[’Accy’], n_bins)

PFA 70
Implémentation et création du modèle

synthetic_acc_z_continuous = inverse_transform(synthetic_acc_z, data[’Accz’], n_bins)

# Step 5: Combine into a DataFrame and save

synthetic_data = [Link]({

’timestep’: [Link](n_samples_to_generate),

’Accx’: synthetic_acc_x_continuous,

’Accy’: synthetic_acc_y_continuous,

’Accz’: synthetic_acc_z_continuous

})

synthetic_data.to_csv("synthetic_vibration_data_30m.csv", index=False)

print(f"Synthetic data generated with {len(synthetic_data)} rows.")

import pandas as pd

# Load the CSV file

file_path = ’data_final.csv’ # Replace with your file path

df = pd.read_csv(file_path)

# Filter rows where the ’days’ column is less than or equal to 9

df_filtered = df[df[’days’] <= 5]

# Save the filtered dataframe to a new CSV file

output_file_path = ’data_final.csv’ # Replace with your desired output file path

PFA 71
Implémentation et création du modèle

df_filtered.to_csv(output_file_path, index=False)

print(f"Filtered data saved successfully to {output_file_path}")

PFA 72
Implémentation et création du modèle

Annexe 6 (model) :

import pandas as pd

import numpy as np

from sklearn.model_selection import train_test_split

from [Link] import StandardScaler

import tensorflow as tf

from [Link] import Sequential

from [Link] import Dense

from [Link] import EarlyStopping

# Load the CSV data

df = pd.read_csv(’data_final.csv’)

# Drop the ’timestep’ column since it’s not needed

df = [Link](columns=[’timestep’])

# Use only ’Accx’ as input and ’days’ as target

X = df[[’Accx’]].values

PFA 73
Implémentation et création du modèle

y = df[’days’].values

# Split the data into training and test sets (80% training, 20% test)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,

random_state=42)

# Scale the data using StandardScaler (mean=0, std=1)

scaler = StandardScaler()

X_train_scaled = scaler.fit_transform(X_train)

X_test_scaled = [Link](X_test)

# Build the neural network model

model = Sequential([

Dense(1000, activation=’relu’, input_shape=(1,)), # 1 input feature (Accx)

Dense(500, activation=’relu’),

Dense(250, activation=’relu’),

Dense(50, activation=’relu’),

Dense(1) # Single output for ’days’

])

# Compile the model

optimizer = [Link](learning_rate=0.001)

[Link](optimizer=optimizer, loss=’mean_squared_error’)

# Use early stopping to prevent overfitting and save time

PFA 74
Implémentation et création du modèle

early_stopping = EarlyStopping(monitor=’val_loss’, patience=5,

restore_best_weights=True)

# Train the model

[Link](X_train_scaled, y_train, epochs=50, batch_size=16, validation_split=0.2,

callbacks=[early_stopping])

# Evaluate the model on test data

test_loss = [Link](X_test_scaled, y_test)

print(f"Test Loss: {test_loss}")

# Make predictions

predictions = [Link](X_test_scaled)

print(predictions)

PFA 75
Implémentation et création du modèle

Annexe 7(communication opcua) :

import numpy as np

import pandas as pd

import tensorflow as tf

from keras import layers

from opcua import Client, ua

import time

import os

# Load your dataset

df = pd.read_csv("01 - m1_half_shaft_speed_no_mechanical_load.csv",

parse_dates=["Timestamp"],

index_col=["Timestamp"])

# Data preprocessing functions

def get_labelled_windows(x, horizon=1):

return x[:, :-horizon], x[:, -horizon:]

PFA 76
Implémentation et création du modèle

def make_windows(x, window_size=30, horizon=7):

window_step =

np.expand_dims([Link](window_size+horizon), axis=0)

window_indexes = window_step + np.expand_dims([Link](len(x)-(window_size+horizo

windowed_array = x[window_indexes]

windows, labels = get_labelled_windows(windowed_array, horizon=horizon)

return windows, labels

def make_train_test_splits(windows, labels, test_split=0.2):

split_size = int(len(windows) * (1-test_split)) # 80% train / 20% test

train_windows = windows[:split_size]

train_labels = labels[:split_size]

test_windows = windows[split_size:]

test_labels = labels[split_size:]

return train_windows, test_windows, train_labels, test_labels

# Assuming the necessary data preprocessing steps have already been completed

vibration = df["AccX"].to_numpy()

HORIZON = 7 # Ensure HORIZON is defined

WINDOW_SIZE = 30

# Create windows and split the data

full_windows, full_labels = make_windows(vibration,

window_size=WINDOW_SIZE, horizon=HORIZON)

PFA 77
Implémentation et création du modèle

train_windows, test_windows, train_labels, test_labels =

make_train_test_splits(full_windows, full_labels)

# Set random seed for reproducible results

[Link].set_seed(42)

# Construct and compile the model

model_1 = [Link]([

[Link](300, activation="relu"),

[Link](300, activation="relu"),

[Link](300, activation="relu"),

[Link](HORIZON, activation="linear")

], name="model_1_dense")

model_1.compile(loss="mae",

optimizer=[Link](),

metrics=["mae"])

# Load the best model (if it was already saved)

model_1 = [Link].load_model(’model_projet_dense.keras’)

# Make predictions

predicted_values = model_1.predict(test_windows)

def write_value_int(node_id, value):

PFA 78
Implémentation et création du modèle

try:

# Get the node from the server using the NodeId

node = client.get_node(node_id)

# Convert the float value to int (assuming the node expects an Int16)

int_value = int(value) # Convert float to int

# Create a DataValue object with the new value

data_value = [Link]([Link](int_value, [Link].Int16))

# Set the value on the node

node.set_value(data_value)

# Confirm the write operation

print(f"Value {int_value} successfully written to node {node_id}")

except Exception as e:

print(f"Failed to write value: {e}")

if _name_ == "_main_":

# Create an OPC UA client instance

client = Client("[Link]://[Link]:4840") # Update the address if needed

try:

# Connect to the OPC UA server

PFA 79
Implémentation et création du modèle

[Link]()

# Print connection success

print("Connected to OPC UA server")

# Iterate through predicted values

for values in predicted_values:

for value in values:

# Specify the node ID and the value to be written

node_id = ’ns=3;s="Data_block_1"."motor vibration"’

# Update NodeId based on the screenshot

print(value)

write_value_int(node_id, value)

[Link](1)

except Exception as e:

print(f"An error occurred: {e}")

finally:

# Ensure the client disconnects from the server

[Link]()

print("Disconnected from OPC UA server")

import time

from opcua import Client, ua

PFA 80
Implémentation et création du modèle

import pandas as pd

from vibration import *

from modelML import *

# Define a generic function to write a Float value to the OPC UA node

def write_value_to_node(node_id, value, value_name):

try:

# Get the node from the server using the NodeId

node = client.get_node(node_id)

# Create a DataValue object with the new value

data_value =

[Link]([Link](value,

[Link]))

# Set the value on the node

node.set_value(data_value)

# Confirm the write operation

print(f"{value_name} {value} successfully written to node {node_id}")

except Exception as e:

print(f"Failed to write {value_name}: {e}")

if _name_ == "_main_":

PFA 81
Implémentation et création du modèle

# Create an OPC UA client instance

client = Client(

"[Link]://[Link]:4840") # Update the address if needed

try:

# Connect to the OPC UA server

[Link]()

# Print connection success

print("Connected to OPC UA server")

# Load your machine learning model and test data

predicted_values = model_1.predict(test_windows)

# Read original vibration data

df = pd.read_csv("01 - m1_half_shaft_speed_no_mechanical_load.csv")

vib_in_time = [Link](df["AccX"])

original_values = vib_in_time["AccX"].to_numpy()

# Initialize a timer to track when 10 minutes have passed

last_time_left_written = [Link]()

while True:

for i in range(min(len(predicted_values),

len(original_values), len(time_left))):

PFA 82
Implémentation et création du modèle

# Get the predicted value

predicted_value = float(predicted_values[i][0])

# Get the original value

original_value = float(original_values[i])

# Write predicted value to OPC UA server

write_value_to_node(’ns=3;

s="Data_block_1"."motor vibration predicted"’,

predicted_value, "Predicted value")

# Write original value to OPC UA server

write_value_to_node(’ns=3;

s="Data_block_1"."original value"’,

original_value, "Original value")

# Write the time left value every 10 minutes

if [Link]() - last_time_left_written >= 10:

time_left_value = float(time_left[i])

write_value_to_node(’ns=3;s="Data_block_1"."time left"’,

time_left_value, "Time left")

last_time_left_written = [Link]() # Reset the timer

PFA 83
Implémentation et création du modèle

[Link](1)

except Exception as e:

print(f"An error occurred: {e}")

finally:

# Ensure the client disconnects from the server

[Link]()

print("Disconnected from OPC UA server")

PFA 84

Vous aimerez peut-être aussi