Node-RED est un outil de développement visuel, basé sur des flux (flows), qui permet de créer facilement des applications connectées en assemblant des blocs logiques.
Il fonctionne dans un navigateur et utilise un système de “nœuds” que l’on relie entre eux pour traiter des données, piloter des équipements ou créer des interfaces web.
Node-RED est particulièrement utilisé pour :
- l’IoT (Internet des Objets)
- la collecte et transformation de données
- la communication avec des protocoles industriels (MQTT, Modbus, OPC-UA…)
RabbitMQ est un serveur de messagerie qui permet à différentes applications de communiquer entre elles en s’échangeant des messages de manière fiable, asynchrone et découplée.
Il utilise principalement le protocole AMQP, gère les files d’attente, l’acheminement intelligent des messages, les accusés de réception et la persistance.
RabbitMQ est très utilisé pour :
- répartir des tâches entre plusieurs services,
- connecter des systèmes industriels ou IoT,
- absorber des flux importants sans perdre de messages,
- assurer une communication robuste entre modules d’une application
* De 4 pompes chacune capable d'alimenter la citerne avec un débit de 75 l/s pour chaque pompe (*OUT_PUMP_1*, *OUT_PUMP_2*, *OUT_PUMP_3*, *OUT_PUMP_4*).
* De 4 capteurs disposés à différentes hauteurs (*IN_SENSOR_MIN*, *IN_SENSOR_LOW*, *IN_SENSOR_HIGH*, *IN_SENSOR_MAX*).
* D'un bouton poussoir permettant de changer le mode de fonctionnement (*IN_KEYBOARD_A*).
* De quatre boutons poussoirs permettant de démarrer les moteurs manuellement (*IN_KEYBOARD_1*, *IN_KEYBOARD_2*, *IN_KEYBOARD_3*, *IN_KEYBOARD_4*).
* Un voyant qui indique le mode de fonctionnement (*OUT_DISPLAY_MODE*)
* Enfin un avertisseur sonore qui sonne lorsque une anomalie grave survient (*OUT_BEEP*).
# Fonctionnement
Le système démarre en mode manuel (*OUT_DISPLAY_MODE* = 0). Un appui sur le bouton poussoir (*IN_KEYBOARD_A*) passe le système en mode automatique, un nouvel appui est nécessaire pour repasser en mode manuel.
La sortie (*OUT_DISPLAY_MODE* = 1) est activée en mode automatique.
Lorsque le niveau *IN_SENSOR_MAX* est atteint tous les moteurs sont arrêtés quelque soit le mode de fonctionnement.
Lorsque le niveau *IN_SENSOR_MIN* est atteint l'avertisseur sonore est déclenché. Si le système est en mode automatique il repasse en mode manuel. L'avertisseur retenti qu'une seule fois quelque soit la durée en dessous du seuil d'avertissement. Il faut que le niveau repasse au dessus du niveau *IN_SENSOR_MIN* pour réinitialiser l'avertisseur soniore.
* Faire le grafcet de ce fonctionnement
* Programmer ce fonctionnement
## Mode automatique
Lorsque le système est en dessous de *IN_SENSOR_LOW* pendant plus de 1.5s le système démarre un moteur. Si le niveau est toujours inférieur à *IN_SENSOR_LOW* = 0 au bout de 1.5s le système démarre une nouvelle pompe jusqu'à ce que les 4 pompes soient activées.
A l'inverse Lorsque le système est au dessus de *IN_SENSOR_LOW* = 1 pendant plus de 1.5s le système arrête un moteur. Si le niveau est toujours supérieur à IN_SENSOR_LOW au bout de 1.5s le système arrête une nouvelle pompe jusqu'à ce que les 4 pompes soient à l'arrêt.
* Programmer ce fonctionnement en suivant le [grafcet](grafcet.pdf) fourni
Calculer la moyenne de débit d'un moteur lorsqu'il est en fonctionnement.
Allumer une lumière lorsque le débit mouen est inférieur à 70 l/s.
## Mode maintenance
En mode automatique un appui sur un bouton poussoir met le moteur correspondant en mode maintenance. Un moteur en marche s'arrête. Un moteur à l'arrêt ne peut plus être démarré dans le mode automatique.
Un nouvel appui sur le bouton poussoir annule le mode maintenance du moteur correspondant. Le moteur est disponible pour le cycle automatique
Le passage en mode manuel annule tous le mode maintenance de tous les moteurs.
* Programmer ce fonctionnement
## Mode maintenance prédictive 1
a. Mémoriser le nombre de démarrage de chaque moteur.
b. Lors du démarrage d'un moteur, démarrer le moteur qui a le moins de démarrage.
c. Lorsqu'un moteur passe en mode maintenance, remettre à 0 son compteur.
d. Lors de l'arrêt d'un moteur si le nombre de démarrage est égal à 5 il faut passer le moteur en mode maintenance.
* Programmer ce fonctionnement
## Mode maintenance prédictive 2
a. Mémoriser le temps de fonctionnement de chaque moteur.
b. Lors du démarrage d'un moteur, démarrer le moteur qui a le moins de temps de fonctionnement.
c. Lorsqu'un moteur passe en mode maintenance, remettre à 0 son temps de fonctionnement.
d. Lors de l'arrêt d'un moteur si le temps cumulé de fonctionnement est supérieur à 20s il faut passer le moteur en mode maintenance.
e. Si un moteur a un temps de fonctionnement de plus de 30s l'arrêter et le passer en mode maintenance.