Auf das Sonderdatenregister, das den Steuercode für den schnellen Zähler und die Pulsausgabe speichert, kann mit der Systemvariable sys_wHscOrPulseControlCode zugegriffen werden. (Die Systemvariable sys_wHscOrPulseControlCode entspricht dem Sonderdatenregister DT90052.)
Funktionen, die vom Pulsausgabe-Steuercode ausgeführt werden:
Zum Abbremsen im Referenzpunktbereich geben Sie einen Referenzpunkteingang an und setzen Bit 4 des Sonderdatenregisters, in dem der Steuercode für die Pulsausgabe gespeichert wird (sys_wHscOrPulseControlCode), auf TRUE und zurück auf FALSE. Das Referenzpunkt-Bit bleibt gesetzt. Setzen Sie dieses Bit auf FALSE und direkt anschließend auf TRUE, um den Referenzpunkteingang während einer Referenzpunktfahrt ein zweites Mal setzen zu können.
Wenn Sie Bit 3 des Datenregisters, in dem der Steuercode für die Pulsausgabe gespeichert ist (sys_wHscOrPulseControlCode), auf TRUE setzen, wird die Pulsausgabe abgebrochen. In jedem Programm, das Pulsausgabebefehle verwendet, sollte die Möglichkeit eines erzwungenen Halts vorgesehen werden. Wenn Sie Bit 3 auf FALSE zurücksetzen, wird die Pulsausgabe fortgesetzt.
Pulsausgang
Istwert:
1
Wenn Bit 1 des Steuercodes auf TRUE gesetzt ist, wird das Zählen unterbunden und der Istwert behält den aktuellen Wert bei. Das Zählen wird fortgesetzt, wenn Bit 1 auf FALSE zurückgesetzt wird.
Pulsausgang
Istwert:
Bit 0 des Steuercodes der Pulsausgabe (Istwert zurücksetzen)
Wenn Bit 0 des Steuercodes auf TRUE gesetzt ist, wird der Istwert auf 0 zurückgesetzt. Der Istwert behält den Wert 0 bei bis Bit 0 wieder auf FALSE zurückgesetzt wird.
Um die Ausführung eines Befehls abzubrechen, setzen Sie Bit 2 des Datenregisters, in dem der Pulsausgabesteuercode (sys_wHscOrPulseControlCode) gespeichert wird, auf TRUE. Der Kontrollmerker "Pulsausgabe" wird auf FALSE gesetzt. Um die Ausführung des Befehls wieder zu aktivieren, setzen Sie Bit 2 auf FALSE zurück.
Die Bits 0–15 des Steuercodes sind in Vierergruppen angeordnet. Die Biteinstellung in jeder Gruppe wird durch eine Hexadezimalzahl dargestellt (z.B. 00020000 0000 1001 = 16#2009).
Gruppe |
(1) |
Kanalnummer (Kanal n: 16#n) |
|
Gruppe |
0 (fest) |
||
Gruppe |
(2) |
Referenzpunkt-Sucheingang (Bit 4) |
|
0: FALSE |
1: TRUE |
||
Gruppe |
(3) |
Pulsausgang (bit 3) |
|
0: Fortsetzen |
1: Stopp |
||
(4) |
0 (Bit 2, fest) |
||
(5) |
Zählen (Bit 1) |
||
0: Erlauben |
1: Verhindern |
||
(6) |
Istwert auf 0 zurücksetzen (Bit 0) |
||
0: Nein |
1: Ja |
Beispiel: 16#2009
Gruppe |
Wert |
Beschreibung |
|
---|---|---|---|
|
2 |
Kanalnummer: 2 |
|
|
0 |
(fest) |
|
|
0 |
Referenzpunkt-Sucheingang: FALSE |
|
|
9 |
Hex 9 entspricht der Binärzahl 1001 |
|
Pulsausgang: Stopp (Bit 3) |
1 |
||
(Bit 2, fest) |
0 |
||
Zählen: Aktiviert (Bit 1) |
0 |
||
Istwert auf 0 zurücksetzen: Ja (Bit 0) |
1 |
Gruppe |
(1) |
Kanalnummer (Kanal n: 16#n) |
|
Gruppe |
(2) |
1 (fest) |
|
Gruppe |
(3) |
Referenzpunkt-Sucheingang (Bit 4) (siehe Anmerkung) |
|
0: FALSE |
1: TRUE |
||
Gruppe |
(4) |
Pulsausgang (bit 3) |
|
0: Fortsetzen |
1: Stopp |
||
(5) |
Zählen (bit 1) |
||
0: Erlauben |
1: Verhindern |
||
(6) |
Istwert auf 0 zurücksetzen (bit 0) |
||
0: Nein |
1: Ja |
Beispiel: 16#2109
Gruppe |
Wert |
Beschreibung |
|
---|---|---|---|
|
2 |
Kanalnummer: 2 |
|
|
1 |
(fest) |
|
|
0 |
Referenzpunkt-Sucheingang: FALSE |
|
|
9 |
Hex 9 entspricht der Binärzahl 1001 |
|
Pulsausgang: Stopp (Bit 3) |
1 |
||
(Bit 2, fest) |
0 |
||
Zählen: Aktiviert (Bit 1) |
0 |
||
Istwert auf 0 zurücksetzen: Ja (Bit 0) |
1 |
Die Bits 0–15 des Steuercodes sind in Vierergruppen angeordnet. Die Biteinstellung in jeder Gruppe wird durch eine Hexadezimalzahl dargestellt (z.B. 00020001 0000 1001 = 16#2109).
Gruppe |
(1) |
Kanalnummer (Kanal n: 16#n) |
|
Gruppe |
1 (fest) |
||
Gruppe |
(2) |
Startsignal für Positionierung |
|
0: Deaktiviert |
1: Aktiviert |
||
(3) |
Signal für gebremsten Halt |
||
0: Deaktiviert |
1: Aktiviert |
||
(4) |
Referenzpunkt-Sucheingang (bit 4) (siehe Anmerkung) |
||
0: FALSE |
1: TRUE |
||
Gruppe |
(5) |
Pulsausgang (bit 3) |
|
0: Fortsetzen |
1: Stopp |
||
(6) |
Positionierbefehl abbrechen (Bit 2) |
||
0: Fortsetzen |
1: Stopp |
||
(7) |
Zählen (bit 1) |
||
0: Erlauben |
1: Verhindern |
||
(8) |
Istwert auf 0 zurücksetzen (bit 0) |
||
0: Nein |
1: Ja |
Beispiel: 16#2109
Gruppe |
Wert |
Beschreibung |
|
---|---|---|---|
|
2 |
Kanalnummer: 2 |
|
|
1 |
(fest) |
|
|
0 |
Startsignal für Positionierung: deaktiviert |
|
Anforderung für gebremsten Halt: deaktiviert |
|||
Referenzpunkt-Sucheingang: FALSE |
|||
|
9 |
Hex 9 entspricht der Binärzahl 1001 |
|
Pulsausgang: Stopp (Bit 3) |
1 |
||
Positionierbefehl abbrechen (Bit 2) |
0 |
||
Zählen: Aktiviert (Bit 1) |
0 |
||
Istwert auf 0 zurücksetzen: Ja (Bit 0) |
1 |
Die Bits 0–15 des Steuercodes sind in Vierergruppen angeordnet, wobei jede Gruppe die Einstellungen für einen Kanal enthält.Die Bits 0–15 des Steuercodes sind in Vierergruppen angeordnet, wobei jede Gruppe die Einstellungen für einen Kanal enthält. Die Biteinstellung in jeder Gruppe wird durch eine Hexadezimalzahl dargestellt (z.B. 0000 0000 1001 0000 = 16#90).
Gruppe |
|
|
Kanal |
1 |
0 |
0: Fortsetzen
1: Stopp
0: FALSE
1: TRUE
0: Erlauben
1: Verhindern
0: Nein
1: Ja
Beispiel: 16#90
Gruppe |
Wert |
Beschreibung |
|
---|---|---|---|
|
9 |
Kanalnummer: 1 Hex 9 entspricht der Binärzahl 1001 |
|
Pulsausgang: Stopp (Bit 3) |
1 |
||
Referenzpunkt-Sucheingang: FALSE (bit 2) |
0 |
||
Zählen: Aktiviert (Bit 1) |
0 |
||
Istwert auf 0 zurücksetzen: Ja (Bit 0) |
1 |
||
|
0 |
– |
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
bEnableNearHome: BOOL:=FALSE;
END_VAR
VAR CONSTANT
PLS_CH2_ENABLE_NEAR_HOME: WORD:=16#2010;
(*Enables near home input for channel 2*)
PLS_CH2_CONTINUE: WORD:=16#2000;
(*Disables near home input for channel 2
and starts deceleration*)
END_VAR
Bei Referenzpunktfahrten ist der Referenzpunkt-Sucheingang für Kanal 2 aktiviert.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,PLS_CH2_ENABLE_NEAR_HOME,20,2,22,4,);
B(B_VARIN,,PLS_CH2_CONTINUE,20,6,22,8,);
B(B_F,E_MOVE!,Instance,22,0,28,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,28,2,30,4,);
B(B_F,E_MOVE!,Instance,22,4,28,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,28,6,30,8,);
B(B_CONTACT,,bEnableNearHome,4,1,6,3,R);
L(7,2,7,6);
L(1,2,4,2);
L(6,2,22,2);
L(7,6,22,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bEnableNearHome) then
PLS_CH2_ENABLE_NEAR_HOME:=sys_wHscOrPulseControlCode;
PLS_CH2_CONTINUE:=sys_wHscOrPulseControlCode;
end_if;
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
Für Kanal 0 wird ein erzwungener Stopp ausgeführt.
if DF(bStopPulseOutput) then
PLS_CH2_STOP_PULSE_OUTPUT:=sys_wHscOrPulseControlCode;
PLS_CH2_CONTINUE:=sys_wHscOrPulseControlCode;
end_if;
Wenn ein Stopp erzwungen wird, kann dies zu einer unterschiedlichen Zählung am Ausgang der SPS und am Eingang des Motors führen. Sie sollten deshalb eine Referenzpunktfahrt ausführen, nachdem die Pulsausgabe angehalten wurde.