# Verrouillages

> L'historique durable de l'état mémorisé du verrouillage d'arrêt de chaque unité : déclenchements, retour de la source à une valeur sûre et réarmements manuels avec qui les a faits.

L'onglet Verrouillages de [Événements](events) (`/events?view=interlocks`) est la chronologie durable
du **verrouillage d'arrêt** : le signal booléen qu'un modèle surveille par unité pour mettre fin à un
essai quand la machine a été arrêtée de l'extérieur. Le voir demande **Voir les événements**;
l'exporter demande **Exporter/importer les historiques**. Le verrouillage se configure sous
[Process > Définition > Automatisme](process-automation) et se réarme depuis le composant
Verrouillage d'un tableau de bord ou depuis la vue de l'unité; cet onglet enregistre et ne change
rien.

Il suit la conduite commune aux trois chronologies décrite sur
[Événements](events#how-the-three-timelines-behave).

## Les trois transitions {#the-three-transitions}

Le moniteur du verrouillage scrute la source configurée toutes les 100 ms, en ne lisant que la valeur
et la qualité que Connector ou Logic publient déjà, sans expression et sans anti-rebond. L'état
mémorisé d'une unité passe par Indisponible (aucune lecture valide encore), Normal, Déclenché et En
attente de réarmement; trois de ses passages sont journalisés :

| Transition | Quand elle est enregistrée | Message |
| --- | --- | --- |
| Déclenché | La source, une fois armée par une première bonne lecture, rapporte la polarité de déclenchement configurée, ou perd sa qualité. L'état mémorisé est conservé, toute nouvelle exécution sur l'unité est refusée, ses sources inscriptibles sont bloquées, et un essai en cours se termine en Interrompu / Non conforme avec le motif StopInterlock. Une unité qui attendait un réarmement et qui se déclenche de nouveau enregistre un nouveau Déclenché. | « La source signale la valeur active configurée (Vrai). » (ou « (Faux) »), ou « La source est indisponible ou de mauvaise qualité depuis que le verrouillage s'est armé. » |
| Source saine | Pendant que l'état est mémorisé, la source revient à une bonne lecture de la valeur sûre. L'unité demeure bloquée tant que personne ne la réarme. | « La source est de nouveau sûre; un réarmement manuel est nécessaire. » |
| Réarmé | Une personne efface l'état mémorisé pendant que la source est bonne et sûre et que l'unité n'est pas occupée à finir son essai. Enregistré avec le nom de la personne. | « Le verrouillage a été réarmé à la main. » |

Une transition observée pendant que le moniteur démarre ou reprend (quand il scrute sans publier) est
conservée et écrite à la scrutation publiante suivante, ou au moment du réarmement qui la suit, de
sorte qu'un réarmement n'est jamais enregistré avant le front sûr auquel il répond. Au sein d'une
même unité, chaque instant enregistré est strictement postérieur au précédent, d'au moins une
milliseconde, donc l'ordre des lignes n'est jamais ambigu.

## Recherche et filtre {#search-and-filter}

| Contrôle | Valeurs | Ce qu'il fait |
| --- | --- | --- |
| Recherche | Texte d'exemple « Rechercher un modèle, une unité, une source, un auteur ou un message » | Comparaison « contient » sur le nom du modèle, celui de l'unité, la clé et le nom de la source, l'auteur d'un réarmement et le message. |
| Changement d'état | **Toutes les transitions** (par défaut), **Déclenché**, **Source saine**, **Réarmé** | Ne garde qu'un genre de transition. |
| Actualiser | | Relit le journal; infobulle « Actualiser les événements de verrouillage ». |
| Exporter | **Exporter en CSV…**, **Exporter en JSON…** | Écrit chaque événement que la recherche, le filtre de transition et la période atteignent, page après page, et pas seulement les lignes actuellement listées. Dessiné seulement avec **Exporter/importer les historiques**; grisé tant que la liste est vide. |

## Les lignes {#the-rows}

| Partie de la ligne | Contenu |
| --- | --- |
| Heure | Date et heure de la transition. |
| Point | Critique pour Déclenché, prudence pour Source saine, neutre pour Réarmé. |
| Nom | Le nom de l'unité sur le coup. |
| Résumé | « Transition · Modèle / Unité · Source = valeur · qualité Correcte », par exemple « Déclenché · Presse 40 / Cellule A · EmergencyStop = Vrai · qualité Correcte ». La valeur se lit Vrai, Faux ou Indisponible; la qualité se lit Correcte ou Indisponible. |
| Niveau | Le mot de la transition : Déclenché, Source saine ou Réarmé. |

## Le volet de détail {#the-detail-panel}

Sélectionner une ligne ouvre le volet avec le badge de transition et le nom de l'unité, l'horodatage
complet, la ligne de résumé, le message et trois cartes :

| Carte | Champ | Contenu |
| --- | --- | --- |
| ÉVÉNEMENT | Niveau | La transition. |
| ÉVÉNEMENT | ID d'événement | L'identité de cette transition dans le journal. |
| INSTANTANÉ DU VERROUILLAGE | Type de transition | Déclenché, Source saine ou Réarmé. |
| INSTANTANÉ DU VERROUILLAGE | Séquence du journal | Le numéro d'insertion de la ligne dans le journal. |
| INSTANTANÉ DU VERROUILLAGE | Modèle, ID de modèle | Le nom du modèle sur le coup et son identifiant stable. |
| INSTANTANÉ DU VERROUILLAGE | Unité, ID d'unité | Le nom de l'unité sur le coup et son identifiant stable. |
| SOURCE FIGÉE | Source | Le nom du tag ou de la variable surveillée sur le coup (« Unavailable source », gravé en anglais comme preuve, quand elle n'a pas pu être lue; « Variable Logic supprimée » quand la variable n'existait plus). |
| SOURCE FIGÉE | Clé de la source | L'identité de la source indépendante du nom, `tag:<id>` ou `var:<id>`, pour qu'une source renommée corresponde encore à son historique; `unit:<id>` quand l'unité n'avait aucune source configurée. |
| SOURCE FIGÉE | Polarité de déclenchement | « Déclencher quand Vrai » ou « Déclencher quand Faux » : quelle lecture du booléen met fin à l'essai. |
| SOURCE FIGÉE | Valeur observée | Vrai, Faux ou Indisponible (la source n'a pas pu être lue ni convertie en booléen). |
| SOURCE FIGÉE | Qualité | Correcte, ou Indisponible. |
| SOURCE FIGÉE | Auteur | Pour Réarmé, le nom affiché de l'utilisateur dont la session était ouverte sur l'écran qui a réarmé (« Aucune session ouverte » quand il n'y en avait aucun; « Unknown operator », en anglais, quand aucun nom n'est parvenu). « Automatique » pour Déclenché et Source saine. |

**Copier l'événement** copie une seule ligne : « horodatage | Interlock | transition | unité |
résumé | message | EventId=… | ModelId=… | UnitId=… | SourceKey=… | SourceName=… | TripWhenTrue=… |
QualityGood=… | ObservedValue=… | Author=… ».

## Colonnes de l'export {#export-columns}

Le CSV et le JSON portent les mêmes champs, dans cet ordre : `Timestamp` (l'en-tête du CSV y ajoute
la référence de temps, « Timestamp (UTC-03:00) »), `JournalSequence`, `Transition` (écrite avec le
nom brut `SourceSafe`), `Model`, `ModelId`, `Unit`, `UnitId`, `SourceKey`, `SourceName`,
`TripWhenTrue`, `QualityGood`, `ObservedValue` (vide quand elle est indisponible), `Author` (vide
pour une transition automatique), `Message` et `EventId`. Le JSON est une enveloppe avec `TimeZone`
et `Events`. Les noms de fichiers sont `interlock-history-<yyyyMMdd-HHmmss>.csv` et `.json`. Le CSV
suit la préférence de séparateur décimal de la station comme tous les autres exports : avec le point
décimal, le séparateur de liste est `,`; avec la virgule décimale, c'est `;`. Une cellule qui
commence par `=`, `+`, `-` ou `@` est préfixée d'une apostrophe pour qu'un tableur la lise comme du
texte.

## Où une transition est enregistrée par ailleurs {#where-else-a-transition-is-recorded}

Chaque transition laisse aussi une ligne de Console sous le domaine Process : « Interlock tripped: … »
en avertissement, « Interlock source returned safe: … » et « Interlock rearmed: … » en information,
chacune avec le modèle, l'unité, la source, la polarité, la qualité et la valeur. L'essai auquel un
déclenchement a mis fin garde son propre dossier dans [Historiques](histories) avec le motif
StopInterlock. L'état mémorisé conservé est, lui, une ligne distincte que le moniteur garde jusqu'au
réarmement; elle n'est pas montrée dans cet onglet.

## États vides et ligne d'état {#empty-states-and-the-status-line}

- « Rien encore dans les événements de verrouillage » avec « Les déclenchements de verrouillage, les
  retours de source saine et les réarmements manuels apparaîtront ici. »
- « Rien dans les événements de verrouillage ne correspond à ces filtres » avec « Ajustez le type de
  transition ou les termes de recherche pour élargir cet historique. »
- La ligne d'état indique « N affichés · page 1 », puis « · filtré » quand une recherche, une
  transition ou une période est en vigueur; à droite,
  « 1 sélectionné » et « Mise à jour hh:mm:ss ».

## Ce que l'onglet Verrouillages ne fait pas {#what-the-interlocks-tab-does-not-do}

- Il n'active pas le verrouillage, ne choisit ni sa source ni sa polarité, et ne détache pas une
  unité du réglage par défaut du modèle
  ([Process > Définition > Automatisme](process-automation)).
- Il ne réarme pas : la commande Réarmer vit sur le composant Verrouillage et sur la vue de l'unité,
  et demande une source bonne et sûre ainsi qu'une unité qui n'est plus en train de finir son essai.
- Il ne montre pas l'état en direct d'un état mémorisé (Indisponible, Normal, Déclenché, En attente
  de réarmement); cela revient au volet de l'unité et au composant Verrouillage. Une unité qui
  attend encore un réarmement se reconnaît ici seulement à une ligne Source saine sans ligne Réarmé
  plus tard.
- L'état Indisponible qui précède la première bonne lecture n'est pas une transition et ne laisse
  aucune ligne.
- Il n'a ni filtre d'unité ni filtre de date; cherchez par le nom de l'unité ou du modèle.
