Manuel utilisateur HMI
1. Introduction
Ce manuel décrit l’interface homme-machine (HMI) Microcontroleur qui pilote le PLC Microcontroleur associé via ESP-NOW. Il détaille la mise sous tension, la configuration du portail captif, l’exploitation quotidienne et le protocole de commandes afin que vous puissiez documenter la procédure dans Confluence ou former les opérateurs sur le firmware actuel.
2. Vue d’ensemble du système
- Matériel : Microcontroleur avec écran tactile RGB 7", tactile capacitif, bouton BOOT (GPIO0) pour la maintenance et LED d’état en bas à gauche liée aux retours d’envoi ESP-NOW.
- Firmware : environnement PlatformIO
hmi. Le transport ESP-NOW est strictement unicast ; l’adresse MAC du PLC doit être configurée dans la NVS avant tout échange. - PLC associé : PLC Microcontroleur Industrial Shields (environnement
plc) qui reçoit les commandes, ferme la boucle de contrôle et renvoie les accusés de réception directement au pupitre qui les a émises. - Verrouillage avancé : l’accès aux pages Config et IO n’est autorisé que lorsque le PLC force l’entrée « Advanced » (bit 7 / I8 à 1) dans son flux d’état.
3. Navigation et accès aux pages
- L’interface est orientée portrait : Main → Jog → Config → IO → Main. Les flèches de navigation dans chaque en-tête font avancer ou reculer d’une page.
- Le pavé numérique à l’écran reste visible sur toutes les pages et cible toujours la zone de texte qui a le focus.
- Les pages Config et IO restent masquées tant que le PLC n’annonce pas l’entrée Advanced/Service (I8). Lorsque le bit repasse à 0, le firmware retourne automatiquement sur la page Main.
4. Page Main
- Init : amorce la machine d’état du PLC (
CMD_INIT). À lancer après chaque démarrage ou réarmement de défaut ; aucun autre mouvement n’est autorisé tant que l’état « init-ready » est faux. - Start : lit la hauteur saisie, convertit les millimètres en counts codeur à l’aide des valeurs ratio/height/gap calibrées, envoie
CMD_SET_TARGET, puisCMD_START_MOVE. Le bouton Start refuse de s’exécuter tant que la sortie clamp (O4) est active. États UI : gris au repos, bleu lorsque le PLC signale un mouvement, vert quandactivityFlagsindique que l’axe est à la cible, rouge si le clamp est engagé ou si une erreur de démarrage est latched (cible hors course, calibration manquante, échec de conversion). - Home : demande une séquence d’homing (
CMD_HOME). - Stop : envoie
CMD_STOPpour un arrêt immédiat ; l’entraînement peut encore ralentir brièvement pendant la rampe. - Impulsions Arms / Clamp : boutons momentanés qui ordonnent au PLC de pulser ses entrées virtuelles (
CMD_PULSE_I5etCMD_PULSE_I6). Chaque impulsion n’est acceptée que si l’état du PLC confirme les interverrouillages requis (clamp verrouillé pour Arms, capteur Arms engagé pour Clamp). À l’état prêt, le bouton Clamp est gris, passe au vert lorsque le clamp est verrouillé, devient rouge si la sortie est active sans bit de verrouillage et reste désactivé (gris) lorsque les interverrouillages bloquent l’action. - Saisie de hauteur : la zone de texte accepte des millimètres. Modifier la valeur planifie un
CMD_SET_TARGET; vider le champ laisse la cible précédente active jusqu’à la saisie d’une nouvelle valeur. Si les paramètres de conversion sont manquants ou invalides, l’interface affiche une « Start error » et inhibe le mouvement pendant deux secondes. - Pavé numérique : disposition
7 8 9 / 4 5 6 / 1 2 3 / 0 00 .avec une icône corbeille pour effacer le champ. Le pavé reste toujours lié à la zone de texte sélectionnée. - LED d’état : l’indicateur en bas à gauche est vert lorsque le dernier callback ESP-NOW a renvoyé
ESP_NOW_SEND_SUCCESS, rouge sinon.
Boutons de la page Main
| Contrôle | Commande(s) | Comportement | Remarques |
|---|---|---|---|
| Init | CMD_INIT |
Demande au PLC de passer en état prêt au mouvement et de réinitialiser les interverrouillages. | Les autres boutons de mouvement restent désactivés jusqu’à la fin d’Init ; le PLC peut ignorer si une init est déjà en cours ou si une faute persiste. |
| Start | CMD_SET_TARGET, CMD_START_MOVE |
Convertit la hauteur (mm) en counts, mémorise la cible et déclenche le mouvement. | Bloqué tant que Clamp (O4) est actif, si des paramètres de conversion manquent ou si le PLC signale une faute. Une « Start error » est journalisée si la cible est rejetée. |
| Home | CMD_HOME |
Lance la routine d’homing. | Ignoré par le PLC si un homing est déjà actif ; le bouton devient bleu pendant le mouvement puis vert une fois homé. |
| Stop | CMD_STOP |
Émet une commande d’arrêt immédiat. | Toujours autorisé ; le PLC peut laisser la charge décélérer selon la logique variateur. |
| Impulsion Arms | CMD_PULSE_I5 via bouton |
Envoie une impulsion virtuelle de 100 ms pour engager le circuit Arms. | Accepté uniquement lorsque le bit de verrouillage Clamp est actif ; sinon le PLC ignore et l’UI clignote brièvement. |
| Impulsion Clamp | CMD_PULSE_I6 via bouton |
Envoie une impulsion virtuelle de 100 ms pour activer le clamp. | Exige le capteur Arms (I0) à 1 et Init prêt ; le PLC rejette la demande si les interverrouillages ne sont pas satisfaits. |
5. Page Jog
- Jog− / Jog+ : boutons streamés qui s’appuient sur le masque
CMD_UI_STATEcontinu. Appuyer sur un bouton de jog réexpédie aussi le RPM actuel du curseur pour maintenir la cible de rampe du PLC. - Curseur de vitesse de jog : linéaire 10–700 RPM (gauche → droite). Les changements mettent à jour l’étiquette voisine ; relâcher le curseur déclenche
CMD_SET_JOG_VELavec le RPM sélectionné et appuyer sur un bouton de jog réexpédie la même consigne. Les contrôles de jog se désactivent automatiquement lorsque Init est en attente, que le clamp est verrouillé ou que le PLC signale un homing en cours.
Commandes Jog
| Contrôle | Commande(s) | Comportement | Remarques |
|---|---|---|---|
| JOG− / JOG+ | Bits CMD_UI_STATE |
L’appui maintenu fixe la direction de jog dans le flux UI. | Désactivé si Init en attente, clamp verrouillé ou homing ; le PLC stoppe le jog lorsque les bits retombent. |
| Curseur de vitesse de jog | CMD_SET_JOG_VEL |
Met à jour le RPM désiré au relâchement ; appuyer sur un bouton de jog renvoie aussi la valeur courante. | Plage 10–700 RPM ; le PLC peut saturer la valeur si elle dépasse ses limites. |
6. Page Config (mode maintenance requis)
- MAC du dispositif : affiche la MAC STA du HMI pour référence maintenance.
- Paramètres de mouvement : champs éditables pour Speed, Accel, Decel et Jog A/Dec (tous encodés en uint16 dans la trame de sauvegarde).
- Section ratio : capture les counts codeur (
ratioTicks) et la distance parcourue (ratioMm) pour établir la conversion counts/mm utilisée par le champ hauteur. - Position : affichage en lecture seule mis à jour depuis les ACK (counts convertis en millimètres si disponibles).
- Height & Gap : stockés en millièmes de millimètre (
heightMm1000,gapMm1000). Gap alimente la protection de dépassement lors de la conversion mm → counts. - Save : envoie le
CMD_SAVE_CONFIGétendu, qui inclut désormais paramètres de mouvement, param5/6 réservés, ratio ticks/mm, hauteur et gap. Le PLC répond parACK_CONFIGen renvoyant les valeurs stockées (et éventuellement les counts position). - Reload : émet
CMD_RELOAD_CONFIG. Les champs se mettent à jour dès que le PLC répond avecACK_CONFIG.
Boutons Config
| Contrôle | Commande(s) | Comportement | Remarques |
|---|---|---|---|
| Save | CMD_SAVE_CONFIG |
Envoie les paramètres de mouvement, ratio ticks/mm, hauteur et gap vers la NVS du PLC. | Le PLC répond par ACK_CONFIG ; les valeurs doivent rester dans les plages uint16/uint32, sinon le PLC peut rejeter et journaliser une erreur. |
| Reload | CMD_RELOAD_CONFIG |
Demande au PLC de renvoyer les paramètres stockés. | Les champs se rafraîchissent à l’arrivée de ACK_CONFIG ; si le PLC ne lit pas la NVS il peut renvoyer des valeurs par défaut. |
7. Page IO (mode maintenance requis)
- Entrées I1–I7 : LEDs indicatrices vertes lorsque le PLC signale l’entrée numérique correspondante à 1.
- Sorties O1–O4 : interrupteurs LVGL qui suivent les sorties du PLC et envoient
CMD_SET_OUTPUTSlors des basculements. Le PLC peut forcer la désactivation (gris) pendant l’homing ou tant que Init n’est pas terminé. - Relais : interrupteur dédié mappé sur
CMD_SET_RELAY. - Drive SI1–SI7 : LEDs bleues exposant les entrées drive du PLC. Touchez Refresh pour envoyer
CMD_STATUS_POLL; le prochainACK_STATUSmettra à jour la banque SI (driveInputsMask).
Commandes IO
| Contrôle | Commande(s) | Comportement | Remarques |
|---|---|---|---|
| Bascule O1–O4 | CMD_SET_OUTPUTS |
Reflète le masque de sorties PLC lors du basculement. | Le PLC peut désactiver l’interaction (état gris) pendant l’homing ou si Init n’est pas prêt ; les écritures concurrentes du PLC priment. |
| Bascule Relais | CMD_SET_RELAY |
Bascule la sortie relais. | Le PLC peut imposer l’état relais si la logique de sécurité l’exige. |
| Refresh (Drive SI) | CMD_STATUS_POLL |
Demande une mise à jour immédiate des indicateurs SI. | Les LEDs SI se mettent à jour sur le prochain ACK_STATUS ; répéter la requête lien KO produit des échecs d’envoi (!). |
8. Indicateurs d’état et retours
- Console série (115200 bps)
.s’imprime à chaque callback d’envoi réussi ;!en cas d’échec.- Les logs
ESP-NOW: ACK_STATUSapparaissent au plus une fois par seconde ;ESP-NOW: ACK_CONFIGest journalisé lorsque les données de configuration sont reçues. - Les messages « Start error » identifient les échecs de conversion ou d’interverrouillage qui ont empêché une commande de mouvement.
10. Maintenance et récupération
- Changer le pair PLC : redémarrez en maintenant BOOT pour effacer les préférences, puis ressaisissez la MAC via le portail captif.
- Mises à jour firmware :
pio run -e hmi -t uploadflashe le pupitre ; utilisezpio run -e hmipour une compilation seule. - Surveillance série :
pio device monitor -p <port> -b 115200fournit les logs temps réel pour le dépannage.
11. Dépannage
| Symptôme | Vérifications et actions correctives |
|---|---|
| Pages Config/IO masquées | Assurez-vous que le PLC force I8 (Advanced) à 1. Tant que ce bit reste bas, la navigation est limitée à Main/Jog. |
| Le bouton Start devient rouge et aucun mouvement ne démarre | Confirmez qu’Init est terminé, que Clamp (O4) est relâché et que le champ hauteur contient une valeur valide dans la plage calibrée. Consultez les détails « Start error » sur la console série. |
| Boutons Arms/Clamp grisés | Les interverrouillages PLC ne sont pas satisfaits (ex. clamp non verrouillé pour Arms). Vérifiez les entrées sur la page IO et les journaux PLC. |
| Le curseur de jog n’a aucun effet | Vérifiez qu’Init est terminé et que le clamp n’est pas verrouillé. Le RPM est renvoyé lorsque vous relâchez le curseur ou pressez un bouton de jog. |
| Les indicateurs SI ne changent jamais | Touchez Refresh pour envoyer CMD_STATUS_POLL et observez l’arrivée du prochain ACK_STATUS. |
La LED d’état reste rouge / répétitions de ! dans les logs |
Relancez le portail captif pour vérifier la MAC pair, confirmez l’alimentation/portée du PLC et inspectez les erreurs d’envoi série. |
12. Commandes de référence
| Commande | Direction | Charge utile | Remarques |
|---|---|---|---|
CMD_UI_STATE (0x01) |
HMI → PLC | Masque de boutons (Start, Stop, Home, Jog±, Init, etc.) | Streamé en continu avec régulation. |
CMD_STATUS_POLL (0x02) |
HMI → PLC | — | Déclenche un ACK_STATUS immédiat (utilisé par Refresh et le watchdog). |
CMD_INIT (0x17) |
HMI → PLC | — | Arme l’état de contrôle du PLC ; requis avant tout mouvement. |
CMD_SET_TARGET (0x18) |
HMI → PLC | Counts absolus (int32 LE) | Généré à partir du champ hauteur avant de lancer le mouvement. |
CMD_START_MOVE (0x19) |
HMI → PLC | — | Exécute la cible préalablement envoyée. |
CMD_STOP (0x11) |
HMI → PLC | — | Arrêt immédiat. |
CMD_HOME (0x13) |
HMI → PLC | — | Lance la routine d’homing. |
CMD_SET_JOG_VEL (0x22) |
HMI → PLC | RPM (uint16 LE) | Envoyé lorsque le curseur de jog est relâché ou lorsqu’un bouton de jog est pressé. |
CMD_PULSE_I5 (0x23) |
HMI → PLC | — | Demande une impulsion de 100 ms de l’entrée virtuelle I5 (Arms). |
CMD_PULSE_I6 (0x24) |
HMI → PLC | — | Demande une impulsion de 100 ms de l’entrée virtuelle I6 (Clamp). |
CMD_SET_OUTPUTS (0x20) |
HMI → PLC | Masque de sorties (bit0=O1 … bit3=O4) | Émis par les interrupteurs IO quand ils sont actifs. |
CMD_SET_RELAY (0x21) |
HMI → PLC | 0/1 | Commande du relais. |
CMD_SAVE_CONFIG (0x30) |
HMI → PLC | Speed, Accel, Decel, JogRamp, Param5, Param6 (uint16) ; RatioTicks, RatioMm1000, HeightMm1000, GapMm1000 (uint32) | Le PLC stocke les valeurs et renvoie ACK_CONFIG. |
CMD_RELOAD_CONFIG (0x31) |
HMI → PLC | — | Le PLC répond avec ACK_CONFIG. |
ACK_STATUS (0x80) |
PLC → HMI | Entrées, sorties, relais, activity flags, masque drive optionnel, counts position optionnels | Pilote la couleur UI, l’activation des boutons, les LEDs SI et l’affichage de position. |
ACK_CONFIG (0x81) |
PLC → HMI | Speed, Accel, Decel, JogRamp, entrées, sorties, relais, ratio/hauteur/gap optionnels, position optionnelle | Alimente les champs Config et les paramètres de conversion mis en cache. |
Pour les notes d’implémentation destinées aux contributeurs, consultez HMI/README.md et AGENTS.md.