L'espace d'adressage

Les sept racines réservées sous lesquelles vit chaque point, la façon dont une adresse s'écrit et s'assainit, où finit un point et où commence un membre, ce que la zone de filtre réduit, et les trois façons de saisir une adresse dans un éditeur.

Afficher en Markdown

Chaque point qu'une expression, un script, une liaison de tableau de bord ou un outil d'agent peut nommer vit sous l'une des sept racines réservées. Vos propres noms vivent toujours sous une racine : ils n'entrent donc jamais en collision avec les racines elles-mêmes. La colonne de la page Logic dessine les mêmes racines, réparties sous deux intertitres, et ce que l'arborescence montre est exactement ce que vous tapez : l'adresse d'une ligne est le texte qu'une expression emploie.

Les sept racines

Racine Ce qu'elle contient Intertitre dans la colonne Modifiée
System Quatre diagnostics que l'application publie sur elle-même Venus d'autres pages Nulle part
Server Quatre diagnostics du serveur OPC UA intégré Venus d'autres pages Dans les Paramètres
Connector L'arborescence vivante des pilotes, dossiers, équipements et tags Venus d'autres pages Sur la page Connector
Variables Les variables que vous définissez ici, dans leurs dossiers Définis ici Ici
Alarms L'état vivant des alarmes que vous définissez ici, dans leurs dossiers Définis ici Ici (l'état lui-même est en lecture seule)
Process Les unités de chaque modèle : voies, état d'exécution, production, commandes, préparation Venus d'autres pages Sur la page Process
Assets Les Visuels, Icônes et Couleurs de la bibliothèque, adressables par leur nom Définis ici, sous la racine Ressources Sur les volets Ressources

Actions et Déclencheurs sont des sections de la colonne mais non des racines de l'espace d'adressage : ils sont référencés par identité, pas par adresse, et ne portent aucune valeur vivante. La racine Assets existe pour les expressions et le sélecteur Parcourir… ; dans la colonne, sa place est prise par la racine de la bibliothèque Ressources, si bien que l'arborescence ne montre jamais deux racines de ce nom. Les points fixes de System et de Server, et la forme des branches Connector et Process, sont listés sur Venus d'autres pages.

Comment une adresse s'écrit

Une adresse est une suite de segments séparés par des points, enracinée sur une racine réservée : Connector.Simulated.Air.CompressedAir.HeaderPressure, Variables.Forno.Setpoint, Alarms.HighLevel, System.Now, Assets.Colors.Red. Les noms affichés restent du texte libre ; l'adresse emploie le segment assaini de chaque nom : tout caractère qui n'est ni une lettre ni un chiffre devient _, et un nom qui commence par un chiffre reçoit un _ en tête (Forno de teste répond à Forno_de_teste, 3rd zone à _3rd_zone, un nom vide à _). Les segments sont toujours des identifiants, donc la forme à points fonctionne toujours ; un segment peut aussi s'écrire entre crochets avec une chaîne littérale, Variables["Setpoint"], et l'évaluateur y lit la même adresse.

L'endroit où le point finit et où l'accès à un membre commence dépend de la racine. Les adresses Connector portent les niveaux de dossier de l'équipement entre le pilote et l'équipement (une ligne Modbus RTU n'ajoute aucun niveau), et Variables et Alarms portent jusqu'à trois niveaux de dossier avant le nom : sous ces racines, le point est donc le plus long préfixe qui se résout, et ce qui suit est un membre (.Value, .State()). Assets est toujours à deux segments sous la racine ; Process en compte quatre pour un point ordinaire, six pour un point de résumé de production et sept pour un point de sortie de production ou de procédure. Une chaîne plus courte que ce que sa racine permet est refusée comme adresse incomplète.

Les adresses des expressions et des scripts doivent être statiques : chaque segment est un identifiant ou une chaîne littérale, jamais une valeur calculée. Variables[someName] est refusé à la validation avec « Addresses must be static ».

Collisions d'adresse

Un niveau d'une section est un espace de noms d'un seul segment, partagé par les dossiers et les définitions qui y sont classés. Deux variables nommées Setpoint dans des dossiers différents ne posent pas de problème ; une variable et un dossier qui s'assainissent tous deux en Forno au même niveau, si, et Pump 1 et Pump_1 côte à côte aussi. Les éditeurs refusent un tel nom au fil de la frappe, en nommant ce qui répond déjà à l'adresse : « « Pump 1 » répond déjà à « Variables.Pump_1 ». Les noms classés dans un dossier doivent s'assainir en des segments distincts. » Les ressources suivent la même règle à l'intérieur de chaque catégorie : deux de vos images, icônes ou couleurs ne peuvent pas partager un segment, et une icône ou une couleur d'utilisateur dont le segment correspond à une entrée système la remplace à l'adresse.

Saisir une adresse

Trois façons de saisir une adresse dans une expression, une condition ou un script :

  • La taper. L'éditeur complète les jetons d'adresse : les noms de racine pour un jeton nu (Con propose Connector), puis les enfants du chemin déjà tapé, comparés par préfixe sans tenir compte de la casse, et les membres lisibles d'un point dès que le jeton nomme un point. Chaque candidat remplace le jeton entier.
  • Parcourir… ouvre un sélecteur sur l'arborescence, jusqu'au niveau des membres, de toutes les racines, la racine Assets comprise. Sélectionnez une ligne et appuyez sur Insérer, ou double-cliquez dessus, pour poser son adresse au curseur. Le pied de page montre le texte qu'insère la ligne sélectionnée, ou « Double-cliquez (ou Insérer) pour l'ajouter à l'éditeur. » tant que rien n'est sélectionné.
  • La copier depuis un point. Sélectionner n'importe quel point de la colonne ouvre le volet du point, dont le champ Adresse est un texte en lecture seule que vous pouvez sélectionner et copier, à côté de la valeur en direct, de sa qualité et de son horodatage. Un éditeur de variable ou d'alarme rappelle sa propre adresse sous le champ Nom.

Sous un point, le sélecteur liste ses membres lisibles (Value, ValueToReal(), State(), etc.). Un membre n'est pas une adresse en soi : c'est ce que vous ajoutez à l'adresse du point. Expressions liste cette même surface, avec ce que chaque membre renvoie.

La zone de filtre

La zone Filtrer… au-dessus de la colonne réduit l'arborescence aux lignes dont le nom contient le texte tapé, sans tenir compte de la casse. Un point ne survit que s'il correspond ; un dossier survit s'il correspond ou si l'un de ses descendants correspond, et s'ouvre sur ses correspondances. Les sections Actions Logic et Déclencheurs ne listent que les lignes dont le nom correspond (leur propre nom garde la section listée, mais vide) ; la racine Ressources se réduit aux catégories dont le nom correspond (taper Coul laisse Couleurs) et reste entière quand seul son propre nom correspond ; une racine de l'espace d'adressage dont le nom correspond reste listée et charge sa branche quand on la déplie. Les membres ne font jamais partie de la vue filtrée, et le filtre n'appartient qu'à votre fenêtre : un autre navigateur sur la même station garde le sien.

Ce que l'espace d'adressage ne fait pas

Il ne publie rien pour un équipement désactivé, pour un équipement dont les tags ne sont pas matérialisés dans le serveur intégré, ni pour une voie Process sans liaison (une telle voie est listée mais n'offre aucun membre). Les noms ne sont pas traduits : l'adresse est le nom affiché assaini, donc renommer une variable, une alarme, un dossier, un équipement, un tag ou une image est un changement d'adresse, que l'application réécrit dans chaque référence par le renommage sûr (Variables, Dossiers d'équipement).