Eingangspulsmessung
Dieser Befehl misst die Anzahl der Eingangspulse innerhalb einer angegebenen Zähl- und Pulsperiode.
Eingang
Kanal des schnellen Zählers: 0–5
Zählperiode [ms]:
1–5000 (1ms–5s).
Anzahl der Zählperioden: 1–5
Einheit der Pulsperiodenmessung
0: Pulsperiode wird nicht gemessen
1: Die Pulsperiode wird in ms gemessen
2: Die Pulsperiode wird in ms gemessen
3: Die Pulsperiode wird in ms und ms gemessen
Wert für Zeitüberschreitung der Pulsperiodenmessung [ms]:
0: Keine Zeitüberschreitung
1: 100ms
2: 200ms
3: 300ms
4: 500ms
Ausgang
Durchschnittsanzahl der Pulse pro Zählperiode (Anzahl der Pulse pro Zählperiode/Anzahl der Zählperioden)
Pulsperiode m
Pulsperiode [ms]
Für die Eingangspulsmessung müssen die Kanalnummer, die Zählperiode (1ms–5s) und die Anzahl der Zählperioden (1–5) angegeben werden. Diese Parameter werden zur Berechnung der durchschnittlichen Anzahl von Eingangspulsen pro Zählperiode verwendet.
Die Einheit für die Messung der Pulsperiode ([ms], [ms] oder beide) wird vom Benutzer festgelegt.
Wenn die Messung in ms erfolgt, wird die Pulsperiode gemessen und sofort bei der Ausführung des Befehls ausgegeben. Ein Maximalwert von ca. 174,4ms ist messbar.
Wenn die Messung in ms erfolgt, wird der Wert der Pulsperiode nach jeder Messung aktualisiert. Ein Maximalwert von ca. 49,7 Tagen ist messbar. Wenn die Messung noch nicht abgeschlossen ist, kann die Wartezeit eingestellt werden, nachdem die gemessene Pulsperiode auf -1 gesetzt wurde.
Während der ersten Zählperioden nach dem Befehlsstart, wird -1 ausgegeben, bis die angegebene Anzahl von Zählperioden erreicht ist.
Wenn die Pulsperiode den messbaren Bereich übersteigt oder wenn die Messung noch nicht abgeschlossen ist, wird die gemessene Pulsperiode auf -1 gesetzt.
Wählen Sie den Eingang des schnellen Zählers für den gewünschten Kanal in den Systemregistern aus.
Um die Pulsmessung mit diesem Befehl auszuführen, muss die Ausführungsbedingung auf TRUE gesetzt bleiben.
Um die Messung zu stoppen, setzen Sie die Ausführungsbedingung auf FALSE.
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.
Dieser Befehl kann gleichzeitig auf maximal zwei Kanälen 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.
Der Status des Kontrollmerkers für den schnellen Zähler oder den Pulsausgang kann sich innerhalb eines Zyklus ändern.
wenn der Kanal des schnellen Zählers bereits von einem anderen schnellen Zähler oder einem Pulsausgabebefehl verwendet wird
wenn die Anzahl der Kanäle 3 oder mehr beträgt
wenn der Kanal des schnellen Zählers bereits von einem anderen schnellen Zähler oder einem Pulsausgabebefehl verwendet wird
wenn die Anzahl der Kanäle 3 oder mehr beträgt
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
bStartMeasurement: BOOL:=FALSE;
diNumberOfPulses: DINT:=0;
diPulsePeriodTime_μs: DINT:=0;
diPulsePeriodTime_ms: DINT:=0;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 9 ;
NETWORK_BODY
B(B_F,F178_HighSpeedCounter_Measure!,Instance,25,1,53,9,,?DEN?Ds1_iHscChannel?Ds2_NumberOfPulses_iPeriodTime_ms?Ds1_NumberOfPulses_iNumberOfPeriods?Ds1_PulsePeriod_iMeasurementMethod?Ds1_PulsePeriod_iTimeoutValueOf1msUnitOutput?AENO?Ad_NumberOfPulses_diAverage?Ad_PulsePeriod_diTime_μs?Ad_PulsePeriod_diTime_ms);
B(B_VARIN,,0,23,3,25,5,);
B(B_VARIN,,10,23,4,25,6,);
B(B_VARIN,,5,23,5,25,7,);
B(B_VARIN,,SYS_F178_HSC_MEASUREMENT_μs_ms,23,6,25,8,);
B(B_VARIN,,0,23,7,25,9,);
B(B_VAROUT,,diNumberOfPulses,53,3,55,5,);
B(B_VAROUT,,diPulsePeriodTime_μs,53,4,55,6,);
B(B_VAROUT,,diPulsePeriodTime_ms,53,5,55,7,);
B(B_CONTACT,,bStartMeasurement,9,2,11,4,);
L(1,3,9,3);
L(11,3,25,3);
L(1,0,1,9);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (bStartMeasurement) then
F178_HighSpeedCounter_Measure(s1_iHscChannel := 0,
s2_NumberOfPulses_iPeriodTime_ms := 10,
s1_NumberOfPulses_iNumberOfPeriods := 5,
s1_PulsePeriod_iMeasurementMethod := SYS_F178_HSC_MEASUREMENT_μs_ms,
s1_PulsePeriod_iTimeoutValueOf1msUnitOutput := 0,
d_NumberOfPulses_diAverage => diNumberOfPulses,
d_PulsePeriod_diTime_μs => diPulsePeriodTime_μs,
d_PulsePeriod_diTime_ms => diPulsePeriodTime_ms);
END_IF;