# Saisie

> Saisie d'une valeur par l'opérateur, écrite dans un point : la case accepte ce que le point accepte, et refuse le reste avec la raison.

La **Saisie** est le champ de saisie de l'opérateur : un brouillon qui lui appartient, et une touche
**Appliquer** qui l'envoie à un point par le canal d'écriture unique de la station. Elle ne dessine
aucune lecture à elle : qui veut la valeur du point à côté de la case compose une
[Valeur](component-value) à côté d'elle, et nommer le champ est un
[Libellé](component-label). C'est un composant de *Commande* ; un nouveau occupe 4 × 1 cellules.

Le brouillon appartient à l'opérateur : le rafraîchissement en direct n'écrase jamais ce qui a été
tapé, et une saisie refusée reste dans la case, si bien que la correction est une retouche et non
une nouvelle frappe.

## Données {#data}

| Champ | Ce qu'il fait | Valeurs | Par défaut |
|---|---|---|---|
| Adresse | L'adresse Logic enracinée du point écrit : une variable mémoire, un tag inscriptible, un champ de préparation d'une unité (`Next.<field>`) ou le point de commentaire d'essai (`Commands.Comment`). Rien n'est exclu ici : ce que la case accepte ensuite se lit sur le point lui-même. | Texte libre ; propositions issues de la liste des points en direct | vide |

Sous l'adresse, le volet écrit ce que le champ accepte en ce moment (« Ce champ attend un nombre, de
0 à 100, à 1 décimale. »), si bien qu'un point à deux états se voit transformer la ligne en une
touche par état avant même que la vue ne s'exécute.

## Ce que la case accepte {#what-the-box-takes}

La nature de la saisie est **dérivée du point**, jamais choisie à côté de lui : une catégorie que
vous pourriez déclarer contre le point serait une seconde déclaration, libre de contredire celle que
le point fait déjà.

| Le point | La case | Conduite |
|---|---|---|
| Un point booléen | Une touche par état (**Marche** / **Arrêt**) au lieu d'une case | Une pression est l'instruction entière. Les touches portent des valeurs absolues, donc elles restent utilisables en mauvaise qualité, contrairement à l'[Interrupteur](component-toggle), qui doit connaître la lecture qu'il nie. Aucune des deux touches ne montre l'état du point. |
| Un point entier | Une case de nombre entier | Les saisies décimales sont refusées ; le clavier tactile propose des chiffres. Un tag entier dont la Mise à l'échelle ou l'Étalonnage change la valeur accepte un nombre décimal : sa valeur physique est réelle. |
| Un point réel (décimal) | Une case de nombre | Jugée contre la plage et les décimales déclarées à l'appui sur **Appliquer**, jamais à chaque frappe ; le clavier tactile propose un pavé décimal. |
| Du texte, un instant, un point de préparation ou de commentaire, ou une adresse à laquelle rien ne répond encore | Une case de texte libre | La plage et les décimales ne sont pas lues, et le volet le dit. |

## Nombre {#number}

La plage et la finesse que l'opérateur déclare *par-dessus* le point :

| Champ | Ce qu'il fait | Valeurs | Par défaut |
|---|---|---|---|
| Valeur minimale | Le plus petit nombre que le champ envoie. Vide laisse ce côté de la plage ouvert. | N'importe quel nombre, ou vide | vide |
| Valeur maximale | Le plus grand nombre que le champ envoie. Vide laisse ce côté ouvert. Un minimum au-dessus du maximum ne laisse aucun nombre entre les deux, et le volet avertit que le champ refuserait toute saisie. | N'importe quel nombre, ou vide | vide |
| Décimales | Quelle finesse de saisie le champ envoie. Vide envoie la précision qui a été tapée. Un point qui compte les fixe à 0 quoi qu'il soit enregistré. Les places sont demandées à la valeur, pas aux chiffres : `12.500` est `12.5`, donc les zéros de fin qu'un pavé a ajoutés ne sont jamais refusés. | de 0 à 15, ou vide | vide |

Un tag qui déclare des limites à lui (son étape de conversion **Limites** activée) resserre ce qui
est déclaré ici : le champ n'accepte que ce que la chaîne de conversion typée porterait inchangé.

Une saisie hors de la plage, trop fine, ou qui n'est pas un nombre du tout est **refusée avec la
raison et rien n'est écrit**. Le nombre est une instruction pour l'installation, et en prendre une
autre au bord serait la station décidant pour l'opérateur. C'est délibérément l'inverse des champs
de configuration de l'éditeur, qui prennent une saisie hors plage au bord le plus proche et le
disent.

## Ce que l'écriture signifie {#write-semantics}

- **Variable mémoire** : le brouillon est validé contre la catégorie de sortie de la variable, puis
  écrit par le canal de la logique. Une case vide écrit une valeur vide.
- **Tag inscriptible** : le brouillon arrive au canal comme valeur physique, jamais converti
  d'abord vers le type de nœud du tag. Le canal défait l'étalonnage et la mise à l'échelle sur
  son chemin vers le bus (la chaîne de conversion du tag à l'envers), donc 0,5 sur un tag Int16
  mis à l'échelle par 0,1 arrive à l'équipement comme 5. Une valeur que le type de nœud ne peut
  pas contenir une fois ramenée à l'échelle brute (un nombre négatif dans un type non signé, un
  nombre au-delà du maximum du type) est refusée avec la plage du type, et rien n'est écrit.
- **`Next.<field>`** : enregistre le texte dans la zone de préparation de l'unité pour le prochain
  essai. La préparation est un apprêt, pas une écriture vers l'installation : pas de canal, pas
  d'entrée au journal. La ligne de retour dit « Préparé ».
- **`Commands.Comment`** : ajoute un commentaire d'essai (ou une note post-essai à l'arrêt) au
  contexte actif de l'unité, attribué à l'opérateur connecté ; la case se vide et la ligne de retour
  dit « Commentaire ajouté ». Un commentaire vide est refusé.

La ligne de retour passagère rapporte chaque résultat et expire au bout de quelques secondes.
L'autorisation est revérifiée à l'appui. Dans une cellule sans ligne pour elle et sans titre de
coin au-dessus du contrôle, la réponse prend le mot de la touche **Appliquer** tant qu'elle
s'affiche (sur un point à deux états, le mot de la touche qui a été appuyée), un refus à l'encre
d'erreur. La touche garde sa largeur, si bien que ce qu'elle ne peut pas contenir est écrit en
abrégé, avec la réponse entière dans l'infobulle, et le champ ne bouge jamais.

C'est la case qui attend l'équipement, pas la Logique : la ligne rapporte ce qu'est devenue la
valeur, et pas seulement qu'elle est partie. Un refus s'écrit avec les mots de qui a refusé : ceux
de la station pour ce qu'elle a tranché avant l'envoi (« « Setpoint » n'a pas été écrit :
l'équipement n'est pas connecté. ») et ceux de l'équipement ou de son pilote pour ce qui s'est passé
sur le câble. Une valeur qu'une saisie plus récente sur le même point a dépassée avant l'envoi n'est
pas un refus et ne dit rien : c'est la valeur la plus récente que reçoit l'installation.

## Permissions et verrou {#permissions-and-the-lock}

Écrire une variable ou un tag demande la permission de rôle de piloter les tableaux de bord ; les
points de préparation et de commentaire sont des mutations de Process et demandent plutôt la
permission d'exécuter les procédures. Un appui bloqué dessine la marque de verrou partagée avec la
raison dans l'infobulle, et la case elle-même est désactivée tant que le verrou tient (voir la
[page des tableaux de bord](home)). Un point lié qui ne lit pas porte la marque de lecture mauvaise
partagée ; les touches de drapeau et la case de texte restent utilisables, puisque leur instruction
ne dépend pas de la lecture.

Les sections partagées Apparence, Identification du composant, Position et couche et Actions du composant sont décrites sur la
[page des composants](components#the-shared-property-sections).
