Page top

機械設備などで、注油や定期点検の時期を告知するための回路を教えてください。

FAQ番号:FAQ01012

 

回答

射出成型機のラインなどで、数十台、数百台とズラ~ッと並んだ機械設備の注油や定期点検を適切なタイミングで実施することは設備保全上、極めて重要なことです。
そして、その為には長時間の積算タイマを使って個々の機械の稼働時間を積算する必要がありますが、これをラダー回路で処理しようとすると、何十・何百と同じ回路がズラリと並ぶことになり、メモリ効率やデバッグの点で問題が生じてしまいます。
そこで、メモリ効率やデバッグのしやすさを考慮したプログラムを以下にご紹介します。

注油告知システムのタイムチャート

<動作説明>
システム起動信号がONならば、各設備の稼働信号がONの間、1分クロックを数えて該当する積算タイマを加算します。
各積算タイマが、該当する警報設定時間以上になったら、警報出力信号をONします。
注油・点検作業が終了して、リセット信号をONしたら、積算タイマを0クリアし、警報出力信号もOFFします。

<プログラムの組み方>
従来は、このような同じ回路を複数作成する場合は、インデックスレジスタで繰り返し処理を行っていました。
しかし、インデックスレジスタ方式では、ポインタとなるインデックスレジスタの中身を確認しにくく、誤った繰り返し処理がなされると、I/Oメモリの指定範囲を超えて想定外のエリアまで書き換えてしまってもわからないなどの問題がありました。
ここでは、このような問題を解決する方法として、①アドレスオフセット方式と、②ファンクションブロック方式をご紹介します。
また、巻末に従来の③インデックスレジスタ方式についても添付しています。
各方式の特徴と下表の対応機種をご確認いただき、目的に合った適切なプログラムの作成をお願いします。
方式
対応機種
アドレスオフセット方式
形CJ2M、形CJ2H、形NJ ※1、形NX ※1
ファンクションブロック方式
形CP1L、形CP1H、形CJ1M、形CS1、形CJ2M、形CJ2H、形NJ ※1、形NX ※1
インデックスレジスタ方式 形CP1L、形CP1H、形CJ1M、形CS1、形CJ2M、形CJ2H
    ※1 ・・・ 開発ツールは、Sysmac Studioになります。(注記のない機種は、CX-Programmerでの開発)


①アドレスオフセット方式
インデックスレジスタ方式と同様にメモリ効率のよいプログラムを作成することができます。
I/Oメモリを配列変数として定義、ポインタも変数定義することで、配列内の何番目のデータかを[ ]内にポインタの添え字で指定します。
設備稼働信号:Runは50点あるので、BOOL型(ビット単位)で50個の配列になります。
例えば3番目の設備稼働信号を参照する場合は、Run[3]と表現し、ポインタptr番目の設備稼働信号はRun[ptr]と表現します。
ポインタptrを加減算することで参照したい番目のデータを指定することができます。
SV,PV,AlarmOut,Resetも同様にポインタptrで参照したい番目のデータを指定します。
ポインタptrはUINT型(符号なし整数)なので、中身がモニタでき、配列の範囲を超えていないかも容易に確認できます。

また、1分クロックの立ち上がりに同期して、全設備の積算タイマを一巡して更新したいので、1分クロックの立ち上がりで一巡するためのストローブ信号Strobeを作って処理しています。

変数 ・・・ メモリの引き出しのようなもので、引き出しと同様に名前のラベル、大きさや形:型、仕切りなどがあります。
配列 ・・・ メモリの1つの引き出し内に仕切りを入れ、複数等分に分割したデータの集まりです。

変数テーブル①

ラダープログラム①


②ファンクションブロック方式
メモリ効率という点での効果はあまり期待できませんが、デバッグ効率では大きな効果が期待できます。
①ではI/Oメモリの50個の接点を全アドレス分まとめて1つの配列変数にしてアドレス分処理を繰り返すことで実現しましたが、②ではI/Oメモリの1注油告知器分を1つの塊(オブジェクト)としてアドレス情報を持たないファンクションブロック定義(設計図)にまとめて扱います。
変数を使うのは①と同じですが、ここではファンクションブロック定義で設計された注油告知器の処理を50個のアドレス分インスタンス(製品に相当)を並べることでプログラミングします。
そして、ファンクションブロックの外側では、50個分の配列変数を定義して、各インスタンスの入力/出力パラメータと出し入れします。
物(オブジェクト)に着目してプログラミングするので、このような方式をオブジェクト指向プログラミングと呼ばれています。
ファンクションブロック定義の設計方法は、単に1個の注油告知回路を設計するのと同じ方法で設計できます。
一度ファンクションブロック定義を設計すると、注油告知器の数が増えたり減ったりしても、インスタンスを追加したり削除するだけで対応でき、注油告知器の処理が変更になっても定義を書き換えるだけですべてのインスタンスに反映されます。
また、繰り返し処理が無いので誤ったI/Oメモリエリアを書き換える心配もありませんし、1つの注油告知器ごとに入出力を図で確認しながらデバッグできます。


変数テーブル②

ラダープログラム②(ファンクションブロックの外側のプログラム)と説明

ラダーモニタ画面 (ファンクションブロックインスタンスの入力/出力を一目瞭然でモニタできます。)

ファンクションブロック定義:内部変数と入力/出力パラメータ (通常はアドレス情報を持たない)

ファンクションブロック定義:ラダープログラム (1個の注油告知回路と同じ)



③インデックスレジスタ方式
従来どおりのインデックスレジスタ方式でのプログラムは以下の添付資料をご確認ください。

~「インデックスレジスタを使いこなそう」シリーズより~

          indexreg7.pdf