Simulated
Des signaux synthétiques internes à l'application, pour essayer, se former et bâtir des tableaux de bord sans matériel.
Le pilote Simulated produit des signaux synthétiques à l'intérieur de l'application, sans aucun équipement et sans aucun réseau. C'est un pilote de plein droit, pas un raccourci : ses équipements sont mis en service, scrutés et mis en cache par exactement le même chemin d'exécution que du vrai matériel, 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, bâtir des tableaux de bord avant l'arrivée de l'équipement, ou préparer une démonstration.
Équipement
Un équipement simulé n'a aucun champ de connexion : seulement son nom et l'intervalle de
scrutation (ms) par défaut (1000 par défaut). Son URI de base est
simulated://<équipement>; le segment de l'équipement n'est qu'informatif, parce que chaque
comportement vit sur les tags.
Découverte
Découvrir ne demande 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 (sinusoïde), 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 (sinusoïde) |
| Production Counter | CNT-01 | Count (compteur Int32), Rate (marche aléatoire autour de 100), Running (booléen qui bascule) |
| Status Panel | STS-01 | State (Run/Stop/Pause/Fault), Alarm (booléen qui bascule), Uptime (compteur Int64) |
| Type Showcase | SHOW-01 | Une voie par type natif d'OPC UA, quinze en tout, utile pour exercer chaque affichage de valeur |
Tags
Un tag simulé n'a aucune adresse à taper : le nom du tag est le point. Chaque type de donnée natif d'OPC UA est disponible, ainsi que les trois modes d'accès. Ce que le tag produit se choisit avec Nature du signal sur la carte Source; le sélecteur n'offre que les formes compatibles avec le type de donnée du tag, et changer le type de donnée ramène une forme incompatible vers une valeur par défaut raisonnable. Un tag dont l'accès permet l'écriture ne reçoit que les natures qui acceptent une écriture, Maintien de consigne et Impulsion, et changer l'accès ramène la nature de la même façon.
| Nature du signal | Produit | Types compatibles | Inscriptible |
|---|---|---|---|
| Sinus | Une onde régulière avec une légère ondulation, amorcée à partir du nom du tag, si bien que des tags nommés différemment 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 à partir du nom du tag | numériques | non |
| Marche aléatoire | Un bruit de compteur réaliste : des pas depuis la dernière valeur avec un rappel vers la valeur par défaut (50 quand elle n'est pas posée), un pas valant 1 % du centre (au moins 0,5) | numériques | non |
| Compteur | Un entier qui croît continûment : il part de la valeur par défaut (0 quand elle n'est pas posée) et ajoute 1 par lecture, si bien que la cadence suit l'intervalle de scrutation | numériques | non |
| Booléen alterné | Un booléen qui alterne chaque seconde | booléen | non |
| Texte énuméré | Un texte qui parcourt une liste fixe d'états, un cran toutes les 3 s | texte | 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 | Conserve 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 base, et une écriture conserve la valeur écrite pendant un nombre de secondes annoncé avant de retomber d'elle-même | tous | oui |
Un tag créé sans nature 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, booléen → Booléen alterné, texte → 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 la valeur écrite puis l'abandonne est un choix délibéré.
Les paramètres dans le volet
Deux paramètres se modifient directement sur la carte Source :
| Champ | Montré 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. La saisie suit le type du tag (case pour un booléen, 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. |
Paramètres de signal avancés
Les autres paramètres de forme voyagent comme arguments de requête dans l'adresse enregistré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 semés les emploient, et un agent peut
les poser 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 ramenée | Une bande amorcée à partir du nom du tag (amplitude de 10 à 49 autour d'un décalage de 20 à 49), sans bornage |
period |
Sinus | La période de l'onde, en secondes | Une fréquence amorcée à partir du nom du tag (de 0,05 à 0,24 Hz) |
phase |
Sinus | Le déphasage, en degrés | Amorcé à partir du nom du tag |
default |
Marche aléatoire, Compteur, Maintien de consigne | La même valeur que 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 le champ États du volet | Run;Stop;Pause |
baseline |
Impulsion | La valeur sur laquelle le point repose entre deux épisodes, interprétée comme le type du tag | La valeur zéro du type (l'heure courante pour DateTime, vide pour un texte) |
hold |
Impulsion | Combien de secondes dure un épisode écrit | 10 s |
warmup |
tous | Les secondes qui suivent 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 conservée vit en mémoire aussi longtemps que l'équipement reste connecté; elle n'est pas enregistré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 pour un épisode : il répond avec la valeur écrite jusqu'à la fin du maintien, puis retombe sur sa valeur de base. Une deuxième écriture pendant un épisode le remplace en entier, si bien que maintenir un bouton enfoncé relance le maintien au lieu d'en empiler deux.
- Toute autre nature refuse 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 bonnes à 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 une nature de signal à un type de donnée incompatible (possible seulement par une configuration programmatique; le volet contraint le sélecteur) fait échouer chaque lecture du tag, avec un avertissement journalisé une seule fois.