F178_HighSpeedCounter_Measure

Misurazione periodo impulsi in ingresso

Questa istruzione misura il numero di impulsi di ingresso in un determinato periodo di conteggio ed il periodo degli impulsi.

Parametri

Ingresso

s1_iHscChannel (INT)

Canale contatore veloce: 0–5

s2_NumberOfPulses_iPeriodTime_ms (INT)

Periodo di conteggio [ms]:

1–5000 (1ms–5s).

s1_NumberOfPulses_iNumberOfPeriods (INT)

Numero di periodi di conteggio: 1–5

s1_PulsePeriod_iMeasurementMethod (INT)

Unità di misurazione del periodo degli impulsi

0: Il periodo degli impulsi non viene misurato

1: Il periodo degli impulsi viene misurato in ms

2: Il periodo degli impulsi viene misurato in ms

3: Il periodo degli impulsi viene misurato in ms e ms

s1_PulsePeriod_iTimeoutValueOf1msUnitOutput (INT)

Valore di timeout della misurazione del periodo degli impulsi [ms]:

0: nessun timeout

1: 100ms

2: 200ms

3: 300ms

4: 500ms

Uscita

d_NumberOfPulses_diAverage (DINT)

Numero medio di impulsi per periodo di conteggio (n. di impulsi nel periodo di conteggio/numero di periodi di conteggio)

d_PulsePeriod_diTime_ms (DINT)

Periodo degli impulsi m

d_PulsePeriod_diTime_ms (DINT)

Periodo degli impulsi [ms]

Caratteristiche della misurazione periodo impulsi in ingresso

  • Per la misurazione degli impulsi di ingresso si devono specificare il numero di canale, il periodo di conteggio (1ms–5s) e il numero di periodi di conteggio (1–5). Tali parametri vengono usati per calcolare il numero medio di impulsi di ingresso per periodo di conteggio.

  • L'unità per la misurazione del periodo di impulsi ([ms], [ms] o entrambi) viene stabilita dall'utente.

  • Se la misurazione è in ms, il periodo degli impulsi viene misurato e restituito immediatamente al momento dell'esecuzione di questa istruzione. È possibile misurare un massimo di 174.4ms circa.

  • Se la misurazione è in ms, il valore del periodo degli impulsi viene aggiornato dopo ogni misurazione. È possibile misurare un massimo di 49.7 giorni circa. È possibile specificare un valore di timeout trascorso il quale il periodo degli impulsi misurato viene impostato su -1 se la misurazione non è stata completata.

  • Durante i primi periodi di conteggio dopo l'inizio dell'istruzione, il periodo degli impulsi misurato viene impostato su -1 fino a quando viene raggiunto il numero di periodi di conteggio specificato.

  • Se il periodo degli impulsi è più lungo dell'intervallo misurabile o se la misurazione non è stata completata, il periodo degli impulsi misurato viene impostato su -1.

Informazione generale di programmazione

  • Selezionate l'ingresso del contatore veloce per il canale desiderato nei registri di sistema.

  • Mantenete la condizione di esecuzione TRUE per la misurazione degli impulsi con questa istruzione.

  • Per fermare la misurazione, impostate la condizione di esecuzione su FALSE.

  • Quando viene eseguita un'istruzione contatore veloce, il flag di controllo del contatore veloce (p.es. sys_bIsHscChannel0ControlActive) per il canale utilizzato passa a TRUE. Finché il flag di controllo è TRUE, non è possibile eseguire nessun'altra istruzione contatore veloce utilizzando lo stesso canale.

  • L'istruzione può essere eseguita simultaneamente su un massimo di due canali.

  • Se sia il programma principale sia il programma di interrupt contengono un codice per lo stesso canale, essi non devono poter esser eseguiti contemporaneamente.

  • Lo stato del flag di controllo del contatore veloce o del flag di controllo dell'uscita ad impulsi può variare durante lo svolgimento di una scansione. For example, if the number of received bytes is read more than once different statuses may exist within one scan.

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se il numero di canale o valori della tabella dati sono fuori del campo ammissibile
  • se il contatore veloce non è stato impostato nei registri di sistema
  • se il canale contatore veloce è già utilizzato da un'altra istruzione contatore veloce o uscita ad impulsi

  • se il numero di canali utilizzati è 3 o superiore

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se il numero di canale o valori della tabella dati sono fuori del campo ammissibile
  • se il contatore veloce non è stato impostato nei registri di sistema
  • se il canale contatore veloce è già utilizzato da un'altra istruzione contatore veloce o uscita ad impulsi

  • se il numero di canali utilizzati è 3 o superiore

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		bStartMeasurement: BOOL:=FALSE;
		diNumberOfPulses: DINT:=0;
		diPulsePeriodTime_μs: DINT:=0;
		diPulsePeriodTime_ms: DINT:=0;
	END_VAR

Corpo LD

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

Corpo ST

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;

L'ultima revisione: 2022-06-28Feedback su questa paginaPanasonic hotline