# Automatik

> Was eine Einheit bewegt, ohne dass jemand eine Schaltfläche drückt: der Externe Stopp des Modells und das Signal, dem jede Einheit folgt, die Stopp-Verriegelung jeder Einheit und die zur SPS gewandte Automatik, die einen Ablauf auswählt, den Lebenszyklus antreibt und zurückmeldet.

Der Bildschirm **Automatik** (Process > Modell > Definition > Automatik) hält alles, was eine Einheit des Modells bewegt, ohne dass jemand eine Schaltfläche drückt. Oben die eigene Erklärung des Modells: der **Externer Stopp**, ein Schalter, der jeden Ablauf auf dem Modell einem an jeder Einheit beobachteten Stopp folgen lässt, und das Vorgabesignal, dem der ganze Prüfstand folgt. Darunter die Einheiten und für die gewählte Einheit zwei Karten: ihre **Verriegelung** (welches Signal sie beobachtet und ihr laufender Zustand) und ihre **Automatik** (die zur SPS gewandte Schnittstelle, die einen Ablauf auswählt, Starten, Stoppen, Anhalten, Fortsetzen und Abbrechen antreibt, Metadaten festhält und Ergebnisse zurückmeldet). Der Kopf lautet "Was eine Einheit dieses Modells von selbst startet, anhält und stoppt: der Stopp, dem sie folgt, und die Signale, über die eine SPS sie ansteuert."

Das Lesen braucht Modelle ansehen; jede Änderung braucht Process verwalten und eine nicht gesperrte Station, und die Felder der Verriegelung tragen eine zweite eigene Freigabe (siehe unten). Der Bildschirm trägt die Form, die jeder Bildschirm der Definition teilt (siehe [Definition](process-definition#the-one-shape-of-the-five-screens)).

Die zwei Themen sind ihrem Wesen nach verschieden. Die Verriegelung ist eine ständige Beobachtung, die einen Lauf beendet, die Einheit über einen Neustart der Anwendung hinweg speichert und Schreibvorgänge auf ihre Quellen sperrt, bis jemand sie zurücksetzt. Ein automatisches Abbrechen ist ein einmaliger Befehl, der den laufenden Lauf beendet. Sie teilen sich einen Bildschirm, weil beide durch die Wahl eines Feldsignals konfiguriert werden.

## Modelldefinition: der Externe Stopp {#model-definition-the-external-stop}

Der Kopf lautet "Die Erklärung des Modells. Sie gilt für jede Einheit: ein Schalter entscheidet, ob der ganze Prüfstand einen Stopp beobachtet, und ein Signal ist die Vorgabe, der sie folgen." Die Tabelle hat heute eine Zeile:

| Spalte | Was sie zeigt |
| --- | --- |
| **Erklärung** | Externer Stopp. |
| **Beobachtet** | **Aktiviert** oder **Aus**. |
| **Vorgabesignal** | "Tag · Simulated · Press · EStop · Auslösen bei Wahr"; "Kein Signal gewählt" (in der warnenden Farbe nur, solange aktiviert); oder "Signal nicht mehr verfügbar · Auslösen bei Falsch", wenn die gespeicherte Quelle fort ist. |

Unter der Tabelle steht der Grundsatz des ganzen Bildschirms: "Nur Beobachtung. Diese Beobachtung durch Software ist keine zertifizierte Sicherheitsfunktion und ersetzt weder den Not-Halt-Kreis der Maschine noch ein Sicherheitsrelais oder eine Sicherheits-SPS."

### Die Spalte Einstellungen für die Erklärung {#the-settings-column-for-the-declaration}

Die Zeile zu wählen öffnet die Karte **Externer Stopp** ("Automatik · Externer Stopp"): "Jeden Ablauf auf diesem Modell einem externen Stopp folgen lassen, der an jeder Einheit beobachtet wird." Ihre Pille zählt die Abdeckung, solange aktiviert ("2 von 3 mit einem Signal"), und die Einheiten, solange aus ("3 Einheiten").

| Feld | Was es ist | Werte / Vorgabe | Wirkung |
| --- | --- | --- | --- |
| **Für dieses Modell aktivieren** | Der eine Schalter. | ein / aus; aus. | Aus wird auf keiner Einheit etwas beobachtet, keine Ausführung gesperrt, und die Felder je Einheit klappen zu. Ein wird jede Einheit über das auf ihr geltende Signal beobachtet. |
| **Quelle vom Typ Wahrheitswert** | "Das Signal, das jede Einheit dieses Modells beobachtet, sofern sie kein eigenes bekommt." | **(keine)**, dann jedes Tag vom Typ Wahrheitswert eines aktivierten Geräts als "Tag · Treiber · Gerät · Tag", dann jede Variable vom Typ Wahrheitswert als "Variable · Name" (oder "Variable · Ordner / Name", wenn sie in einem Ordner abgelegt ist, sodass zwei gleichnamige auseinanderzuhalten sind); (keine). Eine gespeicherte Quelle, die die Station nicht mehr anbietet, bleibt als "Fehlendes Tag" oder "Fehlende Variable" gefolgt von ihrer Kennung gelistet, das Feld liest sich also nie als ungebunden. | Auf dem Modell geschrieben: Jede Einheit, die folgt, sieht es sofort. |
| **Polarität der Auslösung** | Welcher Messwert der Stopp ist. | **Auslösen bei Wahr**, **Auslösen bei Falsch**; Auslösen bei Wahr. | Der andere Wert ist der sichere Messwert. |

Sowohl der Schalter als auch die Vorgabe bleiben mit ausgeschaltetem Schalter beschreibbar, ein Prüfstand wird also vorbereitet, bevor er scharfgeschaltet wird. Unter den Feldern sagt die Karte, warum sie schreibgeschützt ist, wenn sie es ist: "Beenden Sie aktive Laufvorgänge und setzen Sie jede gespeicherte Einheit zurück, bevor Sie diese Einstellung ändern.", solange irgendeine Einheit des Modells von einem Laufvorgang belegt ist oder eine gespeicherte Auslösung hält, oder "Den Schutz des Modells zu ändern verlangt die Berechtigung „Process verwalten“." Das Speichern weist ebenso ab, mit "Die Verriegelung kann nicht deaktiviert werden, solange eine Einheit beschäftigt oder gespeichert ist.", und weist jede Änderung ab, die das Signal verschiebt, das eine beschäftigte oder gespeicherte Einheit beobachtet: "Die Verriegelungsquelle oder die Polarität der Einheit '*Name*' kann nicht geändert werden, solange sie beschäftigt oder gespeichert ist." Ein gespeichertes Signal, das zugleich ein Tag und eine Variable benennt oder eine leere Identität trägt, weist die Zeile zurück, die es hält: "Die Standard-Verriegelungsquelle des Modells '*Name*' zeigt zugleich auf ein Tag und auf eine Variable oder trägt eine leere Identität." für die Vorgabe des Modells, "Die Verriegelungsquelle der Einheit '*Name*' zeigt zugleich auf ein Tag und auf eine Variable oder trägt eine leere Identität." für die einer Einheit.

## Je Einheit: die Einheitenliste {#per-unit-the-units-list}

| Spalte | Was sie zeigt |
| --- | --- |
| **Einheit** | Der Name der Einheit. |
| **Signal der Verriegelung** | Das geltende Signal und woher es kam: "Tag · … · Auslösen bei Wahr · aus dem Modell" oder "· aus dieser Einheit"; "Das Modell benennt kein Signal" oder "Kein Signal gewählt" in der warnenden Farbe, solange das Modell beobachtet; sonst "Für dieses Modell aus". |
| **Automatik** | **Aktiviert** oder **Aus**. |

**Einheiten verwalten** ganz am Ende des Kopfes öffnet die Seite des Modells.

## Die Karte Verriegelung der gewählten Einheit {#the-interlock-card-of-the-picked-unit}

Die Pille der Karte sagt den laufenden Zustand: **Deaktiviert** (der Schalter des Modells ist aus), **Nicht verfügbar**, **Normalzustand**, **Ausgelöst** oder **Warten auf Rücksetzung**.

| Feld | Was es ist | Werte / Vorgabe | Wirkung |
| --- | --- | --- | --- |
| **Woher das Stoppsignal dieser Einheit kommt** | Zwei ausgeschriebene Antworten. | **Folgt der Vorgabe des Modells** ("Aus dem Modell gelesen. Geben Sie dieser Einheit ein eigenes Signal, um es hier zu ändern.") oder **Hat ein eigenes Signal** ("Nur diese Einheit beobachtet dieses Signal. Die Vorgabe des Modells erreicht sie nicht mehr."); folgt. | Das Ablösen beginnt beim geltenden Signal: Eine Einheit, die nie eines genannt hat, nimmt das des Modells, eine, die eines hatte, bekommt es unberührt zurück. Wieder zu folgen löscht nichts. |
| **Quelle vom Typ Wahrheitswert**, **Polarität der Auslösung** | Dieselbe Auswahl, die das Modell benutzt. | Wie oben. | Abgeschaltet, solange die Einheit folgt (sie zeigt die gespeicherte Antwort des Modells, keine Kopie), und solange die Einheit beschäftigt oder gespeichert ist. |

Unter den Feldern: **Quelle** (der aufgelöste Name oder "Nicht konfiguriert"), **Aktueller Wert** (True, False oder "Nicht gelesen") und **Qualität** (Gut oder Nicht verfügbar). Solange der Zustand nicht Normal ist, trägt ein Hinweis den Zustand und seinen Grund ("Warten auf den ersten gültigen Messwert der Quelle." zu Beginn). Solange der Schalter des Modells aus ist, lautet die Karte "Das schaltet sich mit dem externen Stopp des Modells ein, der in der Definition oben erklärt ist." und faltet die Wahl und das Paar in einen Aufklappbereich **Signal und Polarität**, in dem sie vorbereitet werden können, bevor das Modell scharfschaltet. Die Karte endet mit "Quelle und Polarität bleiben fest, solange diese Einheit einen Laufvorgang oder eine gespeicherte Auslösung hat." oder "Diesen Schutz zu ändern verlangt die Berechtigung „Process verwalten“.", wenn eines von beidem gilt.

### Die Zustände der Verriegelung {#the-interlock-states}

| Zustand | Bedeutung |
| --- | --- |
| **Nicht verfügbar** | Noch hat kein gültiger Messwert die Verriegelung scharfgeschaltet, oder das geltende Signal nennt nichts. Neue Ausführung und Fortsetzen werden abgewiesen; ein gesicherter Lauf hängt sich ruhend an statt fehlgeschlagen. |
| **Normalzustand** | Die Quelle ist gut und meldet den sicheren Wert. |
| **Ausgelöst** | Die Stoppbedingung ist aktiv, oder die Qualität der Quelle ging nach dem Scharfschalten verloren. |
| **Warten auf Rücksetzung** | Die Quelle ist wieder gut und sicher, aber der gesicherte Speicher braucht noch eine Rücksetzung von Hand. |

Eine Auslösung beendet den aktiven Lauf der Einheit über den gewöhnlichen Abschluss als Abgebrochen mit dem Prüfergebnis NOK und zeichnet `StopInterlock` als Grund der Beendigung auf; sie speichert die Einheit über Neustarts der Anwendung hinweg; sie sperrt jede neue Ausführung auf ihr; und sie legt eine Schreibsperre über die beschreibbaren Quellen der Einheit. Eine Quelle, die sich mehrere Einheiten teilen, wird nur gesperrt, solange alle von ihnen verriegelt sind, ein örtlicher Stopp kann einen gesunden Nachbarn also nicht im Stich lassen. Jeder Übergang wird mit Namen, Wert, Qualität, Polarität, Zeit und Handelndem ins Journal geschrieben und erscheint unter [Ereignisse > Verriegelungen](events-interlocks).

**Zurücksetzen** steht nicht auf diesem Bildschirm: Es steht auf dem Verriegelungshinweis des Bereichs der Einheit und auf der Dashboard-Komponente InterlockStatus, nur solange der Zustand Warten auf Rücksetzung mit einem guten, sicheren Messwert ist. Es braucht Abläufe ausführen, löst den Speicher, startet den abgebrochenen Lauf nie neu und wird mit dem Bediener aufgezeichnet.

## Die Karte Automatik der gewählten Einheit {#the-automation-card-of-the-picked-unit}

"Ein Tag der SPS oder eine Variable aus Logic einen Ablauf wählen und den Lebenszyklus dieser Einheit steuern lassen, ohne die Bedienung von Hand, über Dashboards oder über MCP zu nehmen." Die Pille lautet **Deaktiviert**, **Bereit**, **Nicht bereit** oder **Aktiv**. Ohne Process verwalten lautet die Karte "Die Automatik zu ändern verlangt die Berechtigung „Process verwalten“.", und jedes Bedienelement ist schreibgeschützt.

Der Schalter steht auf der Karte: **Automatik für diese Einheit aktivieren** ("Veröffentlichte Werte beobachten, um einen Ablauf zu wählen und den Lebenszyklus zu steuern."). Fünf aufklappbare Abschnitte stehen darunter; den Schalter einzuschalten öffnet **Ablauf**, ihn auszuschalten klappt alle fünf zu, und sonst bleiben die Abschnitte, wie Sie sie verlassen haben. Jede Quellenliste bietet **(keine)** an, dann die Tags der Station als "Tag · Treiber · Gerät · Tag" und die Variablen als "Variable · Name" (oder "Variable · Ordner / Name", wenn sie in einem Ordner abgelegt ist), reduziert auf das, was das Feld benutzen kann; eine gespeicherte Quelle, die die Station nicht mehr anbietet, bleibt als "Fehlendes Tag" oder "Fehlende Variable" gefolgt von ihrer Kennung gelistet.

### Ablauf {#procedure}

| Feld | Was es ist | Werte / Vorgabe | Wirkung |
| --- | --- | --- | --- |
| **Auswahl des Ablaufs** | Wie der Ablauf aufgelöst wird, den ein automatischer Start benutzt. | **Fester Ablauf**, **Numerische Auswahl**; Fester Ablauf. | |
| **Fester Ablauf** | "Jeder automatische Start dieser Einheit verwendet diesen Ablauf." | **(keine)**, die Abläufe des Modells nach Namen oder "Fehlender Ablauf" gefolgt von seiner Kennung bei einem gelöschten; (keiner). | |
| **Quelle der Auswahl (Tag oder Variable vom Typ Ganzzahl)** | "Die SPS schreibt einen ganzzahligen Code; die Zuordnung unten löst ihn über eine stabile Identität zu einem Ablauf auf, eine Umbenennung zerstört die Zuordnung also nie." | Ein lesbares Ganzzahl-Tag oder eine solche Variable; (keine). | |
| Die Codezuordnung | Eine Zeile je Auswahlcode: der Code, der Ablauf, den er auswählt, **Auswahlcode entfernen**; danach eine Zeile zum Hinzufügen (ein Code, ein Ablauf, **Hinzufügen**). | Ganzzahlige Codes, auf der Einheit eindeutig. | Im Protokoll abgewiesen: "Der Auswahlcode muss eine Ganzzahl sein.", "Wählen Sie einen Ablauf für den Auswahlcode.", "Der Auswahlcode 7 ist bereits konfiguriert.", "Wählen Sie einen Ablauf oder entfernen Sie die Zeile des Auswahlcodes." Ein nicht zugeordneter oder nicht lesbarer Code weist den Start als Ungültige Auswahl ab. |

### Befehlssignale {#command-signals}

"Eine wahlweise Quelle vom Typ Wahrheitswert je Befehl des Lebenszyklus; jeder löst einmal aus, wenn sein Signal von aus auf ein geht." Eine Auswahl je Befehl: **Starten**, **Stoppen**, **Anhalten**, **Fortsetzen**, **Abbrechen**, jede nimmt ein lesbares Tag vom Typ Wahrheitswert oder eine solche Variable oder (keine) an. Ein Signal schaltet sich erst scharf, nachdem ein gültiges Low gesehen wurde, ein beim Start dauerhaft hohes Signal kann also nicht feuern.

### Quellen der Metadaten {#metadata-sources}

"Woher ein automatischer Start jeden Metadatenwert nimmt, in den Lauf eingefroren, sobald der Start angenommen ist." Der Abschnitt listet jeden Ablauf, den die Auswahl auflösen kann (den festen oder jeden zugeordneten in der Reihenfolge der Codes); bis einer gewählt ist, lautet er "Wählen Sie zuerst einen festen oder zugeordneten Ablauf, damit seine Metadatenfelder aufgeführt werden." Unter jedem Ablauf steht eine Auswahl je Feld, das er abfragt (ein Pflichtfeld ist als "erforderlich" gekennzeichnet; ein Ablauf, der keines abfragt, lautet "Dieser Ablauf fragt keine Metadaten ab."):

| Art des Feldes | Auswahl |
| --- | --- |
| Text | **(keine)**, **Fester Wert** (ein Textfeld erscheint unter der Auswahl), jedes lesbare Tag oder jede lesbare Variable außer einer Variable vom Typ Bild, Symbol oder Farbe. |
| Zahl | **(keine)**, **Fester Wert**, jedes lesbare Ganzzahl- oder Dezimal-Tag oder eine solche Variable. |
| Fortlaufend | **(keine)** oder **Automatische Folge**, ihre einzige Quelle. |

Die Werte werden bei Start geprüft; ein ungültiger weist den Start als Ungültige Metadaten ab.

### Rückgaben an die SPS {#plc-returns}

"Wahlweise schreibbare Tags, die den Zustand der Automatik an die SPS zurückmelden." Rückgaben binden allein an beschreibbare Tags, nie an eine Variable.

| Rückgabe | Erwartet | Bedeutung |
| --- | --- | --- |
| **Bereit** | Wahrheitswert | "kann jetzt Start annehmen" |
| **Aktiv** | Wahrheitswert | "die Einheit hat einen aktiven Lauf" |
| **Ausgewählter Code** | Ganzzahl; nur im Modus Numerische Auswahl angeboten | "meldet die beobachtete Auswahl zurück". Eine in diesem Modus gemachte Zuordnung bleibt erhalten, wenn die Einheit auf einen festen Ablauf wechselt, wird aber weder geschrieben noch in der Diagnose gelistet, solange dieser Modus gilt, und kommt mit dem Modus zurück. |
| **Ergebnis des Befehls** | Ganzzahl | "stabiles Ergebnis 0 bis 7", der feste Vertrag unten |

| Code | Bedeutung |
| --- | --- |
| 0 | Warten / zurückgesetzt |
| 1 | Angenommen |
| 2 | Einheit nicht bereit |
| 3 | Ungültige Auswahl |
| 4 | Ungültige Metadaten |
| 5 | Unverträglicher Befehl |
| 6 | Widersprüchliche Befehle |
| 7 | Interner Fehler |

"Ein fester Vertrag, damit die Logik der SPS nie vom Text einer Meldung abhängt."

### Live-Zustand und Diagnose {#live-state--diagnosis}

Bei jedem Zeichnen live gelesen: **Zustand** (Deaktiviert, Aktiviert oder "Aktiviert · beobachtend"), **Scharfschaltung der Befehle** ("Keine Befehlssignale", "Scharf" oder "Wartet auf gültiges Aus"), **Bereit** (Ja oder Nein, mit "Bereit ist aus, weil" und dem Grund), **Aktiver Lauf**, **Auswahl** (der Code und seine Qualität, im Modus der Auswahl), **Aufgelöster Ablauf**, **Letzter Befehl** (der Befehl, sein Ergebniscode und seine Zeit) und **Grund** (die letzte Diagnose). Darunter drei Blöcke: **Befehlssignale** (jede Quelle, ihr Wert und ihre Qualität, Scharf oder Warten), **Vorabprüfung der Metadaten** (die Quelle jedes Feldes, ihr Wert, ihre Qualität, Gültig oder Ungültig mit dem Grund) und **Schreibvorgänge der Rückgaben** (jedes Tag unter dem Namen, den es trägt, die Zeit seines letzten Schreibvorgangs, In Ordnung oder Fehlgeschlagen mit dem Fehler; eine Rückgabe, die der Auswahlmodus nie schreibt, wird nicht gelistet). Eine Rückgabe, die weiter fehlschlägt, wird einmal ins Journal geschrieben, wenn sie zu scheitern beginnt, während sie andauert zusammengefasst und noch einmal, wenn sie wieder schreibt, statt bei jedem Umlauf der Schleife. Die Schleife übergibt eine Rückgabe und geht weiter, ein langsames Gerät hält sie also nie auf: In Ordnung oder Fehlgeschlagen wird festgehalten, wenn die Anlage antwortet, was auch nach dem fragenden Umlauf sein kann, und eine Rückgabe, deren letzte Übergabe noch unbeantwortet ist, wird in Ruhe gelassen statt erneut gesendet, ein langsames Gerät bekommt also einen Schreibvorgang und nicht hundert.

Jede Änderung der Karte speichert von selbst und wird zurückgestellt, wenn die Station sie abweist; der Grund landet im Aktionsprotokoll. Ein Lauf, den die Automatik startet, zeichnet **Automatik** als Verantwortlichen auf.

## Was dieser Bildschirm nicht tut {#what-this-screen-does-not-do}

- Die Verriegelung ist die Beobachtung eines Wertes durch Software, den Connector oder Logic ohnehin veröffentlichen: keine Entprellung, keine Bewertung, keine sicherheitstechnische Einstufung. Sie ersetzt nie den Sicherheitskreis der Maschine.
- Die Automatik nimmt keine andere Bedienung weg: Befehle von Hand, vom Dashboard, von einem Befehlspunkt und über MCP arbeiten daneben weiter.
- Nichts hier setzt eine Einheit zurück: Zurücksetzen wohnt auf dem Bereich der Einheit und auf der Komponente InterlockStatus.
- Nichts hier bereitet einen Ablauf von Hand vor oder füllt Metadaten von Hand: Das ist der Bereich der Einheit unter [Betrieb](process-operate).
