Vérification
La page de santé de la configuration : ce que la station contrôle dans les procédures, la logique, les tableaux de bord et les listes de ses serveurs et brokers, chaque constat qu'elle peut signaler et sa formulation, ce qu'une ligne ouvre, le badge de la barre de navigation, et pourquoi rien ne se corrige ici.
La page Vérification liste ce sur quoi la station ne peut pas s'appuyer : une liaison de voie, un verrouillage, un champ d'automatisme, une expression, un script ou une condition de Logic, ou un composant de tableau de bord qui pointe vers un tag, une variable, une procédure ou une adresse que la station ne possède plus, une expression, un script ou une condition de Logic écrits d'une façon que leur éditeur refuse, une action de Process dont un essai n'a pas pu produire les documents tels qu'ils sont configurés, et une procédure que le démarrage d'un essai refuserait. C'est l'entrée Vérification au pied de la barre de navigation, elle s'ouvre pour une identité qui détient la permission Voir la vérification, et elle répond à /validation. C'est une page qui défile, dessinée sur toute la largeur parce que chaque constat est une phrase. Elle est la sœur de l'état de santé du runtime dans la barre d'état : celui-ci dit si la station lit, celle-ci dit si la configuration se résout encore.
Elle liste aussi une ligne d'une liste par laquelle la station livre ses données (la liste du serveur OPC UA, la table des registres du serveur Modbus ou la liste de publication d'un broker MQTT) dont la source a été supprimée : une telle ligne reste dans sa liste et ne sert ni ne publie rien.
La page signale ; elle ne corrige jamais. Une ligne ouvre l'éditeur qui détient le défaut, sur l'entité qui le porte, et la correction est votre modification là-bas.
La carte d'état
La carte du haut est toute la réponse de la page sur la configuration, et le seul endroit où une station saine est annoncée :
| État | Point | Titre | Détail |
|---|---|---|---|
| Saine | Vert | Rien à corriger | Chaque référence des procédures, de la logique, des tableaux de bord et de ce que la station sert et publie se résout, chaque procédure démarrerait, et chaque action a ce qu'il lui faut pour sortir. |
| Constats | Ambre | N éléments à corriger (« 1 élément » pour un seul) | Rien ne se corrige ici. Une ligne ouvre l'éditeur qui détient le défaut, sur l'entité qui le porte. |
La carte porte l'unique commande de la page, Relancer le contrôle (infobulle : « Contrôler de nouveau toute la configuration maintenant. La liste se rafraîchit aussi d'elle-même dès que quelque chose change. »). Elle est grisée pendant qu'un contrôle est en cours. Comme un contrôle qui trouve la même chose laisse la liste exactement telle qu'elle était, le résultat est signalé dans le journal des actions de la barre d'état : « Contrôle terminé : rien à corriger. », « Contrôle terminé : N à corriger. », ou « Échec du contrôle : raison ».
Vous avez rarement besoin de Relancer le contrôle. Le vérificateur est toujours actif, sur la station, et se relance de lui-même 750 millisecondes après toute rafale de modifications sur l'une des surfaces qu'il lit : équipements, lignes et tags du Connector ; modèles de Process ; les ressources ; variables, actions et alarmes de Logic ; tableaux de bord ; modèles d'étiquette ; mises en page de rapport. La page et le badge de la barre de navigation suivent le résultat. Un contrôle que le Connector traverse pendant qu'il fait entrer ou sortir des équipements (une actualisation de pilote, un équipement en cours d'ajout) est repris une fois le Connector stabilisé, donc une référence n'est jamais dite cassée du simple fait que son équipement est en mouvement.
Il lit aussi les trois listes par lesquelles la station livre ses données : une ligne ajoutée, modifiée ou supprimée sur le serveur OPC UA, sur le serveur Modbus ou sur la carte Publier d'un broker relance le contrôle de la même façon, tout comme la suppression du tag, de la variable, de l'alarme ou de la commande qu'une ligne nomme.
Les groupes
Les constats sont groupés par la surface qui les détient, dans un ordre fixe. Un groupe vide n'est pas dessiné, donc une station avec un seul défaut de tableau de bord montre un seul groupe.
| Groupe | Genres de constat | La ligne sous le titre |
|---|---|---|
| Process | Liaisons (liaisons de voie, verrouillages, automatismes), procédures et occurrences qu'elles arment, et documents d'action | N éléments. Liaisons de voie, verrouillages et automatismes d'unité nommant un tag, une variable ou une procédure que la station ne possède plus, procédures qu'un démarrage refuserait, et actions dont un essai n'a pas pu produire les documents tels qu'ils sont configurés. |
| Logic | Variables d'expression, actions, alarmes | N éléments. Expressions, scripts d'action et conditions d'alarme lisant une adresse qui ne se résout plus, ou écrits d'une façon que leur éditeur refuse. |
| Tableaux de bord | Composants | N éléments. Composants dont les propriétés pointent vers une adresse qui ne se résout plus. Ils s'affichent, mais ne lisent rien. |
| Connector | Lignes de la liste du serveur OPC UA, de la table des registres du serveur Modbus et des listes de publication des brokers MQTT | N éléments. Lignes de la liste du serveur OPC UA, de la table des registres du serveur Modbus et des listes de publication des brokers MQTT dont la source a été supprimée. Elles restent dans leur liste, mais ne servent ni ne publient rien. |
Une ligne
Chaque ligne est un constat, et elle dit de quoi il s'agit sans rien ouvrir :
- Un glyphe pour le genre : une unité pour une liaison de Process, une marque d'impression pour les documents d'action, la marque de composition écrite pour une procédure, un drapeau pour une occurrence, les marques de variable, d'action et d'alarme de l'arborescence de Logic, la marque de tableau de bord pour un composant.
- Le nom de l'entité, puis son type quand le type dit quelque chose que le nom ne dit pas (un composant que l'intégrateur n'a jamais nommé retombe sur son genre, et la ligne n'indique pas « Cadran Cadran »), puis « dans emplacement » lorsqu'il y en a un.
- Le constat : pour un champ qui nomme une cible, « Champ pointe vers
référence, qui n'existe plus. » avec la référence en chasse fixe ; pour un champ que le runtime ne peut pas employer, « Champ : ce qui ne va pas. » - Un chevron à droite : la ligne ouvre quelque chose. L'infobulle de la ligne et son nom accessible sont la phrase entière plus l'endroit où le clic aboutit (« Ouvrir l'unité dans Process », « Ouvrir l'action dans Process », « Ouvrir la procédure dans Process », « Ouvrir l'occurrence dans Process », « Ouvrir le composant dans l'éditeur », « Ouvrir la variable dans Logic », « Ouvrir l'action dans Logic », « Ouvrir l'alarme dans Logic »).
- Pour une ligne d'une liste de serveur, le glyphe est la marque que l'arbre de Connector dessine pour ce qui porte la liste (le serveur OPC UA, le serveur Modbus, le broker MQTT), et le clic aboutit là où l'infobulle se termine (« Ouvrir la ligne dans le serveur OPC UA. », « Ouvrir la ligne dans le serveur Modbus. », « Ouvrir la ligne sur la page du broker MQTT. »).
Chaque constat que le contrôle peut produire
Les formulations ci-dessous sont celles de la page. Une liaison de voie enregistre la clé de sa source, donc sa ligne nomme la clé qui ne se résout plus ; un verrouillage, une source d'automatisme et un retour enregistrent une identité que l'opérateur ne lit jamais, donc leurs lignes disent que le tag ou la variable a été supprimé au lieu de l'afficher.
Process : liaisons de voie
Type « Liaison de voie » ; nom : le nom de la voie (ou « (voie supprimée) ») ; emplacement : « Modèle · Unité ». Ouvre l'écran Voies du modèle sur l'unité.
| Champ | Formulation |
|---|---|
| Tag | pointe vers la clé de tag enregistrée, qui n'existe plus |
| Variable | pointe vers la clé de variable enregistrée, qui n'existe plus |
Process : verrouillages
Type « Verrouillage » ; nom : le nom de l'unité ; emplacement : « Modèle · Unité ». Une unité est jugée sur ce qu'elle observe réellement : sa propre source, ou la valeur par défaut du modèle quand elle suit le modèle. Ouvre l'écran Automatisme du modèle sur l'unité.
| Champ | Formulation |
|---|---|
| Source du signal | il suit le modèle, dont la valeur par défaut ne nomme aucune source booléenne. |
| Source du signal | aucune source booléenne n'est configurée. |
| Source du signal | un tag et une variable sont sélectionnés en même temps. |
| Tag | le tag auquel il était réglé a été supprimé. |
| Tag | un tag DateTime n'est pas convertible en booléen. (idem pour les tags Guid et ByteString) |
| Variable | la variable à laquelle il était réglé a été supprimée. |
| Variable | une variable de type date et heure n'est pas convertible en booléen. (idem pour les variables de type image, icône et couleur) |
Les trois premiers ne sont signalés que tant que le verrouillage d'arrêt du modèle est activé.
Process : automatisme
Type « Automatisme » ; nom : le nom de l'unité ; emplacement : « Modèle · Unité ». Seul un automatisme activé est jugé : un automatisme désactivé ne pilote rien et se retire de la liste. Ouvre l'écran Automatisme du modèle sur l'unité.
| Champ | Formulation |
|---|---|
| Commandes | aucune source de démarrage n'est configurée. |
| Procédure | la procédure fixe n'est pas disponible. (sélection fixe) |
| Sélecteur | un constat de source (ci-dessous), pour une source entière |
| Code de sélecteur n | il sélectionne une procédure qui a été supprimée. |
| Source de la commande Démarrer, source de la commande Arrêter, et ainsi de suite, une par source de commande | un constat de source, pour une source booléenne |
| Métadonnées | une correspondance alimente une procédure ou un champ qui a été supprimé. |
| Métadonnée « champ » | un constat de source (numérique pour un champ numérique ; booléen, entier, réel, texte ou date pour les autres), ou : ce champ ne prend pas en charge la génération automatique. |
| Retour « Prêt », Retour « Actif », Retour « Code sélectionné », Retour « Résultat de commande » | le tag qu'il écrit a été supprimé. / le tag qu'il écrit n'est pas accessible en écriture. / il exige un tag booléen. (Prêt, Actif) / il exige un tag entier. (Code sélectionné, Résultat de commande) |
Un constat de source est l'un des suivants : « aucune source n'est configurée. », « un tag et une variable sont sélectionnés en même temps. », « le tag qu'il lit a été supprimé. », « le tag qu'il lit n'est pas accessible en lecture. » (le tag est désactivé ou en écriture seule), « un tag type n'est pas compatible ici. », « la variable qu'il lit a été supprimée. », « une variable de type type n'est pas compatible ici. ». La compatibilité suit le rôle du champ : une source booléenne exige un tag ou une variable booléens ; une source entière un type entier ; une source numérique un type entier ou réel ; une source de métadonnées n'importe quel type booléen, entier, réel, texte ou date.
Process : procédures
Type « Procédure » ; nom : le nom de la procédure ; emplacement : le nom du modèle. Le jugement passe par le portail même que franchit le démarrage d'un essai, donc une procédure que cette liste dit exécutable est une procédure que le banc accepte. Ouvre la page propre à la procédure.
| Champ | Formulation |
|---|---|
| Composition de la procédure | Une évaluation juge sur des lignes enregistrées. Cette procédure en porte une, mais n'a aucun datalog. |
| Composition de la procédure | L'occurrence surveillée « nom » observe des échantillons enregistrés. Cette procédure l'arme, mais n'a aucun datalog. |
| Composition de la procédure | Rien à exécuter : cette procédure ne référence ni datalog ni recette. |
| Composition de la procédure | Le mode instantané a besoin d'une recette instantanée (ou d'aucune). Un profil temporel n'a pas d'instant unique. |
| Composition de la procédure | Le mode contrôlé a besoin d'une recette instantanée (ou d'aucune). Les consignes s'appliquent au démarrage, l'état sûr à l'arrêt. |
| Composition de la procédure | Le mode temporel a besoin d'une durée. Fixez-en une. |
| Composition de la procédure | Le mode temporel a besoin d'une recette temporelle (ou d'aucune). Un jeu instantané n'a pas de ligne de temps. |
| Composition de la procédure | Le profil de la recette (N ms) est plus long que la fenêtre temporelle (M ms). |
| Composition de la procédure | L'occurrence surveillée « nom » observe « Channels.voie », que le datalog de cette procédure n'enregistre pas. |
| Composition de la procédure | Un refus portant sur ce qu'un essai terminé apporte à la production, ou sur une valeur de recette qui n'atteint pas la voie qu'elle vise, dans les mots de l'éditeur qui en est propriétaire. |
Process : occurrences
Type « Occurrence » ; nom : le nom de l'occurrence ; emplacement : le nom du modèle. Seule une occurrence armée par une procédure est lue, et elle l'est une seule fois quel que soit le nombre de procédures qui l'arment, car la condition est unique et la correction aussi. Ouvre la page propre à l'occurrence.
| Champ | Formulation |
|---|---|
| Condition surveillée | Le refus de la condition elle-même, dans les mots de l'éditeur d'occurrences : une référence de voie que ce modèle ne possède pas, une condition illisible, une condition qui renvoie autre chose qu'un booléen, ou deux voies qui aboutissent au même nom. Il est écrit en anglais lui aussi. |
Une condition qui tient toute seule et qui ne peut pourtant pas être jugée, parce que le datalog de la procédure laisse de côté la voie qu'elle surveille, est un constat sur cette procédure : le datalog est le choix de la procédure.
Process : documents d'action
Type « Action » ; nom : le nom de l'action ; emplacement : le nom du modèle. Le jugement est celui d'où la page propre à l'action tire son avis « À vérifier », donc une action dite prête là-bas est prête ici. Ouvre la page propre à l'action.
| Champ | Formulation |
|---|---|
| Commandes | Ajoutez une commande : cette action n'émet encore rien. |
| Commande n · Étiquette (Démarrage), Commande n · Rapport (Fin), et ainsi de suite | La première remarque sur cette commande, puis « (k de plus sur cette commande) » quand il y en a d'autres. Une commande qui porte plusieurs remarques reste une seule correction, faite sur une seule page, donc elle tient sur une seule ligne. |
Les remarques qu'une commande peut porter, dans l'ordre où elles se corrigent :
- Sélectionnez au moins un verdict de fin. (une commande à la Fin sans aucun verdict coché)
- Choisissez un rapport. / Le rapport sélectionné n'existe plus.
- Choisissez un modèle d'étiquette. / Le modèle a été effacé ou supprimé ; les correspondances enregistrées sont conservées. / Le modèle global sélectionné n'existe plus.
- Le modèle sélectionné n'a encore aucune commande d'imprimante ; écrivez-les ou importez-les avant qu'un essai n'atteigne cette commande.
- Les marqueurs du modèle ne peuvent pas être lus : erreur
{{marker}}a besoin d'une source. /{{marker}}est associé plus d'une fois.{{marker}}: choisissez une source / cette source n'est pas disponible au démarrage / sélectionnez un champ du catalogue de métadonnées de ce modèle / sélectionnez un critère dans l'une des évaluations de ce modèle / fixez un cycle explicite, numéroté à partir de zéro, de 0 à n / retirez les décimales de cette source de date et heure / utilisez le format par défaut pour cette source numérique / les décimales doivent être comprises entre 0 et 9 / retirez la mise en forme numérique ou de date de cette source de texte{{marker}}a été retiré du modèle actuel ; supprimez sa correspondance enregistrée.
Logic
Aucun emplacement : les genres de Logic sont de premier niveau. Une ligne par adresse distincte qui ne se résout pas, l'adresse étant écrite comme l'expression l'écrit. Seules les variables d'expression sont contrôlées ; une variable de mémoire n'a pas d'expression à lire. Quand chaque adresse d'un texte se résout, le texte est aussi jugé comme son éditeur le juge, et un texte que l'éditeur refuse fait une ligne, avec la phrase même de l'éditeur pour formulation : une alarme enregistrée comme !Variables.Start donne « « Variables.Start » est le point lui-même, pas sa valeur : comme condition, il compte toujours comme vrai. Lisez sa valeur avec Variables.Start.ValueToBool(). » Le jugement laisse de côté l'évaluation d'essai de l'éditeur sur les valeurs actuelles, une ligne ne va donc jamais et ne vient jamais avec une lecture, et un texte vide n'est pas listé : c'est une définition pas encore écrite.
| Type | Champ | Formulation |
|---|---|---|
| Variable d'expression | Expression de calcul | pointe vers adresse, qui n'existe plus |
| Action | Script de l'action | pointe vers adresse, qui n'existe plus |
| Alarme | Condition surveillée | pointe vers adresse, qui n'existe plus |
| Variable d'expression | Expression de calcul | la phrase par laquelle son éditeur refuse le texte (Ce que la validation refuse) |
| Action | Script de l'action | la phrase par laquelle son éditeur refuse le texte (Ce que la validation refuse) |
| Alarme | Condition surveillée | la phrase par laquelle son éditeur refuse le texte (Ce que la validation refuse) |
Tableaux de bord
Type : le genre du composant tel que l'éditeur le nomme (Cadran, Graphique en courbes, Valeur…) ; nom : le nom saisi pour le composant, sinon son intitulé, sinon ce que l'éditeur en dérive ; emplacement : le nom du tableau de bord. Une ligne par champ d'adresse, donc un composant dont la valeur et la couleur lisent deux points supprimés fait deux corrections.
| Champ | Formulation |
|---|---|
| Adresse, Point de couleur, Série n° 2 › Adresse, et tout autre champ d'adresse du genre, chacun sous l'étiquette que lui donne le volet des propriétés de l'éditeur (une liste imbriquée se lit comme son chemin) | pointe vers adresse, qui n'existe plus |
Seuls les champs d'adresse sont lus, et seulement une valeur qui s'analyse comme une adresse enracinée d'au moins un segment : une étiquette qui contient « Process.Press 1.Temperature » est du texte, pas une référence, et n'est jamais signalée. La même adresse dans le même champ fait un seul constat. Les vues définies sur un modèle de Process sont ignorées : elles lient des voies à travers un emplacement d'unité, et aucun point ne répond à ces adresses tant qu'une unité n'a pas ouvert la vue.
Connector
Une ligne de la liste du serveur OPC UA, de la table des registres du serveur Modbus ou de la liste de publication d'un broker MQTT tient sa source (un tag, une variable, une alarme et, sur le serveur OPC UA, aussi une commande d'un équipement) par son identité : un renommage ne la casse jamais, et une suppression laisse la ligne en place, nommant ce qu'elle a perdu. Une telle ligne est listée ici, la même que sa propre table montre comme manquante. Une source que la station possède encore sans la proposer (un tag désactivé, un tag d'un équipement désactivé, une variable d'un type qu'aucun registre ne porte) n'est pas listée : les champs de la ligne disent eux-mêmes ce qui la tient à l'écart. La ligne stocke une identité que l'opérateur ne lit jamais, elle dit donc quel genre de source a disparu au lieu de l'afficher.
| Type | Nom | Emplacement | Champ | Formulation |
|---|---|---|---|---|
| Nœud servi | Tag Connector manquant, Variable Logic manquante, Alarme Logic manquante ou Commande manquante | Serveur OPC UA | Source du signal | le tag servi a été supprimé. / la variable servie a été supprimée. / l'alarme servie a été supprimée. / la commande servie a été supprimée. |
| Ligne de la table des registres | la place de la ligne telle que la table la lit (sa classe de registre et son registre) | Serveur Modbus | Source du signal | le tag servi a été supprimé. / la variable servie a été supprimée. / l'alarme servie a été supprimée. |
| Topic MQTT publié | le topic de la ligne | le nom du broker | Source du signal | le tag publié a été supprimé. / la variable publiée a été supprimée. / l'alarme publiée a été supprimée. |
La page ne supprime ni ne modifie rien, et chaque serveur continue de faire avec la ligne ce qu'il faisait : le serveur OPC UA ne sert rien pour elle, le serveur Modbus répond par l'exception 04 à un client qui lit ses registres, et le broker garde le dernier message qu'il a retenu sur le topic. La correction se fait sur la carte de la ligne : une autre source choisie, ou la ligne supprimée.
Ce qu'une ligne ouvre
| Genre | Ouvre | Où cela aboutit |
|---|---|---|
| Composant | Le tableau de bord en mode modification (/d/{dashboard}?edit=true&focus={component}) |
Avec le composant sélectionné et ses propriétés affichées, là où l'adresse se ressaisit. Modifier exige la permission Modifier les tableaux de bord ; sans elle, le tableau de bord s'ouvre en consultation. |
| Liaison de voie | L'espace de travail Process (/process?focus={unit}&screen=channels) |
L'écran Voies du modèle, avec la ligne de cette unité choisie et chaque dossier au-dessus d'elle déplié. |
| Verrouillage, Automatisme | L'espace de travail Process (/process?focus={unit}&screen=automation) |
L'écran Automatisme du modèle, avec la ligne de cette unité choisie. |
| Documents d'action | L'espace de travail Process (/process?focus={action}&screen=action) |
La page propre à l'action dans la colonne. |
| Procédure | L'espace de travail Process (/process?focus={procedure}&screen=procedure) |
La page propre à la procédure dans la colonne. |
| Occurrence | L'espace de travail Process (/process?focus={occurrence}&screen=occurrence) |
La page propre à l'occurrence dans la colonne. |
| Variable d'expression, Action, Alarme | La page Logic (/logic?focus={id}) |
L'entité sélectionnée dans son éditeur, avec sa section de l'espace d'adressage dépliée. |
| Nœud servi, Ligne de la table des registres, Topic MQTT publié | Le Connector (/connector?focus={row}) |
Le serveur OPC UA, le serveur Modbus ou le broker sélectionné dans l'arbre, avec la ligne sélectionnée dans sa carte Nœuds servis, Table des registres ou Publier et ses champs ouverts sous la table, où une autre source est choisie ou la ligne supprimée. |
L'ouverture vous dépose sur le défaut ; la page de destination applique ensuite ses propres permissions à la modification (Gérer Process sur les écrans de Process, Configurer Logic dans Logic, Configurer Connector dans le Connector). Une entité qui ne se résout plus à l'arrivée de la page (supprimée entre-temps) est ignorée, et la page s'ouvre là où elle s'ouvrirait normalement.
Le badge de la barre de navigation
L'entrée Vérification de la barre de navigation porte un badge de prudence avec le nombre d'éléments à corriger, « 99+ » au-delà de quatre-vingt-dix-neuf, et aucun badge tant que la configuration est saine. Le compte est celui du vérificateur lui-même, tenu à jour en arrière-plan par le même contrôle que la page suit, donc il bouge à mesure que vous modifiez sur n'importe quelle page, sans que cette page soit ouverte. Ouvrir cette page et y relancer le contrôle mettent aussi le compte à jour, donc le badge n'affiche jamais un autre nombre que la liste.
Ce que la page ne fait jamais
- Elle ne corrige rien : aucune reliaison, aucune suppression, aucun changement de nom. Chaque ligne est une ouverture ; il n'y a pas d'autre action sur une ligne, et aucune action en lot.
- Elle ne juge jamais le runtime : un équipement qui ne communique pas relève de l'état de santé de la barre d'état, pas d'un constat ici. Une référence vers un tag qui existe mais dont la qualité est mauvaise se résout.
- Elle ne signale jamais un automatisme désactivé, une vue définie sur un modèle, un texte libre qui ressemble à une adresse, une variable de mémoire, ni une deuxième remarque et les suivantes d'une même commande d'action (le compte dit combien d'autres attendent sur cette page).
- Elle ne lit jamais une occurrence qu'aucune procédure n'arme, et ne liste jamais deux fois la même occurrence armée, quel que soit le nombre de procédures qui l'arment : une condition est une correction.
- Elle ne contrôle jamais pendant que le Connector est en pleine transition ; elle attend et mesure une seule fois.
- C'est la même liste sur tous les écrans, dans la fenêtre de la station comme dans un navigateur, et la même pour toute identité qui peut l'ouvrir : la permission commande la page, pas ses lignes.
- Tant que le runtime est arrêté, la page cède la place à l'avis de mise en pause comme toute page ; le badge garde son dernier compte.
- Elle ne supprime jamais une ligne d'une liste de serveur et ne change jamais ce qu'un serveur en fait, et ne liste jamais une source que la station possède encore sans la proposer (un tag désactivé, une variable d'un type qu'aucun registre ne porte) : la carte de la ligne le dit elle-même.