Beispiel: FB_SMIVenetianBlind
Jalousiesteuerung.
VAR_INPUT
bUp : BOOL;
bDown : BOOL;
bStop : BOOL;
bSwitchOverUp : BOOL;
bSwitchOverDown : BOOL;
tSwitchOverTime : TIME := t#400ms;
bStep : BOOL;
iAngle : INT := 0;
bSetPosition : BOOL;
bySetPosition : BYTE := 0;
bSafetyPosition : BOOL;
tPositionRead : TIME := t#1s;
dwAddr : DWORD := 0;
eAddrType : E_SMIAddrType := eSMIAddrTypeAddress;
dwAddrOption : DWORD := 0;
dwMasterDevAddr : DWORD := 0;
dwOptions : DWORD := 0;
bUp: Fährt die Jalousie hoch. Beginnt im Schleichgang und erhöht dann die Geschwindigkeit.
bDown: Fährt die Jalousie runter. Beginnt im Schleichgang und erhöht dann die Geschwindigkeit.
bStop: Stoppt die Jalousie.
bSwitchOverUp: Fährt die Jalousie schrittweise hoch. Liegt das Signal länger an als tSwitchOverTime, geht die Jalousie in Selbsthaltung.
bSwitchOverDown: Fährt die Jalousie schrittweise runter. Liegt das Signal länger an als tSwitchOverTime, geht die Jalousie in Selbsthaltung.
tSwitchOverTime: Gibt an, wie lange bSwitchOverUp und bSwitchOverDown anliegen müssen, bevor die Jalousie in Selbsthaltung geht. Wenn der Wert 0 beträgt, geht die Jalousie sofort in Selbsthaltung.
bStep: Fährt die Jalousie an die angegebene Position.
iAngle: Winkel (-510° ... +510°) auf den die Jalousie gefahren wird, nachdem eine steigende Flanke am Eingang bStep erkannt wurde. Negative Werte entsprechen hochfahren, positive Werte runterfahren.
bSetPosition: Fährt die Jalousie an die unter bySetPosition angegebene Position.
bySetPosition: Position in Prozent, zu der die Jalousie gefahren wird, nachdem eine steigende Flanke am Eingang bSetPosition erkannt wurde. 0 % entspricht vollständig eingefahren, 100 % vollständig ausgefahren.
bSafetyPosition: Die Sicherheitsposition wird angefahren. Es ist nicht möglich die Jalousie zu bedienen während dieser Eingang gesetzt ist.
tPositionRead: Intervall, in dem die aktuelle Position vom SMI-Motor ausgelesen wird, wenn keine Positionierungsbefehle verarbeitet werden.
dwAddr: Herstellercode (0-15), Adresse eines Teilnehmers (0-15), Bitfeld (16 Bit) für die Gruppenadressierung oder Slave-Id (32 Bit Key-Id). Wird ein Sammelruf (Broadcast) versendet, so hat dieser Eingang keine Bedeutung.
eAddrType: Legt fest, ob der Eingang dwAddr als Herstellercode, Adresse eines Teilnehmers, zur Gruppenadressierung oder als Slave-Id ausgewertet werden soll.
dwAddrOption: Wird das SMI-Gerät per Slave-Id adressiert (eAddrType = eSMIAddrTypeSlaveId), so muss über diesen Eingang der Herstellercode angegeben werden.
dwMasterDevAddr: Adresse (0-15) vom SMI-Motor, von dem die aktuelle Position ausgelesen werden soll, wenn eAddrType != eSMIAddrTypeAddress ist.
dwOptions: Reserviert für zukünftige Entwicklungen.
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
udiErrorId : UDINT;
byActualPosition : BYTE;
bBusy: Bei der Aktivierung des Bausteins wird der Ausgang gesetzt und bleibt so lange aktiv, bis der Befehl abgearbeitet wurde.
bError: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist.
udiErrorId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls.
byActualPosition: Die ausgelesene Position in Prozent. 0 % entspricht der oberen Endlage und 100 % der unteren Endlage.
VAR_IN_OUT
stCommandBuffer : ST_SMICommandBuffer;
stCommandBuffer: Verweis auf die Struktur zur Kommunikation (Puffer) mit dem FB_KL6831KL6841Communication()-Baustein.
Voraussetzungen
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken |
---|---|---|
TwinCAT 2.11 R3/x64 ab Build 2238 | PC/CX, BX oder BC | TcSMI-Bibliothek ab V1.0.0 |