F178_HighSpeedCounter_Measure

Eingangspulsmessung

Dieser Befehl misst die Anzahl der Eingangspulse innerhalb einer angegebenen Zähl- und Pulsperiode.

Parameter

Eingang

s1_iHscChannel (INT)

Kanal des schnellen Zählers: 0–5

s2_NumberOfPulses_iPeriodTime_ms (INT)

Zählperiode [ms]:

1–5000 (1ms–5s).

s1_NumberOfPulses_iNumberOfPeriods (INT)

Anzahl der Zählperioden: 1–5

s1_PulsePeriod_iMeasurementMethod (INT)

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

s1_PulsePeriod_iTimeoutValueOf1msUnitOutput (INT)

Wert für Zeitüberschreitung der Pulsperiodenmessung [ms]:

0: Keine Zeitüberschreitung

1: 100ms

2: 200ms

3: 300ms

4: 500ms

Ausgang

d_NumberOfPulses_diAverage (DINT)

Durchschnittsanzahl der Pulse pro Zählperiode (Anzahl der Pulse pro Zählperiode/Anzahl der Zählperioden)

d_PulsePeriod_diTime_ms (DINT)

Pulsperiode m

d_PulsePeriod_diTime_ms (DINT)

Pulsperiode [ms]

Merkmale der Eingangspulsmessung

  • 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.

Allgemeine Programmierhinweise

  • 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.

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn die Kanalnummer oder Werte der Datentabelle außerhalb des zulässigen Bereichs liegen
  • wenn die Pulsausgabe nicht in den Systemregistern gesetzt wurde
  • 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

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn die Kanalnummer oder Werte der Datentabelle außerhalb des zulässigen Bereichs liegen
  • wenn die Pulsausgabe nicht in den Systemregistern gesetzt wurde
  • 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

Beispiel

POE-Kopf

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

KOP-Rumpf

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

ST-Rumpf

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;

Letzte Änderung am: 2022-06-28Feedback zu dieser SeitePanasonic Hotline