Occurrences

Des conditions surveillées sur l'objet en essai, écrites comme une expression JavaScript sur les voies du modèle et jugées pendant un essai ou toujours.

Afficher en Markdown

Une occurrence enregistre que l'objet en essai a fait quelque chose de notable. Là où une alarme surveille l'usine et les équipements, une occurrence appartient à la procédure : ses fronts restent avec l'essai qui les a observés et entrent aussi dans la chronologie persistante des Occurrences de la page Événements. Sa condition est une expression JavaScript sur les voies du modèle, avec un anti-rebond sur les deux fronts et conditionnée par la qualité de ce qu'elle lit. Les occurrences vivent sous Process > Modèles > modèle > Réglage > Occurrences et demandent la permission Modifier recettes et évaluations.

Le dossier Occurrences

Sélectionner la ligne Occurrences ouvre la page du dossier (« Les conditions surveillées sur l'objet en essai. Chaque front reste avec son essai quand cela s'applique et entre aussi dans l'historique persistant des occurrences. ») avec une carte par occurrence, par nom; cliquer sur une carte l'ouvre et le X la retire. Sans aucune, la page indique « Aucune occurrence pour l'instant. Ajoutez-en une. »

Commande Ce qu'elle fait Grisée quand (situation) Non dessinée quand (rôle)
Nouvelle occurrence (barre de détail, dossier sélectionné; clic droit Ajouter une occurrence) Ajoute Occurrence <n> : gravité Avertissement, armée pendant une procédure, activée, aucun message, une condition vide. La sélectionne. Une unité détient un essai, ou le runtime est arrêté. Sans Modifier recettes et évaluations.

La page de l'occurrence

L'en-tête porte le nom, une pastille avec la gravité (dans la couleur propre à cette gravité) et une pastille Désactivée quand l'occurrence est éteinte. Deux sortes d'avis peuvent se tenir en dessous :

  • Une note de prudence quand la condition enregistrée ne se valide pas (le brouillon est tout de même enregistré; la note dit ce qui ne va pas, voir plus bas).
  • Un bandeau Évaluation indisponible par unité sur laquelle la condition en direct n'a pas pu être évaluée, sous la forme « <unité> : <erreur> ». Le diagnostic d'une unité est écrit une fois par erreur inchangée et effacé quand l'évaluation réussit de nouveau.

Identité et comportement

Champ Ce que c'est Valeurs / défaut Effet
Nom Le nom de l'occurrence : la ligne de l'arbre, le libellé de l'événement dans le fichier d'essai, la chronologie des Événements et les rapports. Texte libre; Occurrence <n> à la création. Renomme la ligne et ce que la liste d'une procédure appelle ainsi.
Gravité Le poids d'une activation. Le sélecteur montre chaque option dans l'encre que portera sa pastille. Information, Avertissement (par défaut), Critique. Colore la pastille et l'épisode partout où il est listé. Pendant un essai, l'activation d'une occurrence Avertissement ou Critique demande en plus une notification du système d'exploitation tant que l'application est masquée ou réduite; Information reste dans la fenêtre.
Armée Quand la condition est jugée. Pendant une procédure (par défaut) : seulement pendant qu'un essai d'une procédure qui l'arme est actif, sur les lignes enregistrées. Toujours : aussi hors essai, par un surveillant d'arrière-plan qui lit les liaisons de l'unité en direct. Une occurrence Toujours n'a besoin d'aucune procédure pour l'armer; une occurrence Pendant une procédure n'est jugée que par les procédures qui la cochent.
Retard à l'activation (ms) Combien de temps la condition doit rester vraie avant qu'Activée soit confirmée, à la résolution des échantillons. Un nombre de millisecondes; 0 par défaut. 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. Applique l'anti-rebond au front montant.
Retard à la levée (ms) Combien de temps la condition doit rester fausse avant que Levée soit confirmée. Idem; 0 par défaut. Applique l'anti-rebond au front descendant.
Activée Si l'occurrence s'arme du tout. Activée par défaut. Une occurrence désactivée ne s'arme jamais, ni dans un essai ni hors essai, et ne bloque jamais le démarrage.
Texte du message Le texte enregistré et annoncé avec une activation. Texte libre; vide par défaut. Voyage avec chaque front dans le fichier d'essai et dans le journal.

Condition surveillée

« Une seule expression JavaScript renvoyant un Bool. » La carte porte un éditeur de code, la liste des références que vous pouvez employer (« Références de voies disponibles : Channels.Ch_1, Channels.Outlet_temperature, … ») et le rappel « Pendant un essai, la condition lit les colonnes enregistrées du datalog; le surveillant Toujours lit les liaisons de l'unité en direct. La syntaxe, les références manquantes et les échecs d'évaluation à l'exécution sont indiqués ici sans être traités comme un faux ni comme une perte de signal. »

Une voie se référence sous la forme Channels.<identifiant>, où l'identifiant est le nom de la voie assaini : les lettres et les chiffres survivent, tout autre caractère devient _, et un nom qui commence par un chiffre reçoit un _ devant. Channels ne contient que les voies du modèle et rien d'autre, donc une voie nommée Math, isNaN ou true reste un nom de voie valide et ne cache aucun global JavaScript. Un NaN présent et de bonne qualité est une donnée que vous pouvez tester avec isNaN(Channels.Pv). Exemples : Channels.Outlet_temperature > 80, Channels.Door_open && Channels.Heater_on.

Le brouillon est validé à mesure que vous tapez, contre des valeurs d'exemple du type de chaque voie, et la note de prudence sous l'en-tête dit ce qui échoue :

Note Sens
« Erreur de syntaxe : … » L'expression ne s'analyse pas.
« La référence de voie « Channels.X » n'existe pas dans ce modèle. » Une référence ne nomme aucune voie.
« Plus d'une voie correspond à « Channels.X ». » Deux noms de voies s'assainissent en un même identifiant; renommez-en un dans le tableau Voies.
« La condition doit renvoyer un Bool, mais elle a renvoyé <type>. » L'expression donne autre chose que vrai ou faux.
« Erreur d'évaluation : … » L'expression lève une exception.

Une condition non valide est tout de même enregistrée comme brouillon. Elle a des conséquences ailleurs : une occurrence activée qui échoue à la validation et qu'une procédure arme (cochée dessus, ou armée Toujours) bloque le démarrage de cette procédure, et la page de la procédure indique « L'occurrence « <nom> » n'est pas valide : … »; une occurrence Toujours non valide ne démarre pas son surveillant hors essai et laisse ici un diagnostic visible au lieu de le répéter à chaque scrutation.

Chaque évaluation s'exécute dans un moteur contraint (une limite de 500 ms, un nombre d'instructions borné et une mémoire bornée), donc une expression emballée fait échouer son évaluation plutôt que la station.

Comment une occurrence est jugée

Pendant un essai, la condition est jugée sur les lignes que le datalog enregistre, donc une voie que le datalog de la procédure n'enregistre pas lui est indisponible. Une procédure qui arme une occurrence sur une telle voie, ou qui en arme une et n'enregistre rien du tout, est refusée sur sa propre page et au démarrage : l'occurrence ne jugerait jamais, et la note de prudence la nomme. Hors essai, une occurrence Toujours est jugée par un surveillant qui lit les liaisons de l'unité en direct. L'un comme l'autre juge conserve le dernier état confirmé tant qu'une voie référencée est indisponible : seules une valeur manquante ou une mauvaise qualité suspendent le jugement, et une valeur présente et de bonne qualité (un NaN compris) est une donnée évaluable. Le juge enregistre quatre transitions : Activée (après le retard à l'activation), Levée (après le retard à la levée), Indisponible (une voie référencée a perdu son signal) et Rétablie (chaque voie référencée est revenue; la condition est jugée de nouveau et le retard applicable repart).

Pendant un essai, chaque transition est d'abord écrite dans le fichier d'essai puis copiée, avec son contexte d'essai, dans le journal durable de la page Événements; hors essai, le surveillant écrit dans le seul journal. Démarrer un essai abandonne le juge hors essai de l'unité, et quitter l'essai en crée un neuf, donc aucune activation ne traverse une limite non observée. Les modifications du nom, du message ou de la gravité ne touchent que les fronts ultérieurs; les modifications de la condition, des retards, du mode d'armement ou de l'état d'activation démarrent une observation neuve.

Les épisodes (de l'activation à la levée, avec tout intervalle de perte de signal compté à part) sont dérivés de ces fronts partout où l'application les montre : la carte Occurrences d'un volet, la page Événements, les historiques et les rapports. Le temps actif d'un épisode est exactement l'intervalle entre les deux fronts conservés, donc il exclut le retard à l'activation et inclut le retard à la levée : l'horloge démarre quand la condition s'est déjà maintenue pendant le retard à l'activation, et elle ne s'arrête que quand la levée est écrite, après que le retard à la levée s'est écoulé. C'est le nombre qu'un rapport remet à un tiers.

Où une occurrence est employée

La page d'une procédure porte la carte Occurrences armées pendant cette procédure, avec une pastille « <n> armées » et une case à cocher par occurrence du modèle, par nom. En cocher une l'arme pendant les essais de cette procédure; une occurrence armée Toujours surveille de toute façon et n'a besoin d'aucune coche. Sans aucune occurrence dans le modèle, la carte indique « Aucune occurrence dans ce modèle pour l'instant. Ajoutez-en sous les Occurrences du modèle. » Voir Procédures.

Renommer une voie réécrit les références Channels.<identifiant> de cette voie dans chaque condition du modèle; cela ne touche ni les chaînes de caractères, ni les commentaires, ni une propriété du même nom sur un autre objet.

Retirer l'occurrence

Retirer l'occurrence se tient dans le groupe de danger de la barre de détail avec l'occurrence 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 l'occurrence », « Ceci retire l'occurrence du modèle. ») et désarme l'occurrence de chaque procédure qui l'avait cochée. 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 occurrence ne fait pas

  • Ce n'est pas une alarme : elle ne s'acquitte pas, elle n'a pas de priorité et elle ne surveille pas de tags. Les alarmes de l'usine sont sur la page Logic.
  • Elle ne déclenche rien. Une activation est enregistrée et annoncée; aucune action, aucune étiquette et aucun rapport n'y sont attachés.
  • Elle ne peut rien lire d'autre que les voies du modèle : aucun tag, aucune variable, aucun autre modèle.
  • Elle n'est pas jugée différemment par unité : une seule condition sert toutes les unités, sur les liaisons ou les lignes enregistrées propres à chacune.