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 Steuercode des schnellen Zählers ausgeführt werden:
Um die Ausführung eines Befehls abzubrechen, setzen Sie Bit 3 des Datenregisters, in dem der Steuercode für den schnellen Zähler (sys_wHscOrPulseControlCode) gespeichert wird, auf TRUE. Der Kontrollmerker "Schneller Zähler" wechselt dann zu FALSE. Um die Ausführung des schnellen Zählerbefehls wieder zu aktivieren, setzen Sie Bit 3 auf FALSE zurück.
X0 Schneller Zählereingang
Wenn Bit 2 des Steuercodes auf TRUE gesetzt wird, ist es nicht möglich, den in den Systemregistern angegebenen Eingang zurückzusetzen. Die Zählung wird fortgesetzt, auch wenn der Rücksetzeingang auf TRUE gesetzt wurde. Der Rücksetzeingang bleibt deaktiviert bis Bit 2 auf 0 zurückgesetzt wird.
Steueroperation der Zählereingabe
X0 Schneller Zählereingang
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.
X0 Schneller Zählereingang
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.
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).
0: Fortsetzen/1: löschen
0: Aktiviert /1: Deaktiviert
0: Aktiviert /1: Deaktiviert
0: Nein/1: Ja
Beispiel: 16#2009
Gruppe |
Wert |
Beschreibung |
|
---|---|---|---|
IV |
2 |
Kanalnummer: 2 |
|
III |
0 |
(fest) |
|
II |
0 |
(fest) |
|
I |
9 |
Hex 9 entspricht der Binärzahl 1001 |
|
Schnellen Zählerbefehl abbrechen: Löschen (Bit 3) |
1 |
||
Rücksetzeingang: Aktiviert (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).
0: Fortsetzen /1: Löschen
0: Aktiviert/1: Deaktiviert
0: Aktiviert/1: Deaktiviert
0: Nein/1: Ja
Gruppe |
IV |
III |
II |
I |
Kanal |
3 |
2 |
1 |
0 |
Gruppe |
Wert |
Beschreibung |
|
---|---|---|---|
IV |
0 |
– |
|
III |
0 |
– |
|
II |
9 |
Kanalnummer: 1 Hex 9 entspricht der Binärzahl 1001 |
|
Schnellen Zählerbefehl abbrechen: Löschen (Bit 3) |
1 |
||
Rücksetzeingang: Aktiviert (Bit 2) |
0 |
||
Zählen: Aktiviert (Bit 1) |
0 |
||
Istwert auf 0 zurücksetzen: Ja (Bit 0) |
1 |
||
I |
0 |
– |
Wenn der Rücksetzeingang auf TRUE gesetzt wird, wird der Istwert auf 0 zurückgesetzt. Mit Bit 2 (Rücksetzeingang des schnellen Zählers aktivieren/deaktivieren) können Sie den in den Systemregistern festgelegten Rücksetzeingang deaktivieren.
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
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH0_RESET_ELAPSED_VALUE: WORD:=16#0001;
(*Resets elapsed value of channel 0*)
HSC_CH0_CONTINUE: WORD:=16#0000;
(*Continues counting in channel 0*)
END_VAR
VAR
END_VAR
Das Zurücksetzen wird in Schritt 1 ausgeführt; dann wird direkt anschließend 0 in Schritt 2 eingegeben, um die Zählung zu starten. Durch das alleinige Zurücksetzen wird die Zählung nicht gestartet.
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,,HSC_CH0_RESET_ELAPSED_VALUE,22,2,24,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH0_CONTINUE,22,6,24,8,);
B(B_F,E_MOVE!,Instance,24,0,30,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,2,32,4,);
B(B_F,E_MOVE!,Instance,24,4,30,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,6,32,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,24,2);
L(8,6,24,6);
L(8,2,8,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
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.
VAR
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH1_RESET_ELAPSED_VALUE: WORD:=16#1001;
(*Resets elapsed value of channel 1*)
HSC_CH1_CONTINUE: WORD:=16#1000;
(*Continues counting in channel 1*)
END_VAR
VAR
END_VAR
Das Zurücksetzen wird in Schritt 1 ausgeführt; dann wird direkt anschließend 0 in Schritt 2 eingegeben, um die Zählung zu starten. Durch das alleinige Zurücksetzen wird die Zählung nicht gestartet.
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,,HSC_CH1_RESET_ELAPSED_VALUE,24,2,26,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH1_CONTINUE,24,6,26,8,);
B(B_F,E_MOVE!,Instance,26,0,32,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,2,34,4,);
B(B_F,E_MOVE!,Instance,26,4,32,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,6,34,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,26,2);
L(1,0,1,8);
L(8,6,26,6);
L(8,2,8,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;