Welcome to Yutekke's PLC Forum
移動平均サイクル時間の計算
自動運転時の、サイクル時間を移動平均で求めるシーケンスで、サイクル時間は、
サイクルの起動信号のONから、次のサイクルの起動信号がONするまでの時間を
0.1秒単位で計算する。
移動平均値は、最大20回のサンプリング値の平均値として求める。ただし立上がり時
はサンプリングしたN回の平均値として求める。
20回目以降では、旧いサンプリング値を捨てて最新の20回のサンプリング値の平均値を
サイクル時間として求める。
一点の立ち上がりパルスのみで処理する必要上再初期化とサンプリング値の処理を
同一信号で処理するために、ラダーシーケンスは少々ややっこしくなってしまいました。
入力信号 X0:自動運転 ステータス信号でX0がONの間だけ、サイクル時間を計算する。
X1:サイクルスタート信号(バルス入力)
X1がONしてから、次にONするまでの時間をサイクル時間とする。
作業領域 M0〜M4作業用内部リレー シーケンスのコメントを参照
D0:サンプリング数+1を格納しています。
D1:サイクル時間 現サイクルのサイクル時間の現在値 0.1秒単位
D2:移動平均サイクル時間
D11〜D30 現在のサイクルより、20回前までのサイクル時間サンプリングテーブル
D11に一番旧いデータが入り、順次新しいデータが保存され、1サイクル毎に
更新される
移動平均時間の計算
1〜N回(19以下の場合)
D2=(D11+D12+・・・+D1N)/N
20回目移行では
D2=(D11+D12+・・・+D30)/20
で計算します。
N数が20以外のn時にはK20とK19の値をnとn-1へ変更します