# Essais et commentaires

> Le volet d'une unité : préparer une procédure et ses métadonnées, le démarrage et ce qu'il valide, Suspendre, Reprendre, Arrêter et Interrompre, les cartes en direct, les commentaires, les commandes uniques, le fichier d'essai, et les chemins de l'automatisme et de l'agent.

Le **volet** d'une unité (Process > Modèles > un modèle > Conduite > l'unité > un volet, et le même
volet sur la page View quand il est marqué Afficher dans View) est l'endroit où un essai est préparé,
démarré, piloté et suivi. Quelles cartes il dessine, et dans quel ordre, s'arrange une seule fois sur
le modèle sous Visualisation > [Volets](process-panels) ; chaque unité du modèle est ensuite conduite
par la même surface. Suivre n'exige que l'arborescence. Chaque commande du volet exige **Exécuter les
procédures** ; sans elle, le volet s'ouvre avec l'avis « Vous pouvez suivre ici l'état d'essai de
cette unité, mais la démarrer ou la piloter exige la permission 'Exécuter les procédures'. » et ne
dessine aucun bouton de cycle de vie.

Une carte à laquelle la station ne donne rien à montrer est laissée de côté plutôt que dessinée
vide : la carte Commandes uniques a besoin d'un datalog ou d'une recette instantanée sur le modèle,
la carte Voies d'une voie lisible, la carte Métadonnées d'une procédure préparée qui demande un champ
(ou de rien de préparé encore), et un tableau de bord embarqué de quelque chose de posé dessus. Un
volet qui n'arrange aucune carte se lit « Ce volet ne dessine aucune carte. Choisissez ses cartes sur
la ligne Volets du modèle, sous Visualisation. »

## Le bandeau de verrouillage {#the-interlock-banner}

Quand le modèle observe un arrêt externe ([Automatisme](process-automation)), le verrouillage de
l'unité se tient au-dessus de toutes les cartes et ne dessine rien tant qu'il est normal. Sinon c'est
un bandeau titré **Verrouillage déclenché** (fort), **Verrouillage en attente de réarmement** ou
**Verrouillage indisponible**, avec le motif, le nom de la source, sa valeur et sa qualité. Tant
qu'il n'est pas normal, aucun nouveau démarrage, aucune reprise, aucun instantané, aucune évaluation
et aucune application de recette n'est admis sur l'unité. Un déclenchement met fin à l'essai en cours
par le chemin de fin ordinaire, en **Interrompu** avec le verdict **Non conforme** et le motif de fin
**Verrouillage**, et personne n'est nommé comme l'ayant terminé. L'état mémorisé survit à un
redémarrage. **Réarmer** ne paraît qu'en attente de réarmement, exige Exécuter les procédures, une
source qui se lit bonne et sûre et une unité qu'aucun essai ne détient ; il lève l'état mémorisé, est
journalisé avec le nom de l'opérateur, et ne redémarre jamais l'essai interrompu.

## La carte Essai {#the-run-card}

L'en-tête de la carte porte un voyant qui dit ce que fait l'unité, avec les mêmes mots et la même
couleur que le badge de la page de l'unité. L'attente des consignes l'emporte sur toute autre lecture.

| Voyant | Couleur | Quand |
| --- | --- | --- |
| **Pas d'enregistrement** | Gris | Aucun essai ne détient l'unité. |
| **Préparation** | Gris | Démarrer a réservé l'unité et l'essai n'existe pas encore. |
| **Enregistrement** | Vert | L'essai échantillonne. |
| **En attente de l'arrivée des consignes à l'équipement** | Prudence | La recette a remis les consignes d'un segment et attend que l'équipement les prenne ; le temps propre au segment n'a pas encore commencé à courir, et le datalog continue d'enregistrer. Seul un segment réglé pour attendre l'affiche ([Recettes](process-recipes#what-a-run-does-with-it)). |
| **Suspendu** | Prudence | Suspendre a figé la fenêtre temporelle sur la dernière consigne ; le datalog continue d'enregistrer. |
| **Écriture** | Gris | L'échantillonnage s'est arrêté et l'instantané de l'essai est en cours d'écriture. |
| **Finalisation** | Gris | L'essai a atteint son état final et ferme son fichier ; l'unité n'est pas encore libre. |

| Champ | Ce que c'est | Valeurs / défaut | Effet |
| --- | --- | --- | --- |
| Procédure | La procédure préparée pour le prochain démarrage. | « (aucune) » plus chaque procédure du modèle, par ordre alphabétique ; rien de préparé par défaut, et la préparation se réinitialise au démarrage de l'application. | La préparation vaut pour toute la station : chaque écran de cette unité, le point `Next.Procedure` et la carte de Conduite montrent le même choix. Préparer une procédure qui épingle un jeu d'alias applique ce jeu à l'unité dès la préparation, et non au démarrage ; un épinglage qui ne peut pas être appliqué laisse la préparation précédente en place et dit pourquoi sur la carte. Le sélecteur est grisé sans Exécuter les procédures et tant que le runtime est arrêté. |

Les boutons de cycle de vie, dans l'ordre où ils sont dessinés. Suspendre et Reprendre sont laissés
de côté quand la procédure préparée est Contrôlée ou Instantanée, parce que seul un essai Temporel a
une fenêtre à figer ; sans rien de préparé, les cinq sont dessinés.

| Commande | Ce qu'elle fait | Grisée quand (situation) | Non dessinée quand (rôle) |
| --- | --- | --- | --- |
| Démarrer | Démarre la procédure préparée sur cette unité. | L'unité est occupée, aucune procédure n'est préparée, le runtime est arrêté, le verrouillage n'est pas normal, ou la station refuse les écritures. | Sans Exécuter les procédures. |
| Suspendre | Fige la fenêtre temporelle sur la dernière consigne ; le datalog continue d'enregistrer. | Aucun essai n'est En cours, ou la procédure en cours n'est pas Temporelle. | Sans Exécuter les procédures ; la procédure préparée est Contrôlée ou Instantanée. |
| Reprendre | Lève la suspension et poursuit la fenêtre. | Aucun essai n'est Suspendu, ou le verrouillage n'est pas normal. | Sans Exécuter les procédures ; la procédure préparée est Contrôlée ou Instantanée. |
| Arrêter | Termine l'essai proprement et le fige en historique, depuis En cours ou depuis Suspendu. | Aucun essai ne détient l'unité. | Sans Exécuter les procédures. |
| Interrompre | Termine l'essai comme interrompu ; le bloc de finalisation s'exécute quand même. | Aucun essai n'est En cours ni Suspendu. | Sans Exécuter les procédures. |

Une commande refusée écrit son motif sur la carte (« Aucune procédure n'est préparée. Choisissez-en
une d'abord. »), et deux lignes permanentes sous les boutons disent pourquoi la station ou l'unité
n'accepte pas de commandes : « Runtime arrêté », et le motif du verrouillage.

## Le démarrage, et ce qu'il valide {#start-and-what-it-validates}

Le démarrage consomme la préparation de l'unité et refuse tout avant de prendre la moindre
ressource. Dans l'ordre : l'unité est réservée (un second démarrage sur la même unité est refusé) ;
la procédure préparée doit exister encore (« La procédure préparée n'existe plus. Choisissez-en une
de nouveau. ») et la préparation ne doit pas avoir bougé pendant que le démarrage attendait la fin
d'une modification d'ingénierie (« La procédure préparée ou les métadonnées ont changé pendant que
le démarrage attendait. Vérifiez l'essai préparé et réessayez. ») ; la procédure doit passer la
condition que sa propre page montre (« Rien à exécuter : cette procédure ne référence ni datalog ni
recette. », « Le mode temporel a besoin d'une durée. Fixez-en une. », « Le mode instantané a besoin
d'une recette instantanée (ou d'aucune). Un profil temporel n'a pas d'instant unique. », « Le profil
de la recette (*N* ms) est plus long que la fenêtre temporelle (*M* ms). », et les contrôles de
production comptée) ; chaque occurrence armée doit avoir une condition valide ; au moins une voie du
datalog doit se résoudre en une source liée sur cette unité (« Aucune voie du datalog ne se résout
en une source liée sur l'unité 'X'. ») ; les métadonnées demandées doivent être complètes et du bon
type (« Le champ de métadonnées « X » est obligatoire. », « Le champ de métadonnées 'X' doit être
numérique. ») et chaque champ séquentiel doit pouvoir se composer (un code d'unité ou de procédure
manquant refuse le démarrage) ; le verrouillage doit être normal ; et chaque source que la recette
écrit doit être libre (une source détenue par l'essai d'une autre unité refuse le démarrage en
nommant la voie et l'unité qui la détient). Alors seulement les compteurs séquentiels sont réservés,
le fichier d'essai est créé avec les métadonnées déjà écrites dedans, et les moteurs sont lancés ;
les étiquettes et les rapports de démarrage que la procédure émet sortent au moment où l'essai se
matérialise ([Émettre des étiquettes et des
rapports](process-emission)).

## La carte Métadonnées {#the-metadata-card}

La carte est titrée « Ce sous quoi le prochain essai de 'Procédure' est enregistré. Un champ marqué *
est demandé par toutes les procédures. » et dessine une saisie par champ de métadonnées que la
procédure préparée demande, dans l'ordre de la procédure ; sans rien de préparé, elle se lit
« Préparez une procédure et les champs qu'elle demande apparaissent ici. »

| Nature du champ | Ce que la carte dessine | Effet |
| --- | --- | --- |
| Texte | Une zone de saisie. | Écrit dans la préparation de toute la station au fil de la frappe ; le démarrage l'enregistre dans le fichier d'essai. Un champ obligatoire (marqué *) refuse un démarrage vide. |
| Nombre | Une zone de saisie. | Idem, et le démarrage refuse une valeur qui n'est pas un nombre. |
| Séquentiel | Un aperçu en lecture seule de l'identifiant que le compteur composerait maintenant, ou « Réservée au démarrage » quand aucun état de compteur n'existe encore. | Rien n'est réservé du seul fait de regarder : la valeur définitive est réservée au démarrage, donc un compteur partagé par plusieurs unités peut bouger d'ici là. |

La préparation est consommée par le démarrage, non effacée : les saisies restent comme valeurs par
défaut pour le prochain essai de la même procédure. Les saisies faites pour une autre procédure
restent dans la zone de préparation mais sont inertes, puisque le démarrage ne lit que les champs de
la procédure préparée. Les zones sont grisées sans Exécuter les procédures et tant que le runtime est
arrêté.

## La carte État de l'essai {#the-run-state-card}

Trois relevés : **État** (En cours, Suspendu, Écriture, Terminé, Interrompu, En échec, ou
« Préparation » tant que l'unité est réservée et « Au repos » quand rien ne la détient), **Cycle en
cours** (« 2 / 10 » pour un essai cyclique, « Pas de cycle » sinon ; laissé entièrement de côté quand
la procédure préparée est Contrôlée ou Instantanée) et **Verdict de l'essai** (le verdict en direct
de l'évaluation, gardé lisible après la fin de l'essai jusqu'au démarrage du suivant ; « Aucun » quand
rien n'a été jugé).
Tant qu'aucun essai ne détient l'unité, le verdict encore affiché est celui du dernier essai, et le
relevé s'intitule alors **Verdict du dernier essai**, pour qu'il ne passe jamais pour celui de
l'essai à venir.

## Ce que fait chaque fin {#what-each-end-does}

| Fin | Enregistrement | Recette | Verdict et état |
| --- | --- | --- | --- |
| Arrêter | L'échantillonnage s'arrête après l'exécution du bloc de finalisation, donc la transition vers l'état sûr est dans le datalog. | Les consignes de finalisation sont écrites. | L'évaluation ferme ses fenêtres ouvertes et se replie : Conforme, Non conforme, Indéterminé, ou Aucun sans évaluation. Terminé. |
| Interrompre | Idem. | Les consignes de finalisation sont écrites. | Non conforme quoi qu'il ait été jugé. Interrompu. |
| La fenêtre se termine (Temporel) ou la ligne est enregistrée (Instantané) | Idem. | Les consignes de finalisation sont écrites. | Comme pour Arrêter. Terminé ; personne n'est nommé comme l'ayant terminé. |
| Une écriture de recette échoue avec la règle d'échec Interrompre | Idem. | La finalisation s'exécute quand même. | Non conforme. Interrompu. |
| Le verrouillage se déclenche | Idem. | La finalisation s'exécute quand même. | Non conforme. Interrompu, motif de fin Verrouillage. |
| Le runtime s'arrête | Chaque essai pas encore scellé est interrompu. | La finalisation s'exécute quand même. | Non conforme. Interrompu. |
| Une erreur irrécupérable | L'échantillonnage s'arrête ; pas de finalisation. | Rien de plus n'est écrit. | Aucun. En échec. |

Fermer l'application ne termine rien : un essai En cours ou Suspendu reprend au lancement suivant, un
profil temporel suspendu à son segment et à son cycle persistés, et le datalog se poursuit dans le
même fichier.

## La carte Voies {#the-channels-card}

Les voies lisibles de l'unité sur un même graphique en direct, chaque série étiquetée par le nom en
vigueur sur cette unité (un alias se voit en direct) et dessinée dans la couleur et la bande que le
modèle déclare sur la voie, avec la barre d'outils de graphique que porte tout graphique
([Graphiques](view-charts)). Elle montre les valeurs en direct qu'un essai enregistre ou non. Une
ligne sous le dessin n'apparaît que lorsqu'un plafond de conservation a coupé l'historique que le
graphique garde (ce qu'une voie peut garder, ce qu'un graphique peut garder sur l'ensemble de ses
voies, ou ce que la station garde sur l'ensemble des graphiques en direct), et elle dit ce que ce
plafond a laissé ; un graphique qui a reçu tout l'historique demandé ne porte pas cette ligne. Les
plafonds sont décrits dans [Graphique en courbes](component-line-chart#history).

## La carte Commentaires {#the-comments-card}

La carte est titrée « Commentaires · Procédure · Unité » tant qu'un essai est actif et
« Commentaires · aucun essai en cours » sinon ; une unité au repos ne montre aucune chronologie, et un
essai terminé prend ses notes dans les [Historiques](histories-notes). Chaque ligne enregistrée
montre son heure, sa phase (Essai ou Après l'essai) et son texte, avec deux gestes : **Modifier** la
réécrit sur place (Entrée enregistre, Échap annule ; un texte vide ou inchangé laisse
l'enregistrement tel quel, et une réécriture estampille l'instant de la modification), et
**Supprimer** demande deux pressions, la première armant la ligne (« Supprimer ce commentaire ?
Cette action est irréversible. ») et la seconde la retirant. La zone en pied (« Ajouter un
commentaire… ») et **Ajouter** enregistrent une nouvelle ligne estampillée de l'instant et de
l'opérateur connecté sur cet écran (la station quand personne ne l'est). Les trois gestes exigent
Exécuter les procédures et un essai actif. Le même ajout est ouvert aux tableaux de bord et aux
agents par le point `Commands.Comment` de l'unité
([L'espace d'adressage de l'unité](process-addresses)).

## La carte Occurrences {#the-occurrences-card}

Les épisodes d'occurrence de cette unité, les actifs d'abord, chacun avec son statut, ses deux
horloges (temps actif et perte de signal) et le message figé avec lui ; l'en-tête compte les épisodes
actifs. Ce qu'est un épisode, et comment ses horloges sont dérivées, est sur
[Occurrences](process-occurrences).

## La carte Productivité {#the-productivity-card}

L'activité de production de l'unité sur **Aujourd'hui** ou la fenêtre glissante (un contrôle segmenté
dans l'en-tête) : la productivité, le rendement et la durée typique écoulée, le registre de
production, les résultats de fin et un tableau par procédure. Ce qui compte et comment cela se calcule
est [Productivité](process-productivity).

## La carte Commandes uniques {#the-single-commands-card}

Une commande isolée sur l'unité, hors de toute procédure. Une ligne ne paraît que là où le modèle
déclare ce depuis quoi elle tire.

| Ligne | Contrôles | Ce qu'elle fait | Grisée quand |
| --- | --- | --- | --- |
| Instantané | Un sélecteur de datalog et **Capturer** | Enregistre maintenant une ligne de datalog comme un essai Instantané terminé dans les Historiques, nommé « Instantané · datalog ». | L'unité est occupée, le verrouillage n'est pas normal, le runtime est arrêté, une commande unique est encore en cours, ou sans Exécuter les procédures. |
| Évaluer maintenant | Un sélecteur de datalog, un sélecteur d'évaluation et **Évaluer** | Enregistre une ligne et la juge tout de suite selon l'évaluation ; l'essai est nommé « Évaluer · évaluation » et porte le verdict de l'instant. Dessinée seulement quand le modèle a à la fois un datalog et une évaluation. | Idem. |
| Appliquer une recette | Un sélecteur des recettes instantanées du modèle et **Appliquer** | Écrit une fois les consignes de la recette par le canal d'écriture sous un verrou de courte durée ; aucun essai n'est enregistré, le journal est la trace. Une source détenue par un essai vivant la refuse. | Le verrouillage n'est pas normal, le runtime est arrêté, une application est encore en cours, ou sans Exécuter les procédures. Elle reste disponible pendant que l'unité enregistre. |

Les instantanés et les évaluations ne demandent aucune métadonnée, ne réservent aucun compteur et ne
comptent jamais dans la production. Les résultats arrivent dans le journal des actions (« Instantané
enregistré. Voir les Historiques. », « Évalué. Le verdict est enregistré dans les Historiques. »,
« Recette appliquée. »).

## Les tableaux de bord en tant que cartes {#dashboards-as-cards}

Un volet peut embarquer n'importe quel tableau de bord du modèle comme carte, à la hauteur choisie
sur le volet. La carte exécute la définition du modèle résolue pour cette unité, exactement comme le
fait le nœud de tableau de bord propre à l'unité, et ses composants de commande n'exigent qu'Exécuter
les procédures.

## Le datalog {#the-datalog}

Tant qu'un essai enregistre, le [datalog](process-datalogs) que sa procédure nomme écrit un
instantané au niveau de l'application par intervalle : chaque voie enregistrée, dans l'ordre déclaré
des colonnes, chaque valeur appariée à un marqueur Bonne ou Indisponible. La ligne promet une
observation applicative cohérente, non une acquisition physique simultanée : les équipements sources
se rafraîchissent à leur propre cadence. Une source indisponible ou une valeur non convertible est
stockée comme une lacune ; un `NaN` ou une sentinelle physique correctement reçus restent Bons.
Un intervalle plus court n'y arrive pas par l'écran : le champ Intervalle d'instantané du datalog
refuse une valeur sous 50 ms (« Saisissez un nombre supérieur ou égal à 50. ») et ramène la zone à
l'intervalle en vigueur. Un intervalle qui atteint un essai par un autre chemin est employé tel quel
jusqu'à 50 ms ; tout ce qui est en dessous est traité comme 50 ms.

## Le fichier d'essai {#the-run-file}

Le fichier d'essai est l'enregistrement complet : les identités et les noms stables du modèle, de
l'unité et de la procédure, la révision du modèle, la disposition figée des voies avec l'encre de
tracé résolue de chaque colonne, les valeurs de métadonnées, les écritures de recette telles
qu'exécutées, les résultats de critère, les événements d'occurrence, les commentaires, les repères de
graphique, les enregistrements de production, les artefacts d'étiquette et les enregistrements de
rapport. Le contexte figé est capturé au démarrage et jamais modifié ; le finaliseur n'ajoute que
l'issue : le verdict, l'état final, l'heure de fin, qui a terminé l'essai et, là où un verrouillage
l'a terminé, le motif de fin. Supprimer le modèle, l'unité ou la procédure ne touche jamais un essai
enregistré. Parcourir, exporter et régénérer des documents à partir des fichiers d'essai relève des
[Historiques](histories).

## Le chemin de l'automatisme {#the-automation-path}

Une unité dont l'[automatisme](process-automation) est activé prend le même cycle de vie depuis le
terrain : un front montant sur la source booléenne liée à Démarrer, Suspendre, Reprendre, Arrêter ou
Interrompre déclenche cette commande. Interrompre l'emporte sur Arrêter à la même scrutation, et
toute autre paire de fronts simultanés est refusée comme conflictuelle. Un démarrage automatique
résout sa procédure depuis le choix fixe ou le sélecteur numérique et ses métadonnées depuis les
sources configurées sans toucher à la préparation de l'opérateur, et n'est admis que lorsque l'unité
est prête pour un démarrage. Le résultat est réécrit dans le retour associé à CommandResult : 0 Idle,
1 Accepted, 2 UnitNotReady, 3 InvalidSelection, 4 InvalidMetadata, 5 IncompatibleCommand,
6 ConflictingCommands, 7 InternalFailure. Un essai que l'automatisme a admis est listé dans les
Historiques avec le badge **Automatisme**, enregistre l'automatisme comme responsable, et le nomme
comme celui qui l'a terminé après un arrêt ou une interruption automatiques.

## Agents et tableaux de bord {#agents-and-dashboards}

Le serveur d'agent embarqué pilote le même cycle de vie par ses outils de conduite Process (start,
stop, hold, resume, abort, comment, snapshot, evaluate, recipe apply), journalisés comme Agent et
enregistrés comme Agent dans l'essai ([Accès agent](agent)). Un tableau de bord l'atteint par les
points de commande de l'unité : un Bouton sur `Commands.Start` se désactive tant que la disponibilité
se lit fausse et une Saisie sur `Next.<Field>` prépare une valeur
([L'espace d'adressage de l'unité](process-addresses)) ; la procédure elle-même se prépare sur la [carte Essai](#the-run-card).

## Ce que cette surface ne fait pas {#what-this-surface-does-not-do}

Elle ne configure rien : les voies, les liaisons, les métadonnées, le verrouillage et l'automatisme
se modifient sous [Définition](process-definition) ; ce qu'un essai applique, enregistre et juge
s'assemble sous [Réglage](process-setup). Elle ne modifie pas un essai terminé : les notes
post-essai, les repères, les exports, les rapports et les étiquettes d'un essai enregistré relèvent
des [Historiques](histories). Et elle ne dessine jamais une carte que la station ne peut pas remplir.
