# Automatisme

> Ce qui fait bouger une unité sans que personne presse un bouton : l'arrêt externe du modèle et le signal que chaque unité suit, le verrouillage d'arrêt de chaque unité, et l'automatisme tourné vers l'automate qui sélectionne une procédure, pilote le cycle de vie et répond en retour.

L'écran **Automatisme** (Process > modèle > Définition > Automatisme) contient tout ce qui fait
bouger une unité du modèle sans que personne presse un bouton. En haut, la déclaration propre au
modèle : l'**Arrêt externe**, un seul interrupteur qui fait suivre à toutes les procédures du modèle
un arrêt observé sur chaque unité, et le signal par défaut que tout le banc suit. En dessous les
unités, et pour l'unité choisie deux cartes : son **Verrouillage** (quel signal elle observe et son
état en direct) et son **Automatisme** (l'interface tournée vers l'automate qui sélectionne une
procédure, pilote Démarrer, Arrêter, Suspendre, Reprendre et Interrompre, fige les métadonnées et
renvoie les résultats). L'en-tête indique « Ce qui démarre, suspend et arrête une unité de ce modèle
toute seule : l'arrêt qu'elle suit, et les signaux par lesquels un automate la conduit. »

La lecture demande Consulter les modèles; chaque modification demande Gérer Process et une station
déverrouillée, et les champs du verrouillage portent une seconde condition à eux (plus bas). L'écran
porte la forme que chaque écran de Définition partage (voir
[Définition](process-definition#the-one-shape-of-the-five-screens)).

Les deux sujets diffèrent par nature. Le verrouillage est une surveillance continue qui met fin à un
essai, mémorise l'état de l'unité par-dessus un redémarrage de l'application et bloque les écritures
vers ses sources jusqu'à ce que quelqu'un la réarme. Une interruption automatique est un ordre unique
qui met fin à l'essai en cours. Ils partagent un écran parce que les deux se configurent en
choisissant un signal de terrain.

## Définition du modèle : l'arrêt externe {#model-definition-the-external-stop}

L'en-tête indique « La déclaration du modèle. Elle vaut pour toutes les unités : un interrupteur
décide si tout le banc observe un arrêt, et un signal est celui qu'elles suivent par défaut. » Le
tableau n'a qu'une ligne aujourd'hui :

| Colonne | Ce qu'elle montre |
| --- | --- |
| **Déclaration** | Arrêt externe. |
| **Observé** | **Activé** ou **Arrêt**. |
| **Signal par défaut** | « Tag Connector · Simulated · Presse · EStop · Déclencher quand Vrai »; « Aucun signal choisi » (dans l'encre de prudence seulement pendant que c'est activé); ou « Signal désormais indisponible · Déclencher quand Faux » quand la source conservée a disparu. |

Sous le tableau se tient le principe de tout l'écran : « **Surveillance uniquement.** Cette
observation logicielle n'est pas une fonction de sécurité certifiée et ne remplace ni le circuit
d'arrêt d'urgence de la machine, ni le relais de sécurité, ni l'automate de sécurité. »

### La colonne des réglages pour la déclaration {#the-settings-column-for-the-declaration}

Choisir la ligne ouvre la carte **Arrêt externe** (« Automatisme · Arrêt externe ») : « Faire suivre
à toutes les procédures de ce modèle un arrêt externe observé sur chaque unité. » Sa pastille compte
la couverture pendant que c'est activé (« 2 sur 3 avec un signal ») et les unités quand c'est
inactif (« 3 unités »).

| Champ | Ce que c'est | Valeurs / défaut | Effet |
| --- | --- | --- | --- |
| **Activer pour ce modèle** | L'interrupteur unique. | activé / désactivé; désactivé. | Désactivé, rien n'est observé sur aucune unité, aucune exécution n'est bloquée, et les champs par unité se replient. Activé, chaque unité est observée par le signal en vigueur sur elle. |
| **Source booléenne** | « Le signal qu'observe chaque unité de ce modèle, sauf si elle en reçoit un qui lui est propre. » | **(aucune)**, puis chaque tag booléen d'un équipement activé sous la forme « Tag Connector · Pilote · Équipement · Tag », puis chaque variable booléenne sous la forme « Variable Logic · Nom » (ou « Variable Logic · Dossier / Nom » si elle est rangée dans un dossier, de sorte que deux variables du même nom se distinguent); (aucune). Une source conservée que la station n'offre plus reste listée sous la forme « Tag Connector manquant » ou « Variable Logic manquante » suivie de son identité, donc le champ ne se lit jamais comme non lié. | Écrite sur le modèle : chaque unité qui suit la voit aussitôt. |
| **Polarité de déclenchement** | Quelle lecture est l'arrêt. | **Déclencher quand Vrai**, **Déclencher quand Faux**; Déclencher quand Vrai. | L'autre valeur est la lecture sûre. |

L'interrupteur comme le réglage par défaut restent modifiables quand l'interrupteur est désactivé,
pour qu'un banc soit préparé avant d'être armé. Sous les champs, la carte dit pourquoi elle est en
lecture seule quand elle l'est : « Terminez les opérations d'essai en cours et réarmez chaque unité
enclenchée avant de changer ce réglage. » tant qu'une unité du modèle est occupée par une opération
d'essai ou détient un déclenchement enclenché, ou « Changer la protection du modèle exige la
permission « Gérer Process ». » L'enregistrement refuse de la même façon, avec « Impossible de
désactiver le verrouillage tant qu'une unité est occupée ou enclenchée. », et refuse toute
modification qui déplace le signal qu'observe une unité occupée ou enclenchée : « Impossible de changer la source ou la polarité du verrouillage de l'unité « *nom* » tant qu'elle est occupée ou enclenchée. » Un signal enregistré qui nomme à la fois un Tag et une Variable, ou qui porte une identité vide, est refusé par la ligne qui le porte : « La source de verrouillage par défaut du modèle « *nom* » désigne à la fois un Tag et une Variable, ou porte une identité vide. » pour le réglage par défaut du modèle, « La source de verrouillage de l'unité « *nom* » désigne à la fois un Tag et une Variable, ou porte une identité vide. » pour celui d'une unité.

## Par unité : la liste des unités {#per-unit-the-units-list}

| Colonne | Ce qu'elle montre |
| --- | --- |
| **Unité** | Le nom de l'unité. |
| **Signal de verrouillage** | Le signal en vigueur et d'où il vient : « Tag Connector · … · Déclencher quand Vrai · issu du modèle » ou « · issu de cette unité »; « Le modèle ne nomme aucun signal » ou « Aucun signal choisi » dans l'encre de prudence pendant que le modèle observe; « Désactivé pour ce modèle » autrement. |
| **Automatisme** | **Activé** ou **Arrêt**. |

**Gérer les unités**, tout au bout de l'en-tête, ouvre la page du modèle.

## La carte Verrouillage de l'unité choisie {#the-interlock-card-of-the-picked-unit}

La pastille de la carte dit l'état en direct : **Désactivé** (l'interrupteur du modèle est inactif),
**Indisponible**, **État normal**, **Déclenché** ou **En attente de réarmement**.

| Champ | Ce que c'est | Valeurs / défaut | Effet |
| --- | --- | --- | --- |
| **D'où vient le signal d'arrêt de cette unité** | Deux réponses écrites en entier. | **Suit le réglage par défaut du modèle** (« Lu depuis le modèle. Donnez à cette unité un signal qui lui est propre pour le changer ici. ») ou **A son propre signal** (« Seule cette unité surveille ce signal. Le réglage par défaut du modèle ne l'atteint plus. »); elle suit. | Se détacher part du signal en vigueur : une unité qui n'en a jamais nommé prend celui du modèle, une unité qui en avait un le retrouve intact. Suivre de nouveau n'efface rien. |
| **Source booléenne**, **Polarité de déclenchement** | Le même sélecteur qu'emploie le modèle. | Comme ci-dessus. | Désactivés pendant que l'unité suit (ils montrent la réponse conservée du modèle, pas une copie), et pendant que l'unité est occupée ou enclenchée. |

Sous les champs : **Source du signal** (le nom résolu, ou « Non configuré »), **Valeur actuelle**
(Vrai, Faux, ou « Non lue ») et **Qualité** (Bonne ou Indisponible). Tant que l'état n'est pas
normal, un bandeau porte l'état et sa raison (« En attente de la première lecture valide de la source
de verrouillage. » au début). Tant que l'interrupteur du modèle est inactif, la carte indique « Ceci
s'active avec l'arrêt externe du modèle, déclaré dans la définition ci-dessus. » et replie le choix
et la paire dans un dépliant **Signal et polarité**, où ils peuvent être préparés avant que le modèle
n'arme. La carte se termine par « La source et la polarité restent fixes tant que cette unité a une
opération d'essai ou un déclenchement enclenché. » ou « Changer cette protection exige la permission
« Gérer Process ». » quand l'un des deux tient.

### Les états du verrouillage {#the-interlock-states}

| État | Sens |
| --- | --- |
| **Indisponible** | Aucune lecture valide n'a encore armé le verrouillage, ou le signal en vigueur ne nomme rien. Toute nouvelle exécution et toute reprise sont refusées; un essai conservé se rattache en sommeil plutôt qu'en échec. |
| **État normal** | La source est bonne et signale la valeur sûre. |
| **Déclenché** | La condition d'arrêt est active, ou la qualité de la source a été perdue après l'armement. |
| **En attente de réarmement** | La source est de nouveau bonne et sûre, mais l'état mémorisé conservé demande encore un réarmement manuel. |

Un déclenchement met fin à l'essai actif de l'unité par la finalisation normale, en Interrompu avec
le verdict Non conforme, en enregistrant `StopInterlock` comme motif de fin; il mémorise l'état de
l'unité par-dessus les redémarrages de l'application; il bloque toute nouvelle exécution dessus; et
il pose un blocage d'écriture sur les sources inscriptibles de l'unité. Une source partagée par
plusieurs unités n'est bloquée que pendant qu'elles sont toutes verrouillées, pour qu'un arrêt local
ne puisse pas immobiliser une voisine en bon état. Chaque transition est journalisée avec les noms,
la valeur, la qualité, la polarité, l'instant et l'acteur, et apparaît sous
[Événements > Verrouillages](events-interlocks).

**Réarmer** n'est pas sur cet écran : il se tient sur le bandeau de verrouillage du volet de l'unité
et sur le composant de tableau de bord InterlockStatus, seulement pendant que l'état est En attente
de réarmement avec une lecture bonne et sûre. Il demande Exécuter les procédures, efface l'état
mémorisé, ne redémarre jamais l'essai interrompu, et est enregistré avec l'opérateur.

## La carte Automatisme de l'unité choisie {#the-automation-card-of-the-picked-unit}

« Laissez un tag d'automate ou une variable Logic sélectionner une procédure et piloter le cycle de
vie de cette unité, sans retirer la conduite manuelle, par tableau de bord ou par MCP. » La pastille
indique **Désactivé**, **Prêt**, **Pas prêt** ou **Actif**. Sans Gérer Process, la carte indique
« Modifier l'automatisme exige la permission « Gérer Process ». » et chaque contrôle est en lecture
seule.

L'interrupteur se tient sur la carte : **Activer l'automatisme pour cette unité** (« Observer les
valeurs publiées pour sélectionner une procédure et piloter le cycle de vie. »). Cinq sections
repliables se tiennent en dessous; activer l'interrupteur ouvre **Procédure**, le désactiver replie
les cinq, et autrement les sections restent comme vous les avez laissées. Chaque liste de sources
offre **(aucune)**, puis les tags de la station sous la forme « Tag Connector · Pilote · Équipement · Tag » et
les variables sous la forme « Variable Logic · Nom » (ou « Variable Logic · Dossier / Nom » si elle est rangée
dans un dossier), réduites à ce que le champ peut employer; une source conservée que la station
n'offre plus reste listée sous la forme « Tag Connector manquant » ou « Variable Logic manquante » suivie de son
identité.

### Procédure {#procedure}

| Champ | Ce que c'est | Valeurs / défaut | Effet |
| --- | --- | --- | --- |
| **Sélection de la procédure** | Comment se résout la procédure qu'emploie un démarrage automatique. | **Procédure fixe**, **Sélecteur numérique**; Procédure fixe. | |
| **Procédure fixe** | « Chaque démarrage automatique de cette unité utilise cette procédure. » | **(aucune)**, les procédures du modèle par leur nom, ou « Procédure manquante » suivie de son identité pour une procédure supprimée; (aucune). | |
| **Source du sélecteur (tag ou variable entière)** | « L'automate écrit un code entier; la table ci-dessous le résout en procédure par identité stable, donc un renommage ne casse jamais la table. » | Un tag ou une variable entière lisible; (aucune). | |
| La table des codes | Une ligne par code de sélecteur : le code, la procédure qu'il sélectionne, **Retirer le code de sélecteur**; puis une ligne d'ajout (un code, une procédure, **Ajouter**). | Des codes entiers, uniques sur l'unité. | Refusés dans le journal des actions : « Le code de sélecteur doit être un entier. », « Choisissez une procédure pour ce code de sélecteur. », « Le code de sélecteur 7 est déjà configuré. », « Choisissez une procédure ou retirez la ligne du sélecteur. » Un code sans correspondance ou illisible refuse le démarrage en Sélection non valide. |

### Signaux de commande {#command-signals}

« Une source booléenne facultative par commande de cycle de vie; chacune se déclenche une fois quand
son signal passe de bas à haut. » Un sélecteur par commande : **Démarrer**, **Arrêter**,
**Suspendre**, **Reprendre**, **Interrompre**, chacun acceptant un tag ou une variable booléenne
lisible, ou (aucune). Un signal ne s'arme qu'après qu'un état bas valide a été vu, donc un signal
resté haut au démarrage ne peut pas se déclencher.

### Sources de métadonnées {#metadata-sources}

« D'où un démarrage automatique tire chaque valeur de métadonnée, figée dans l'essai quand le
démarrage est accepté. » La section liste chaque procédure que la sélection peut résoudre (la
procédure fixe, ou chaque procédure associée dans l'ordre des codes); tant qu'aucune n'est choisie,
elle indique « Sélectionnez d'abord une procédure fixe ou associée pour lister ses champs de
métadonnées. » Sous chaque procédure se tient un sélecteur par champ qu'elle demande (un champ
obligatoire porte la mention « obligatoire »; une procédure qui n'en demande aucun indique « Cette
procédure ne demande aucune métadonnée. ») :

| Genre de champ | Choix |
| --- | --- |
| Texte | **(aucune)**, **Valeur fixe** (un champ de texte apparaît sous le sélecteur), tout tag ou toute variable lisible sauf une variable image, icône ou couleur. |
| Nombre | **(aucune)**, **Valeur fixe**, tout tag ou toute variable entière ou décimale lisible. |
| Séquentiel | **(aucune)** ou **Séquence automatique**, sa seule source. |

Les valeurs sont validées au démarrage; une valeur non valide refuse le démarrage en Métadonnées non
valides.

### Retours vers l'automate {#plc-returns}

« Tags facultatifs accessibles en écriture qui renvoient l'état de l'automatisme à l'automate. » Les
retours se lient à des tags accessibles en écriture seulement, jamais à une variable.

| Retour | Attend | Sens |
| --- | --- | --- |
| **Prêt** | Booléen | « peut accepter un démarrage maintenant » |
| **Actif** | Booléen | « l'unité a un essai actif » |
| **Code sélectionné** | Entier; offert seulement en mode Sélecteur numérique | « renvoie le sélecteur observé ». Une correspondance faite dans ce mode est conservée quand l'unité passe à une procédure fixe, mais elle n'est ni écrite ni listée dans le diagnostic tant que le mode tient, et elle revient avec le mode. |
| **Résultat de commande** | Entier | « résultat stable de 0 à 7 », le contrat fixe ci-dessous |

| Code | Sens |
| --- | --- |
| 0 | En attente / réarmé |
| 1 | Accepté |
| 2 | Unité pas prête |
| 3 | Sélection non valide |
| 4 | Métadonnées non valides |
| 5 | Commande incompatible |
| 6 | Commandes en conflit |
| 7 | Défaillance interne |

« Un contrat fixe, pour que la logique de l'automate ne dépende jamais du texte d'un message. »

### État en direct et diagnostic {#live-state--diagnosis}

Lus en direct à chaque rendu : **État** (Désactivé, Activé, ou « Activé · surveillance »),
**Armement des commandes** (« Aucun signal de commande », « Armé », ou « En attente d'un état bas
valide »), **Prêt** (Oui ou Non, avec « Pas prêt parce que » et la raison), **Essai actif**,
**Sélecteur** (le code et sa qualité, en mode sélecteur), **Procédure résolue**, **Dernière
commande** (la commande, son code de résultat et son instant) et **Motif** (le dernier diagnostic).
En dessous, trois blocs : **Signaux de commande** (chaque source, sa valeur et sa qualité, Armé ou En
attente), **Contrôle préalable des métadonnées** (la source de chaque champ, sa valeur, sa qualité,
Valide ou Non valide avec la raison) et **Écritures de retour** (chaque tag sous le nom qu'il porte,
l'instant de sa dernière écriture, Sain ou En échec avec l'erreur; un retour que le mode de sélection
n'écrit jamais n'est pas listé). Un retour qui échoue sans cesse est journalisé une fois quand il
commence à échouer, résumé pendant que cela dure et une fois de plus quand il écrit de nouveau,
plutôt qu'à chaque tour de boucle. La boucle remet un retour et poursuit : un équipement lent ne la
retient donc jamais. Sain ou En échec est inscrit quand l'équipement répond, ce qui peut être après
le tour qui l'a demandé, et un retour dont la dernière remise est encore sans réponse est laissé
tranquille au lieu d'être renvoyé, si bien qu'un équipement lent reçoit une écriture et non cent.

Chaque modification de la carte s'enregistre d'elle-même et est remise en place quand la station la
refuse; la raison arrive dans le journal des actions. Un essai que l'automatisme démarre enregistre
**Automatisme** comme responsable.

## Ce que cet écran ne fait pas {#what-this-screen-does-not-do}

- Le verrouillage est une observation logicielle d'une valeur que Connector ou Logic publient déjà :
  aucun anti-rebond, aucune évaluation, aucune homologation de sécurité. Il ne remplace jamais le
  circuit de sécurité de la machine.
- L'automatisme ne retire aucune autre conduite : les commandes manuelles, par tableau de bord, par
  point de commande et par MCP continuent de fonctionner à côté de lui.
- Rien ici ne réarme une unité : Réarmer vit sur le volet de l'unité et sur le composant
  InterlockStatus.
- Rien ici ne prépare une procédure à la main ni ne remplit des métadonnées à la main : cela revient
  au volet de l'unité sous [Conduite](process-operate).
