FB_BARLightCircuitDim
Dieser Baustein stellt einen Lichtschaltkreis mit Dimmfunktionalität dar.
Der Baustein kennt drei verschiedene Modi, welche über den Eingang uiLightCtrlMode eingestellt werden können:
- Automatikbetrieb
- Hand-Ein-Betrieb
- Hand-Aus-Betrieb
Im Automatikbetrieb (uiLightCtrlMode=0) lässt sich der Baustein über die Eingänge bSwitch, bCentralOff und bCentralOn steuern. Während durch steigende Flanken an bCentralOff und bCentralOn der Ausgang lrDimValue auf 0.0 bzw. auf den vor dem letzten Ausschalten erreichten Wert gestellt wird, hängt das Verhalten des Einganges bSwitch von der Signaldauer ab. Ein kurzes TRUE-Signal unterhalb uiSwitchOverTime in Millisekunden schaltet Ausgang lrDimValue. Ist der Ausgang lrDimValue zunächst größer als 0.0, so wird er auf 0 geschaltet und der vorherige Wert abgespeichert. Ist er hingegen 0.0, so wird der Ausgang auf den zuvor intern gespeicherten Wert gestellt. Dieser gespeicherte Wert ist im Einschaltzustand des Programms auf den Maximalwert, siehe unten, gesetzt. Anders als bei den Eingängen bCentralOff und bCentralOn löst hier die fallende Flanke das Schaltereignis aus. Ein langes TRUE-Signal an bSwitch startet den Dimmvorgang. Dabei wird grundsätzlich nur zwischen den eingestellten Minimal- und Maximalwerten (lrMinDimValue und lrMaxDimValue) gedimmt. Die Dimmrampe ist dabei durch uiRampTime in Sekunden definiert. Diese Dimmzeit bezieht sich auf den Dimmbereich von 0 bis 100 Prozent, auch wenn die Grenzen lrMinDimValue und lrMaxDimValue anders gewählt sind. Ist der Ausgabewert lrDimmValue an eine der Grenzen angelangt, ohne dass bSwitch wieder auf FALSE zurückfällt, so verharrt er dort für die Zeit uiCycleDelay in Millisekunden, bevor wieder zum anderen Grenzwert hin gedimmt wird.
Ausnahme: Ein Wert uiCycleDelay von 0 wird nicht als sofortige Dimmrichtungsumkehr interpretiert, sondern deaktiviert diese. Erst ein erneutes langes TRUE-Signal an bSwitch startet das Dimmen in entgegen gesetzter Richtung.
In den Hand-Betriebsmodi wird bei uiLightCtrlMode=1 der Ausgabewert lrDimValueOut konstant auf den Wert lrManualDimValue und bei uiLightCtrlMode=2 konstant auf den Wert 0.0 gesetzt.
VAR_INPUT
eDataSecurityType : E_HVACDataSecurityType;
uiLightCtrlMode : UINT;
bSwitch : BOOL;
bCentralOn : BOOL;
bCentralOff : 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. |
uiLightCtrlMode: Betriebsmodus.
- 0: Automatikbetrieb, der Ausgabewert lrDimmValue kann durch die die Befehlseingänge bSwitch, bCentralOn und bCentralOff beeinflusst werden
- 1: Hand-Ein-Betrieb, der Wert lrManualDimValue wird unverzögert an den Ausgang lrDimValueOut ausgegeben, alle anderen Befehlseingänge sind unwirksam.
- 2: Hand-Aus-Betrieb, der Wert 0.0 wird unverzögert an den Ausgang lrDimValueOut ausgegeben, alle anderen Befehlseingänge sind unwirksam.
bSwitch: Ein kurzes TRUE-Signal unterhalb uiSwitchOverTime in Millisekunden schaltet Ausgang lrDimValue. Ist der Ausgang lrDimValue zunächst größer als 0.0, so wird er auf 0 geschaltet und der vorherige Wert abgespeichert. Ist er hingegen 0.0, so wird der Ausgang auf den zuvor intern gespeicherten Wert gestellt. Dieser gespeicherte Wert ist im Einschaltzustand des Programms auf den Maximalwert, siehe unten, gesetzt.
Ein langes TRUE-Signal größer uiSwitchOverTime in Millisekunden startet den Dimmvorgang, wobei sich die Dimmrichtung verändert, wenn zwei Lang-Signale am Eingang bSwitch aufeinander folgen.
bCentralOn: Schaltet den Ausgang lrDimValueOut auf den zuvor (beim letzten Ausschalten) gespeicherten Dimmwert, siehe bSwitch.
bCentralOff: Schaltet den Ausgang lrDimValueOut auf 0.0.
Hinweis: Alle Schaltbefehle, bSwitch, bCentralOn und bCentralOff sind nur im Automatik-Modus wirksam.
VAR_OUTPUT
lrDimValue : LREAL;
bLight : BOOL;
bError : BOOL;
udiErrorId : UDINT;
lrDimValue: Lichtausgabewert, kann Werte zwischen lrMinDimValue und lrMaxDimValue annehmen, siehe VAR_IN_OUT, maximal jedoch 0..100%.
bLight: Ist FALSE, wenn lrDimmValue = 0.0, andernfalls TRUE.
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.
uiSwitchOverTime : UINT;
uiDimRampTime : UINT;
uiCycleDelay : UINT;
lrMinDimValue : LREAL;
lrMaxDimValue : LREAL;
lrManualDimValue : LREAL;
uiSwitchOverTime: Umschaltzeit in Millisekunden vom Tast- in den Dimmmodus.
uiDimRampTime: Rampenzeit in Sekunden (benötigte Zeit, um von 0% auf 100% zu dimmen).
uiCycleDelay: Umschaltzeit in Millisekunden vom automatischen Wechsel zwischen Auf- und Abdimmen. Ist dieser Wert gleich Null, so ist der automatische Wechsel inaktiv.
lrDimMinValue: Minimaler Lichtwert in %, der durch Dimmen erreicht werden kann.
lrDimMaxValue: Maximaler Lichtwert in %.
lrManualDimValue: Ausgabe-Dimmwert im Hand-Ein-Modus (uiLightCtrlMode=1).
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 |