F178_HighSpeedCounter_Measure

Mesure de l’impulsion d’entrée

Cette instruction mesure le nombre d’impulsions d’entrée pendant une période de comptage et d’impulsions définie.

Paramètres

Entrée

s1_iHscChannel (INT)

Voie du compteur rapide : 0–5

s2_NumberOfPulses_iPeriodTime_ms (INT)

Période de comptage [ms] :

1–5000 (1ms–5s).

s1_NumberOfPulses_iNumberOfPeriods (INT)

Nombre de périodes de comptage : 1–5

s1_PulsePeriod_iMeasurementMethod (INT)

Unité de mesure de la période d’impulsions

0 : la période d’impulsions n’est pas mesurée

1 : la période d’impulsions est mesurée en ms :

2 : la période d’impulsions est mesurée en ms

3 : la période d’impulsions est mesurée en ms et ms

s1_PulsePeriod_iTimeoutValueOf1msUnitOutput (INT)

Temps d’attente de la mesure de la période d’impulsions [ms] :

0 : pas de temps d’attente

1: 100ms

2: 200ms

3: 300ms

4: 500ms

Sortie

d_NumberOfPulses_diAverage (DINT)

Nombre moyen d’impulsions par période de comptage (nombre d’impulsions par période de comptage/nombre de périodes de comptage)

d_PulsePeriod_diTime_ms (DINT)

Période d’impulsions m

d_PulsePeriod_diTime_ms (DINT)

Période d’impulsions [ms]

Caractéristiques de la mesure des impulsions d’entrée

  • Pour mesurer les impulsions d’entrée, le numéro de voie, la période de comptage (1ms–5s) et le nombre de périodes de comptage (1–5) doivent être indiqués. Ces paramètres sont utilisés pour calculer le nombre moyen d’impulsions d’entrée par période de comptage.

  • L’unité de mesure de la période d’impulsions ([ms], [ms] ou les deux) peut être indiquée.

  • Si la mesure est en ms, la période d’impulsions est mesurée et sortie immédiatement lors de l’exécution de cette instruction. Un maximum d’env. 174,4ms peut être mesuré.

  • Si la mesure est en ms, la valeur de la période d’impulsions est actualisée après chaque mesure. Un maximum d’env. 49,7 jours peut être mesuré. Vous pouvez indiquer un temps d’attente après lequel la période d’impulsions mesurée est définie sur -1, lorsque la mesure n’est pas terminée.

  • Pendant les premières périodes de comptage après le lancement de l’instruction, la période d’impulsions mesurée est définie sur -1 jusqu’à ce que le nombre de périodes de comptage mesuré ait été atteint.

  • Si la période d’impulsions est supérieure à l’intervalle mesurable ou si la mesure n’est pas terminée, la période d’impulsions mesurée est définie sur -1.

Informations générales sur la programmation

  • Sélectionnez l’entrée du compteur rapide pour la voie désirée dans les registres système.

  • Pour procéder à une mesure d’impulsions à l’aide de cette instruction, la condition d’exécution doit être maintenue sur TRUE.

  • Pour arrêter la mesure, faites passer la condition d’exécution sur FALSE.

  • Lors de l’exécution d’une instruction du compteur rapide, le drapeau de contrôle du compteur rapide (par ex. sys_bIsHscChannel0ControlActive) pour la voie utilisée passe à TRUE. Aucune autre instruction du compteur rapide utilisant la même voie ne peut être exécutée tant que le drapeau de contrôle est TRUE.

  • Cette instruction peut être exécutée simultanément sur un maximum de deux voies.

  • Si le programme principal et le programme d’interruption contiennent le code de la même voie, veillez à ce qu’ils ne soient pas exécutés simultanément.

  • L’état du drapeau de contrôle du compteur rapide ou du drapeau de la sortie impulsionnelle peut changer au cours d’une scrutation. Par exemple, si le nombre d’octets reçus est lu plusieurs fois, il peut y avoir plusieurs états au cours d’une scrutation.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si le numéro de voie ou les valeurs du tableau de données sont en dehors de l’intervalle autorisé.
  • Si le compteur rapide n’a pas été défini dans les registres système.
  • Si la voie du compteur rapide est déjà utilisée par une autre instruction de compteur rapide ou de sortie impulsionnelle

  • Si le nombre de voies utilisé est de 3 ou plus

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si le numéro de voie ou les valeurs du tableau de données sont en dehors de l’intervalle autorisé.
  • Si le compteur rapide n’a pas été défini dans les registres système.
  • Si la voie du compteur rapide est déjà utilisée par une autre instruction de compteur rapide ou de sortie impulsionnelle

  • Si le nombre de voies utilisé est de 3 ou plus

Exemple

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.

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

Corps en 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

Corps en 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;

Modifié le : 2022-06-28Commentaires sur cette pageAssistance téléphonique