Zum Hauptinhalt springen

Anlagenbefehle (Befehlsregister)

PlantPulse legt über das Schreiben von Werten in Tags (Steuerschreiben) eine weitere Ebene: «Was kann mit dieser Anlage getan werden?». Dies ist das Befehlsregister.

Der Bediener schreibt keine 1200 in TAG_CNC01_SPEED_SP, sondern wählt «Geschwindigkeit einstellen (SET_SPEED)» und gibt nur die Geschwindigkeit ein. Welche Tags in welcher Reihenfolge beschrieben werden und unter welchen Bedingungen dies erlaubt ist, wird vom Administrator im Voraus definiert.

Dieser Bildschirm bewegt tatsächlich die Anlage

Wenn Sie hier [Ausführen] drücken, wird der Wert tatsächlich in die SPS geschrieben. Testen Sie unbedingt mit einer Simulatorverbindung oder an einer gestoppten Anlage. Es gibt kein automatisches Rollback – selbst wenn die Sequenz mitten drin fehlschlägt, werden die zuvor geschriebenen Werte nicht zurückgesetzt (dies ist ein Design zur Bewahrung des Prüfprotokolls).

Wo befindet sich das?​

Wählen Sie im Asset-Bildschirm (/asset/tree/index) den Knoten ANLAGE (EQUIPMENT) aus, öffnet sich unten ein Tab.

TabFunktion
BefehleDefinierte Befehle auswählen und ausführen · Verlauf der letzten Befehle
RegisterBefehle definieren (registrieren, bearbeiten, löschen) · Asset-Statement
Suchen Sie den Tab «Register»

Die Definition befindet sich im Panel «Befehlsregister» im Tab Register. Der Tab heißt nicht «Befehle», sondern «Register», sodass man anfangs leicht im falschen Tab sucht.

Wer kann sehen? Wer kann ausführen?​

Der Zugriff ist in drei Ebenen geschützt.

EbeneWoWas wird gefiltert
① URL-Filter/asset/*/command* in security-rule.xmlNur ADMIN · MANAGER – für andere ist die URL selbst blockiert
② Bildschirm & ControllerBefehlsausführungs-Panel im Befehls-TabNur für ADMIN / MANAGER sichtbar. Andere Rollen sehen nur den Verlauf unten. Der Server antwortet mit 401 bei nicht authentifiziert, 403 bei nicht ADMIN/MANAGER
③ Pro BefehlErlaubte Rollen in der DefinitionFür jeden Befehl wird separat festgelegt, «wer ihn ausführen darf». Bei Nichtberechtigung REJECTED_FORBIDDEN

Selbst wenn Sie Ebene ② passieren, kann Ebene ③ Sie blockieren – das bedeutet, dass die Einschränkung auf Befehlsebene weiter verschärft werden kann.

In der Praxis nur ADMIN

Die Zugriffskontrolle ist als «ADMIN oder MANAGER» beschrieben, aber MANAGER ist eine Rolle, die auf dem Benutzerregistrierungsbildschirm nicht vergeben werden kann (es gibt nur ADMIN·API·USER zur Auswahl). Wenn Sie sie über die API erzwingen, kann sich das Konto nach dem Login nicht anmelden – siehe Benutzerverwaltung.

Daher ist de facto nur ADMIN in der Lage, diesen Bildschirm zu verwenden. Auch die «erlaubten Rollen» in der Definition sind nur bei ADMIN und API wirksam.

Befehle definieren – Register-Tab​

Klicken Sie auf [Befehl registrieren], öffnet sich der Definitionsdialog. Folgen Sie der Anleitung auf dem Bildschirm: «Definieren Sie die semantischen Befehle für dieses Asset. Konfigurieren Sie Parameter, Vorbedingungen und die sequenziell ausgeführten Tag-Schreibschritte.»

Basisinformationen​

FeldPflichtBeschreibung
Befehlstyp✅Semantischer Bezeichner – Werte wie START · STOP · SET_SPEED
Befehlsname✅Name, der im Auswahlfeld angezeigt wird
Erlaubte RollenCheckboxen ADMIN · MANAGER · API. «Rollen, die diesen Befehl ausführen dürfen»
ReihenfolgeSortierreihenfolge in der Liste (kleiner = zuerst)
AktivWenn deaktiviert, erscheint der Befehl nicht im Auswahlfeld. Die Definition bleibt erhalten
Wenn Sie die erlaubten Rollen leer lassen, kann niemand den Befehl ausführen

Das Berechtigungsgate ist fail-closed – wenn die Rolle des Antragstellers nicht in der 허용 역할-Liste steht, wird abgelehnt. Wenn die Liste leer ist, ist die Liste leer, also erhält selbst ADMIN REJECTED_FORBIDDEN.

Parameter​

Hier definieren Sie die Werte, die der Bediener zur Ausführungszeit eingibt. Jede Zeile enthält Name · Typ · Minimum · Maximum · Optionen · Pflicht.

TypPrüfung
NumberWird als Zahl geparst und muss ein endlicher Wert sein (NaN·Infinity werden unabhängig vom Bereich abgelehnt). Wenn 최소/최대 vorhanden sind, muss der Wert dazwischen liegen (Grenzen inklusive)
Booleantrue / false (Groß-/Kleinschreibung wird ignoriert)
EnumEiner der in 옵션 aufgeführten Werte
StringKeine Prüfung
  • Wenn Pflicht und leer, wird abgelehnt (REJECTED_PARAM).
  • Optionale Parameter: Wenn leer, wird die Typprüfung übersprungen; wenn ein Wert eingegeben wird, wird er geprüft.
  • Ein Befehl ohne Parameter ist ebenfalls möglich.

Befehlsfluss – Schrittfolge​

Der Bereich Befehlsfluss im Definitionsdialog ist ein visueller Editor. Ziehen Sie Knoten aus der linken Palette („Klick = am Ende hinzufügen · Ziehen = dazwischen einfügen“) und füllen Sie die Werte im rechten Inspektor aus.

[시작] → [쓰기] → [지연] → [읽기 확인] → [종료]
KnotenInspektor-FelderFunktion
Schreiben (write)Tag · Wertausdruck · Vorbedingung (Interlock)Schreibt einen Wert in das Tag
Lesen zur Bestätigung (read_back)Tag · Operator · Erwarteter Wert · Stabilisierungszeit · Abfrageintervall · ToleranzLiest erneut, ob der geschriebene Wert tatsächlich übernommen wurde
Verzögerung (delay)Verzögerung (ms)Wartet bis zum nächsten Schritt

Der Wertausdruck ist entweder ein Literal oder eine Parameterreferenz – gemäß Bildschirmhilfe: «Literalwert oder Ausdruck. {param} wird durch den gleichnamigen Befehlsparameter ersetzt.» {speed} · 1 · SET {speed} RPM sind alle möglich.

Leere Felder bei Lesen zur Bestätigung verwenden Standardwerte – Stabilisierung 2000 ms · Abfrage 200 ms · Toleranz 0.0. Da SPS-Werte Zeit zum Einpendeln brauchen, absorbiert dieses Stabilisierungsfenster Abweichungen, wenn direkt nach dem Schreiben erneut gelesen wird.

Die für Schreibschritte wählbaren Tags sind eingeschränkt

In der Tag-Liste des Schreibknotens sind nur Tags enthalten, die zur Anlage gehören, deren rw W oder RW ist und deren tag_type SETPOINT oder COMMAND ist. Die Tag-Listen für Lesen zur Bestätigung und Vorbedingungen sind uneingeschränkt (da es sich um Lesen handelt).

Wenn das gewünschte Tag nicht in der Liste ist, ändern Sie zuerst Lesen/Schreiben und Tag-Typ im Tag-Eigenschaften-Tab.

Vorbedingungen und Interlocks​

Jede Bedingung hat drei Felder: Tag · Operator · Wert, plus ein zusätzliches Interlock-Kontrollkästchen. Die Operatoren sind eq · ne · gt · gte · lt · lte.

Kein InterlockInterlock
Vor AusführungsbeginnPrüfung ✅Prüfung ✅
Direkt vor jedem SchreibschrittKeine PrüfungErneute Prüfung ✅
Sicherheitsbedingungen als «Interlock» definieren

Wenn die Sequenz Verzögerungen oder Lese-Bestätigungen enthält, entsteht eine Zeitlücke zwischen Startzeitpunkt und tatsächlichem Schreibzeitpunkt. Was, wenn in dieser Zeit das Sicherheitstor geöffnet wird? Nur Interlock-Bedingungen werden direkt vor dem Schreiben erneut geprüft; wenn sie nicht mehr zutreffen, wird das Schreiben nicht ausgeführt und die Sequenz abgebrochen.

Bedingungen wie «Tür geschlossen = TRUE» oder «Not-Aus = FALSE» müssen als Interlock definiert werden.

Auch fehlerhafte Bedingungsdefinitionen werden nicht durchgelassen. Wenn ein Tag oder Operator fehlt oder das Parsen fehlschlägt, wird nicht stillschweigend übersprungen, sondern mit REJECTED_PRECONDITION blockiert – ein fail-closed-Design, um Sicherheitsgates nicht zu umgehen.

Befehle ausführen – Befehls-Tab​

  1. Wählen Sie im Auswahlfeld des Befehls-Tabs – nur aktive Definitionen, in der Reihenfolge. (Wenn «Keine aktiven Befehle vorhanden» angezeigt wird, aktivieren Sie sie im Register.)
  2. [Ausführen] – Wenn Parameter definiert sind, erscheint zuerst der Parametereingabe-Dialog (die passenden Steuerelemente werden automatisch generiert – Number mit min/max, Enum als Auswahl, Boolean als wahr/falsch).
  3. Bestätigungsdialog – «Möchten Sie den Befehl ○○ für das Asset ○○ ausführen?» mit Parameterzusammenfassung. Zur Verhinderung von Fehlbedienung – lesen Sie hier unbedingt den Asset-Namen.
  4. Das Ergebnis wird im Panel angezeigt – schrittweise mit Tag · Operation · Angeforderter Wert · Gemessener Wert · Erfolg · Fehler.

Ausführungsreihenfolge (festgelegt)​

정의 로드 → 에셋 확인 → 자산락 → 권한 → 파라미터 → 태그 스코프 → 사전조건
↓
종결 판정 ← 스텝 시퀀스(쓰기 직전 인터록 재검증) ←

Die Asset-Sperre serialisiert Befehle für dieselbe Anlage vollständig. Befehle für verschiedene Anlagen werden parallel ausgeführt.

Ergebnisstatus und Maßnahmen​

StatusBedeutungWo nachsehen
SUCCESSAlle Schritte erfolgreich–
FAILEDFehler in einem Schritt, dort gestopptSpalte «Fehler» in der Ergebnistabelle. Frühere Schreibvorgänge sind bereits übernommen
REJECTED_NOT_FOUNDDefinition fehlt · gehört zu anderer Anlage · inaktivIm Register prüfen, ob aktiviert
REJECTED_FORBIDDENIhre Rolle ist nicht in den erlaubten Rollen des BefehlsErlaubte Rollen in der Definition
REJECTED_PARAMParameter entsprechen nicht der SpezifikationPflichtfehler · Bereich · Enum-Wert
REJECTED_TAG_SCOPEDas Tag des Schritts gehört nicht zur Anlage oder ist nicht schreibbar gewordenWenn Tags nach der Definition neu zugewiesen oder rw geändert wurden
REJECTED_PRECONDITIONVorbedingung nicht erfüllt – oder die Vorbedingungsdefinition selbst ist fehlerhaftAktuellen Wert des Bedingungs-Tags
REJECTED_BUSYEin anderer Befehl läuft auf derselben Anlage (HTTP 409)Nach kurzer Zeit erneut drücken
FAILED ist nicht «nichts ist passiert»

REJECTED_* wurde vor Beginn des Schreibens blockiert, daher hat sich der Anlagenzustand nicht geändert. Im Gegensatz dazu wurde FAILED in der Sequenz gestoppt, sodass frühere Schreibvorgänge bereits übernommen sind. Überprüfen Sie in der Ergebnistabelle, wie weit es gekommen ist, und setzen Sie es bei Bedarf manuell zurück.

Nur REJECTED_BUSY und REJECTED_NOT_FOUND werden nicht in den Verlauf aufgenommen (Konflikt vor Übertragung · Routing-Fehler).

Sequenzgrenzen​

ElementGrenze
Gesamte Sequenz30.000 ms – wenn überschritten, wird der Schritt nicht ausgeführt und FAILED (op deadline)
Lesen zur BestätigungStabilisierungszeit (Standard 2.000 ms)
SchreibenEdge HTTP-Timeout
Schreiben wird nicht automatisch wiederholt

Lesen zur Bestätigung liest mehrfach per Polling, aber das Schreiben wird nur einmal ausgeführt. Eine erneute Ausgabe wurde bewusst blockiert, da dies das Risiko einer Teilanwendung birgt – bei Fehlern muss ein Mensch entscheiden und erneut ausführen.

Wo bleibt der Verlauf?​

Abgeschlossene Ausführungen werden als Standard-asset_command veröffentlicht und landen in der Verlaufstabelle (tm_asset_command) · UNS · Timeline · Cache. Fehler und Ablehnungen werden auch im Diagnoseprotokoll erfasst (Diagnose).

Die «Liste der letzten Befehle» unten im Befehls-Tab zeigt auch Befehle, die vom Statement ausgegeben wurden – Zeitstempel · Statement-Name · Schlüssel · Wert (JSON).

Häufig gestellte Fragen​

F. Das Befehlsausführungs-Panel wird nicht angezeigt. A. Ihre Rolle ist nicht ADMIN (oder das nicht zuweisbare MANAGER). USER·API sehen nur den Verlauf unten.

F. Im Auswahlfeld steht «Keine aktiven Befehle vorhanden». A. Es gibt keine Definitionen oder alle sind inaktiv. Aktivieren Sie sie im Register-Tab.

F. Die Tag-Liste im Schreibschritt ist leer. A. Es gibt keine Tags für diese Anlage, die rw W/RW und tag_type SETPOINT/COMMAND erfüllen. Ändern Sie es im Tag-Eigenschaften-Tab.

F. Ich erhalte ständig REJECTED_BUSY. A. Ein anderer Befehl derselben Anlage läuft noch. Prüfen Sie in der Liste der letzten Befehle, ob ein Befehl mit langen Verzögerungen oder Lese-Bestätigungen läuft.

F. Ich habe ausgeführt, aber der Wert scheint sich nicht geändert zu haben. A. Sehen Sie in die Spalte Gemessener Wert der Ergebnistabelle. Wenn ein Lesen-zur-Bestätigung-Schritt vorhanden ist, ist dies der tatsächlich erneut gelesene Wert. Wenn kein solcher Schritt vorhanden ist, wissen Sie nur, dass geschrieben wurde, nicht ob es übernommen wurde – fügen Sie bei wichtigen Befehlen eine Lese-Bestätigung hinzu.

Verwandte Bildschirme​