GX Works2で、オンディレイタイマ回路とオフディレイタイマ回路を用いて、入力条件に対するオンディレイとオフディレイの出力を行うファンクションブロックを作成したので公開します。
オンディレイタイマ回路とオフディレイタイマ回路については以下のページで解説しておりますので、宜しければご覧ください。
【ラダープログラム】タイマ(T)の使い方と例題この記事では、オンディレイタイマ回路とオフディレイタイマ回路を総称して「マルチタイマ」と呼ぶことにします。
アイキャッチ画像に「作:電気設計人」とありますが、許可が必要な訳ではありませんので、ご自由に使用してください。(作ったぜアピールしたいだけです。)
ファンクションブロックの作り方と使い方は以下の記事で解説していますので、宜しければそちらもご覧ください。
【FB】ファンクションブロックの作り方(フリッカー回路) 【FB】ファンクションブロックの使い方(フリッカー回路)この記事中のラダープログラムはFXCPU用の作成したものになります。
目次
1. 作成するファンクションブロックの仕様
マルチタイマのファンクションブロックを作成する前に、完成したらどのようなことができるか明確にします。
今回は以下のような、入力条件に対するオンディレイとオフディレイが出力できるものを作成します。
ランプ(Y0)はスイッチ(X0)を離すと、即座に消灯する。
(オンディレイタイマ回路)
また、スイッチ(X0)を押すと、ランプ(Y1)が即座に点灯する。
ランプ(Y1)はスイッチ(X0)を離してから3秒後に消灯する。
(オフディレイタイマ回路)
通常のラダープログラムは以下のようになります。
このラダープログラムでは、タイマ(T0)がランプ(Y0)のONを遅延させるタイマで、タイマ(T1)がランプ(Y1)のOFFを遅延させるタイマになります。
イメージしやすいように簡単なGOTを作成しました。動作は以下のようになります。
2. デバイスをラベルに置き換え
上記のラダープログラムのデバイスをファンクションブロック内で使用するローカルラベルに置き換えます。
デバイス | ラベル(置き換え後) |
X0 | i_Bit |
T0 | m_OnTimer |
T0の設定値 | i_OnTime |
T1 | m_OffTimer |
T1の設定値 | i_OffTime |
Y0 | o_OnDelay |
Y1 | o_OffDelay |
このラベルを最初の仕様のデバイスに置き換えると、以下のような仕様になります。
出力ラベルo_OnDelayは入力ラベルi_BitがOFFすると、即座にOFFする。
(オンディレイタイマ回路)
また、入力ラベルi_BitがONすると、出力ラベルo_OffDelayが即座にONする。
出力ラベルo_OffDelayは入力ラベルi_BitがOFFしてから設定値i_OffTime後にOFFする。
(オフディレイタイマ回路)
このファンクションブロックを作成することで、ラダープログラム内で何回でも上記の論理回路を使用することができます。
3. 作成したマルチタイマのファンクションブロック
それではマルチタイマのファンクションブロックを作成します。
ファンクションブロックの名前は「Malti_timer」とします。
Malti_timerのファンクションブロック内のラダープログラムは以下のようになります。
<ファンクションブロック内部>
各デバイスをラベルに置き換えています。
このファンクションブロック「Malti_timer」をラダープログラム上で使用すると以下のようになります。
<Malti_timer使用例>
このラダープログラムを使用すると、以下のような仕様になります。
ランプ(Y0)はスイッチ(X0)を離すと、即座に消灯する。
(オンディレイタイマ回路)
また、スイッチ(X0)を押すと、ランプ(Y1)が即座に点灯する。
ランプ(Y1)はスイッチ(X0)を離してから3秒後に消灯する。
(オフディレイタイマ回路)
これは最初の仕様と同じものです。ラダープログラム上でファンクションブロック「Malti_timer」は別の場所で別のアドレスで何回でも使用することができます。
その際、各タイマの設定値は入力ラベルにしているのでファンクションブロック毎に変更することが可能です。