シーケンス制御講座

サイクルタイムの平均値と履歴

シーケンス制御講座 中級編 コラム サイクルタイムの平均値と履歴

サイクルタイムの平均値を求める方法を解説します。平均値を求めるにはある程度データが必要なので、サイクルタイムの履歴の取り方も解説します。今回はサイクルタイムで解説しますが、他のデータの平均値を求める時にも使えますし、何かのデータの履歴を取る場合にも使用できます。便利な方法なので是非参考にしてください。

作成日:2025年04月28日
更新日:2025年04月28日


履歴の取り方

ここではサイクルタイムを例に履歴の取り方を解説しますが、サイクルタイムに限らず設備には様々なデータあります。ここで紹介する履歴の取り方は、試験の履歴データ収集にも使用できます。とても簡単に使えます。

最初にプログラム内での履歴のイメージを解説します。

上の図のように「D20」~「D29」に履歴データがあるとします。新しいデータを取得した時、「D20」~「D29」のデータを1つシフトさせます。この時「D29」にあったデータは上書きされて消えてしまいます。代わりに「D20」に新しいデータを入れることができます。「D20」が最新データとなり、「D29」が古いデータとなります。そして古いデータから消えて行く形になります。これが履歴を保存するイメージとなります。データを取得出来たら、履歴領域をシフトして、新しいデータを履歴の先頭に転送するこれだけです。

プログラムで書くと次のようになります。

「X2」のような接点を使って履歴を取ります。最初にブロック転送命令で「D20」の値を「D21」へ9個分転送します。これでシフトできます。その次に「T0」の現在値を「D20」に転送します。最後に「T0」の値をリセットしておきます。

今回は「T0」の値の履歴を取りましたが、データレジスタの値でも大丈夫です。

平均値の求め方

平均値を求めるには、単純に集めたデータ、ここでは履歴データを使います。これらのデータを合計して、合計した数で割るだけです。

今回は「D20」~「D29」の10個のデータの平均値を算出します。平均値を出す専用命令もあります。ただし専用命令だけに頼るのではなく、どうやってプロブラムを書けば平均値が出るのか考えることも大切です。2パターン紹介します。

これは平均値算出の専用命令を使った方法です。1行で平均値が算出できます。「D20」から10個分のデータを「D30」に出力する命令です。

次は平均値算出の専用命令を使わない方法です。

[WSUM]命令は合計命令です。この命令も使わない場合は、単純にデータを10個足します。データ量が多い場合は[FOR]~[NEXT]命令を使って加算していきます。 上記の[WSUM]命令の場合、「D20」から10個のデータレジスタの値を合計して「D40」に出力します。この時出力先は32ビット(2ワード)になります。

次に「D40」の値を10で割り算します。割り算命令の前に”D”がついているのは、「D40」を32ビット指定しています。これは[WSUM]命令の出力が32ビットのためです。これで「D42」に平均値が出力されます。

最後に[WORD]命令で32ビットから16ビットに変換しておきます。これは割り算命令を32ビットで行ったため、「D42」には32ビットで出力されたためです。



図解入門 よくわかる最新 シーケンス制御と回路図の基本はKindle版(電子書籍)です。単行本ご希望の方は、フォーマットで単行本を選択してください。または、トップページよりご購入ください。

Copyright (C) 2010 シーケンス制御講座, All rights reserved.