Zum Inhalt springen

Werte schreiben

Tags werden nicht nur gelesen. Über dasselbe Tag gehen Werte auch hinein — und, wenn es so eingerichtet ist, bis zur Maschine hinaus. Es gibt dafür genau einen Weg. Die Erfassung, eine Maschine über die Schnittstelle, ein Skript und die KI benutzen ihn alle; niemand hat einen eigenen.

Art Schreiben
Memory-Tag nimmt den Wert an und hält ihn
Konnektor-Tag nimmt den Wert an; bei Richtung Ausgang geht er zur Maschine
Skript-Tag reicht den Wert an das Skript weiter, wenn eines dafür hinterlegt ist
Datensatz-Tag, ganze Art fügt einen Datensatz an
Datensatz-Tag, ein Feld wird abgelehnt
Query-Tag wird abgelehnt

Die beiden Ablehnungen sind Absicht und keine Lücke: Ein abgeleitetes Tag besitzt seinen Wert nicht. Ein geschriebener Wert wäre dort eine zweite Wahrheit, die das nächste Lesen widerlegt. Deshalb wird er ausdrücklich abgelehnt und nicht still verworfen — wer ins Leere schreibt, muss es erfahren.

Auf der Tag-Seite gibt es Wert schreiben. Die Schaltfläche daneben sagt, was passiert:

  • Vermerken — der Wert wird hier festgehalten. Hier vermerkt. An keine Maschine gesendet.
  • An die Maschine senden — der Wert geht hinaus.

Beim Senden fragt TrakState vorher nach und nennt Verbindung und Topic: {{value}} auf „{{path}}” schreiben? Das geht über die Verbindung „{{connection}}” an das Topic „{{topic}}” hinaus, und die Maschine handelt danach. Etwas hier zu vermerken lässt sich rückgängig machen, eine Maschine zu kommandieren nicht.

Ein Konnektor-Tag hat eine Richtung. Sie steht am Tag, nicht im Kopf desjenigen, der schreibt:

Einstellung Bedeutung
Liest von der Maschine Eingang
Schreibt zur Maschine Ausgang
Beides beides

Der Hinweis darunter sagt die Folge: Ein Schreibvorgang auf ein Ausgangs-Tag geht zur Maschine und scheitert, wenn er nicht ankommt. Ein Eingangs-Tag vermerkt nur.

Ein Wert, der nach außen geht, muss beantworten, ob er angekommen ist.

  • Angekommen — die Oberfläche sagt Gesendet — die Maschine hat es bestätigt.
  • Nicht angekommen — der Vorgang scheitert, und es wird auch nichts gespeichert. Sonst stünde am Tag ein Sollwert, den die Anlage nie bekommen hat.
  • Kein Konnektor in Betrieb — der Vorgang scheitert mit genau dieser Aussage, statt so auszusehen, als sei etwas geschehen.

Ein Eingangs-Tag speichert und behauptet nichts. Jede Antwort auf einen Schreibvorgang sagt, welcher der beiden Fälle es war.

Ein Datensatz-Tag auf Ebene der ganzen Datensatz-Art nimmt beim Schreiben ein Werte-Objekt entgegen und legt daraus einen Datensatz an. Das ist der Weg, den eine Erfassungsmaske geht. Der Datensatz landet als Ganzes oder gar nicht.

Vier Vorgänge sind möglich: append (die Vorgabe), update, deactivate und reactivate. Ein delete gibt es nicht: Erfasste Datensätze verweisen auf Stammdatenzeilen, deshalb ist deactivate der Weg, auf dem etwas aus dem Gebrauch genommen wird. Ein Vorgang, der nur zu einem Datensatz-Tag passt, wird an jedem anderen Tag abgelehnt statt übergangen.

Für einen Datensatz, der lange unterwegs war — ein Gerät ohne Verbindung —, gilt: geschrieben wird, was noch passt; was nicht mehr passt, wird verworfen und benannt. Neunzehn Felder, die noch stimmen, sind mehr wert als gar kein Datensatz. Der Live-Weg bleibt streng, weil dort jemand vor der Maske steht.

Werte schreiben hängt am Datenrecht, das jede normale Rolle hält. Tags anlegen und ändern bleibt beim Mandanten-Administrator.

Ein geschriebener Wert erzeugt keinen Audit-Eintrag. Er trägt seine Herkunft selbst — Zeitpunkt, Güte, schreibende Stelle —, und ein Konnektor mit zehn Werten je Sekunde würde die Konfigurationsspur ersäufen, die das Protokoll schützen soll. Das Anlegen, Ändern und Löschen eines Tags wird dagegen protokolliert.

Aufgehoben wird je Tag ein aktueller Wert. Wer einen Verlauf über lange Zeiträume braucht, baut ihn über ein Query-Tag auf die Betriebsdaten.