Produktübersicht
CASE Taster OF
0: ACTION := NONE;
1: ACTION := UP;
2: ACTION := DOWN;
4: ACTION := LEFT;
8: ACTION := RIGHT;
16: ACTION := SELECT;
END_CASE;
In diesem Fall ist "ACTION" ein neu definierter ENUM-Type. Es kann auch die gewünschte Aktion sofort
aktiviert werden.
Für die kombinierten Funktionen werden die Zahlwerte addiert. Also UP (1) und RIGHT (8) wäre dann 8 + 1
= 9 (Rechts-Oben). Es sind auf diese Weise nur sinnvolle Kombinationen möglich also Gegenüber liegende
Schalterpositionen sind ohne Zerstörung des Schalters nicht anwählbar.
Will man die Auswertung nicht selbst vornehmen, so stellt das TwinCAT-System eine Bibliotheksfunktion
bereit, die die Umwandlung der Tastereingabe in einen ENUM-Type realisiert. Dazu muss zuerst die
Bibliothek für die CX-Systeme: TcSystemCX.lib im Bibliotheksverwalter eingebunden werden. Die Funktion
heißt " F_CXNaviSwitch(iCX1100_IN : USINT) " und liefert einen ENUM-Type. Dieser codiert namentlich die
gedrückte Richtung des Schalters also z.B. e_CX1100_NaviSwitch_MIDDLE für <Mitte>. Alle gültigen
Varianten lauten:
• e_CX1100_NaviSwitch_IDLE
• e_CX1100_NaviSwitch_MIDDLE
• e_CX1100_NaviSwitch_TOP
• e_CX1100_NaviSwitch_TOPRIGHT
• e_CX1100_NaviSwitch_RIGHT
• e_CX1100_NaviSwitch_BOTTOMRIGHT
• e_CX1100_NaviSwitch_BOTTOM
• e_CX1100_NaviSwitch_BOTTOMLEFT
• e_CX1100_NaviSwitch_LEFT
• e_CX1100_NaviSwitch_TOPLEFT
• e_CX1100_NaviSwitch_MIDDLE_TOP
• e_CX1100_NaviSwitch_MIDDLE_TOPRIGHT
• e_CX1100_NaviSwitch_MIDDLE_RIGHT
• e_CX1100_NaviSwitch_MIDDLE_BOTTOMRIGHT
• e_CX1100_NaviSwitch_MIDDLE_BOTTOM
• e_CX1100_NaviSwitch_MIDDLE_BOTTOMLEFT
• e_CX1100_NaviSwitch_MIDDLE_LEFT
• e_CX1100_NaviSwitch_MIDDLE_TOPLEFT
Weitere Details zu der Funktion sind in der Dokumentation zu TwinCAT nachzulesen. In einem Programm
kann die Funktion wie folgt eingesetzt werden: (die Deklaration und Verknüpfung sind wie im oberen Beispiel
angegeben)
CASE F_CXNaviSwitch(Taster) OF
e_CX1100_NaviSwitch_IDLE :; (* do nothing *)
e_CX1100_NaviSwitch_MIDDLE :call_select; (* select item *)
e_CX1100_NaviSwitch_TOP :call_prev_item;(* previous menue item *)
e_CX1100_NaviSwitch_RIGHT :call_inc_value;(* increase value *)
e_CX1100_NaviSwitch_BOTTOM :call_next_item;(* next menue item *)
e_CX1100_NaviSwitch_LEFT :call_dec_value;(* decrease value *)
END_CASE;
Die weitere Auswertung der Schaltereingabe erfolgt dann auch hier im fortlaufenden Programm.
24
Version: 2.1
CX1100-00xx