Recettes

Les consignes qu'un essai écrit : un jeu instantané appliqué au démarrage, ou un profil temporel d'échelons, de rampes et de paliers, chacun avec le bloc de finalisation qu'écrit tout essai qui se termine.

Afficher en Markdown

Une recette écrit les voies inscriptibles du modèle. Une recette instantanée est un jeu de consignes appliquées une fois au démarrage d'un essai; une recette temporelle est un profil ordonné de segments Échelon, Rampe et Palier pilotés sur l'horloge propre à l'essai. Les deux peuvent se terminer par un bloc de finalisation, l'état sûr écrit chaque fois que l'essai se termine. Chaque écriture passe par le canal d'écriture unique et journalisé et est enregistrée dans le fichier d'essai telle qu'exécutée. Les recettes vivent sous Process > Modèles > modèle > Réglage > Recettes et demandent la permission Modifier recettes et évaluations.

Le dossier Recettes

Sélectionner la ligne Recettes ouvre la page du dossier (« Les valeurs de consigne qu'une procédure applique au démarrage d'un essai, écrites par l'entonnoir unique et enregistrées telles qu'exécutées. ») avec une carte par recette, par nom; cliquer sur une carte l'ouvre et le X la retire. Sans aucune, la page indique « Aucune recette pour l'instant. Ajoutez-en une. »

Commande Ce qu'elle fait Grisée quand (situation) Non dessinée quand (rôle)
Nouvelle recette (barre de détail, dossier sélectionné; clic droit Ajouter une recette) Ajoute Recette <n> : Instantanée, Suspendre en cas d'échec, aucune consigne. La ligne rejoint son groupe, mise en évidence et amenée dans la zone visible; sa carte l'ouvre. Une unité détient un essai, ou le runtime est arrêté. Sans Modifier recettes et évaluations.

La page de la recette

L'en-tête porte le nom, la ligne « Les valeurs de consigne qu'une procédure applique au démarrage d'un essai, écrites par l'entonnoir unique et enregistrées telles qu'exécutées. » et une pastille avec le type. Chaque champ s'enregistre de lui-même, et chaque modification redessine l'aperçu du profil.

Définition

Champ Ce que c'est Valeurs / défaut Effet
Nom Comment la recette s'appelle dans l'arbre, dans le sélecteur Recette d'une procédure et dans le sélecteur Appliquer une recette d'un volet. Texte libre; Recette <n> à la création. Un nom vide est refusé (« Une recette doit porter un nom. »). Renomme la ligne.
Nature La forme de la recette. Instantanée (par défaut) : un jeu de consignes appliquées une fois au démarrage. Temporelle : un profil ordonné Échelon / Rampe / Palier sur son horloge propre. Fait passer la page d'une forme à l'autre parmi celles ci-dessous. Les consignes et les segments déjà saisis sont conservés; seule la forme que le type lit est dessinée. Le bloc conservé n'est ni appliqué ni réservé : un essai n'écrit et ne verrouille que ce que le type en vigueur écrit. Une procédure n'admet qu'une recette dont le type convient à son mode.
En cas d'échec (temporelle seulement) Ce que le profil fait quand une écriture échoue ou qu'une valeur dont il a besoin est illisible. Suspendre (par défaut), Poursuivre, Interrompre; voir le tableau sous la forme temporelle. La règle de la recette; chaque segment peut passer outre.
Remarques Texte libre pour qui lit la recette. Multiligne; vide par défaut. Rien d'autre.

Les valeurs

Les consignes et les cibles se saisissent en texte et sont analysées selon le type de la voie au moment où elles sont appliquées, dans la culture invariante :

Type de voie Littéraux acceptés
Booléen true, false, 1, 0
Entier Un nombre entier, . jamais employé comme séparateur
Décimal Un nombre avec . comme séparateur décimal (12.5, 1e-3); sur une station qui écrit les décimales avec une virgule, le champ accepte aussi 12,5 et le conserve en 12.5
Texte N'importe quel texte, tel que tapé
Date et heure Une date et une heure en aller-retour (2026-09-02T14:30:00+00:00)

Un littéral qui n'entre pas dans le type de la voie n'est jamais écrit : l'écriture est enregistrée comme échouée dans le fichier d'essai et traitée par la règle d'échec. Chaque grille de lignes de voies de cette page n'offre à une ligne que les voies inscriptibles que les autres lignes de la même grille n'ont pas prises, donc une voie est écrite une fois par jeu et une fois par segment; quand chaque voie inscriptible est prise, le bouton qui ajoute une ligne est grisé avec « Chaque voie accessible en écriture a déjà une consigne ici. » (ou « … a déjà une cible dans ce segment. »), et sans aucune voie inscriptible avec « Ce modèle n'a encore aucune voie accessible en écriture. »

Une recette instantanée

Deux cartes indépendantes, chacune surmontée d'un bouton Consigne qui ajoute une ligne sur la première voie inscriptible libre avec la valeur 0 :

Carte Ce qu'elle écrit
Consignes (appliquées au démarrage) Écrites une fois, au démarrage, avant que l'essai n'enregistre quoi que ce soit.
Finalisation (état sûr) « Écrite chaque fois que l'essai se termine : fin normale, arrêt ou interruption. »

Les deux grilles partagent les mêmes colonnes :

Colonne Ce que c'est Valeurs
Voie La voie inscriptible écrite, sous la forme Voie <numéro> · <nom>. Les voies en Écriture seule et en Lecture et écriture pas encore prises dans cette grille.
Valeur Le littéral écrit. Voir Les valeurs.
Action de ligne Retirer demande « Supprimer la consigne » : le nom de la voie, « Ceci retire la consigne de la recette. »

Une recette temporelle

La forme temporelle dessine d'abord le profil, puis les segments à côté de celui qui y est choisi, puis le bloc de finalisation.

Profil temporel

Le graphique est la recette elle-même : une série par voie numérique que les segments visent, intitulée <nom> [<unité>], dessinée comme la courbe par morceaux que les segments construisent (un échelon saute puis maintient, une rampe monte depuis la valeur qui y entre, un palier ou un segment sans cible maintient), sur le temps cumulé en secondes. Une cible sur une voie qui n'est pas numérique n'est pas dessinée. Le graphique porte la barre de commandes de tous les graphiques et peut être ouvert dans une fenêtre à lui (voir Graphiques); la page de la procédure dessine le même profil sous son étape Appliquer.

Segments de recette

La liste est intitulée Segments de recette et son bouton Segment de recette ajoute un échelon de 60000 ms sans cible et le choisit. Cliquer sur une ligne l'ouvre dans la colonne Cibles du segment; sans rien de choisi, la colonne indique « Sélectionnez un segment pour tout modifier au même endroit, avec les cibles qu'il pilote. »

Colonne Ce que c'est Valeurs / défaut
Nature La forme que le segment pose sur le profil; chaque option porte cette forme à côté de son nom. Échelon (par défaut), Rampe, Palier.
Durée (ms) Combien de temps la recette reste dans le segment avant de passer au suivant. Un nombre de millisecondes; 60000 à la création. Le champ n'accepte pas de nombre négatif : la saisie est refusée, la note sous le champ le dit, et la valeur précédente revient.
Comptage du temps À partir de quand ce segment compte son propre temps : une fois que l'équipement a pris les consignes, ou dès qu'elles lui sont remises. Attendre qu'elles parviennent à l'équipement · Envoyer et poursuivre. Un échelon naît en attente, une rampe naît en envoi; changer la Nature du segment remet la valeur de naissance de la nouvelle nature, et ce qui est choisi ensuite demeure. Un palier n'écrit rien, alors sa cellule est vide et il n'y a rien à choisir.
En cas d'échec Si un échec ici suit la règle de la recette ou l'une des règles propres à ce segment. (recette) (par défaut : héritée), Suspendre, Poursuivre, Interrompre.
Cibles Ce vers quoi le segment pilote, sur une seule ligne : <voie> = <valeur>, …. Un palier ne pilote rien, donc il se lit vide. Lecture seule; modifiée dans la colonne.
Action de ligne Retirer demande « Supprimer le segment » : Segment n° <n> · <Type>, « Ceci retire le segment et ses cibles de la recette. »
Type de segment Ce qu'il fait
Échelon Écrit ses cibles au début du segment, puis demeure pendant la durée (un échelon peut demeurer 0 ms).
Rampe Pilote chaque voie visée linéairement depuis sa dernière valeur commandée (ou sa valeur actuelle quand rien n'a encore été commandé) jusqu'à la cible, sur la durée. Une rampe mène sa voie entre deux lectures, alors son sélecteur de cible n'offre que les voies qui portent un nombre : une voie de texte ou de date et heure reste dans la liste sans pouvoir être choisie, en disant qu'un échelon l'écrit une seule fois.
Palier Maintient les dernières valeurs commandées pendant la durée; il n'écrit rien et ne porte aucune cible.

La colonne, intitulée Segment n° <n> · <Type>, reprend les mêmes champs avec une légende et l'effet de la valeur en vigueur sous chacun :

Champ Légende Effet
Nature La forme à côté de chaque option.
Durée (ms) « Combien de temps la recette reste dans ce segment avant de passer au suivant. » « S'exécute pendant 1 min 30 s. » (« aucune durée » pour 0).
Comptage du temps « Quand ce segment commence à compter son propre temps. » « Le temps ne court qu'une fois les consignes parvenues à l'équipement; un refus ou un délai dépassé déclenche la règle de défaillance. » ou « Envoie et compte le temps; la réponse de l'équipement est seulement consignée. »
En cas d'échec « Si un échec ici est traité comme la recette le dit, ou d'une autre façon que ce seul segment demande. » « Suit la recette : Suspendre. » ou « Ce segment passe outre la recette : Interrompre. »

Le comptage du temps appartient au segment et à rien au-dessus de lui : il n'existe aucun champ à l'échelle de la recette, parce qu'un profil dont les segments comptent différemment est un profil légitime et qu'un seul interrupteur pour l'ensemble ne serait qu'un deuxième endroit où dire la même chose. Ce n'est pas non plus un réglage d'échec. Ce qu'il décide, c'est l'horloge; ce qu'un échec provoque, c'est la règle En cas d'échec, plus bas. Le champ n'est pas dessiné du tout sur un palier.

En dessous, CIBLES contient les cibles du segment, avec un bouton Cible dans l'en-tête de la colonne qui ajoute une ligne sur la première voie inscriptible que le segment ne pilote pas encore, à 0. Sur un palier, la grille est remplacée par la ligne « Un palier maintient les valeurs que le profil a déjà atteintes, donc il ne pilote aucune cible propre. » et le bouton est grisé, en disant « Un palier maintient les valeurs déjà atteintes. Changez le type pour piloter une cible ici. »; les cibles qu'un palier porte d'un type antérieur restent conservées et sont ignorées aussi bien par l'essai que par l'aperçu du profil et la feuille de route :

Colonne Ce que c'est
Voie La voie inscriptible pilotée, offerte seulement parmi les voies que les autres cibles de ce segment n'ont pas prises.
Cible Le littéral écrit (Échelon) ou atteint (Rampe).
Action de ligne Retirer demande « Supprimer la cible » : le nom de la voie, « Ceci retire la cible du segment. »

En cas d'échec

La règle d'échec s'applique à une recette temporelle quand une écriture est refusée ou qu'une valeur dont elle a besoin est illisible :

Règle Ce que fait l'essai
Suspendre Fige le profil à la dernière consigne et attend que l'opérateur reprenne ou interrompe. Le datalog continue d'enregistrer.
Poursuivre Enregistre l'échec tel qu'exécuté et continue; la voie en échec est sautée pour le reste du segment.
Interrompre Écrit le bloc de finalisation et termine l'essai en interruption.

La règle répond d'un échec que la recette connaît, et ce que la recette connaît dépend de si elle est restée pour en entendre la réponse. Un problème qu'elle voit avant tout envoi est une connaissance dans les deux modes; un refus ou un silence de l'équipement n'est une connaissance que là où le segment l'a attendu :

Ce que la recette apprend, et quand Attendre qu'elles parviennent à l'équipement Envoyer et poursuivre
Avant l'envoi : la voie n'est pas liée, la valeur ne convient pas au type de la voie, le tag n'est pas dans le runtime, un autre essai retient le tag, l'équipement est déjà connu comme déconnecté La règle s'applique. La règle s'applique tout autant : la recette savait avant de lâcher prise.
L'équipement refuse la valeur sur le fil La règle s'applique. Pas un échec ici : enregistré comme exécuté avec la raison, et journalisé.
L'équipement ne répond pas à temps La règle s'applique. Pas un échec ici : enregistré.
Une consigne qu'une écriture plus récente sur la même cible a devancée avant l'envoi Pas un échec. Pas un échec.

Une consigne devancée n'est jamais un échec, dans un mode comme dans l'autre : la valeur la plus récente pour cette cible est celle qui est dite à l'équipement, et c'est elle qui compte. Une rampe fonctionne exprès ainsi, chaque pas remplaçant celui d'avant qui n'a pas encore quitté la file de l'équipement.

Finalisation (état sûr)

La même carte que sur une recette instantanée, « Écrite chaque fois que l'essai se termine : fin normale, arrêt ou interruption. », avec son propre bouton Consigne et sa propre grille.

Où une recette est employée

Surface Ce qu'elle fait de la recette
L'étape Appliquer d'une procédure Le sélecteur offre chaque recette du modèle; une recette dont le type ne convient pas au mode de la procédure est listée « <nom> (non compatible) », désactivée, avec la raison en infobulle. Une procédure en mode Instantané ou Contrôlé prend une recette instantanée ou aucune; une procédure en mode Temporel prend une recette temporelle ou aucune, et son profil doit tenir dans la fenêtre. La ligne de l'étape dit ce que le choix écrit : « Écrit 4 consignes au démarrage. », « Écrit 4 consignes au démarrage et 2 consignes à la sortie. », « Pilote 3 segments sur 2 min 30 s et écrit 2 consignes à la sortie. », ou « Aucune consigne n'est écrite. » Voir Procédures.
La carte Commandes uniques d'un volet Appliquer une recette écrit une fois les consignes d'une recette instantanée, hors de tout essai, par le canal d'écriture journalisé et sous un verrou de courte durée; aucun fichier d'essai n'est créé, le journal est le registre. Seules les recettes instantanées sont offertes. Voir Volets.

Ce qu'un essai en fait

Au démarrage, l'essai prend possession de chaque source que la recette écrit pour toute sa durée, donc un démarrage dont la recette écrit une source qu'un autre essai détient est refusé en nommant l'autre, et chaque écriture venue d'ailleurs (un champ de tableau de bord, un script, un client OPC UA) vers ces sources est refusée tant que l'essai les détient. Un jeu instantané est écrit une fois au démarrage; un profil temporel est parcouru segment par segment sur l'horloge de l'essai, et une procédure en mode Temporel sans recette reçoit tout de même cette horloge pour que chaque membre de la fenêtre démarre, se répète et se termine ensemble. Suspendre fige l'horloge et Reprendre la relâche; le datalog continue d'enregistrer pendant une suspension. Chaque écriture est journalisée avec l'essai comme origine et enregistrée dans le fichier d'essai telle qu'exécutée, donc un lecteur ultérieur voit ce qui a réellement été écrit et quand.

Un segment, le jeu instantané et le bloc de finalisation remettent chacun toutes leurs consignes d'un coup, et chacune part de là vers la file de son propre équipement. Une station dont les quatre voies siègent sur quatre équipements paie donc l'équipement le plus lent une fois, et non la somme des quatre, et la logique elle-même n'en attend aucun.

Ce que le segment fait ensuite, c'est le Comptage du temps qui le décide. Sur Attendre qu'elles parviennent à l'équipement, l'horloge propre au segment ne part pas avant que chaque consigne ait été prise par son équipement : pendant ce temps l'unité affiche « En attente que les consignes parviennent à l'équipement » sur le mur de Conduite, la durée du segment n'a pas commencé à s'écouler, et le datalog enregistre tout du long. Sur Envoyer et poursuivre, l'horloge part au moment où les consignes sont remises, et les réponses qui reviennent ensuite sont consignées, rien de plus.

La recette instantanée du démarrage et le bloc de finalisation attendent toujours, sans champ ni choix : un essai ne doit pas commencer avant que son état de départ soit réel, ni être rapporté clos avant que son état sûr le soit. Leurs refus sont enregistrés comme exécutés et, comme toujours, n'interrompent jamais l'essai.

Le bloc de finalisation est écrit chaque fois que l'essai se termine : fin normale, arrêt ou interruption. Il n'est pas écrit quand l'application elle-même est fermée en plein essai : l'essai ne se termine pas, et il reprend suspendu à son segment et à son cycle conservés au lancement suivant.

Retirer la recette

Retirer la recette se tient dans le groupe de danger de la barre de détail avec la recette sélectionnée, sur son menu contextuel, et sous forme de X sur la carte de la page du dossier. Elle demande d'abord (« Supprimer la recette », « Ceci retire la recette du modèle. »). Chaque procédure qui l'appliquait vide sa référence Recette et devient un essai sans recette. Elle demande Modifier recettes et évaluations et est grisée sous le verrou d'ingénierie et sous le runtime arrêté.

Ce qu'une recette ne fait pas

  • Elle ne lit rien et ne juge rien : les limites relèvent d'une évaluation.
  • Elle n'écrit aucune valeur par unité. Chaque unité reçoit les mêmes littéraux sur ses propres sources liées.
  • Elle ne retente jamais une écriture refusée; la règle d'échec est toute la réponse.
  • Une recette temporelle ne peut pas être déclenchée comme commande unique; seule une procédure exécute un profil.
  • L'aperçu du profil ne dessine que les voies numériques; une cible booléenne ou de texte est écrite mais jamais dessinée.