Manuel d'utilisation

Abeille ApimouAPIMOU

Simulateur d'Automate Programmable Industriel — logique combinatoire, séquentielle et grafcet

Version 2.6
!

Avertissement — exclusion de responsabilité. Ce logiciel est fourni « tel quel », sans garantie d'aucune sorte, explicite ou implicite, y compris, mais sans s'y limiter, les garanties de bon fonctionnement, d'adéquation à un usage particulier ou d'absence d'erreurs.

En aucun cas l'auteur ne pourra être tenu responsable de tout dommage, perte de données, panne matérielle ou tout autre effet indésirable résultant directement ou indirectement de l'utilisation de ce logiciel, même si l'auteur a été informé de la possibilité de tels dommages.

L'utilisation de ce logiciel se fait sous votre seule responsabilité.

1Présentation

Apimou est un simulateur d'Automate Programmable Industriel qui permet de créer et tester des programmes simples mettant en œuvre des fonctions de logique combinatoire et séquentielle. Il peut fonctionner en mode simulation ou en mode connecté, relié à une partie opérative logicielle ou réelle. Il dispose de 32 entrées et 32 sorties binaires ainsi que de variables internes (variables d'étape, variables de temporisation, variables de comptage, bits internes).

Les sorties peuvent être des fonctions directes des entrées, et/ou dépendre d'une séquence matérialisée par un grafcet.

L'archive Apimou.zip comprend :

  • Apimou.exe, le programme principal (qui se suffit éventuellement à lui-même en mode simulation) ;
  • Apimou.pdf, ce document ;
  • Bees.exe, Afficheur.exe, Feux_tri.exe, Convoyeur&Verins.exe, Ascenseur.exe, Chariots.exe (et peut-être d'autres) qui sont les parties opératives logicielles disponibles actuellement. Apimou ne pourra communiquer qu'avec une partie opérative à la fois ;
  • un dossier Sources qui contient le code source (C++Builder 10.3.3) de la partie opérative Bees. Ce code est fourni pour comprendre au besoin le protocole de communication entre Apimou et les parties opératives. On peut parfaitement se dispenser d'ouvrir ce dossier ;
  • un dossier Fichiers api qui contient, dans les sous-dossiers correspondants, quelques exemples de programmes pour les parties opératives proposées. Les sous-dossiers « pour Afficheur », « pour Ascenseur », « pour Feux tricolores », « pour Convoyeur et vérins » ne contiennent qu'un unique fichier config_(nom de la PO).api. Lorsqu'on ouvre ce fichier dans Apimou on trouve simplement des mnémoniques (pour les entrées/sorties) correspondant à ce que l'on voit dans la partie opérative correspondante (libellés des boutons, des capteurs, etc.). Le programme reste à créer. On trouve sur Internet des exercices relatifs à ces parties opératives, Apimou permet notamment de tester en pratique les solutions de ces exercices.

2Informations de licences

Apimou est un logiciel gratuit.

Le code source d'Apimou est disponible sur le site de l'auteur, à défaut sur simple demande.

Apimou utilise le composant DOSCommand de TurboPack, sous licence MPL 1.1.

Apimou utilise la librairie Boost, sous licence Boost Software License 1.0.

Apimou utilise DelphiZXingQRCode de Foxit Software, sous licence Apache-2.0.

3Prise en main rapide

Les deux exemples qui suivent seront testés en mode simulation.

3.1Exemple de programme en logique combinatoire

  1. Lancer Apimou.
  2. Vérifier que le mode Simulation est sélectionné (ModeSimulation).
  3. Mettre l'automate en Run (AutomateRun).
  4. Cliquer sur les cases %I1.0, %I1.1, etc. (mnémoniques correspondants i0, i1, etc.) : on voit sur l'automate les leds d'entrée s'allumer (et c'est tout : pour l'instant l'automate n'est pas programmé).
  5. Mettre l'automate en Stop (AutomateStop).
  6. Cliquer sur l'onglet Sorties, et dans la colonne Équation de la sortie %Q2.3 (mnémonique q3) taper i2+i7.
  7. Mettre l'automate en Run (AutomateRun).
  8. Cliquer sur l'onglet Entrées et tester le programme : cliquer sur les cases %I1.0, %I1.1, etc. On constate que la sortie 3 (adresse %Q2.3, mnémonique q3) s'active (la led de sortie correspondante s'allume) si on clique sur %I1.2 (mnémonique i2) ou sur %I1.7 (mnémonique i7).

On a ainsi programmé l'automate, avec un exemple purement combinatoire (q3 = i2 + i7), et testé ce programme en mode simulation.

3.2Exemple de programme en logique séquentielle

Soit à programmer le grafcet ci-dessous :

Grafcet à deux étapes : étape initiale 0, transition i3, étape 1 avec action q5, transition i4 et retour à l'étape 0
(réalisé avec Editsab)
  1. AutomateStop.
  2. FichierNouveau (on efface tout).
  3. AfficheGrafcet. Dans la barre d'outils de la fiche qui apparait se trouvent les boutons correspondant aux éléments nécessaires pour la constitution d'un grafcet : étape, transition, divergence et convergence en ET.
    Barre d'outils de la fiche Grafcet avec les boutons étape, transition, divergence et convergence entourés
  4. Choisir une étape et la positionner sur la fiche, puis une transition et la positionner en dessous. Recommencer de façon à obtenir tous les éléments voulus.
    La première étape insérée sur la fiche est par défaut une étape initiale (carré double). Les numéros des étapes sont automatiquement incrémentés. Les transitions ont par défaut des réceptivités toujours fausses (valeur 0).
    Mise en place progressive des éléments du grafcet : étape 0, transition, étape 1, transition
  5. Relier les étapes aux transitions et les transitions aux étapes en cliquant sur un point de liaison (petit carré bleu), tirant puis relachant sur le second point de liaison. Pour la dernière liaison (dernière transition vers étape initiale), cliquer sur la poignée de droite (petit carré vert) et tirer vers la droite afin de l'écarter un peu pour laisser de la place aux actions.
    Création des liaisons entre étapes et transitions, puis écartement de la liaison de retour vers la droite
  6. Faire un clic droit sur l'étape 1 et choisir éditer les actions. Saisir l'action choisie (ici q5). Le point-virgule « ; » sert à séparer les actions. Dans la mesure où il n'y en a qu'une ici, on peut le supprimer (ce n'est pas une obligation). Valider en cliquant sur un espace libre de la fiche ou avec la combinaison de touches Ctrl+Entrée.
    Menu contextuel de l'étape 1 : éditer les actions, saisie de q5, résultat affiché à droite de l'étape

    On peut remarquer dans la fiche principale, en cliquant sur l'onglet sorties, que l'équation de la sortie q5 a été automatiquement inscrite (q5 = x1).

    Fenêtre principale d'Apimou : onglet Sorties avec l'équation x1 définie par le grafcet pour la sortie q5
  7. Faire un clic droit sur la première transition et choisir éditer la réceptivité. Saisir la réceptivité choisie (ici i3). Valider en cliquant sur un espace libre de la fiche ou avec la combinaison de touches Ctrl+Entrée. Faire de même pour la seconde transition, de réceptivité i4. La saisie du grafcet (du programme) est terminée.
    Édition des réceptivités i3 et i4 des deux transitions du grafcet
  8. Essai du programme : dans la fiche principale, menu AutomateRun. Un carré vert (le « jeton ») indique sur le grafcet que l'étape 0 (initiale) est active.
    Automate en Run : le jeton vert est sur l'étape initiale 0 du grafcet
  9. Cliquer sur l'onglet Entrées puis cliquer sur la case %I1.3 (mnémonique i3) : on voit sur le grafcet que l'étape 0 a été désactivée et que l'étape 1 est maintenant active. L'action correspondante s'exécute, donc la sortie q5 passe à 1 (la led de la sortie 5 s'allume).
    Clic sur i3 : l'étape 1 devient active, la led de la sortie 5 s'allume
  10. Cliquer sur la case %I1.4 (mnémonique i4) : on voit sur le grafcet que l'étape 1 a été désactivée et que l'étape 0 est maintenant active, on est revenu à l'étape initiale. La sortie q5 repasse à 0 (la led de sortie correspondante s'éteint).
    Clic sur i4 : retour à l'étape initiale 0, la sortie q5 repasse à 0

4Variables

Les variables d'entrée, de sortie, d'étape et les bits internes sont identifiés par un couple (adresse, mnémonique). Les variables de temporisation et de comptage ne sont identifiées que par un mnémonique (t0 à t7 pour les temporisations, ct0 à ct7 pour les compteurs).

Les adresses ne servent ici qu'à des fins de repérage, il n'est pas possible de les utiliser dans les expressions logiques.

Les mnémoniques sont quant à eux essentiels, ils sont utilisés dans les expressions logiques. Chaque mnémonique est unique.

4.1Modification de mnémonique

Les mnémoniques proposés par défaut peuvent être modifiés à partir de la fenêtre principale, à condition que l'automate soit en STOP.

Les caractères autorisés pour les mnémoniques sont tous les caractères alphanumériques (non accentués) ainsi que l'underscore (_). Un mnémonique peut n'être constitué que d'un caractère, mais les mnémoniques 0 et 1 sont réservés (0 correspondant à une condition toujours fausse et 1 à une condition toujours vraie). Les mnémoniques t0 à t7 et ct0 à ct7 sont également réservés (variables de temporisation et de comptage).

Les mnémoniques sont sensibles à la casse : A1 et a1 sont deux mnémoniques différents.

Pour modifier un mnémonique il faut le sélectionner puis cliquer afin d'entrer dans le mode édition du tableau :

Édition d'un mnémonique dans l'onglet Entrées de la fenêtre principale ; info-bulle : caractères autorisés alphanumériques et underscore

4.2Variables d'entrée

Elles correspondent aux états des capteurs tout ou rien reliés à la carte d'entrées de l'automate.

Leurs valeurs sont lues par l'automate. En mode simulation ces variables sont forcées : on leur affecte une valeur en cliquant sur les cases %I.x.

4.3Variables de sortie

Elles correspondent aux états des (pré-, micro-) actionneurs tout ou rien reliés à la carte de sorties de l'automate.

Leurs valeurs sont calculées par l'automate. Ces calculs sont les résultats de fonctions logiques qui sont ici définies sous l'onglet Sorties de la fiche principale, dans la colonne Équation.

Si un (ou plusieurs) grafcet a (ont) été créé(s), les équations des sorties correspondant aux actions de ce(s) grafcet sont automatiquement définies et il n'est pas possible de les modifier. On peut aussi ne pas programmer d'action dans le grafcet et saisir manuellement les équations des sorties, ce qui laisse plus de liberté.

Il y a deux façons de saisir une équation logique pour une variable de sortie :

  • soit en sélectionnant la cellule puis en cliquant dessus pour entrer dans le mode édition. On saisit alors l'équation au clavier ;
  • soit en sélectionnant la cellule puis en effectuant un clic droit, sans entrer dans le mode édition, afin de sélectionner les variables et les opérateurs nécessaires :
Menu contextuel de saisie d'équation : choix entrée, sortie, étape et opérateurs + . / ( )

4.4Variables d'étape

Elles correspondent aux états des étapes du (ou des) grafcet. Ce sont des variables internes dont les valeurs sont calculées par l'automate.

On peut, par défaut, visualiser toutes les variables d'étape, même si toutes ne sont pas utilisées. Pour ne visualiser que les étapes utilisées (instanciées), il faut cocher la case Étapes instanciées de l'onglet Étapes de la fenêtre principale :

Onglet Étapes de la fenêtre principale avec la case Étapes instanciées

4.5Bits internes

Les bits internes servent à ce qu'on veut, ils sont définis, comme les variables de sortie, par une équation logique.

On peut par exemple les utiliser pour exprimer :

4.6Variables de temporisation

Les variables de temporisation (t0 à t7) sont des variables internes qui passent à 1 lorsque la temporisation correspondante (T0 à T7) est écoulée (voir § Temporisations et Compteurs). Elles peuvent être utilisées selon le besoin pour exprimer une sortie, un bit interne, une réceptivité ou toute autre expression logique.

4.7Variables de comptage

Les variables de comptage (ct0 à ct7) sont des variables internes qui passent à 1 lorsque le comptage correspondant (CT0 à CT7) est terminé (voir § Temporisations et Compteurs). Elles peuvent être utilisées selon le besoin pour exprimer une sortie, un bit interne, une réceptivité ou toute autre expression logique.

5Équations logiques

Les équations logiques permettent de définir les sorties, les réceptivités d'un grafcet, les bits internes. Elles permettent aussi de déclarer les conditions d'activation ou de remise à 0 des blocs fonction (temporisation, comptage). Les règles qui suivent s'appliquent dans tous les cas :

Les opérandes sont les mnémoniques des variables d'entrée, d'étape, de temporisation, de comptage, éventuellement de sortie, et des bits internes.

Les trois seuls opérateurs utilisés sont ET symbolisé par un point (.), OU symbolisé par un plus (+) et NON symbolisé par un slash (/).

i1 OU i2 ET i3 ET NON i4   s'écrira   i1+i2.i3.i4/
N.B.
  • l'opérateur / s'applique à ce qui le précède (variable ou expression entre parenthèses) ;
  • une équation est déclarée directement dans l'espace qui la reçoit, elle ne commence pas par un signe d'égalité ;
  • des parenthèses permettent si nécessaire de prioriser les opérations : i1+i2.i3 correspond à i1+(i2.i3), différent de (i1+i2).i3 ;
  • l'opérateur . n'est pas implicite : i1.(i2+i3) ne peut pas s'écrire i1(i2+i3) ;
  • il est possible de séparer les variables des opérateurs par des espaces ;
  • les valeurs 0 et 1 (faux et vrai) peuvent être utilisées (1 permet par exemple de déclarer une réceptivité toujours vraie).

6Temporisations et Compteurs

Apimou permet d'utiliser 8 temporisations (numérotées de 0 à 7) paramétrables en « TON », « TOF », « TP » et 8 compteurs (également numérotés de 0 à 7) de type « CTU ». On accède à ces fonctions par le menu AfficheFonctions.

Fenêtre Fonctions, onglet Temporisations : 8 temporisations TON avec préréglage, base et sortie Q

À chaque temporisation ou compteur est associée une variable logique de sortie Q imposée (t4 pour la temporisation 4 et ct3 pour le compteur 3 par exemple).

Les temporisations peuvent se représenter par le bloc fonction suivant :

Bloc fonction Tx : entrée IN (équation logique d'activation), PT (préréglage × base), types TON/TOF/TP, sortie Q = tx

L'équation logique d'activation (IN) peut être saisie au clavier ou avec le menu contextuel qui apparaît lorsqu'on effectue un clic droit sur la cellule. Elle peut, comme toute autre équation, n'être constituée que d'une variable.

Chronogramme d'une temporisation TON (retard à l'enclenchement) :

Chronogramme TON : Q passe à 1 après un délai PT suivant le front montant de IN
source : International Journal of Mechatronics and Applied Mechanics, 2018, Issue 4

Chronogramme d'une temporisation TOF (retard au déclenchement) :

Chronogramme TOF : Q retombe à 0 après un délai PT suivant le front descendant de IN
source : International Journal of Mechatronics and Applied Mechanics, 2018, Issue 4

Chronogramme d'une temporisation TP (impulsion de durée fixe) :

Chronogramme TP : impulsion de durée fixe PT sur Q à chaque front montant de IN
source : International Journal of Mechatronics and Applied Mechanics, 2018, Issue 4

Les compteurs peuvent se représenter par le bloc fonction suivant :

Bloc fonction CTx : CU (équation logique de comptage), R (équation logique de remise à 0), PV (valeur de présélection), sortie Q = ctx

Les équations logiques de comptage (CU) ou de remise à 0 (R) peuvent être saisies au clavier ou avec le menu contextuel qui apparaît lorsqu'on effectue un clic droit sur la cellule. Elles peuvent, comme toute autre équation, n'être constituées que d'une variable.

Chronogramme d'un compteur CTU (pour PV = 3) :

Chronogramme CTU pour PV=3 : la valeur courante CV s'incrémente sur chaque front de CU, Q passe à 1 quand CV atteint 3, R remet à zéro
CV : Current Value = valeur courante — source : International Journal of Mechatronics and Applied Mechanics, 2018, Issue 4

7Grafcet

L'essentiel de ce qu'il y a à connaître pour saisir un grafcet est décrit dans le paragraphe correspondant de prise en main rapide.

7.1Étapes et actions

Les étapes peuvent être simples ou initiales (activées au passage en RUN de l'automate). Le choix se fait par un menu contextuel (clic droit sur l'étape → initiale).

Chaque étape a un numéro unique. Il est possible de le modifier, toujours par menu contextuel (clic droit sur l'étape → numéro, entrer la valeur souhaitée, valider en cliquant sur un espace libre de la fiche ou avec la combinaison de touches Ctrl+Entrée).

La définition d'une action associée à une étape se fait par menu contextuel (clic droit sur l'étape → éditer les actions, entrer l'expression souhaitée, valider en cliquant sur un espace libre de la fiche ou avec la combinaison de touches Ctrl+Entrée).

Si plusieurs actions sont associées à une même étape elles doivent être séparées par un point-virgule (;).

Une action continue doit être déclarée par le mnémonique de la sortie correspondante. Il n'est pas possible d'affecter un bit interne à une action (on peut toujours le faire hors grafcet en définissant l'équation du bit souhaité, m2=x5 par exemple si on veut activer le bit m2 avec l'étape 5).

Une action conditionnelle doit être déclarée par la syntaxe condition ? sortie.

i

Les équations des sorties correspondant aux actions du (des) grafcet sont automatiquement définies et il n'est pas possible de les modifier. On peut aussi ne pas programmer d'action dans le grafcet et saisir manuellement les équations des sorties.

Exemples d'actions :

GrafcetGrafcet ApimouÉquations des sorties
(définies automatiquement)
Étape 3 avec action q7 Étape 3 avec action q7 dans Apimou q7 = x3
Étapes 3 et 9, chacune avec l'action q7 Étapes 3 et 9 avec l'action q7 dans Apimou q7 = x3 + x9
Étape 3 avec deux actions q7 et q10 Étape 3 avec les actions q7 ; q10 dans Apimou q7 = x3
q10 = x3
Étape 3 avec action q7 conditionnée par i0.(i1/+i4) et action q10 Étape 3 avec l'action conditionnelle i0.(i1/+i4)?q7 ; q10 dans Apimou q7 = x3.(i0.(i1/+i4))
q10 = x3
Étapes 3 (action conditionnelle q7 et action q10) et 9 (action q7) Étapes 3 et 9 dans Apimou avec action conditionnelle et action continue q7 = x3.(i0.(i1/+i4)) + x9
q10 = x3

7.2Transitions et réceptivités

Repère de transition (1) affiché à gauche d'une transition de réceptivité dcy

Les transitions sont repérées par un numéro qui les identifie de façon unique. Il est possible d'afficher ou de masquer ces repères par un clic droit sur une transition quelconque, en choisissant « afficher les repères ».

Une transition a par défaut une réceptivité associée toujours fausse (0), ce qui implique que même si la transition est validée (étapes amont actives), elle ne sera jamais franchie. La modification d'une réceptivité se fait par menu contextuel (clic droit sur la transition → éditer la réceptivité, entrer l'expression souhaitée, valider en cliquant sur un espace libre de la fiche ou avec la combinaison de touches Ctrl+Entrée).

Une réceptivité toujours vraie est définie par la valeur 1. Une réceptivité non définie équivaut à une réceptivité toujours fausse.

7.3Liaisons orientées

Comparaison entre liaison automatique (lignes qui se croisent) et liaison manuelle (segments agencés librement)

Les liaisons étape ↔ transition ne peuvent être dessinées que dans le sens de leur lecture :

  • Pour une liaison étape → transition on part du point de liaison aval de l'étape pour aller vers le point de liaison amont de la transition, l'inverse est impossible.
  • Pour une liaison transition → étape on part du point de liaison aval de la transition pour aller vers le point de liaison amont de l'étape, l'inverse est impossible.

Si le mode de dessin par défaut de la liaison (automatique) ne donne pas satisfaction visuellement, en raison de lignes qui peuvent se croiser, on peut choisir dans la barre d'outils le mode « liaison manuelle » qui permet de réaliser des lignes multi-segments et d'agencer ces segments comme souhaité.

Les constructions ne correspondant pas aux règles du grafcet, en particulier la règle d'alternance étape-transition, ne sont pas permises. Tout ce qui peut être dessiné est par conséquent conforme.

7.4Divergences et convergences en ET

On se sert de ces constructions pour les séquences simultanées.

Les divergences ont une entrée et par défaut deux sorties. Si on souhaite démarrer trois séquences simultanées (ou plus) il suffit de redimensionner le bloc en le tirant vers la droite :

Divergence en ET redimensionnée en la tirant vers la droite pour accueillir une troisième séquence

Le principe est le même pour les convergences.

7.5Divergences et convergences en OU

Divergence en OU : sélection entre deux branches selon m2 et m2/, convergence en aval

On se sert de ces constructions pour les sélections (ou les sauts) de séquences.

Il n'y a rien ici de particulier à signaler, il faut simplement veiller à ce que les réceptivités des transitions sur lesquelles se fait la sélection soient (logiquement ou physiquement) exclusives, pour éviter une prolifération de jeton.

7.6Grafcets multiples

Il est possible, pour une même application, de saisir plusieurs grafcet, synchronisés ou indépendants. Exemple de grafcets synchronisés :

Deux grafcets synchronisés : grafcet1 (étapes 0,1,2) et grafcet2 (étapes 20,21) liés par les variables d'étape x20 et x21

7.7Édition multipages

Si plusieurs grafcets doivent être saisis, ils peuvent l'être chacun sur une page différente. Si l'on veut structurer le programme en hiérarchisant les grafcets et en utilisant des ordres de forçage, cette façon de faire est obligatoire : chaque grafcet est ainsi nommé et on peut alors déclencher un ordre de forçage désignant un grafcet précis.

Clic droit sur l'onglet G0 de la fiche Grafcet : menu Nouvelle page / Renommer la page

Par défaut il n'y a qu'une page sur l'espace d'édition, nommée « G0 ». On peut en ajouter en faisant un clic droit sur l'onglet et en choisissant « nouvelle page » dans le menu contextuel qui apparaît.

7.8Ordres de forçage

Un système complet de logique de commande nécessite souvent une structuration qui permet de traiter en les coordonnant plusieurs modes de marche prenant en compte toutes les situations envisageables (cf GEMMA et grafcets hiérarchisés qui en découlent). Il peut être utile dans ce cas d'avoir recours à des ordres de forçage permettant de mettre immédiatement un grafcet dans une situation particulière.

Apimou permet trois actions de forçage pour chaque grafcet : INIT, FREEZE et CLEAR. Ces actions sont disponibles dans le menu AfficheFonctions, onglet Forçages.

INITRéinitialise le grafcet : l'étape initiale est activée (les étapes initiales s'il y en a plusieurs), les autres désactivées.
FREEZEFige le grafcet dans la situation courante : il n'évolue plus, aucune transition ne peut être franchie quelles que soient les valeurs des réceptivités.
CLEARMet le grafcet dans une situation vide : toutes les étapes, initiales ou non, sont désactivées.
Fenêtre Fonctions, onglet Forçages : colonnes Init, Freeze, Clear pour les grafcets GS, GC, GPN — équation de forçage x11 en Freeze pour GPN

Chacune de ces actions est déclenchée par une équation logique. Elle peut évidemment se résumer à une simple variable d'étape.

La configuration ci-contre, par exemple, correspond en représentation grafcet normée à :

Étape 11 avec l'ordre de forçage GPN{*} en représentation grafcet normée
(réalisé avec Editsab)
N.B.

Si deux ou plus de ces trois ordres devaient être simultanément actifs pour un même grafcet (ce qui ne devrait normalement pas se produire), CLEAR est prioritaire sur INIT, lui-même prioritaire sur FREEZE.

7.9Fonctionnalités d'édition diverses

Pour insérer plusieurs blocs (étape ou transition ou commentaire) sans cliquer à chaque fois sur la barre d'outils : appuyer sur la touche Maj (Shift) du clavier et sur le bouton Étape ou sur le bouton Transition ou sur le bouton Commentaire de la barre d'outils puis relâcher la touche Maj (Shift). Cliquer sur l'espace d'édition autant de fois que nécessaire en déplaçant la souris pour répartir les blocs. Cliquer sur le bouton Cancel inserting de la barre d'outils pour arrêter.

Pour aligner verticalement plusieurs éléments : sélectionner les éléments (cliquer-tirer-lâcher) puis cliquer sur le bouton droit de la souris et choisir aligner verticalement dans le menu contextuel.

Pour répartir verticalement plusieurs éléments : sélectionner les éléments (cliquer-tirer-lâcher) puis cliquer sur le bouton droit de la souris et choisir répartir verticalement dans le menu contextuel.

Pour augmenter ou diminuer l'espace entre plusieurs éléments verticalement alignés et répartis : sélectionner les éléments (cliquer-tirer-lâcher) puis appuyer sur la touche Alt du clavier, et, en maintenant la touche enfoncée, faire tourner la molette de la souris vers le haut ou vers le bas.

Pour insérer une séquence linéaire de 1 à 9 étapes : placer la souris sur l'espace d'édition à l'endroit où la séquence doit être insérée puis appuyer simultanément sur la touche Ctrl du clavier et sur l'une des touches 1 à 9 du clavier (pas celles du pavé numérique).

Pour zoomer/dézoomer : appuyer sur la touche Ctrl du clavier, et, en maintenant la touche enfoncée, faire tourner la molette de la souris vers le haut ou vers le bas.

Pour revenir au niveau de zoom par défaut (100 %) : cliquer sur le bouton central de la souris.

Pour renseigner les actions et réceptivités par glisser-déposer (drag & drop) :

Entrées, sorties, étapes et bits internes peuvent être glissés-déposés sur le grafcet en cliquant avec le bouton gauche sur la case Variable correspondante de la fiche principale puis en déplaçant la souris vers le grafcet et en relâchant le bouton sur une étape ou une transition. Pour les temporisations et les compteurs on peut faire de même en cliquant sur la case de sortie (Q) de la fiche fonctions correspondant à la temporisation ou au compteur souhaité.

Les étapes n'acceptent que les variables de sortie, les transitions acceptent toutes les variables.

→ Cas d'une variable de sortie glissée-déposée sur une étape :

Glisser-déposer de la sortie q4 depuis la fiche principale sur l'étape 1 du grafcet : l'action q4 est créée

Si la sortie est déposée sur une étape possédant déjà une ou plusieurs actions, elle s'ajoute aux actions existantes. Il n'est pas possible de déclarer de cette façon des actions conditionnelles.

→ Cas d'une variable quelconque glissée-déposée sur une transition :

Sans action préalable, une réceptivité définie ou non (non vide, vide ou ayant la valeur 0 par défaut) sera remplacée par la variable déposée :

Glisser-déposer de l'entrée i2 sur une transition : la réceptivité devient i2

Si l'on veut déposer le complément de la variable choisie (ie par exemple NON i2 soit i2/), il faudra au préalable appuyer sur la touche / (Slash) du clavier. On verra alors ce caractère (« / ») inscrit dans la barre d'état de la fiche grafcet. On pourra alors effectuer le glisser-déposer.

Pour compléter une réceptivité avec une suite d'opérations logiques, il faudra au préalable appuyer sur la touche correspondant à l'opération souhaitée (+ pour OU ou . pour ET). Le caractère correspondant (« + » ou « . ») sera inscrit dans la barre d'état de la fiche grafcet. La variable glissée-déposée sera alors ajoutée à la réceptivité avec l'opération choisie. Si l'on souhaite ajouter de la même façon le complément d'une variable, il faudra successivement appuyer sur l'opération choisie (+ ou .) puis sur la touche / avant de glisser-déposer la variable :

Complément d'une réceptivité par glisser-déposer : la réceptivité i2 devient i2 + ct3/ après appui sur + puis / et dépôt de ct3

Il n'est pas possible de prioriser les opérations de cette façon.

8Fonctions particulières

Les fonctions qui suivent ne sont pas directement disponibles dans Apimou mais il est possible d'en créer des équivalents.

8.1Signal d'horloge ou clignotant

Pour obtenir un bit clignotant on peut utiliser deux temporisations TON :

Fenêtre Fonctions : temporisation 0 (TON, IN = t1) et temporisation 1 (TON, IN = t0/), préréglage 1 s

Le fonctionnement obéit au chronogramme suivant :

Chronogramme du clignotant : t0 et t1 s'inversent alternativement, temps écoulé ET0 et ET1 en dents de scie, période 1 s

En faisant varier le temps de présélection (PT) des deux temporisations on fait varier la fréquence du signal. Avec un automate « réel » ce type de signal est souvent disponible sur un bit système.

8.2Front montant ou front descendant

Pour créer un front montant sur une variable, i5 par exemple, il faut se servir de deux bits internes, m10 et m11 par exemple.

Le schéma équivalent en langage à contacts (ladder) serait le suivant :

Schéma ladder : contact i5 en série avec contact fermé m11 pilotant la bobine m10 ; i5 pilote aussi la bobine m11

L'automate scrute le programme de gauche à droite et de haut en bas. Lorsque i5 passe à 1, le bit m11 étant à 0, le bit m10 passe à 1 (1ère ligne). m11 passe immédiatement après (dans le même cycle automate) à 1 puisque i5 est à 1. Au cycle (automate) suivant, i5 est toujours à 1, m11 à 1 et m10 retombe à 0. On obtient ainsi m10 = i5↑, et on peut donc se servir de m10 comme front montant pour i5.

Apimou ne se programme pas en ladder mais en équations, ce qui donne :

(i5↑ = )  m10 = i5.m11/  et  m11 = i5

Pour un front descendant, on aurait :

(i5↓ = )  m10 = i5/.m11/  et  m11 = i5/
N.B.

Le bit qui sert de front montant (m10 pour l'exemple) doit impérativement avoir un numéro inférieur à celui qui sert de variable intermédiaire (ici m11), Apimou calculant les bits internes par ordre croissant de leurs numéros.

Pour créer rapidement un bit de front, selon le principe décrit ci-dessus, on peut se servir de l'assistant accessible depuis le menu AfficheFonctions, onglet Fronts :

Assistant Fronts : bloc R_TRIG avec l'entrée i7 sur CLK et le bit m3 sur Q, bouton Créer

Il suffit alors de définir la variable (ou l'expression) dont on souhaite détecter le front, le type de front (montant ou descendant) et le bit interne image du front. L'appui sur le bouton Créer génère automatiquement les équations nécessaires.

i

Les mnémoniques des bits internes acceptent les caractères « ↑ » (Alt+24) et « ↓ » (Alt+25). Si, par exemple, on crée un front montant de %I1.7 (mnémonique par défaut i7) avec le bit interne %M3 (mnémonique par défaut m3), on pourra modifier le mnémonique de %M3 en i7↑.

N.B. : « ↑ » et « ↓ » ne sont que des caractères, pas des fonctions. La création d'un front passe nécessairement par la procédure détaillée ci-dessus.

8.3Bit d'initialisation

Un bit d'initialisation est un bit qui vaut 1 au premier cycle automate et 0 par la suite (donc un front montant sur le passage en RUN de l'automate). Pour les automates réels il s'agit d'un bit système. Apimou n'en possédant pas, on peut en faire un équivalent de la façon suivante :

Onglet Bits internes : %M0 (mnémonique init, équation 1.m1/) et %M1 (mnémonique m1, équation 1)

L'explication du fonctionnement découle de ce qui est écrit au paragraphe précédent.

9Fonctionnement en mode simulation

Onglet Entrées de la fenêtre principale : clic droit sur une variable, choix Poussoir ou Bascule

Menu ModeSimulation.

L'automate étant en RUN (c'est-à-dire qu'il exécute le programme), on peut modifier l'état des entrées en cliquant sur les variables correspondantes dans l'onglet Entrées de la fenêtre principale. On voit alors les diodes de la carte d'entrées s'allumer.

Pour chaque variable, il est possible de choisir un fonctionnement en poussoir (mode par défaut) ou en bascule en faisant un clic droit sur la variable choisie.

La visualisation de l'état des étapes se fait sur le grafcet (étape(s) active(s) en vert).

L'état des bits internes est visualisé sur la table correspondante (cellule du mnémonique en vert = bit à 1).

L'état des sorties est directement visualisé par les diodes de la carte de sorties.

10Fonctionnement en mode Connecté

Menu ModeConnecté.

Le fonctionnement d'Apimou est le même qu'en mode simulation, lorsque l'automate est en RUN on peut visualiser l'état des entrées/sorties sur les cartes, celui des bits internes sur la table et celui des éventuelles étapes sur le grafcet.

Dans ce mode, Apimou échange avec une Partie Opérative logicielle ou réelle :

Schéma d'échange : APIMOU (automate) envoie les sorties vers la partie opérative (logicielle : Convoyeur et vérins, Ascenseur, Feux tricolores… ou réelle : Dido) qui renvoie les entrées

Il faut pour cela que la partie opérative soit connectée à Apimou, ce qui se fait par le menu ApimouConnecter.

Fenêtre Adresses des feux tricolores : entrées dcy, marche, normal, ap, pv, jour en %I1.0 à %I1.5 et sorties V1, O1, R1, V2, O2, R2, Vp1, Rp1, Vp2, Rp2 en %Q2.0 à %Q2.9

Il faut d'autre part connaître le schéma de câblage de l'automate (Apimou) pour cette partie opérative : à quelles entrées sont reliés les capteurs, à quelles sorties sont reliés les actionneurs, donc avoir à disposition un tableau d'entrées/sorties. On l'obtient par le menu AfficheAdresses.

Exemple pour les feux tricolores (ci-contre) : le bouton-poussoir ap (appel piétons) est relié à la quatrième entrée de l'automate (Apimou), adresse %I1.3.

Dans Apimou, le mnémonique par défaut de l'entrée %I1.3 est i3. Si on le remplace par ap, on peut alors utiliser ap dans le programme pour faire référence à l'entrée %I1.3.

Les fichiers config_(nom de la PO).api, une fois chargés dans Apimou, évitent la fastidieuse tâche consistant à modifier tous les mnémoniques pour les faire correspondre aux libellés de la partie opérative.

Pour une partie opérative réelle (huit entrées/huit sorties maximum), on peut utiliser Dido qui permet de contrôler un module externe d'entrées/sorties sur liaison RS-485 en Modbus RTU (il n'y a aucune nécessité de comprendre ce qu'est la liaison RS-485 ou le protocole Modbus RTU).

N.B.

Les Parties Opératives fournies avec les versions 1.x.x d'Apimou (Dido inclus) ne sont pas compatibles avec les versions 2.x.x.

11Génération de code Arduino

N.B.

Cette fonction ne fait que générer un code C++ compatible Arduino. Il n'y a aucune communication entre Apimou et Arduino.

Le menu FichierCréer un sketch Arduino permet de transformer le programme en un sketch Arduino (fichier .ino). Il est possible de modifier les broches des entrées/sorties ainsi que de choisir pour chaque entrée le type de fonctionnement (INPUT_PULLUP, PULLUP, PULLDOWN).

On peut aussi affecter à chaque entrée un antirebonds. Cette option peut être utile pour des capteurs mécaniques dont le signal est susceptible de rebondir brièvement sur des changements d'état. Si l'on doit par exemple tester par un front montant des appuis successifs sur un bouton poussoir, ou incrémenter un compteur de la même façon, les rebonds du signal peuvent provoquer un fonctionnement erratique. Un antirebonds permet de remédier à ce problème. L'antirebonds est ici réalisé par une temporisation qui fige la valeur de l'entrée pendant une durée déterminée dès que celle-ci change d'état. Cette durée est par défaut de 20 ms, il est possible de la modifier dans le menu OutilsOptions.

Du grafcet au sketch Arduino : fiche Grafcet, fenêtre Sketch Arduino (broches et types d'entrées), code .ino ouvert dans l'IDE Arduino

12Transfert direct d'un programme vers une carte Arduino

Un programme créé avec Apimou peut être directement transféré (téléversé) vers une carte Arduino, sans avoir à passer par l'IDE Arduino. Cette fonctionnalité nécessite que le programme arduino-cli.exe soit installé sur l'ordinateur. Il est déjà présent sur votre ordinateur si vous avez installé l'IDE Arduino en version 2.x, dans le cas contraire, avec un IDE Arduino 1.x, il faudra installer ce programme indépendamment.

La seule chose qui est faite ici par Apimou est de récupérer les informations nécessaires pour que arduino-cli puisse exécuter la compilation et le transfert du programme, par la commande :

arduino-cli compile --upload --verbose --no-color (sketch.ino) --port (nom du port) --fqbn (identificateur FQBN)

Avant de pouvoir effectuer un premier transfert direct, il faut renseigner les paramètres nécessaires en cliquant sur le menu OutilsOptions (ces paramètres seront par la suite sauvegardés pour une utilisation ultérieure dans un fichier nommé Apimou.ini) :

Fenêtre Options : chemin vers arduino-cli.exe, répertoire temporaire, port COM3, FQBN arduino:avr:uno, antirebond 20 ms

Pour les utilisateurs de l'Arduino IDE 2.x, le chemin vers arduino-cli.exe doit en principe être renseigné automatiquement. Si arduino-cli.exe a été installé indépendamment, ou si Apimou ne le trouve pas, il faudra le définir.

Le répertoire temporaire est par défaut celui de l'utilisateur. Il est possible de le modifier. Apimou va créer dans ce répertoire un sous-répertoire apimou_tmp dans lequel il enregistrera un fichier apimou_tmp.ino. C'est ce fichier, effacé et réécrit à chaque nouveau transfert, qui sera compilé et transféré par arduino-cli.

Le port, à sélectionner dans la liste déroulante, doit être celui auquel la carte Arduino est connectée. Si vous avez plusieurs périphériques USB connectés, le port sélectionné par défaut n'est pas forcément le bon. Si la carte n'est pas connectée, le port n'apparaitra pas. Il faudra alors connecter la carte, puis fermer et ouvrir à nouveau la fenêtre des options.

Le FQBN (Fully Qualified Board Name) est celui de la carte utilisée. Si la carte est installée et si le chemin vers arduino-cli est valide, il est possible de trouver le FQBN en cliquant sur le bouton ListAll puis en choisissant la carte dans la liste déroulante.

La procédure permettant de transférer directement le programme vers la carte passe ensuite par le menu FichierCréer un sketch Arduino, comme expliqué au paragraphe précédent. Sur la fiche qui apparait, en appuyant de façon continue sur la touche Ctrl du clavier, le bouton « Créer le sketch » est renommé en « Transférer » :

En maintenant Ctrl enfoncé, le bouton Créer le sketch devient Transférer
Fenêtre Compilation et transfert affichant la sortie d'arduino-cli : avrdude, 1214 bytes of flash written

En cliquant sur ce bouton, on lance la procédure de compilation et de transfert. Une fenêtre affiche les résultats de l'opération, fournis par arduino-cli.

Si la procédure échoue, vous devrez peut-être :

  • Détecter la carte connectée avec la commande arduino-cli board list
  • Lister les cartes installées et obtenir leur FQBN avec la commande arduino-cli board listall
  • Lister les familles de cartes installées avec la commande arduino-cli core list
  • Lister les familles de cartes qu'il est possible d'installer avec la commande arduino-cli core search
  • Installer une famille de cartes avec la commande arduino-cli core install (…)
  • Etc. La documentation officielle se trouve sur github : https://github.com/arduino/arduino-cli

Si nécessaire, pour lancer une commande, vous pouvez par exemple :

  1. Copier/coller le chemin vers arduino-cli dans un éditeur de texte (le bloc-notes par exemple)
    C:\Program Files\Arduino IDE\resources\(…)\arduino-cli.exe
  2. L'encadrer avec des guillemets (pour éviter une erreur d'interprétation due aux espaces éventuels)
    "C:\Program Files\Arduino IDE\resources\(…)\arduino-cli.exe"
  3. Ajouter la commande voulue
    "C:\Program Files\Arduino IDE\resources\(…)\arduino-cli.exe" core list
  4. Ouvrir l'interpréteur de commande Windows cmd.exe (taper cmd.exe dans le champ de recherche du menu Démarrer)
  5. Copier la ligne à partir de l'éditeur de texte et la coller dans cmd.exe :
cmd.exe : exécution de arduino-cli.exe core list, liste des familles arduino:avr et arduino:sam installées

13Génération de code ESP32

13.1Généralités

Avec un ESP32, il est possible de générer un code C++ (fichier .ino) et un ensemble de fichiers (.html, .png) permettant de visualiser avec un navigateur web quelconque l'évolution du ou des grafcet(s) constituant le programme. La communication se fait en Wifi, on peut donc utiliser n'importe quel terminal (PC, smartphone, tablette) relié au même réseau que l'ESP32.

Outre cette visualisation, on peut aussi éventuellement accéder, par une page web dédiée, à des réglages :

  • modifications de bits, nommés bits IHM (s'ils sont utilisés) ;
  • modifications de valeurs de présélection PT des temporisateurs (s'ils sont utilisés) ;
  • modifications de valeurs de présélection PV des compteurs (s'ils sont utilisés).

Les bits IHM sont, dans Apimou, des bits internes qui ne sont pas définis par une équation et qui interviennent dans une équation quelconque (sortie ou temporisation ou comptage ou forçage ou transition).

Exemple :

Exemple bits IHM : entrée bpStart, bit interne bitStart sans équation, réceptivité bpStart+bitStart sur la transition vers l'étape 1 (action led1)

bpStart est une entrée (un bouton poussoir par exemple), reliée physiquement à une broche de l'ESP32. bitStart est un bit interne qui n'a pas d'équation. bitStart intervient dans la réceptivité de la transition étape 0 → étape 1 (équation bpStart + bitStart, ce qui signifie que le cycle démarre si on appuie sur le bouton poussoir bpStart ou si bitStart passe à 1). Lors de la traduction du programme en sketch, bitStart sera considéré comme un bit IHM et il sera possible de le forcer à partir de la page de réglages.

i

Pour qu'un réglage soit validé, il faut cliquer sur le bouton de validation correspondant. Ce réglage reste valable tant que l'ESP32 ne redémarre pas. Pour que l'ensemble des réglages validés soit sauvegardé (y compris les bits IHM), il faut cliquer sur le bouton de sauvegarde. La sauvegarde est réalisée en mémoire Flash (NVS) et chargée à chaque nouveau démarrage.

13.2Prérequis

IDEIDE Arduino 2.x
CarteCarte ESP32 installée
PluginPlugin LittleFS Uploader installé (voir randomnerdtutorials.com/arduino-ide-2-install-esp32-littlefs)
Lib 1Bibliothèque Async TCP par ESP32Async installée
Lib 2Bibliothèque ESP Async WebServer par ESP32Async installée

13.3Modes Station et Access Point

Fenêtre Options avec les cadres Station (SSID, mot de passe, IP, QR code) et Access Point (SSID ESP32_AP, mot de passe, IP 192.168.4.1)

Avant de générer le sketch, il faut choisir dans le menu OutilsOptions le mode Wifi qui sera utilisé : Station et/ou Access Point.

En mode Station l'esp32 se connecte à un réseau Wifi existant. Il faut pour cela connaitre le nom (SSID) du réseau ainsi que le mot de passe (password) qui en autorise l'accès. Le routeur de ce réseau (la « box ») attribue automatiquement une adresse IP à l'ESP32. Sous réserve d'un signal suffisant, le mode Station est le plus performant.

En mode Access Point l'esp32 génère son propre réseau Wifi et agit comme un routeur. On définit le nom (SSID) du réseau ainsi que le mot de passe (password). L'adresse IP de l'esp32 est imposée, égale à 192.168.4.1. Le mode Access Point est limité à 4 clients, en pratique 1 ou 2 pour un rafraîchissement fluide et sous réserve que la fréquence ne dépasse pas 100 à 200 ms.

Il est possible de choisir simultanément les deux modes, Station + Access Point. Le mode Access Point pourra dans ce cas être une situation de secours, au cas où le réseau Wifi existant tombe ou soit hors de portée. Ce choix reste moins performant que le mode Station uniquement.

i

Pour qu'un appareil (PC, smartphone, tablette) accède au serveur de l'ESP32 en mode Access Point, il devra au préalable se connecter au réseau Wi-Fi créé par l'ESP32. Si cet appareil était connecté au serveur (box) du réseau local existant en Wi-Fi, il perdra cette connexion et donc, entre autres, l'accès à internet.

Les QR codes qui apparaissent dans la fiche Options renvoient directement aux adresses IP de l'ESP32 (adresse sur le réseau local et/ou adresse en Access Point), sous réserve que l'appareil soit connecté au réseau Wi-Fi correspondant.

13.4Procédure

Pour le mode Station, il est préférable de définir au préalable le nom (Wifi SSID) du réseau Wifi ainsi que le mot de passe de ce même réseau (Wifi password). Ces deux paramètres peuvent aussi être définis ultérieurement.

Pour le mode Access Point, il faut définir au préalable le nom (Wifi AP SSID) du réseau Wifi AP ainsi que le mot de passe de ce même réseau (Wifi AP password). Des valeurs sont proposées par défaut. Le mot de passe peut être vide (le réseau sera dans ce cas ouvert).

Après avoir sélectionné le menu FichierCréer un sketchESP32, la procédure est identique à celle décrite dans le paragraphe Génération de code Arduino. Contrairement à une carte Arduino, on peut ici configurer une entrée en INPUT_PULLDOWN.

Après avoir cliqué sur Créer le sketch, Apimou va créer un fichier .ino (le sketch) et un sous-dossier \data contenant les fichiers .html et .png nécessaires. Il est important que le fichier .ino soit créé dans un dossier du même nom (pour exemple, ci-dessous, projet.ino se trouve dans un dossier nommé projet).

projet\
├── projet.ino
├── (projet.api)
└── data\
    ├── home.html
    ├── vue.html
    ├── grafcet0.html
    ├── grafcet0.png
    ├── grafcet1.html
    ├── grafcet1.png
    └── (…)
Fichier .ino ouvert dans l'IDE Arduino : constantes ssid et password à renseigner pour le mode Station

Il faut ensuite ouvrir le fichier .ino créé dans l'IDE Arduino.

Si le SSID et le mot de passe du réseau WiFi en mode Station n'ont pas été préalablement renseignés dans le menu Options d'Apimou, il faudra le faire dans l'IDE Arduino (en gardant les guillemets).

Menu des commandes de l'IDE Arduino : Upload LittleFS to Pico/ESP8266/ESP32

Après s'être assuré que la carte sélectionnée est la bonne, que le port COM est correct et que le moniteur série est fermé, il faut ensuite appuyer simultanément sur les touches Ctrl + Shift (maj) + P afin d'ouvrir le menu des commandes et choisir dans celui-ci Upload LittleFS to Pico/ESP8266/ESP32.

Console de l'IDE : Hard resetting via RTS pin, Completed upload

Le plugin LittleFS Uploader va alors charger dans l'ESP32 tous les fichiers du dossier \data du projet. Après quelques secondes, le message Completed upload doit s'afficher.

Il reste ensuite à ouvrir le moniteur série à 115200 bauds puis téléverser le sketch (CroquisTéléverser ou Ctrl+U).

Moniteur série : Access Point IP 192.168.4.1, connexion au réseau, Station IP 192.168.1.54, Serveur Web démarré

À la fin du téléversement, on doit obtenir dans le moniteur série un message de confirmation de la connexion au réseau WiFi et l'adresse IP de l'ESP32 pour le mode Station et/ou pour le mode Access Point.

Il suffit ensuite de se connecter au réseau voulu (réseau local existant en mode Station ou réseau créé par l'ESP32 en mode Access Point), de copier l'une de ces adresses et de la coller dans la barre d'adresse d'un navigateur web (ou de scanner l'un ou l'autre des QR codes) pour accéder à la page d'accueil de l'interface de visualisation. On peut à partir de là choisir le grafcet voulu (il peut n'y en avoir qu'un), et le voir s'animer en temps réel. On peut également ouvrir la page Réglages et modifier les bits IHM ou les présélections des temporisations et des compteurs.

Interface web de l'ESP32 : page d'accueil Choisissez un Grafcet (G0 à G3, Vue complète, Réglages), visualisation animée d'un grafcet, page Réglages avec bits IHM, temporisations et compteurs

14Transfert direct d'un programme vers un ESP32

Avant de mettre en œuvre cette procédure, il est nécessaire d'avoir au préalable généré et transféré au moins une fois un programme avec l'IDE Arduino comme expliqué au paragraphe précédent, pour s'assurer que tout est en place et fonctionne.

Fenêtre Options avec tous les paramètres surlignés : chemin arduino-cli, répertoire temporaire, port, FQBN esp32:esp32:esp32, SSID et mots de passe Wifi

Il faut ensuite renseigner dans la fenêtre des options (OutilsOptions) tous les paramètres indispensables : chemin vers arduino-cli, répertoire temporaire, port, FQBN, SSID et mot de passe du Wifi pour le(s) mode(s) choisi(s) (Station et/ou Access Point).

Les explications concernant les quatre premiers paramètres sont détaillées dans le paragraphe Transfert direct d'un programme vers une carte Arduino.

L'adresse IP de l'ESP32 en mode Station devrait être automatiquement trouvée, le champ « IP ESP32 » peut être laissé vide. Si un premier transfert échoue parce que cette adresse n'est pas trouvée, il faudra peut-être le renseigner.

Après avoir sélectionné le menu FichierCréer un sketchESP32 et configuré les entrées/sorties, il suffit d'appuyer de façon continue sur la touche Ctrl du clavier, le bouton « Créer le sketch » est renommé en « Transférer » :

En maintenant Ctrl enfoncé, le bouton Créer le sketch devient Transférer

En cliquant sur ce bouton, on lance la procédure de compilation et de transfert. Dans un premier temps, arduino-cli compile puis transfère le sketch. Dans un deuxième temps, Apimou envoie par WiFi les fichiers .png et .html nécessaires (ici le plugin LittleFS Uploader n'est pas utilisé).

Fenêtre Compilation et transfert : compilation réussie, recherche de l'adresse IP de l'ESP32 trouvée à 192.168.1.54, envoi des fichiers G0.html, G0.png, home.html…

Lorsque le mode Station ou le mode Station + Access Point sont sélectionnés, les fichiers html et png sont transférés en mode Station, il faut donc que le PC soit connecté au réseau local existant. Après la compilation et le transfert du sketch, l'adresse IP de l'ESP 32 est recherchée puis les fichiers html et png sont transférés.

Message Apimou : Connectez-vous au réseau ESP32_AP puis cliquez sur OK

Lorsque le mode Access Point seul est sélectionné, la procédure s'interrompt après le transfert du sketch. Un message indique alors qu'il faut se connecter au réseau créé par l'esp32 (par défaut ESP32_AP avec comme mot de passe 12345678), puis cliquer sur OK pour que les fichiers html et png puissent être transférés.

À la fin de la procédure, l'adresse IP de l'ESP32 est copiée dans le presse-papier. Il suffit de la coller (Ctrl+V) dans la barre d'adresse du navigateur, ou de revenir au menu Options pour scanner l'un ou l'autre des QR Codes.

15Gestion des fichiers

Le menu FichierNouveau efface tout, sans avertissement préalable (mnémoniques, équations, grafcets).

Pour enregistrer un fichier (un programme), on sélectionne le menu FichierEnregistrer sous… L'extension des fichiers Apimou est .api (extension ajoutée par défaut).

L'ouverture d'un fichier se fait par le menu FichierOuvrir. Il est également possible, si Apimou n'est pas en cours d'exécution, d'ouvrir un fichier (et de fait Apimou) en effectuant un double clic à partir du dossier dans lequel il se trouve. Le système d'exploitation demandera alors l'exécutable à associer à l'extension .api.