Funktionsweise des Tasters

Die CX1100-000x Netzteile verfügen alle über eine 4 + 1 Navigationstaster. Es können als fünf Grundzustände über den Taster eingegeben werden:

  1. UP
  2. DOWN
  3. LEFT
  4. RIGHT
  5. SELECT

Darüber hinaus können auch kombinierte Eingaben also UP + RIGHT oder UP + RIGHT + SELECT  erfasst werden.  Die Werte des Tasters werden in einem Register des "Auxiliary Control Blocks" ACB abgelegt. Details sind in der Architekturbeschreibung nachzulesen.

In einem SPS-Programm wird kann auf das Register zugegriffen werden und der Wert ausgewertet werden. Dazu muss in dem SPS-Programm zunächst eine Variable vom Type USINT angelegt werden. Diese wird dann im TwinCAT System Manager mit dem IN-Register des CX1100 verbunden.

Funktionsweise des Tasters 1:

Die Abbildung zeigt die verknüpften Signale (hellrot unterlegt). Über die Variable Taster kann jetzt im SPS-Programm auf den Taster zugegriffen werden. Das SPS-Programm hat die folgende Gestallt. Zuerst wird eine externe Variable als Eingang deklariert. (In diesem Beispiel an Adresse 0)

PROGRAM MAIN
VAR
    Taster AT %IB0 : USINT;
END_VAR

Über ein einfaches CASE-Statement kann der Schalter dann ausgewertet, und die gewünschte Funktion initiiert werden z.B.:

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:

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.