# Abläufe

> Was der Bediener auf einer Einheit startet: das Fenster des Laufs, das Rezept, das Datalog, der Aliassatz und die Bewertung, die er zusammensetzt, die Felder, die er abfragt, die Ereigniseinträge, die er scharfschaltet, die Aktionen, die er ausgibt, und was ein abgeschlossener Lauf erzeugt.

Ein **Ablauf** ist das, was der Bediener auf einer Einheit startet: ein Rahmen für den Lauf (die
Form und, bei einem zeitgeführten Lauf, seine Dauer und seine Zyklen) und dazu freiwillige Verweise
in die Bibliotheken von Setup des Modells. Seine Seite liest sich wie der Lauf, den sie
zusammensetzt, eine Stufe je Sache, die geschieht, jede sagt, was die aktuelle Wahl erzeugt ("Fährt
3 Zyklen von 1 Min. 30 s", "Zeichnet 6 Kanäle alle 500 ms auf"); eine Stufe, für die nichts gewählt
ist, bleibt sichtbar und blass, denn zur Gestalt dessen, was ein Lauf tut, gehört auch, was er nicht
tut. Abläufe wohnen unter Process > Modelle > Modell > Setup > **Abläufe** und brauchen die
Berechtigung **Rezepte und Bewertungen ändern**. Einen vorzubereiten und zu starten geschieht auf
den Zeilen der Einheit unter Betrieb (siehe [Läufe und Kommentare](process-runs)).

## Der Ordner Abläufe {#the-procedures-folder}

Die Auswahl der Zeile **Abläufe** öffnet die Ordnerseite ("Was der Bediener auf einer Einheit
startet: ein Rezept zum Anwenden, eine Bewertung zum Beurteilen, ein Datalog zum Aufzeichnen und die
Metadaten zum Erfassen.") mit einer Karte je Ablauf, nach Namen; ein Klick auf eine Karte öffnet
ihn, und das X entfernt ihn. Ohne einen sagt die Seite "Noch keine Abläufe. Fügen Sie einen hinzu."

| Befehl | Was er tut | Ausgegraut, wenn (Lage) | Nicht gezeichnet, wenn (Rolle) |
| --- | --- | --- | --- |
| **Ablauf** (Detailleiste, Ordner gewählt; Rechtsklick **Ablauf hinzufügen**) | Fügt `Ablauf <n>` hinzu: Direkt, verweist auf nichts, fragt allein die Pflichtfelder ab, schaltet nichts scharf und gibt nichts aus, zählt keine Produktion. Die Zeile kommt in ihre Gruppe, dort markiert und in den sichtbaren Bereich gerollt; ihre Karte öffnet sie. | Irgendeine Einheit hält einen Lauf, oder die Runtime ist gestoppt. | Ohne Rezepte und Bewertungen ändern. |

## Die Seite des Ablaufs {#the-procedures-page}

Der Kopf trägt den Namen, die Zeile "Was der Bediener auf einer Einheit startet: das Fenster, das
ein Lauf bekommt, die Bibliotheken des Modells, mit denen er anwendet, aufzeichnet, benennt und
bewertet, und was er ausgibt.", eine Pille mit der Form und, bei einem zeitgeführten Ablauf, eine
Pille mit der Dauer und den Zyklen ("90000 ms ×3"). Wenn die Zusammensetzung nicht gültig ist, sagt
eine warnende Anmerkung unter dem Kopf warum (siehe Prüfung unten); der Entwurf wird trotzdem
gespeichert. Jedes Feld speichert von selbst, und ein Schreibvorgang, den die Station abweist,
stellt das Feld zurück.

### Definition {#definition}

| Feld | Was es ist | Werte / Vorgabe |
| --- | --- | --- |
| **Bezeichnung** | Wie der Ablauf im Baum heißt, in der Auswahl Ablauf jeder Einheit und in der Laufdatei. Ihn umzubenennen ändert nie seinen Code. | Freier Text; `Ablauf <n>` beim Anlegen. |
| **Anmerkungen** | Freier Text für alle, die ihn lesen. | Mehrzeilig; leer als Vorgabe. |

### Was ein Lauf tut {#what-a-run-does}

Fünf Stufen, jede mit dem Icon der Bibliothek, nach der sie greift, ihrem Namen, dem Ergebnis der
aktuellen Wahl in einer Zeile und den Feldern, die darüber entscheiden. Eine Zahl in einer
Ergebniszeile (die Sekunden einer Dauer unter einer Minute, eine Anzahl von Abtastwerten)
wird im Zahlenformat der Station geschrieben ([Lokalisierung](settings-localization)).

| Stufe | Felder | Werte / Vorgabe | Die Zeile des Ergebnisses |
| --- | --- | --- | --- |
| **Fenster** | **Modus**: der Rahmen des Laufs. | **Direkt** (Vorgabe): ein Schuss, anlegen, eine Zeile aufzeichnen, einmal beurteilen. **Zeitgeführt**: ein begrenztes Fenster, wahlweise wiederholt. **Gesteuert**: offen, von Start und Stoppen begrenzt. | Direkt: "Wendet an, zeichnet auf und bewertet einmal, dann endet er." Gesteuert: "Läuft, bis der Bediener ihn stoppt." |
| | **Dauer (ms) \*** (nur zeitgeführt): die Länge des Fensters. | Eine Anzahl Millisekunden; eine negative Eingabe wird als 0 gespeichert. In der zeitgeführten Form erforderlich und positiv. Jedes Mitglied des Laufs teilt dieses eine Fenster. | "Läuft 1 Min. 30 s." oder "Legen Sie eine Dauer fest: ein zeitliches Fenster ohne Länge zeichnet nichts auf." |
| | **Anzahl der Zyklen** (nur zeitgeführt): wie oft sich das Fenster wiederholt, als eine durchgehende Laufaufzeichnung. | 1 oder mehr (eine Eingabe unter 1 wird als 1 gespeichert); 1 als Vorgabe. Bewertungen verankern je Zyklus neu, und gescheiterte Zyklen werden gezählt. | "Führt 3 Zyklen zu je 1 Min. 30 s aus, 4 Min. 30 s insgesamt." |
| **Anwenden** | **Rezept**: das angelegte [Rezept](process-recipes). | "(keine)" oder ein Rezept des Modells. Ein Rezept, dessen Art nicht zur Form passt, wird als "`<name>` (unverträglich)" gelistet und abgeschaltet, mit dem Grund als Tooltip ("Der zeitgeführte Modus braucht ein zeitgeführtes Rezept. Ein direkter Satz hat keine Zeitachse." oder "Der Modus `<Mode>` braucht ein direktes Rezept. Ein zeitliches Profil hat keinen einzelnen Takt."). Ein zeitgeführtes Rezept zeichnet sein Profil unter der Stufe, in derselben Vorschau, die die Seite Rezept zeichnet. | "Es werden keine Sollwerte geschrieben.", "Schreibt beim Start 4 Sollwerte.", "Schreibt beim Start 4 Sollwerte und beim Verlassen 2 Sollwerte.", "Fährt 3 Segmente über 2 Min. 30 s und schreibt beim Verlassen 2 Sollwerte." |
| **Aufzeichnen** | **Datalog**: das aufgezeichnete [Datalog](process-datalogs). | "(keine)" oder ein Datalog des Modells. | "Es wird nichts aufgezeichnet: dieser Lauf hinterlässt kein Datalog.", "Zeichnet 6 Kanäle alle 500 ms auf." und bei einem zeitgeführten Fenster "…, etwa 540 Abtastwerte je Kanal." |
| **Bezeichnung** | **Aliassatz**: der an den Ablauf geheftete [Aliassatz](process-aliases). | "(keine)" oder ein Aliassatz des Modells. Der Satz wird auf die Einheit angewendet, wenn der Ablauf auf ihr vorbereitet wird und die Aliasse der Einheit von ihm abweichen; der im Lauf eingefrorene Alias ist der eigene der Einheit. | "Die Einheit behält die Kanalnamen, die sie bereits hat.", "Benennt 5 Kanäle auf der Einheit um, wenn dieser Ablauf auf ihr vorbereitet wird." |
| **Bewerten** | **Bewertung**: die [Bewertung](process-evaluations), gegen die der Lauf beurteilt wird. | "(keine)" oder eine Bewertung des Modells. | "Es wird kein Prüfergebnis ausgegeben: ein Lauf endet ohne Bewertung.", "Bewertet 4 Kriterien, und ein NOK mit dem Schweregrad Erheblich bricht den Lauf ab.", "Bewertet 4 Kriterien, und ein NOK bricht den Lauf nie ab." |
| | **Abbrechen bei NOK ≥** (gezeichnet, sobald eine Bewertung gewählt ist): beendet den Lauf beim ersten bestätigten Kriterium mit NOK auf oder über diesem Schweregrad. Bei einem zyklischen Lauf ist das das Bedienelement für Stoppen oder Weitermachen: Eine Schwelle beendet die ganze Prüfung beim ersten Zyklus, der auf oder über ihr scheitert; **(nie)** fährt jeden Zyklus und zählt die Fehlschläge nur. | **(nie)** (Vorgabe), **Gering**, **Erheblich**, **Kritisch**. | In die Zeile Beurteilen oben gefaltet. |

### Metadaten {#metadata}

Eine Karte, überschrieben mit einer Pille, die die Felder zählt, die "beim Start abgefragt" werden,
hält das, wonach ein Lauf fragt, und die zwei Dinge, die seinen fortlaufenden Feldern dienen.

| Bedienelement | Was es ist | Werte / Vorgabe |
| --- | --- | --- |
| Die Checkliste | Ein Kästchen je Feld des [Metadatenkatalogs](process-metadata) des Modells, in der Reihenfolge des Katalogs, beschriftet mit `<name> (<kind>)` oder `<name> * (<kind>)` bei einem Pflichtfeld. | Ein Pflichtfeld ist angekreuzt und festgesetzt ("Erforderliche Felder werden von jedem Ablauf abgefragt"); die übrigen beginnen ohne Kreuz. Eines anzukreuzen fügt es dem hinzu, wonach die Abfrage bei Start und die Karte Metadaten eines Einheitenbereichs fragen. Ohne Feld im Katalog sagt die Karte "Noch keine Felder im Katalog. Fügen Sie welche unter Metadaten des Modells hinzu." |
| **Kurzzeichen des Ablaufs** | Der stabile Code, mit dem die fortlaufenden Felder zusammensetzen, die "Kurzzeichen des Ablaufs" einschließen ("Jedes abgefragte fortlaufende Feld, das „Kurzzeichen des Ablaufs“ enthält, liest dieses hier."). Den Ablauf umzubenennen ändert ihn nie. | Freier Text, übernommen, sobald Sie das Feld verlassen; Platzhaltertext "optional, bis es verwendet wird". |
| **ZÄHLER** (gezeichnet, wenn ein abgefragtes fortlaufendes Feld je Ablauf oder je Ablauf und Einheit zählt) | Eine Zeile je solchem Feld: je Ablauf eine Zeile mit der Beschriftung "Dieser Ablauf"; je Ablauf und Einheit eine Zeile je Einheit des Modells. Jede Zeile zeigt **ZULETZT AUSGEGEBEN** und ein änderbares **Nächster** und warnt "Kann eine Kennung wiederholen", solange Nächster auf oder unter dem zuletzt ausgegebenen Wert liegt. | Nächster nimmt 0 bis zum Höchstwert des Feldes an; eine Eingabe außerhalb wird abgewiesen mit "Der nächste Wert für '`<field>`' muss zwischen 0 und `<max>` liegen." Die Hilfe unter den Zeilen: "Letzter wird nie neu geschrieben. Nächster zu senken oder nach dem Maximum umzulaufen kann eine Kennung wiederholen." |

### Ereigniseinträge, die während dieses Ablaufs scharf sind {#occurrences-armed-during-this-procedure}

Eine Pille zählt die scharfgeschalteten Ereigniseinträge, und die Checkliste bietet jeden
[Ereigniseintrag](process-occurrences) des Modells nach Namen an. Ein angekreuzter Ereigniseintrag
wird während der Läufe dieses Ablaufs über den aufgezeichneten Zeilen beurteilt; ein Ereigniseintrag
mit **Immer** beobachtet unabhängig vom Kreuz. Ohne einen im Modell sagt die Karte "Noch keine
Ereigniseinträge in diesem Modell. Fügen Sie welche unter Ereigniseinträge des Modells hinzu."

### Aktionen, die dieser Ablauf ausgibt {#actions-this-procedure-emits}

Eine Pille zählt die gewählten Aktionen, und die Checkliste bietet jede [Aktion](process-actions)
des Modells in der Reihenfolge der Liste an, jede mit ihrer Ausgabezeile ("Etikett bei Start,
Etikett und Bericht bei Abschluss") und, einmal gewählt, mit einer Pille **Bereit** oder
**Prüfen**. Prüfung listet, was diesem Ablauf für die Platzhalter der Aktion fehlt (ein
Metadatenfeld, das er nicht abfragt, ein Kriterium, das seine Bewertung nicht erklärt, ein Zyklus,
den er nicht fährt), jedes mit seiner Abhilfe. Die Reihenfolge der Ausgabe und der Rest der Karte
stehen unter [Aktionen](process-actions#how-a-procedure-selects-actions).

### Produktionsmenge {#production-output}

Die letzte Karte, überschrieben mit einer Pille **Eingeschlossen** oder **Ausgeschlossen**, erklärt,
was ein abgeschlossener Lauf zu den Produktionskennzahlen der Einheit beiträgt (siehe
[Produktivität](process-productivity)).

| Feld | Was es ist | Werte / Vorgabe | Wirkung |
| --- | --- | --- | --- |
| **Maßeinheit der Ausbringung** | Die physikalische Einheit der Ausbringung. | Freier Text, übernommen, sobald Sie das Feld verlassen; Platzhaltertext "Stück, kg…"; leer als Vorgabe. Solange die Ausbringung gezählt wird, kann das Feld nicht geleert werden: Eine leere Eingabe wird übergangen. | Benennt die Menge auf jeder Kennzahl. |
| **Erzeugt bei** | Welche Grenze eines Laufs als Produktion zählt. | **Produktion nicht zählen** (Vorgabe), **Jeder abgeschlossene Lauf**, **Jeder abgeschlossene Zyklus**, **Feste Menge je abgeschlossenem Lauf**. Eine zählende Form ist abgeschaltet, bis die Ausbringungseinheit gesetzt ist ("Setzen Sie zuerst die physikalische Maßeinheit der Ausbringung."); die Form je Zyklus ist außerhalb der zeitgeführten Form abgeschaltet ("Einen Abschluss eines Zyklus gibt es nur bei einem zeitgeführten Ablauf."); und "Produktion nicht zählen" ist abgeschaltet, solange eine geltende benannte Menge diesen Ablauf summiert ("Entfernen Sie diesen Ablauf zuerst aus den benannten Mengen im Bild Produktivität."): die eigenen Mengen des Modells und dazu die der Einheiten, die sich abgelöst haben. Eine Einheit, die wieder dem Modell folgt, behält die Mengen, die sie hatte, und sie zählen für nichts, bis sie sich erneut ablöst. | Erklärung: "Welche Grenze eines Laufs als Produktion zählt und wie viel das Erreichen hinzufügt." Wirkung: "Jeder abgeschlossene Lauf erzeugt 1 Stück. Momentaufnahmen und Bewerten zählen nie.", "Jeder abgeschlossene Zyklus erzeugt 1 Stück. …", "Jeder abgeschlossene Lauf erzeugt 25 kg. …" oder "Dieser Ablauf trägt nichts zur Produktionsmenge bei." Eine zählende Form zu wählen setzt die Menge auf 1 zurück. Die Menge in der Wirkung wird im Zahlenformat der Station geschrieben, mit den Stellen, die sie hat, höchstens sechs. |
| **Menge je Abschluss** (feste Form) | Die Losmenge, die ein abgeschlossener Lauf beiträgt. | Eine positive Zahl; 1 als Vorgabe. | |
| **Referenzdurchsatz** (solange die Ausbringung gezählt wird) | Die angestrebte Ausbringungsrate ("Gemessen an der verstrichenen Zeit, Anhalten und Neustarts eingeschlossen."). | Eine positive Zahl oder leer; leer als Vorgabe. Ohne sie werden Menge und tatsächliche Rate weiterhin berechnet, aber kein Prozentsatz der Produktivität. | |
| **Referenzzeitraum** (solange die Ausbringung gezählt wird) | Die zeitliche Grundlage der Bezugsrate ("Die Kennzahlen rechnen das auf Ausbringung je Stunde um."). | **je Stunde** (Vorgabe), **je Tag**. | |

Abgebrochene und fehlgeschlagene Läufe versiegeln ihre Aufzeichnung der Ausbringung mit der Menge
null. Ein abgeschlossener Zyklus bleibt gezählt, auch wenn ein späterer Zyklus den umschließenden
Lauf abbricht.

## Prüfung {#validation}

Die warnende Anmerkung unter dem Kopf, die zugleich das Tor ist, das Start durchsetzt, lautet auf
eines von diesen:

- "Nichts auszuführen: Dieser Ablauf verweist weder auf ein Datalog noch auf ein Rezept."
- "Eine Bewertung urteilt über aufgezeichnete Zeilen. Dieser Ablauf führt eine mit, hat aber kein
  Datalog."
- "Der zeitgeführte Modus braucht eine Dauer. Legen Sie eine fest."
- "Der direkte Modus braucht ein direktes Rezept (oder keines). Ein zeitliches Profil hat keinen
  einzelnen Takt."
- "Der gesteuerte Modus braucht ein direktes Rezept (oder keines). Die Sollwerte werden beim Start
  geschrieben, der sichere Zustand beim Stopp."
- "Der zeitgeführte Modus braucht ein zeitgeführtes Rezept (oder keines). Ein direkter Satz hat
  keine Zeitachse."
- "Das Rezeptprofil (*N* ms) ist länger als das zeitliche Fenster (*M* ms)."
- "Der Ablauf '*Name*' kann abgeschlossene Zyklen nur im zeitgeführten Modus zählen.", "Der Ablauf
  '*Name*' braucht eine positive, endliche Ausbringungsmenge.", "Die zählende Ausbringung des
  Ablaufs '*Name*' muss je Abschluss genau eine Einheit beitragen.", "Der Ablauf '*Name*' braucht
  eine Maßeinheit für die Ausbringung."
- "Der Ereigniseintrag '*Name*' ist ungültig: …" bei einem aktivierten, scharfgeschalteten
  Ereigniseintrag, dessen Bedingung nicht gültig ist.
- "Der Ereigniseintrag '*Name*' überwacht 'Channels.*Kanal*', was das Datalog dieses Ablaufs nicht
  aufzeichnet." Ein Ereigniseintrag beurteilt über den aufgezeichneten Spalten, einer, der einen
  Kanal beobachtet, den das Datalog auslässt, könnte das Signal also nur für den ganzen Lauf als
  nicht verfügbar kennzeichnen.
- "Der Ereigniseintrag '*Name*' überwacht aufgezeichnete Abtastwerte. Dieser Ablauf schärft ihn, hat
  aber kein Datalog."

Einen verwendeten Eintrag einer Bibliothek zu löschen schwächt den Ablauf ab, statt ihn zu
zerbrechen: Der Verweis leert sich, und die Stufe liest, was sie jetzt ohne ihn tut.

## Ablauf entfernen {#remove-procedure}

**Ablauf entfernen** steht in der Gefahrengruppe der Detailleiste, wenn der Ablauf gewählt ist, in
seinem Rechtsklickmenü und als X auf der Karte der Ordnerseite. Es fragt zuerst ("Ablauf löschen",
"Das entfernt den Ablauf aus dem Modell."). Der Ablauf verlässt außerdem jede benannte Menge, die
ihn auf dem Bildschirm Produktivität summiert hat, auf der Ebene des Modells und auf der jeder
Einheit; eine Menge, die ohne Quelle zurückbleibt, geht mit ihm. Es braucht Rezepte und Bewertungen
ändern und ist unter der Projektierungssperre und bei gestoppter Runtime ausgegraut. Aufgezeichnete
Läufe des Ablaufs bleiben in den Historien.

## Was ein Ablauf nicht tut {#what-a-procedure-does-not-do}

- Er startet hier nichts. Eine Einheit bereitet ihn auf ihren Zeilen unter
  [Betrieb](process-operate) vor und startet ihn dort oder über die Automatik, die ihn
  auswählt (siehe
  [Automatik und die Stopp-Verriegelung](process-automation)).
- Er hält nichts je Einheit: Jede Einheit fährt dieselbe Zusammensetzung über ihren eigenen
  Verknüpfungen.
- Er sortiert seine Aktionen und Ereigniseinträge nicht; die Reihenfolge gehört dem Modell.
- Er trägt keine eigene Vorlage: Was ein Lauf druckt oder veröffentlicht, gehört einer Aktion.
