> 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/11-referenz/beispiele/beispielmodell-starttaste-+-zylinder-selmo.md).

# Beispielmodell: Starttaste + Zylinder (Selmo)

Dieses Beispiel zeigt die vollständige Überführung eines einfachen PTFs in ein Selmo-Modell:

* Starttaste löst einen Zyklus aus
* Zylinder fährt aus bis Endlage „ausgefahren“
* Plausibilität (Pair-Check) überwacht widersprüchliche Endlagen
* CMZ schützt systemkritische Bedingungen
* MXIC erlaubt sichere manuelle Bewegungen im Handbetrieb

> Ziel: Ein minimaler, aber vollständiger Selmo-Kern, der deterministisch, diagnostizierbar und bedienbar ist.

***

### 1) Struktur (Plant → Hardware-Zone → Sequence → Zone)

#### Plant

**PLANT\_01** – Gesamtanlage (für dieses Beispiel minimal)

Plant-Aufgaben:

* plantweite Zustände (optional)
* plantweite CMZ (optional)

> Für dieses Beispiel wird die Plant bewusst schlank gehalten.

***

#### Hardware-Zone

**HWZ\_01 – Station\_01**

Aufgaben:

* Betriebsarten (Hand / Automatik)
* Automatikfreigabe
* Startkoordination (zentral)
* HW-Zonen-CMZ

***

#### Sequence

**SEQ\_01 – ExtendCylinder**

Aufgabe:

* Starttaste auswerten
* Zylinder ausfahren
* Endlage „ausgefahren“ erreichen
* Zyklus abschließen (bereit für nächsten Start)

***

### 2) Zonen (Technik & Bedeutung)

> Jede relevante Technik wird als Zone beschrieben.

#### Z\_01 – Starttaste

* **Typ:** Input-Zone
* **Signal(e):**
  * `I_Start` (Taster Start)
* **HMI-Text:** „Starttaste drücken“

***

#### Z\_02 – Zylinder (Ausfahren)

* **Typ:** In-Out-Zone
* **Signal(e):**
  * Output: `Q_Extend` (Ventil: Ausfahren)
  * Input: `I_Extended` (Endlage ausgefahren)
  * Input: `I_Retracted` (Endlage eingefahren)
* **HMI-Text (S-Führung):**
  * beim Ausfahren: „Zylinder fährt aus“
  * Ziel erreicht: „Zylinder ausgefahren“

**Pair-Check (Plausibilität):**

* Paar: (`I_Extended`, `I_Retracted`)
* Regel: *beide gleichzeitig TRUE ist physikalisch unmöglich → Diagnose*

***

#### Z\_03 – AirPressureOK

* **Typ:** Input-Zone
* **Signal(e):**
  * `I_AirOK` (Druckluft i.O.)
* **HMI-Text:** „Druckluft i.O.“

> Diese Zone wird als **HW-Zonen-CMZ** verwendet (siehe CMZ).

***

#### Z\_04 – CycleDone (optional)

* **Typ:** Mem-Zone
* **Signal(e):**
  * `M_CycleDone`
* **HMI-Text:** „Zyklus abgeschlossen“

***

### 3) Logic-Layer (Zustandsmodell)

> Der Logic-Layer beschreibt den Ablauf als Zustandsautomat.

#### Zustände

* **S0 – Idle / WaitStart**\
  Wartet auf Startanforderung
* **S1 – ExtendCommand**\
  Zylinder ausfahren (Befehl + Erwartung)
* **S2 – Done**\
  Zyklus abgeschlossen, bereit für nächsten Start (oder Reset-Logik nach Bedarf)

#### Übergänge (vereinfacht)

* S0 → S1, wenn Startanforderung erfüllt
* S1 → S2, wenn Zylinder ausgefahren ist
* S2 → S0, wenn Starttaste losgelassen (oder Reset/Quittierung, je nach Stil)

> Hinweis: Die *technische Erfüllung* wird nicht im Logic-Layer beschrieben, sondern im System-Layer über Bit-Control.

***

### 4) System-Layer (Bit-Control / Kreuztabelle)

Operanden:

* `0` = Don’t care
* `S` = Sequence Check (Erwartung / Führung)
* `i` = Interlock (zwingende Bedingung, bei Abweichung Automatikfreigabe entzogen)

#### Bit-Control-Matrix

| Zone \ Zustand              | S0 WaitStart | S1 ExtendCommand | S2 Done |
| --------------------------- | -----------: | ---------------: | ------: |
| Z\_01 Starttaste (Input)    |            S |                0 |       0 |
| Z\_02 Zylinder (In-Out)     |            0 |                S |       0 |
| Z\_03 AirPressureOK (Input) |            i |                i |       i |
| Z\_04 CycleDone (Mem)       |            0 |                0 |       S |

**Interpretation:**

* In **S0** wird `Z_01` als `S` geführt: das System erwartet eine Startanforderung.
* In **S1** wird `Z_02` als `S` geführt: Output wird gesetzt (`Q_Extend`) und Feedback `I_Extended` wird erwartet.
* `Z_03` ist in allen Zuständen `i`: fällt `I_AirOK` weg, wird Automatikfreigabe entzogen und die Sequence stoppt.
* In **S2** wird `Z_04` als `S` gesetzt (optional): der Zyklus markiert sich als abgeschlossen.

***

### 5) Parameter-Layer (optional, aber sauber)

> Parameter ändern Werte, nicht Logik.

* `P_ExtendTimeout` (Zeitlimit für Ausfahren, falls benötigt)
* `P_DoneHoldTime` (Anzeige-/Haltezeit in Done, optional)

> Wenn ihr „Timeout“ modelliert, gehört die Logik dafür in einen Timer-State – der Wert kommt aus dem Parameter-Layer.

***

### 6) CMZ (Constantly Monitoring Zone)

#### HW-Zonen-CMZ: `Z_03 AirPressureOK`

* Ebene: **Hardware-Zone**
* Regel: `I_AirOK` muss **immer** korrekt anliegen
* Wirkung bei Fehler:
  * Automatikfreigabe entziehen
  * alle Sequences der HW-Zone stoppen
  * **keine manuelle Bewegung möglich** (CMZ-Regel)

> Diese CMZ macht klar: Ohne Druckluft kein sicherer Betrieb – weder Automatik noch Hand.

***

### 7) Pair-Check (Plausibilität)

#### Für `Z_02 Zylinder`

* Paar: (`I_Extended`, `I_Retracted`)
* Unmöglich: beide TRUE gleichzeitig
* Reaktion:
  * automatische Diagnose „Zylinder-Endlagen widersprüchlich“
  * Ablauf kann nicht fortgesetzt werden

> Der Pair-Check ist kein Ablaufbaustein, sondern Plausibilitätsüberwachung mit eindeutiger Diagnose.

***

### 8) MXIC (Manual Cross Interlock) – Handbetrieb

Ziel:

* Manuelle Bewegung nur, wenn sie **modellkonform und sicher** ist
* Im Zweifel: **Diagnose statt Bewegung**

#### Manuelle Aktionen (Buttons)

* `BTN_Extend` → steuert Zone `Z_02` (Ausfahren)
* `BTN_Retract` → steuert Zone `Z_02` (Einfahren) *(wenn Einfahren im Beispiel erlaubt sein soll)*

#### MXIC-Bedingungen (Beispielregeln)

* `BTN_Extend` ist erlaubt, wenn:
  * **kein CMZ-Fehler** aktiv ist (AirPressureOK muss stimmen)
  * *(optional)* der aktuelle Zustand S0 oder S1 ist (kein willkürliches Fahren in Done)
* `BTN_Retract` ist erlaubt, wenn:
  * **kein CMZ-Fehler** aktiv ist
  * *(optional)* der Ablauf nicht in kritischem Zustand ist

Wenn Bedingung nicht erfüllt:

* Bewegung wird verhindert
* Diagnose: „Manuelle Bewegung nicht erlaubt: “

***

### 9) HMI-Verhalten (kurz, modellbasiert)

* In **S0**:
  * Anzeige `Z_01` mit `S` → „Starttaste drücken“ (Führung)
* In **S1**:
  * Anzeige `Z_02` mit `S` → „Zylinder fährt aus“
  * sobald `I_Extended` erfüllt → Übergang nach S2
* Bei `i`-Abweichung (`I_AirOK` weg):
  * Automatikfreigabe entzogen, Stop, Diagnose an `Z_03`
* Bei Pair-Check-Fehler:
  * Diagnose an `Z_02` („Endlagen widersprüchlich“)

> Grundprinzip: Meldungen entstehen dort, wo das Modell Erwartung und Abweichung kennt (Zustand + Zone + Operand).

***

### 10) Zusammenfassung: Was dieses Modell zeigt

Dieses Beispiel ist vollständig, weil es:

* Struktur (Plant/HWZ/Sequence/Zone) definiert
* Ablauf (Logic-Layer) eindeutig beschreibt
* Verhalten (System-Layer/Bit-Control) formal festlegt
* Sicherheit/Integrität (CMZ) integriert
* Plausibilität (Pair-Check) automatisch überwacht
* Handbetrieb (MXIC) sicher begrenzt
* Diagnose/HMI aus dem Modell ableitbar macht

> Damit ist das Beispiel ein minimaler „Selmo-Standardfall“: klein, aber vollständig.


---

# 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/11-referenz/beispiele/beispielmodell-starttaste-+-zylinder-selmo.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.
