FB_BARRollerBlind

FB_BARRollerBlind 1:

Dieser Baustein dient zur Positionierung einer Rolladen-Jalousie über zwei Ausgänge: Hoch- und Herunterfahren. Über das Positioniertelegramm stSunblind kann die Jalousie auf eine beliebige Position gesteuert werden. Darüber hinaus beinhaltet das Positioniertelegramm stSunblind auch Handbefehle, mit denen die Jalousie individuell auf bestimmte Positionen bewegt werden kann. Diese Handbefehle werden von dem Baustein FB_BARSunblindSwitch angesteuert.

Struktur des Jalousie-Positioniertelegramms stSunblind.

TYPE ST_BARSunblind:
STRUCT
     uiPosition      : UINT;
     iAngle          : INT;
     bManUp          : BOOL;
     bManDown        : BOOL;
     bManualMode     : BOOL;
     bActive         : BOOL;
END_STRUCT
END_TYPE

Die aktuelle Höhenposition und der Lamellenwinkel werden dabei nicht durch einen zusätzlichen Encoder eingelesen, sondern intern durch die Laufzeit der Jalousie ermittelt.
Durch die beiden unterschiedlichen Laufzeitparameter udiTotalTimeUp (Laufzeit Jalousie hoch in ms) und udiTotalTimeDown (Laufzeit Jalousie herunter in ms) wird den unterschiedlichen Fahrcharakteristiken Rechnung getragen.

Funktionsweise

Der Baustein steuert die Jalousie grundsätzlich über die Informationen, aus dem Positioniertelegramm stSunblind. Ist der Automatikmodus aktiv (bManualMode=FALSE), so wird immer die aktuelle Position angefahren, wobei Änderungen sofort berücksichtigt werden. Im Handbetrieb (bManualMode=TRUE) steuern die Befehle bManUp und bManDown die Jalousie.

Referenzieren

Ein sicheres Referenzieren ist gegeben, wenn die Jalousie länger als ihre komplette Hochlaufzeit nach oben hin angesteuert wird. Die Position ist dann auf jeden Fall "0". Da eine Jalousiepositionierung ohne Encoder naturgemäß immer fehlerbehaftet ist, ist es wichtig möglichst oft automatisch zu referenzieren: jedes mal, wenn die Position "0" angefahren werden soll, fährt die Jalousie zunächst ganz normal mit kontinuierlicher Positionsberechnung nach oben. Erreicht sie den errechneten Positionswert 0%, so wird der Ausgang bBlindUp noch einmal für die weiterhin gehalten und zwar noch einmal für die komplette Hochlaufzeit + 5s.
Aus Gründen der Flexibilität gibt es nun zwei Möglichkeiten, den Referenziervorgang zu unterbrechen: Bis zum Erreichen der errechneten 0%-Position wird eine Positionsänderung immer noch angenommen und ausgeführt, nach Erreichen dieser 0%-Position kann die Jalousie noch mit dem Handbefehl "herunterfahren" anders bewegt werden. Diese beiden sinnvollen Einschränkungen machen es nötig, dass der Nutzer selbst dafür Sorge trägt, die Jalousie so oft wie möglich sicher referenzieren zu lassen.

VAR_INPUT

eDataSecurityType  : E_HVACDataSecurityType;
bEnable            : BOOL;
stSunblind         : ST_BARSunblind;

eDataSecurityType:Wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist, werden die persistenten VAR_IN_OUT-Variablen des Funktionsbausteins bei einer Wertänderung im Flash des Rechners abgelegt. Dafür ist es zwingend erforderlich den Funktionsbaustein FB_HVACPersistentDataHandling einmalig im Hauptprogramm, das zyklisch aufgerufen wird, zu instanziieren. Ansonsten wird der instanziierte FB intern nicht freigegeben.

Eine Wertänderung kann vom Gebäudeleitsystem, einem lokalen Bediengerät oder von einem Schreibzugriff von TwinCAT aus erfolgen. Beim Neustart des Rechners werden die gesicherten Daten automatisch vom Flash in den RAM zurück gelesen.

Anwendungsbeispiel: example_persistent.zip

Bei eDataSecurityType:= eHVACDataSecurityType_Idle werden die persistent deklarierten Variablen nicht spannungsausfallsicher gespeichert.

Hinweis

Eine sich zyklisch ändernde Variable darf niemals mit der IN_OUT-Variablen eines Funktionsbausteins verbunden werden, wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist. Es würde zu einem frühzeitigen Verschleiß des Flashspeichers führen.

bEnable: Freigabeeingang für den Baustein. Solange dieser Eingang auf TRUE steht, nimmt der Aktorbaustein Befehle entgegen und arbeitet, wie oben beschrieben. Ein FALSE-Signal an diesen Eingang setzt die Steuerausgänge bBlindUp und bBlindDown zurück und der Funktionsbaustein verharrt in einem Ruhezustand.

stSunblind: Positioniertelegramm, siehe ST_BARSunblind.

VAR_OUTPUT

bBlindUp       : BOOL;
bBlindDown     : BOOL;
uiActPosition  : UINT;
bReferencing   : BOOL;
bBusy          : BOOL;
bError         : BOOL;
udiErrorId     : UDINT;

bBlindUp: Steuerausgang Jalousie hoch.

bBlindDown: Steuerausgang Jalousie herunter.

uiActPosition: Aktuelle Position in Prozent.

bReferencing: Die Jalousie befindet sich in der Referenzierung, d.h. für die die komplette Hochlaufzeit + 5s wird der Ausgang bBlindUp gesetzt. Nur ein Handbefehl "herunter" kann die Jalousie in Gegenrichtung bewegen und diesen Modus beenden.

bBusy: Ein Positionier- oder Referenziervorgang findet statt.

bError: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrorId: Enthält den Fehlercode, sollten die eingetragenen Werte fehlerhaft sein. Siehe Fehlercodes.

VAR_IN_OUT

Damit die eingetragenen Parameter über einen Steuerungsausfall hinweg erhalten bleiben ist es erforderlich, sie als In-Out-Variablen zu deklarieren. Im Programm wird ihnen dann eine Referenz-Variable zugewiesen. Jede Änderung des Wertes dieser Referenz-Variablen wird im Funktionsbaustein persistent gespeichert und nach einem Steuerungsausfall und -wiederanlauf zurück in die Referenz-Variable geschrieben. Wären die Parameter nur als Eingangsvariablen deklariert, so könnten sie eine Referenzvariable nicht beschreiben.
Anwendungsbeispiel: example_persistent.zip.

udiTotalTimeUp      : UDINT;
udiTotalTimeDown    : UDINT;

udiTotalTimeUp: Komplette Hochfahrzeit in ms.

udiTotalTimeDown: Komplette Zeit zum Herunterfahren in ms.

Voraussetzungen

Entwicklungsumgebung

erforderliche Bibliothek

Erforderliche Function

TwinCAT 3.1 ab Build 4022.16

Tc2_HVAC V3.3.1.0

TF8000 | TC3 HVAC V1.0.0.0