入力パルス測定
この命令は、指定されたチャンネルの高速カウンタのパルス数または周期を測定します。
入力
高速カウンタチャンネル: 0–5
計数周期 [ms]:
1–5000 (1ms–5s).
移動平均回数: 1–5
パルス周期測定単位の設定
0: パルス周期測定を行わない
1:パルス周期測定の単位:ms
2:パルス周期測定の単位:ms
3:パルス周期測定の単位:msおよびms
パルス測定周期の測定限界の設定 [ms]:
0:タイムアウト時間なし
1: 100ms
2: 200ms
3: 300ms
4: 500ms
出力
測定周期あたりの平均パルス数(計数周期のパルス数/計数周期の回数)
パルス周期m単位
パルス周期[ms]単位
入力パルスを測定するには、チャンネルNo.、計数周期(1ms~5s)、移動平均回数(1~5)を設定する必要があります。これらのパラメータは、計数周期あたりの入力パルス周期の平均を算出するために使用します。
パルス周期測定の単位は、([ms]、[ms]または両方)のいずれかから設定することができます。
ms単位の測定の場合、この命令の実行直後の1パルスの周期が測定されます。最大約174.4msまで測定することができます。
ms単位の測定の場合、1パルスの周期の測定完了毎に更新されます。最大約49.7日まで測定することができます。設定されたタイムアウト時間(測定限界)までに、測定が完了しなかった場合は、測定周期には-1がセットされます。
命令実行後、最初の周期では、計数周期に到達するまで、-1が出力されます。
測定周期が長い場合、測定が完了しなかった場合は、測定周期には-1がセットされます。
あらかじめ、使用するチャンネルの高速カウンタ入力の方法をシステムレジスタに指定してください。
この命令でパルス測定を行う間は、実行条件をTRUEで保持してください。
測定を終了する場合は、実行条件をFALSEに保持してください。
高速カウンタ命令が実行されると、対応するチャンネルの高速カウンタ制御中フラグsys_bIsHscChannel0ControlActiveがTRUEになり、このフラグがTRUEの間は、同じチャンネルに対して他の高速カウンタ命令を実行することはできません。
同時に実行できるチャンネル数は、最大2チャンネルです。
通常プログラムと割り込みプログラムの両方に、同じチャンネルについて記述する場合、同時に実行されないようにしてください。
高速カウンタ制御フラグとパルス出力制御フラグのステータスは、スキャンが実行されている間に変化します。例えば、受信バイト数が2回以上読み出された場合、1スキャン内で異なる状態が存在することがあります。
高速カウンタチャンネルが、すでに他の高速カウンタまたはパルス出力命令で使用されているとき
実行しているチャンネル数が3以上のとき
高速カウンタチャンネルが、すでに他の高速カウンタまたはパルス出力命令で使用されているとき
実行しているチャンネル数が3以上のとき
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
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;