FB_BA_SunBldActr

Dieser Baustein dient zur Positionierung einer Lamellen-Jalousie über zwei Ausgänge: hoch- und herunterfahren. Über das Positioniertelegramm stSunBld kann die Jalousie auf eine beliebige (Höhen-) Position und einen Lamellenwinkel gefahren werden. Darüber hinaus beinhaltet das Positioniertelegramm stSunBld auch Handbefehle, mit denen die Jalousie individuell auf bestimmte Stellungen bewegt werden kann. Diese Handbefehle werden von dem Baustein FB_BA_SunBldSwi angesteuert.

Der Baustein besitzt intern eine feste Umschaltverriegelung (Ausgang bUp zu Ausgang bDwn) von 500ms.

FB_BA_SunBldActr 1:

Dieser Baustein muss in jedem SPS-Zyklus aufgerufen werden, da die SPS-Zykluszeit in die Berechnung der Positionen mit einfließt.

FB_BA_SunBldActr 2:

Funktionsbeschreibung

Struktur des Jalousie-Positioniertelegramms stSunBld

TYPE ST_BA_SunBld:
STRUCT
     lrPos        : LREAL;
     lrAngl       : LREAL;
     bManUp       : BOOL;
     bManDwn      : BOOL;
     bManMod      : BOOL;
     bActv        : 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. Der Berechnung liegt folgendes Fahrprofil zugrunde (von der höchsten und niedrigsten Position der Jalousie aus betrachtet):

Fahrprofil abwärts:

FB_BA_SunBldActr 3:

Nähere Erläuterung zu den Begriffen "Umkehrlose" und "Umschwenken", hier in der Abwärtsbewegung:

Die Jalousie beschreibt ihre Abwärtsbewegung normalerweise mit dem Lamellentiefpunkt nach außen gerichtet, wie in Bild 3.
Befindet sich die Jalousie in einer Ausgangsstellung mit dem Tiefpunkt nach innen (d.h. nach Abschluss einer Aufwärtsbewegung), so vergeht bei einer erneuten Abwärtsfahrt eine gewisse Zeit bis die Lamellen vom "Tiefpunkt innen" bis zu "Tiefpunkt außen" zu schwenken beginnen. Während dieser Zeit ändert sich der Lamellenwinkel nicht, die Jalousie fährt nur herunter (Bild1 und Bild2). Diese Zeit ist ein wichtiger Parameter zur Bewegungsberechnung und wird am Baustein unter udiBckLshTiDwn [ms] eingetragen. Da man an einem x-beliebigen Punkt nach einer beliebig langen Jalousiebewegung nicht weiß, ob schon etwas von der Umkehrlosen ausgefahren wurde, misst man die Umkehrlose der Abwärtsbewegung bzw. deren Ausfahrzeit am Sichersten, wenn die Jalousie zunächst ganz nach oben gefahren wurde. Ein weiterer wichtiger Parameter ist die Zeitspanne des darauf folgenden Umschwenkens der Lamellen von "Tiefpunkt innen" bis zu "Tiefpunkt außen". Diese Zeit ist als udiTurnTiDwn [ms] am Baustein einzutragen.

Fahrprofil aufwärts:

FB_BA_SunBldActr 4:

Nähere Erläuterung zu den Begriffen "Umkehrlose" und "Umschwenken", hier in der Aufwärtsbewegung:

Dieser Sachverhalt ist analog zur oben beschriebenen Abwärtsbewegung: Die Jalousie beschreibt ihre Aufwärtsbewegung normalerweise mit dem Lamellentiefpunkt nach innen gerichtet, wie in Bild 3.
Befindet sich die Jalousie in einer Ausgangsstellung mit dem Tiefpunkt nach außen (d.h. nach Abschluss einer Abwärtsbewegung), so vergeht bei einer erneuten Aufwärtsfahrt eine gewisse Zeit bis die Lamellen vom "Tiefpunkt außen" bis zu "Tiefpunkt innen" zu schwenken beginnen. Während dieser Zeit ändert sich der Lamellenwinkel nicht, die Jalousie fährt nur herauf (Bild1 und Bild2). Auch diese Zeit ist ein wichtiger Parameter zur Bewegungsberechnung und wird am Baustein unter udiBckLshTiUp [ms] eingetragen. Da man an einem x-beliebigen Punkt nach einer beliebig langen Jalousiebewegung nicht weiß, ob schon etwas von der Umkehrlosen ausgefahren wurde, misst man die Umkehrlose der Aufwärtsbewegung bzw. deren Ausfahrzeit am Sichersten, wenn die Jalousie zunächst ganz nach unten gefahren wurde. Ein weiterer wichtiger Parameter ist die Zeitspanne des darauf folgenden Umschwenkens der Lamellen von "Tiefpunkt außen" bis zu "Tiefpunkt innen". Diese Zeit ist als udiTurnTiUp [ms] am Baustein einzutragen.

Parametrierung

Zur Berechnung der (Höhen-)Position und des Lamellenwinkels sind nun jeweils für die Auf- und Abwärtsbewegung folgende Zeiten zu ermitteln:

Des Weiteren sind zur Berechnung erforderlich:

Der Lamellenwinkel λ ist dabei durch eine gedachte Gerade durch die Endpunkte der Lamelle zur Horizontalen definiert.

FB_BA_SunBldActr 5:

Funktionsweise

Der Baustein steuert die Jalousie grundsätzlich über die Informationen, aus dem Positioniertelegramm stSunBld. Ist der Automatikmodus aktiv (bManMod=FALSE), so wird immer die aktuelle Position und Lamellenwinkel angefahren, wobei Änderungen sofort berücksichtigt werden. Die Positionierung auf die Höhe hat dabei Vorrang: Es wird zunächst die eingegebene Höhe und danach der Lamellenwinkel angefahren. Aus Gründen der Einfachheit bleibt dabei der Positionsfehler durch das Winkel-Verfahren unberücksichtigt. Im Handbetrieb (bManMod=TRUE) steuern die Befehle bManUp und bManDwn die Jalousie. Bei einem Wechsel vom Hand- in den Automatikmodus wird in jedem Fall ein Automatik-Fahrbefehl ausgelöst.

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" und der Lamellenwinkel auf seinem Maximum. 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 (der Winkel spielt dabei keine Rolle) fährt die Jalousie zunächst ganz normal mit kontinuierlicher Positionsberechnung nach oben. Erreicht sie den errechneten Positionswert 0%, so wird der Ausgang bUp 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.

Beim Neustart der Anlage referenziert der Baustein in jedem Fall. Die abgeschlossene Initial-Referenzierung wird durch ein TRUE-Signal an Ausgang bInitRefCmpl angezeigt. Die Initial-Referenzierung kann durch einen Handbefehl "herunterfahren" nicht vorzeitig abgeschlossen werden.

Zielgenauigkeit

Zielgenauigkeit

Da der Baustein die Position der Jalousie alleine über Laufzeiten ermittelt, spielt die Zykluszeit der SPS-Task eine entscheidende Rolle bei der Positioniergenauigkeit. Besteht beispielsweise eine Umschwenkzeit von 1s für einen Lamellen-Winkelbereich von -70° bis 10°, so liegt bei einer Zykluszeit von 50ms die Genauigkeit bei +/-4°.

Ein-/Ausgänge

VAR_INPUT

bEn             : BOOL;
stSunbld        : ST_BA_SunBld;
udiTiUp         : UDINT;
udiTiDwn        : UDINT;
udiTurnTiUp     : UDINT;
udiTurnTiDwn    : UDINT;
udiBckLshTiUp   : UDINT;
udiBckLshTiDwn  : UDINT;
lrAnglLmtUp     : LREAL;
lrAnglLmtDwn    : LREAL;

bEn: 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 bUp und bDwn zurück und der Funktionsbaustein verharrt in einem Ruhezustand.

stSunbld: Positioniertelegramm, siehe ST_BA_SunBld

udiTiUp: Komplette Hochfahrzeit [ms]

udiTiDwn: Komplette Zeit zum Herunterfahren [ms]

udiTurnTiUp: Zeit zum Umschwenken der Lamellen in obere Richtung [ms]

udiTurnTiDwn: Zeit zum Umschwenken der Lamellen in untere Richtung [ms]

udiBckLshTiUp: Zeit zum Ausfahren der Umkehrlose in obere Richtung [ms]

udiBckLshTiDwn: Zeit zum Ausfahren der Umkehrlose in untere Richtung [ms]

lrAnglLmtUp: Höchste Stellung der Lamellen [°]

Diese Stellung ist erreicht, wenn die Jalousie ganz hochgefahren ist.

Der Lamellenwinkel λ, so wie er einleitend definiert ist, ist dann typischerweise größer Null.

FB_BA_SunBldActr 6:

lrAnglLmtDwn: Niedrigste Stellung der Lamellen [°].

Diese Stellung ist erreicht, wenn die Jalousie ganz heruntergefahren ist.

Der Lamellenwinkel λ, so wie er einleitend definiert ist, ist dann typischerweise kleiner Null.

FB_BA_SunBldActr 7:

VAR_OUTPUT

bUp           : BOOL;
bDwn          : BOOL;
lrActlPos     : LREAL;
lrActlAngl    : LREAL;
bRef          : BOOL;
bInitRefCompl : BOOL;
bRef          : BOOL;
bBusy         : BOOL;
bErr          : BOOL;
udiErrId      : UDINT;
udiErrArg     : UDINT;

bUp: Steuerausgang Jalousie hoch

bDwn: Steuerausgang Jalousie herunter

lrActlPos: Aktuelle Position in Prozent

lrActlAngl: Aktueller Lamellenwinkel [°]

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

udiRefTi: Referenzier-Countdown-Anzeige [s]

bInitRefCompl: Initial-Referenziervorgang abgeschlossen

bBusy: Ein Positionier- oder Referenziervorgang findet statt.

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

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Voraussetzungen

Entwicklungsumgebung

Zielsystem

erforderliche Bibliothek

erforderliches Supplement

TwinCAT 2.11 R3/x64

PC/CX

TcBA-Bibliothek ab V1.0.0

TS8040 | TwinCAT Building Automation ab V1.0.0