FB_BARLightActuator

Dieser Baustein dient zur Ansteuerung eines konventionellen Lichtaktors. Die Ausgänge decken die Wertebereiche 0..100%, 0..32767 und Ein/Aus ab.
Darüber hinaus enthält der Baustein einen Szenenspeicher, in denen bis zu 21 verschiedene Lichtwerte hinterlegt werden können.
Der Funktionsbaustein gibt grundsätzlich die Werte, welche am Eingang lrTargetValue anliegen, an den Ausgang lrDimValue durch. Eine positive Flanke am Eingang bCallScene setzt den Ausgang hingegen auf den Lichtwert, welcher in der Szenentabelle arrLightScenes unter dem Index usiSelectedScene hinterlegt ist. Der Ausgang bSceneMode wechselt dann auf TRUE. Wechselt der Szenenindex usiSelectedScene, so wird der neu gewählte Szenenwert erst durch eine erneute positive Flanke an bCallScene übernommen. Durch eine Wertänderung am Eingang lrTargetValue oder einer positiven Flanke an bStopScene wird der Szenenmodus wieder verlassen. Der Ausgang bSceneMode geht wieder auf FALSE und der Ausgang lrDimValue folgt wieder dem Eingang lrTargetValue. Ein TRUE-Signal an bSaveScene speichert den aktuellen Lichtausgabewert in die Szenentabelle arrLightScenes unter dem Index usiSelectedScene.
Der Lichtausgabewert lrDimValue folgt den ihm vorgegebenen Zielwerten immer über eine Rampe. Diese ist wie bei der Anwenderfunktion FB_BARLightCircuitDim definiert durch eine Rampenzeit - hier uiSecDimTime - welche die Zeitspanne in Sekunden angibt, die der Lichtausgabewert benötigen soll, um sich um 100% zu ändern:
Da auch die Lichtsensor-Funktion FB_BARLightCircuitDim eine Rampenfunktion zur Zielwertvorgabe beinhaltet, wird die der hier beschriebenen Lichtaktorfunktion "secondary dimtime" - uiSecDimTime - genannt.
Haben beide unterschiedliche Werte, so ist immer diejenige Rampenzeit die maßgebliche, welche größer ist:
Beispiel1:
In dieser Konstellation wird der Baustein FB_BARLightCircuitDim seinen Ausgabewert lrDimValue in 10s von 0% auf 100% ändern. Der Baustein FB_BARLightActuator kann diesen sich kontinuierlich ändernden Sollwerten jedoch nur mit einer Rampenzeit von 20s (bezogen auf eine Änderung von 0% bis 100%) folgen. Daher ist diese Rampenzeit letztendlich die resultierende.
Beispiel2:

Anders herum könnte der Baustein FB_BARLightActuator hier mit einer Rampenzeit von 10s viel schneller folgen. Da der Dimmbaustein FB_BARLightCircuitDim seine Sollwerte in diesem Beispiel jedoch nur mit einer Rampenzeit von 20s vorgibt, ist auch hier diese längere Zeit maßgeblich.
Zu beachten ist in diesem Beispiel, dass ein Kurztastendruck am Baustein FB_BARLightCircuitDim den Ausgang lrDimValue unverzögert auf den intern gespeicherten Wert ändert (siehe FB_BARLightCircuitDim). Damit ist dann die Rampenzeit am FB_BARLightActuator maßgebend.
VAR_INPUT
eDataSecurityType : E_HVACDataSecurityType;
lrTargetValue : LREAL;
usiSelectedScene : USINT;
bCallScene : BOOL;
bStopScene : BOOL;
bSaveScene : BOOL;
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. |
lrTargetValue: Zielwert der Lichtausgabe in 0..100%;
usiSelectedScene: Gewählte Lichtszene, 0..20;
bCallScene: Setzt den Ausgabewert rampengesteuert auf den unter dem Index usiSelectedScene (arrLightScenes) eingetragenen Lichtwert.
bStopScene: Setzt den Ausgabewert wieder auf den Wert lrTargetValue zurück. Die Änderung erfolgt ebenfalls rampengeführt.
bSaveScene: Speichert den aktuellen Lichtwert am Ausgang lrDimvalue in der Lichtwerttabelle arrLightScenes unter dem Index usiSelectedScene .
VAR_OUTPUT
lrDimValue : LREAL;
iDimValue : INT;
bOn : BOOL;
bSceneMode : BOOL;
bError : BOOL;
udiErrorId : UDINT;
lrDimValue: Ausgabe-Lichtwert in 0..100%.
iDimValue: Ausgabe-Lichtwert in 0..32767.
bOn: Ausgabe-Lichtstatus: lrDimmValue=0.0 => bOn=FALSE - lrDimmValue>0.0 => bOn=TRUE.
bSceneMode: Der Baustein gibt derzeit einen Szenenwert aus und nicht den Wert lrTargetValue am Eingang aus.
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.
uiSecDimTime : UINT;
arrLightScenes : ARRAY[0..20] OF LREAL;
uiSecDimTime: Rampenzeit in Sekunden. Dies ist die Zeit, die die Lichtaktor-Funktion benötigt, um von 0..100% zu regeln.
arrLightScenes: Tabelle von gespeicherten Lichtwerten.
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 |