あるビットがONしている時間を知りたい時など、ON時間を計測する方法を紹介します。
この方法を応用してタクトタイムを計測するなどにも利用できます
設備のサイクルタイムなどはシステム時計で計測するのが一般的で、ファンクションの処理時間などを計測するときはさらに細かくフリーランニングカウンタを使うことで計測が可能です。
SW001の立上りで現在時刻をStartTimeに保存します。
その後、SW001の立下りで現在時刻をEndTimeに入れてSUB_DT_DT()命令でEndTimeからStartTimeを引きElapsedTimeに保存します。

ElapsedTimeにはTime型で保存されるので数値型に変換したい場合はTimeToNanoSec()命令で数値に変換してください。
ラダーと同様に処理開始の前にStartTimeに現在時刻を保存して、処理終了で現在時刻とStartTimeの差を経過時間を計測します。
StartTime := GetTime();
//処理を記載
ElapsedTime:=SUB_DT_DT(GetTime(),StartTime);
MaxScan:=(LINT_TO_UDINT(TimeToNanoSec(ElapsedTime)/1000)); //ミリ秒に変換
プログラムの処理時間(経過時間)をマイクロ秒単位で計測します


GetTime()関数とSUB_DT_DT()命令を使用することで計測できます。
開始時刻と終了時刻の差分から計測できます。
フリーランニングカウンタを利用することで取得できます。