Simulated

Des signaux synthétiques internes à l'application, pour essayer, se former et construire des tableaux de bord sans matériel.

Afficher en Markdown

Le pilote Simulated produit des signaux synthétiques à l'intérieur de l'application, sans matériel ni réseau. C'est un pilote à part entière, pas un raccourci : ses équipements sont enrôlés, scrutés et mis en cache par exactement le même chemin d'exécution que du matériel réel, si bien que les tracés, les types de donnée, les indicateurs de qualité et le comportement en écriture fonctionnent comme sur le terrain. Employez-le pour essayer le modèle du Connector, construire des tableaux de bord avant l'arrivée du matériel, ou préparer une démonstration.

Équipement

Un équipement simulé n'a aucun champ de connexion : seulement son nom et la période de scrutation (ms) par défaut (1000 par défaut). Son URI de base est simulated://<équipement> ; le segment d'équipement n'est qu'indicatif, parce que chaque comportement vit sur les tags.

Découverte

Découvrir n'a besoin d'aucune cible et liste le catalogue intégré : une instance prête à ajouter de chaque archétype, tags compris. Décochez les voies dont vous ne voulez pas avant d'ajouter.

Modèle Instance Voies
Universal Controller UC-01 ProcessValue (sinus), SetPoint (consigne inscriptible, 50 par défaut), Output (rampe), RunStatus (Run/Stop/Pause/Fault)
Electrical Power Meter PM-01 Voltage, Current, ActivePower et Frequency (marches aléatoires autour de 230, 10, 2300 et 60, scrutées à 250 ms), PowerFactor (sinus)
Production Counter CNT-01 Count (compteur Int32), Rate (marche aléatoire autour de 100), Running (booléen alterné)
Status Panel STS-01 State (Run/Stop/Pause/Fault), Alarm (booléen alterné), Uptime (compteur Int64)
Type Showcase SHOW-01 Une voie par type intégré OPC UA, quinze en tout, utile pour exercer chaque affichage de valeur

Tags

Un tag simulé n'a pas d'adresse à taper : le nom du tag est le point. Chaque type de donnée intégré OPC UA est disponible, ainsi que les trois modes d'accès. Ce que le tag produit se choisit avec Type de signal sur la carte Source ; le sélecteur ne propose que les formes compatibles avec le type de donnée du tag, et changer le type de donnée aligne une forme incompatible vers une valeur par défaut sensée. Un tag dont l'accès autorise l'écriture ne se voit proposer que les formes qui acceptent une écriture, Maintien de consigne et Impulsion, et changer l'accès aligne la forme de la même manière.

Type de signal Produit Types compatibles Inscriptible
Sinus Une onde lisse avec une légère ondulation, amorcée depuis le nom du tag, si bien que des tags aux noms différents bougent différemment et qu'un redémarrage reproduit la même courbe numériques non
Rampe Une onde triangulaire (montée, puis descente), de période 10 à 59 s amorcée depuis le nom du tag numériques non
Marche aléatoire Un bruit de capteur réaliste : des pas à partir de la dernière valeur avec un rappel vers la valeur par défaut (50 quand elle n'est pas réglée), d'un pas de 1 % du centre (0,5 au minimum) numériques non
Compteur Un entier croissant : part de la valeur par défaut (0 quand elle n'est pas réglée) et ajoute 1 par lecture, si bien que la cadence suit la période de scrutation numériques non
Booléen alterné Un booléen qui alterne chaque seconde Boolean non
Texte énuméré Une chaîne qui parcourt une liste fixe d'états, d'un pas toutes les 3 s String non
Horloge L'heure courante, échantillonnée à chaque lecture DateTime non
GUID aléatoire Un nouveau Guid aléatoire par lecture Guid non
Octets aléatoires Une charge utile aléatoire de 8 octets par lecture ByteString non
Maintien de consigne Maintient une valeur par défaut jusqu'à une écriture ; une écriture remplace ce que répond chaque lecture suivante tous oui
Impulsion Un point momentané : il repose sur une valeur de repos, et une écriture maintient la valeur écrite pendant un nombre de secondes annoncé avant de retomber d'elle-même tous oui

Un tag créé sans type explicite reçoit une valeur par défaut vivante : les tags inscriptibles deviennent Maintien de consigne (pour que les écritures tiennent), et les tags en lecture seule reçoivent un générateur adapté au type (numérique → Sinus, Boolean → Booléen alterné, String → Texte énuméré, DateTime → Horloge, Guid → GUID aléatoire, ByteString → Octets aléatoires). Impulsion n'est jamais une valeur par défaut : un point qui rend une valeur écrite puis l'abandonne est un choix délibéré.

Les paramètres du volet

Deux paramètres se modifient directement sur la carte Source :

Champ Affiché pour Sens
Valeur par défaut Marche aléatoire, Compteur, Maintien de consigne Le centre de la marche, la valeur de départ du compteur, ou la réponse de la consigne tant que rien n'est écrit. Le champ suit le type du tag (case pour Boolean, sélecteur de date pour DateTime, texte sinon).
États Texte énuméré La liste séparée par des points-virgules à parcourir, par exemple Run;Stop;Pause. Une liste vide ou sans membre retombe sur Run;Stop;Pause.

Les paramètres de signal avancés

Les autres paramètres de forme voyagent en arguments de requête sur l'adresse conservée du tag (par exemple ProcessValue?min=20&max=80&period=30). Le volet ne les modifie pas mais les conserve à travers chaque modification ; les exemples amorcés les emploient, et un agent peut les régler par les outils de tag de la surface agent.

Argument S'applique à Sens Quand il est absent
min, max Sinus La bande dans laquelle l'onde évolue ; la sortie y est écrêtée Une bande amorcée depuis le nom du tag (amplitude de 10 à 49 autour d'un décalage de 20 à 49), sans écrêtage
period Sinus La période de l'onde en secondes Une fréquence amorcée depuis le nom du tag (de 0,05 à 0,24 Hz)
phase Sinus Le décalage de phase en degrés Amorcé depuis le nom du tag
default Marche aléatoire, Compteur, Maintien de consigne La même valeur que modifie le champ Valeur par défaut du volet 50 / 0 / la valeur par défaut du type
values Texte énuméré La même liste que modifie le champ États du volet Run;Stop;Pause
baseline Impulsion La valeur sur laquelle le point repose entre deux épisodes, interprétée selon le type du tag La valeur zéro du type (l'heure courante pour DateTime, vide pour String)
hold Impulsion Combien de secondes dure un épisode écrit 10 s
warmup tous Les secondes après la connexion avant que la première lecture ne réponde, comme un instrument qui doit se stabiliser ; la boucle de scrutation absorbe l'attente aucune

Écritures

  • Maintien de consigne accepte les écritures et répond ensuite avec la valeur écrite. La valeur maintenue vit en mémoire tant que l'équipement reste connecté ; elle n'est pas conservée dans la configuration, si bien que désactiver l'équipement ou redémarrer l'application ramène le point à sa valeur par défaut.
  • Impulsion prend une écriture comme un épisode : elle répond avec la valeur écrite jusqu'à la fin du maintien, puis retombe sur sa valeur de repos. Une seconde écriture pendant un épisode le remplace entièrement, si bien que garder un bouton enfoncé relance le maintien au lieu d'en empiler deux.
  • Tous les autres types refusent les écritures ; une écriture tentée est journalisée une fois par tag plutôt que d'inonder le journal à chaque scrutation.

Comme pour tout pilote, le champ d'écriture prend la valeur physique et la chaîne de conversion est remontée avant que la valeur brute n'atteigne le signal.

Des limites à connaître

  • Les valeurs sont synthétisées par exécution. Les formes déterministes (Sinus, Rampe, Horloge) reproduisent la même courbe après un redémarrage ; celles qui portent un état (Compteur, Marche aléatoire, Maintien de consigne, Impulsion) repartent de zéro.
  • Associer un type de signal à un type de donnée incompatible (possible seulement par configuration programmatique ; le volet contraint le sélecteur) fait échouer chaque lecture du tag, avec un avertissement journalisé une fois.