F178_HighSpeedCounter_Measure

入力パルス測定

この命令は、指定されたチャンネルの高速カウンタのパルス数または周期を測定します。

パラメータ

入力

s1_iHscChannel (INT)

高速カウンタチャンネル: 0–5

s2_NumberOfPulses_iPeriodTime_ms (INT)

計数周期 [ms]:

1–5000 (1ms–5s).

s1_NumberOfPulses_iNumberOfPeriods (INT)

移動平均回数: 1–5

s1_PulsePeriod_iMeasurementMethod (INT)

パルス周期測定単位の設定

0: パルス周期測定を行わない

1:パルス周期測定の単位:ms

2:パルス周期測定の単位:ms

3:パルス周期測定の単位:msおよびms

s1_PulsePeriod_iTimeoutValueOf1msUnitOutput (INT)

パルス測定周期の測定限界の設定 [ms]:

0:タイムアウト時間なし

1: 100ms

2: 200ms

3: 300ms

4: 500ms

出力

d_NumberOfPulses_diAverage (DINT)

測定周期あたりの平均パルス数(計数周期のパルス数/計数周期の回数)

d_PulsePeriod_diTime_ms (DINT)

パルス周期m単位

d_PulsePeriod_diTime_ms (DINT)

パルス周期[ms]単位

入力パルス測定の概要

  • 入力パルスを測定するには、チャンネルNo.、計数周期(1ms~5s)、移動平均回数(1~5)を設定する必要があります。これらのパラメータは、計数周期あたりの入力パルス周期の平均を算出するために使用します。

  • パルス周期測定の単位は、([ms][ms]または両方)のいずれかから設定することができます。

  • ms単位の測定の場合、この命令の実行直後の1パルスの周期が測定されます。最大約174.4msまで測定することができます。

  • ms単位の測定の場合、1パルスの周期の測定完了毎に更新されます。最大約49.7日まで測定することができます。設定されたタイムアウト時間(測定限界)までに、測定が完了しなかった場合は、測定周期には-1がセットされます。

  • 命令実行後、最初の周期では、計数周期に到達するまで、-1が出力されます。

  • 測定周期が長い場合、測定が完了しなかった場合は、測定周期には-1がセットされます。

プログラム上のご注意

  • あらかじめ、使用するチャンネルの高速カウンタ入力の方法をシステムレジスタに指定してください。

  • この命令でパルス測定を行う間は、実行条件をTRUEで保持してください。

  • 測定を終了する場合は、実行条件をFALSEに保持してください。

  • 高速カウンタ命令が実行されると、対応するチャンネルの高速カウンタ制御中フラグsys_bIsHscChannel0ControlActiveTRUEになり、このフラグがTRUEの間は、同じチャンネルに対して他の高速カウンタ命令を実行することはできません。

  • 同時に実行できるチャンネル数は、最大2チャンネルです。

  • 通常プログラムと割り込みプログラムの両方に、同じチャンネルについて記述する場合、同時に実行されないようにしてください。

  • 高速カウンタ制御フラグとパルス出力制御フラグのステータスは、スキャンが実行されている間に変化します。例えば、受信バイト数が2回以上読み出された場合、1スキャン内で異なる状態が存在することがあります。

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)
  • チャンネルNo.やデータテーブルの設定値が、指定できる範囲外の値のとき
  • システムレジスタに高速カウンタの使用方法が指定されていないとき
  • 高速カウンタチャンネルが、すでに他の高速カウンタまたはパルス出力命令で使用されているとき

  • 実行しているチャンネル数が3以上のとき

sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)
  • チャンネルNo.やデータテーブルの設定値が、指定できる範囲外の値のとき
  • システムレジスタに高速カウンタの使用方法が指定されていないとき
  • 高速カウンタチャンネルが、すでに他の高速カウンタまたはパルス出力命令で使用されているとき

  • 実行しているチャンネル数が3以上のとき

POUヘッダ

POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。

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

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

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;

最終修正日: 2022-10-18このページに関するフィードバックお問い合わせ窓口