BECKHOFF CP-Link3 Benutzerhandbuch

Seite 56

Advertising
background image

Page 56

Hinweis

Konfiguration der Clients

Das manuelle Setzen des HID-Focus ist nur für Clients möglich, die für den HID-Focus
Modus "Manual" konfiguriert sind (siehe auch Client-Konfiguraion - HID-Focus).

Hinweis

CP-Link 3 Service

Das manuelle Setzen des HID-Focus ist nur möglich, wenn der CP-Link 3 Service aktiv
ist (siehe auch CP-Link 3 Service ).

Beispielprogramm: HID-Focus über Sondertaste steuern

Das manuelle Setzen des HID-Focus kann z.B. über eine Sondertaste des Client gesteuert werden. Über den TwinCAT
System Manager wird die Sondertaste mit der entsprechenden Input-Variable des PLC Programms verknüpft. Pro Client
wird eine FB_CPLink3_AcquireHidFocus Instanz erzeugt und mit der IP Adresse des Clients konfiguriert. Nach Drücken
der Sondertaste an einem Client, wobei der Baustein R_TRIG die steigende Flanke detektiert, versucht das PLC
Programm über die entsprechende FB_CPLink3_AcquireHidFocus Instanz den HID-Focus zu setzen. Der
Funktionsbaustein kann außerdem einen Ausgang ansteuern (z.B. eine LED) die signalisiert, ob der HID-Focus
erfolgreich gesetzt wurde oder ob noch versucht wird den Focus zu holen. Erneutes Drücken der Sondertaste setzt den
HID-Focus wieder zurück.

Die drei Instanzen des Funktionsblocks FB_CPLink3_AcquireHidFocus nutzen die Variable hFocus um untereinander
Informationen auszutauschen. Damit wird z.B. gewährleistet, dass nur die Instanz, die den HID-Focus erfolgreich gesetzt
hat, diesen auch wieder zurücksetzen kann.

Das PLC-Programm sieht für drei Clients folgendermaßen aus:

PROGRAM MAIN
VAR
button1 AT%IX0.0 : BOOL;
button2 AT%IX0.1 : BOOL;
button3 AT%IX0.2 : BOOL;

led1 AT%QX0.0 : BOOL;
led2 AT%QX0.1 : BOOL;
led3 AT%QX0.2 : BOOL;

hFocus : T_HCPLink3HidFocus;
fbPanel1 : FB_CPLink3_AcquireHidFocus := ( setIP := '192.168.1.1' );
fbPanel2 : FB_CPLink3_AcquireHidFocus := ( setIP := '192.168.1.2' );
fbPanel3 : FB_CPLink3_AcquireHidFocus := ( setIP := '192.168.1.3' );

trigger1 : R_TRIG;
trigger2 : R_TRIG;
trigger3 : R_TRIG;
END_VAR

(* Panel 1 *)

trigger1( CLK := button1 );
IF trigger1.Q THEN
fbPanel1.bEnable := NOT fbPanel1.bEnable;
END_IF
fbPanel1( hFocus:= hFocus, bLED=>LED1);

(* Panel 2 *)

Advertising