Zählervergleichsausgang setzen (schneller Zähler)
Wenn der Istwert eines schnellen Zählers dem Sollwert entspricht, schaltet ein Interrupt-Prozess den angegebenen Ausgang sofort auf TRUE.
Eingang
Kanal des schnellen Zählers:
FP-S: 0–3
FP-X R: 0–11
FP-X T: 0–7
FP0: 0–3
F168_PulseOutput_Trapezoidal: 0–3
F171_PulseOutput_Trapezoidal: 0–5
Geben Sie für den Sollwert einen 32-Bit-Datenwert innerhalb des folgenden Bereichs ein:
FP0, F168_PulseOutput_Trapezoidal: -838808–+8388607
FPS, FP-X, F171_PulseOutput_Trapezoidal: -2147483467–+2147483648
Ausgang
Ausgang, der auf TRUE schaltet, wenn der Istwert dem Sollwert entspricht:
FP-S, FP0, F168_PulseOutput_Trapezoidal: Y0–Y7
FP-S (V3.1 oder eine neuere Version), F171_PulseOutput_TrapezoidalY0–Y1F
FP-X: Y0–Y29F
Merkmale der Funktion "Zählervergleichsausgang setzen"
Sollwert: 10000
Der SPS-Ausgang wird auf TRUE gesetzt, wenn der Istwert dem Sollwert entspricht. Zusätzlich schaltet der Kontrollmerker des schnellen Zählers auf FALSE und der Befehl wird deaktiviert.
Wenn ein Ausgang angegeben ist, der nicht implementiert wurde, wird nur die WY-Adresse im Speicher gesetzt oder zurückgesetzt.
Das Interrupt-Programm wird ausgeführt, wenn der Istwert dem Sollwert entspricht. Jedes Interrupt-Programm, das in die Taskliste eingegeben wird, ist automatisch aktiviert. Jeder Kanalnummer wird ein spezielles Interrupt-Programm zugewiesen.
SPS-Typ |
FP0, FP-e |
FPS, FP0H |
FP-X (Relaistypen), FP-XH |
FP-X (Transistortypen) |
FP0R |
---|---|---|---|---|---|
Interrupt0 |
Kanal0 |
Kanal0 |
Kanal0 |
Kanal0 |
Kanal0 |
Interrupt1 |
Kanal1 |
Kanal1 |
Kanal1 |
Kanal1 |
Kanal1 |
Interrupt2 |
Kanal2 |
Kanal2 |
|||
Interrupt3 |
Kanal2 |
Kanal2 |
Kanal3 |
Kanal3 |
Kanal2 |
Interrupt4 |
Kanal3 |
Kanal3 |
Kanal4 |
Kanal4 |
Kanal3 |
Interrupt5 |
Kanal5 |
Kanal5 |
|||
Interrupt6 |
Kanal6 |
Kanal6 |
Kanal4 |
||
Interrupt7 |
Kanal7 |
Kanal7 |
Kanal5 |
||
Interrupt8 |
Kanal8 |
||||
Interrupt9 |
Kanal9 |
||||
Interrupt10 |
|||||
Interrupt11 |
KanalA |
||||
Interrupt12 |
KanalB |
Wählen Sie den Eingang des schnellen Zählers für den gewünschten Kanal in den Systemregistern aus.
FP-X, FP0R: Wenn ein schneller Zählerbefehl ausgeführt wird, wird der Kontrollmerker für den benutzten Kanal (z.B. sys_bIsHscChannel0ControlActive) auf TRUE. Andere Schnelle-Zählerbefehle, die denselben Kanal nutzen, können nicht ausgeführt werden, solange der Kontrollmerker auf TRUE steht.
FP0, FP-e, FPS: Der Kontrollmerker "Schneller Zähler" (z.B. sys_bIsHscChannel0ControlActive) und der Kontrollmerker "Pulsausgabe" (z.B. sys_bIsPulseChannel0Active) sind derselben Sondermerker-Nummer zugeordnet (z.B. R903A). Daher ist sowohl der Kontrollmerker für den schnellen Zähler (z.B. sys_bIsHscChannel0ControlActive) als auch der Kontrollmerker für die Pulsausgabe (z.B. sys_bIsPulseChannel0Active) für den betreffenden Kanal TRUE, wenn ein schneller Zählerbefehl oder ein Pulsausgabebefehl ausgeführt wird. Solange dieser Merker auf TRUE steht, kann kein anderer schneller Zählerbefehl oder Pulsausgabebefehl ausgeführt werden.
Wenn sowohl das Hauptprogramm als auch das Interrupt-Programm Code für denselben Kanal enthalten, dürfen die Programme nicht gleichzeitig ausgeführt werden.
Um einen SPS-Ausgang auf FALSE zu setzen, der zuvor durch diesen Befehl auf TRUE geschaltet hatte, verwenden Sie einen RST oder MOVE-Befehl.
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.
Der Status des Kontrollmerkers für den schnellen Zähler oder den Pulsausgang kann sich innerhalb eines Zyklus ändern.
In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.
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_EXTERNAL
out_0: BOOL:=FALSE;
(*output Y0 of PLC*)
END_VAR
VAR
start: BOOL:=FALSE;
(*start condition*)
END_VAR
Wenn die Variable start auf TRUE gesetzt wird, wird die Funktion ausgeführt.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F166_HighSpeedCounter_Set!,Instance,12,0,26,5,,?DEN?Hn_diHscChannel?Ds_diTargetValue?AENO?Cd_Y);
B(B_VARIN,,0,10,2,12,4,);
B(B_VARIN,,10,10,3,12,5,);
B(B_VAROUT,,out_0,26,2,28,4,);
B(B_CONTACT,,start,5,1,7,3,R);
L(1,2,5,2);
L(7,2,12,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(start) then
F166_HighSpeedCounter_Set(n_diHscChannel := 0,
s_diTargetValue := 10,
d_Y => out_0);
END_IF;