Simulated
Künstliche Signale in der Anwendung, zum Prüfen, Einarbeiten und Bauen von Dashboards ohne Hardware.
Der Treiber Simulated erzeugt künstliche Signale in der Anwendung, ohne Anlage und ohne Netzwerk. Er ist ein vollwertiger Treiber, keine Abkürzung: Seine Geräte werden über genau denselben Weg zur Laufzeit in Betrieb genommen, zyklisch gelesen und zwischengespeichert wie echte Hardware, Kurven, Datentypen, Qualitätsanzeigen und Schreibverhalten arbeiten also so, wie sie es im Feld täten. Verwenden Sie ihn, um das Modell des Connector auszuprobieren, Dashboards zu bauen, bevor die Anlage da ist, oder eine Vorführung vorzubereiten.
Gerät
Ein simuliertes Gerät hat keine Verbindungsfelder, nur seinen Namen und das
Abfrageintervall (ms) (standardmäßig 1000). Sein Basis-URI ist
simulated://<device>; das Segment des Geräts dient nur der Information, weil jedes
Verhalten an den Tags hängt.
Gerätesuche
Suchen braucht kein Ziel und führt den eingebauten Katalog auf: je eine fertige Instanz jedes Musters, mit Tags. Nehmen Sie die Kanäle heraus, die Sie nicht wollen, bevor Sie hinzufügen.
| Modell | Instanz | Kanäle |
|---|---|---|
| Universal Controller | UC-01 | ProcessValue (Sinus), SetPoint (schreibbarer Sollwert, Standard 50), Output (Rampe), RunStatus (Run/Stop/Pause/Fault) |
| Electrical Power Meter | PM-01 | Voltage, Current, ActivePower und Frequency (Zufallsgänge um 230, 10, 2300 und 60, gelesen alle 250 ms), PowerFactor (Sinus) |
| Production Counter | CNT-01 | Count (Zähler Int32), Rate (Zufallsgang um 100), Running (umschaltender Wahrheitswert) |
| Status Panel | STS-01 | State (Run/Stop/Pause/Fault), Alarm (umschaltender Wahrheitswert), Uptime (Zähler Int64) |
| Type Showcase | SHOW-01 | Ein Kanal je eingebautem OPC UA-Typ, fünfzehn insgesamt, nützlich, um jede Wertanzeige durchzuspielen |
Tags
Ein simulierter Tag hat keine Adresse zum Eintippen: Der Name des Tags ist der Punkt. Jeder eingebaute Datentyp von OPC UA steht zur Verfügung, ebenso alle drei Zugriffsarten. Was der Tag erzeugt, wählen Sie mit Signalart auf der Karte Quelle; die Auswahl bietet nur die Formen an, die zum Datentyp des Tags passen, und ein Wechsel des Datentyps zieht eine unpassende Form auf einen sinnvollen Standard. Einem Tag, dessen Zugriffsart das Schreiben erlaubt, werden nur die Formen angeboten, die einen Schreibvorgang annehmen, Sollwert halten und Impuls, und ein Wechsel der Zugriffsart zieht die Form genauso nach.
| Signalart | Erzeugt | Passende Typen | Schreibbar |
|---|---|---|---|
| Sinus | Eine glatte Welle mit leichter Welligkeit, aus dem Namen des Tags abgeleitet, sodass verschieden benannte Tags sich verschieden bewegen und ein Neustart dieselbe Kurve erzeugt | numerisch | nein |
| Rampe | Eine Dreieckwelle (hinauf, dann hinunter), Periode 10 bis 59 s, aus dem Namen des Tags abgeleitet | numerisch | nein |
| Zufallslauf | Realistisches Rauschen eines Messgeräts: Schritte vom letzten Wert mit Rückkehr zum Standardwert (50, wenn nicht gesetzt), Schrittweite 1 % der Mitte (mindestens 0.5) | numerisch | nein |
| Zähler | Eine streng steigende Ganzzahl: beginnt beim Standardwert (0, wenn nicht gesetzt) und addiert 1 je Lesevorgang, die Rate folgt also dem Abfrageintervall | numerisch | nein |
| Umschaltender Wahrheitswert | Ein Wahrheitswert, der jede Sekunde wechselt | Boolean | nein |
| Aufzählungstext | Eine Zeichenkette, die eine feste Liste von Zuständen durchläuft, ein Schritt alle 3 s | String | nein |
| Uhr | Die aktuelle Zeit, bei jedem Lesevorgang abgetastet | DateTime | nein |
| Zufälliger GUID | Eine neue zufällige Guid je Lesevorgang | Guid | nein |
| Zufällige Bytes | Acht zufällige Bytes je Lesevorgang | ByteString | nein |
| Sollwert halten | Hält einen Standardwert, bis geschrieben wird; ein Schreibvorgang ersetzt, was jeder folgende Lesevorgang antwortet | beliebig | ja |
| Impuls | Ein kurzzeitiger Punkt: ruht auf einem Grundwert, und ein Schreibvorgang hält den geschriebenen Wert für eine angegebene Anzahl Sekunden, bevor er von selbst zurückfällt | beliebig | ja |
Ein Tag, der ohne ausdrückliche Art angelegt wird, bekommt einen lebendigen Standard: Schreibbare Tags werden Sollwert halten (damit Schreibvorgänge haften), und nur lesende Tags bekommen einen zum Typ passenden Erzeuger (numerisch wird Sinus, Boolean wird Umschaltender Wahrheitswert, String wird Aufzählungstext, DateTime wird Uhr, Guid wird Zufälliger GUID, ByteString wird Zufällige Bytes). Impuls ist nie ein Standard: Ein Punkt, der einen geschriebenen Wert zurückgibt und ihn dann aufgibt, ist eine bewusste Wahl.
Parameter im Bereich
Zwei Parameter werden unmittelbar auf der Karte Quelle bearbeitet:
| Feld | Gezeigt bei | Bedeutung |
|---|---|---|
| Standardwert | Zufallslauf, Zähler, Sollwert halten | Die Mitte des Zufallsgangs, der Startwert des Zählers oder die Antwort des Sollwerts, bis etwas geschrieben wird. Die Eingabe richtet sich nach dem Typ des Tags (Kontrollkästchen bei Boolean, Datumsauswahl bei DateTime, sonst Text). |
| Zustände | Aufzählungstext | Durch Semikolon getrennte Liste zum Durchlaufen, etwa Run;Stop;Pause. Eine leere oder mitgliedslose Liste fällt auf Run;Stop;Pause zurück. |
Erweiterte Parameter des Signals
Die übrigen Parameter der Form reisen als Abfrageargumente in der gespeicherten Adresse
des Tags (zum Beispiel ProcessValue?min=20&max=80&period=30). Der Bereich bearbeitet sie
nicht, erhält sie aber über jede Änderung hinweg; die mitgelieferten Beispiele verwenden
sie, und ein Agent kann sie über die Werkzeuge für Tags auf der Fläche
Agentenzugriff setzen.
| Argument | Gilt für | Bedeutung | Wenn es fehlt |
|---|---|---|---|
min, max |
Sinus | Das Band, in dem die Welle läuft; die Ausgabe wird darauf begrenzt | Ein aus dem Namen des Tags abgeleitetes Band (Amplitude 10 bis 49 um einen Versatz von 20 bis 49), unbegrenzt |
period |
Sinus | Periode der Welle in Sekunden | Eine aus dem Namen des Tags abgeleitete Frequenz (0.05 bis 0.24 Hz) |
phase |
Sinus | Phasenversatz in Grad | Aus dem Namen des Tags abgeleitet |
default |
Zufallslauf, Zähler, Sollwert halten | Derselbe Wert, den das Feld Standardwert im Bereich bearbeitet | 50 / 0 / Standard des Typs |
values |
Aufzählungstext | Dieselbe Liste, die das Feld Zustände im Bereich bearbeitet | Run;Stop;Pause |
baseline |
Impuls | Der Wert, auf dem der Punkt zwischen zwei Episoden ruht, im Typ des Tags gelesen | Der Nullwert des Typs (die aktuelle Zeit bei DateTime, leer bei String) |
hold |
Impuls | Wie viele Sekunden eine geschriebene Episode dauert | 10 s |
warmup |
beliebig | Sekunden nach dem Verbinden, bevor der erste Lesevorgang antwortet, wie bei einem Messgerät, das sich einschwingen muss; die Warteschleife des zyklischen Lesens fängt die Wartezeit auf | keine |
Schreiben
- Sollwert halten nimmt Schreibvorgänge an und antwortet von da an mit dem geschriebenen Wert. Der gehaltene Wert lebt im Arbeitsspeicher, solange das Gerät verbunden bleibt; er wird nicht in der Konfiguration gespeichert, das Gerät zu deaktivieren oder die Anwendung neu zu starten bringt den Punkt also auf seinen Standard zurück.
- Impuls nimmt einen Schreibvorgang als Episode: Er antwortet mit dem geschriebenen Wert, bis die Haltezeit abläuft, und fällt dann auf seinen Grundwert zurück. Ein zweiter Schreibvorgang während einer Episode ersetzt sie ganz, eine gedrückt gehaltene Schaltfläche startet die Haltezeit also neu, statt zwei zu stapeln.
- Jede andere Art lehnt Schreibvorgänge ab; ein Schreibversuch wird einmal je Tag protokolliert, statt das Journal bei jedem Lesevorgang zu überschwemmen.
Wie bei jedem Treiber nimmt das Schreibfeld den technischen Wert, und die Wertkette wird rückwärts durchlaufen, bevor der Rohwert das Signal erreicht.
Grenzen, die man kennen sollte
- Die Werte werden je Lauf erzeugt. Bestimmte Formen (Sinus, Rampe, Uhr) erzeugen nach einem Neustart dieselbe Kurve; die zustandsbehafteten (Zähler, Zufallslauf, Sollwert halten, Impuls) beginnen von vorn.
- Eine Signalart mit einem unpassenden Datentyp zu paaren (nur über eine programmatische Konfiguration möglich; der Bereich schränkt die Auswahl ein) lässt den Tag bei jedem Lesevorgang fehlschlagen, mit einer einmal protokollierten Warnung.