> For the complete documentation index, see [llms.txt](https://support.powerio.com/hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.powerio.com/hub/codesys-hvac/hvac-library/functionblocks/components/shade-1.md).

# Shade B

## `ShadeB` (FB)

FUNCTION\_BLOCK Shade B

### Kurzbeschreibung

> Steuerung eines Jalousieantriebs mit Auf-/Zu-Befehlen, Tasterbedienung und Zentralbedienung.&#x20;
>
> Zusatzfunktionen: Lamellenverstellung per langem Tastendruck, Zielpositionsfahrt und Endlagenanfahrt.&#x20;
>
> Komfortfunktionen: Start-/Stop-Toggle per kurzem Tastendruck, Richtungswechsel-Sperre, Nachlaufzeit und gegenseitige Verriegelung.&#x20;
>
> Typische Anwendung: Steuerung eines Standard-Jalousieantriebs mit lokaler Bedienung, Zentralbefehl und Positionsvorgabe.

### Darstellung

<figure><img src="/files/4VQFDj2msyk1BsK3jfbi" alt=""><figcaption></figcaption></figure>

### Schnittstellen

#### Eingänge

<table><thead><tr><th width="117">Name</th><th width="105">Datentyp</th><th width="136">Wertebereich</th><th width="113">Initialwert</th><th width="192">Funktion</th></tr></thead><tbody><tr><td><em>xButtonUp</em></td><td>BOOL</td><td></td><td></td><td>Anforderung - Jalousieöffnung über Taste</td></tr><tr><td><em>xButtonDown</em></td><td>BOOL</td><td></td><td></td><td>Anforderung - Jalousieschliessung über Taste</td></tr><tr><td><em>xCentralUp</em></td><td>BOOL</td><td></td><td></td><td>Anforderung - Jalousieöffnung über Zentralbedienung</td></tr><tr><td><em>xCentralDown</em></td><td>BOOL</td><td></td><td></td><td>Anforderung - Jalousieschliessung über Zentralbedienung</td></tr><tr><td><em>eAOOUp</em></td><td>HVACTYPES.eManBin</td><td>HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn</td><td>HVACTYPES.eManBin.Auto</td><td>Betriebsart der Handübersteuerung - Hardware für die Jalousieöffnung</td></tr><tr><td><em>eAOODown</em></td><td>HVACTYPES.eManBin</td><td>HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn</td><td>HVACTYPES.eManBin.Auto</td><td>Betriebsart der Handübersteuerung - Hardware für die Jalousieschliessung</td></tr><tr><td>rTargetPos</td><td>REAL</td><td>0.0 … 100.0 %</td><td></td><td>Zielposition der Jalousie; 0 % = offen / oben, 100 % = geschlossen / unten</td></tr></tbody></table>

#### Ausgänge

<table><thead><tr><th>Name</th><th>Datentyp</th><th width="142">Wertebereich</th><th>Initialwert</th><th>Funktion</th></tr></thead><tbody><tr><td><em>xUp</em></td><td>BOOL</td><td></td><td></td><td>Freigabe - Jalousieöffnung</td></tr><tr><td><em>xDown</em></td><td>BOOL</td><td></td><td></td><td>Freigabe - Jalousieschliessung</td></tr><tr><td><em>xAuto</em></td><td>BOOL</td><td></td><td></td><td>Sammelmeldung Automatikbetrieb</td></tr><tr><td>rPos</td><td>REAL</td><td>0.0 … 100.0 %</td><td></td><td>Berechnete aktuelle Position der Jalousie; 0 % = offen / oben, 100 % = geschlossen / unten</td></tr></tbody></table>

#### Sollwerte / Parameter

<table><thead><tr><th>Name</th><th width="114">Datentyp</th><th>Wertebereich</th><th width="82">Initialwert</th><th width="200">Funktion</th></tr></thead><tbody><tr><td>rHysterese</td><td>REAL</td><td></td><td>3.0</td><td>Hysterese für Sollpositionsvergleich und Endlagenbereich (%)</td></tr><tr><td>udiFullMovement</td><td>UDINT</td><td></td><td></td><td>Zeit für vollständige Bewegung Öffnung / Schliessung der Jalousie (Sekunden)</td></tr><tr><td>udiAddFullMovement</td><td>UDINT</td><td></td><td></td><td>zusätzliche Sicherheitszeit für Endlage (Sekunden)</td></tr><tr><td>udiPulseNeigung</td><td>UDINT</td><td></td><td></td><td>Pulszeit für Lamellenverstellung (Millisekunden)</td></tr><tr><td>udiButton</td><td>UDINT</td><td></td><td></td><td>Zeit zur Unterscheidung Short‑Press / Long‑Press (Millisekunden)</td></tr><tr><td>udiWaitReverse</td><td>UDINT</td><td></td><td></td><td>Sperrzeit beim Richtungswechsel (Sekunden)</td></tr><tr><td>eManModeUp</td><td>eMANBIN</td><td>eMANBIN.Auto, eMANBIN.ManOff, eMANBIN.ManOn</td><td></td><td>Betriebsart der Handübersteuerung für AUF</td></tr><tr><td>eManModeDown</td><td>eMANBIN</td><td>eMANBIN.Auto, eMANBIN.ManOff, eMANBIN.ManOn</td><td></td><td>Betriebsart der Handübersteuerung für AB</td></tr></tbody></table>

### Funktionsbeschreibung

#### Allgemeines

***

Der Funktionsbaustein ShadeB steuert eine Jalousie über die Ausgänge xUp (Öffnen) und xDown (Schliessen). Beide Ausgänge sind gegenseitig zwangsverriegelt: ist xUp aktiv (= TRUE), wird xDown gleichzeitig deaktiviert (= FALSE) und umgekehrt. Eine gleichzeitige Aktivierung beider Ausgänge ist nicht möglich.

Die Ausgangsbefehle können durch die Parameter eManModeUp bzw. eManModeDown unabhängig von der Automatikfunktion manuell übersteuert werden.

Die Bedienung erfolgt primär über die lokalen Tastereingänge xButtonUp und xButtonDown. Übergeordnet steht eine Zentralbedienung über die Eingänge xCentralUp und xCentralDown zur Verfügung. Die Zeitdauer der Tastenbetätigung entscheidet über die ausgeführte Funktion:

* Zeitdauer < tButton → kurzer Tastendruck: vollständige Öffnung / Schliessung (Toggle Start/Stop)
* Zeitdauer ≥ tButton → langer Tastendruck: Lamellenverstellung im Pulsbetrieb

Wird während einer laufenden vollständigen Öffnung oder Schliessung eine der Tasten xButtonUp oder xButtonDown betätigt, so wird die Fahrbewegung sofort unterbrochen.

***

**Zentralbedienung**

Jede ansteigende Flanke am Eingang xCentralUp löst eine vollständige Öffnung der Jalousie aus (xUp = TRUE, xDown = FALSE für die Zeitdauer tFullMovement). Eine Zusatznachlaufzeit tAddFullMovement stellt sicher, dass die mechanische Endlage sicher erreicht wird.

Jede ansteigende Flanke am Eingang xCentralDown löst eine vollständige Schliessung der Jalousie aus (xDown = TRUE, xUp = FALSE für die Zeitdauer tFullMovement).

Sind xCentralUp oder xCentralDown dauerhaft aktiv (= TRUE), ist eine gleichzeitige lokale Bedienung über xButtonUp / xButtonDown nicht möglich. Erst nach Wegfall des Zentralbefehls kann durch lokale Tastenbetätigung die Fahrt unterbrochen oder neu gestartet werden. Ein Zentralbefehl während einer aktiven Automatikfahrt stoppt diese sofort und übernimmt die Steuerung.

***

**Vollständige Öffnung / Schliessung (kurzer Tastendruck)**

Ein kurzer Tastendruck (Betätigungsdauer < tButton) auf xButtonUp bzw. xButtonDown aktiviert den Start-/Stop-Toggle der Fahrbewegung. Beim ersten Druck startet die Fahrt, beim zweiten Druck stoppt sie. Am entsprechenden Ausgang wird ein Signal (= TRUE) für die Zeitdauer tFullMovement erzeugt. Am jeweils anderen Ausgang liegt kein Signal an (= FALSE).

***

**Lamellenverstellung (langer Tastendruck)**

Ein langer Tastendruck (Betätigungsdauer ≥ tButton) auf xButtonUp bzw. xButtonDown aktiviert den Pulsbetrieb zur schrittweisen Lamellenverstellung. Während der Tastenbetätigung wird am zugeordneten Ausgang ein symmetrisches Pulssignal erzeugt (Impulsdauer = Pausendauer = tPulse). Der Pulsbetrieb ist ausschliesslich bei gedrückter Taste aktiv und stoppt sofort nach dem Loslassen.

***

**Warte-Zeitdauer Richtungswechsel (tWaitReverse)**

Die Umschaltung von Öffnung auf Schliessung und umgekehrt wird durch den Parameter tWaitReverse zeitlich verzögert, um den Antrieb vor Schäden durch sofortige Richtungsumkehr zu schützen. Der Wert 0.0 s erlaubt die unmittelbare Umschaltung ohne Verzögerung.

***

**Automatikfahrt (rTargetPos)**

Über den Eingang rTargetPos (REAL, 0–100 %) kann die Jalousie automatisch auf eine Zielposition gefahren werden. Die Automatikfahrt startet, sobald sich der Sollwert um mehr als die konfigurierte Hysterese von der aktuellen Position unterscheidet. Ziele im Endlagenbereich werden automatisch eingerastet:

* Sollwert ≤ Hysterese → Zielposition wird auf 0 % (vollständig offen) gesetzt
* Sollwert ≥ 100 % − Hysterese → Zielposition wird auf 100 % (vollständig geschlossen) gesetzt

Die Automatikfahrt wird durch jeden lokalen Tastendruck oder Zentralbefehl sofort unterbrochen. Nach Erreichen der Zielposition stoppt die Automatik selbsttätig.

***

**Endlagenbehandlung**

In den Endbereichen der Jalousie (Position 0–3 % und 97–100 %) greift eine besondere Stoplogik: Ein Tastendruck während einer laufenden Fahrt in der Endlage stoppt die Fahrt sofort und sperrt den Ausgang. Ein weiterer Tastendruck (beliebige Taste, lokal oder zentral) hebt die Sperre auf und gibt die normale Funktion wieder frei. Bei Programmstart (rPos = 0, kein aktiver Fahrbefehl) wird diese Logik nicht ausgelöst.

***

**Sammelmeldung Automatikbetrieb xAuto**

Die Sammelmeldung Automatikbetrieb xAuto wird aktiviert (= TRUE), falls folgende Bedingungen gleichzeitig erfüllt sind:

* Eingang eAOOUp = HVACTYPES.eManBin.Auto
* Eingang eAOODown = HVACTYPES.eManBin.Auto
* Sollwert / Parameter eManModeUp = eMANBIN.Auto
* Sollwert / Parameter eManModeDown = eMANBIN.Auto

### Codsys

InOut

| Scope       | Name               | Type    | Initial      |
| ----------- | ------------------ | ------- | ------------ |
| Input       | xButtonUp          | BOOL    |              |
| Input       | xButtonDown        | BOOL    |              |
| Input       | xCentralUp         | BOOL    |              |
| Input       | xCentralDown       | BOOL    |              |
| Input       | eAOOUp             | eManBin |              |
| Input       | eAOODown           | eManBin |              |
| Input       | rTargetPos         | REAL    |              |
| Input       | xNewTarget         | BOOL    |              |
| Output      | xUp                | BOOL    |              |
| Output      | xDown              | BOOL    |              |
| Output      | xAuto              | BOOL    |              |
| Output      | rPos               | REAL    |              |
| Input Const | udiFullMovement    | UDINT   | 30           |
| Input Const | udiAddFullMovement | UDINT   | 5            |
| Input Const | udiButton          | UDINT   | 900          |
| Input Const | udiPulseNeigung    | UDINT   | 600          |
| Input Const | udiWaitReverse     | UDINT   | 2            |
| Input Const | rHysterese         | REAL    | 3            |
| Input Const | eManModeUp         | eMANBIN | eMANBIN.Auto |
| Input Const | eManModeDown       | eMANBIN | eMANBIN.Auto |


---

# 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://support.powerio.com/hub/codesys-hvac/hvac-library/functionblocks/components/shade-1.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.
