> For the complete documentation index, see [llms.txt](https://infosys.selmotech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://infosys.selmotech.com/selmo-documentation/5-logik-and-layer-dynamisch/logic-layer.md).

# Logic-Layer

## Ablauf modellieren

Der **Logic-Layer** beschreibt den **logischen Ablauf einer Sequence**.\
Er modelliert **Zustände und Übergänge**, jedoch **keine Technik** und **keine Signale**.

Ziel des Logic-Layers ist es, den Ablauf:

* verständlich
* eindeutig
* deterministisch

zu beschreiben.

> **Der Logic-Layer beantwortet die Frage:**\
> **In welcher logischen Situation befindet sich der Prozess –**\
> **und wie geht es weiter?**

***

### Grundprinzip des Logic-Layers

Im Logic-Layer gilt:

* eine Sequence befindet sich immer in **genau einem Zustand**
* Übergänge erfolgen nur, wenn Bedingungen erfüllt sind
* Zustände beschreiben **Situationen**, keine Aktionen
* Technik wird **nicht** im Logic-Layer beschrieben

Der Logic-Layer ist damit:

* unabhängig von Hardware
* unabhängig von SPS
* vollständig prozesslogisch

***

### State

#### Bedeutung

Ein **State** beschreibt eine **logische Situation** im Ablauf.

Beispiele:

* *Werkstück eingelegt*
* *Spannung hergestellt*
* *Bearbeitung abgeschlossen*

Ein State:

* enthält keine Befehle
* enthält keine Aktorbewegungen
* definiert nur, **wann er als erfüllt gilt**

> **Ein State beschreibt,&#x20;*****dass*****&#x20;etwas der Fall ist –**\
> **nicht,&#x20;*****wie*****&#x20;es herbeigeführt wird.**

***

#### Wann ein State sinnvoll ist

* wenn eine klare Prozesssituation existiert
* wenn mehrere Bedingungen gemeinsam erfüllt sein müssen
* wenn der Zustand eindeutig benannt werden kann

#### Wann kein State sinnvoll ist

* für kurze technische Zwischenaktionen
* für reine Aktorbewegungen
* für SPS-interne Hilfszustände

***

### Timer-State

#### Bedeutung

Ein **Timer-State** ist ein State mit **zeitlicher Bedingung**.

Er gilt als erfüllt:

* wenn der zugrunde liegende State aktiv ist
* und eine definierte Zeit abgelaufen ist

Beispiele:

* Haltezeit nach dem Spannen
* Wartezeit vor einem Prüfschritt
* Abkühlzeit

***

#### Wann ein Timer-State sinnvoll ist

* wenn Zeit Bestandteil des Prozesses ist
* wenn Zeit logisch zum Zustand gehört
* wenn Ablauf zeitabhängig reproduzierbar sein muss

#### Wann kein Timer-State sinnvoll ist

* zur Kompensation instabiler Technik
* als Ersatz für fehlende Rückmeldungen
* für rein technische Verzögerungen

***

### Decision

#### Bedeutung

Eine **Decision** beschreibt eine **logische Verzweigung** im Ablauf.

Sie entscheidet:

* welcher Folgepfad eingeschlagen wird
* basierend auf klaren Bedingungen

Beispiele:

* Prüfergebnis OK / NOK
* Option aktiviert / nicht aktiviert
* Wiederholen / Fortsetzen

***

#### Wann eine Decision sinnvoll ist

* wenn der Prozess mehrere logische Pfade hat
* wenn die Entscheidung fachlich begründet ist
* wenn die Entscheidung explizit nachvollziehbar sein muss

#### Wann keine Decision sinnvoll ist

* zur Abbildung technischer Randbedingungen
* zur Fehlerkompensation
* als Ersatz für saubere Zustandsdefinitionen

***

### Repeater

#### Bedeutung

Ein **Repeater** wiederholt einen oder mehrere Zustände.

Er wird verwendet, um:

* Schleifen
* Wiederholungen
* Prüfzyklen

formal abzubilden.

Beispiele:

* Mehrfachprüfung
* Wiederholversuche
* iterativer Bearbeitungsschritt

***

#### Wann ein Repeater sinnvoll ist

* wenn Wiederholung Teil des Prozesses ist
* wenn Anzahl oder Bedingung definiert ist
* wenn der Ablauf strukturiert bleiben soll

#### Wann kein Repeater sinnvoll ist

* für unkontrollierte Endlosschleifen
* zur Kompensation instabiler Prozesse
* wenn Wiederholung nicht fachlich begründet ist

***

### Jump

#### Bedeutung

Ein **Jump** verlässt bewusst den linearen Ablauf\
und springt zu einem anderen Zustand.

Es gibt:

* bedingte Jumps
* unbedingte Jumps

Beispiele:

* Abbruchpfade
* gezielte Rücksprünge
* Ausnahmebehandlung

***

#### Wann ein Jump sinnvoll ist

* für klar definierte Sonderfälle
* für Abbruch- oder Resetpfade
* wenn der Ablauf sonst unübersichtlich würde

#### Wann kein Jump sinnvoll ist

* als Ersatz für saubere Struktur
* für normalen Ablauf
* um Modellierungsfehler zu umgehen

> **Jumps sind mächtig – und sollten sparsam eingesetzt werden.**

***

### Sequence Cross

#### Bedeutung

**Sequence Cross** verbindet **mehrere Sequences logisch miteinander**.

Es ermöglicht:

* Synchronisation
* Abhängigkeiten zwischen Abläufen
* koordinierte Übergänge

Beispiele:

* Roboter wartet auf Station
* Station wartet auf Transport
* parallele Prozesse mit Synchronpunkt

***

#### Wann Sequence Cross sinnvoll ist

* bei modularen Anlagen
* bei parallelen Abläufen
* wenn Abläufe logisch getrennt bleiben sollen

#### Wann kein Sequence Cross sinnvoll ist

* zur künstlichen Aufteilung einfacher Abläufe
* bei unnötiger Fragmentierung
* wenn eine Sequence logisch ausreichen würde

***

### Wichtige Abgrenzung

Der Logic-Layer:

* beschreibt **nicht**
  * Signale
  * Aktoren
  * Sicherheitslogik
  * Bedienung

Diese Aspekte gehören:

* in den **System-Layer**
* in **Zonen**
* in **Bit-Control**
* in **CMZ / MXIC**

> **Der Logic-Layer beschreibt den Ablauf –**\
> **nicht dessen technische Umsetzung.**

***

### Zusammenfassung

Der Logic-Layer:

* ist das logische Rückgrat jeder Sequence
* beschreibt den Ablauf in Zuständen
* trennt Prozesslogik von Technik
* erzwingt Klarheit und Determinismus

Die Logikelemente sind Werkzeuge –\
ihre Qualität zeigt sich im **bewussten Einsatz**.

> **Ein guter Logic-Layer ist einfach,**\
> **erklärbar und frei von technischen Details.**


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://infosys.selmotech.com/selmo-documentation/5-logik-and-layer-dynamisch/logic-layer.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
