キーエンスKV-Xシリーズにおける「立ち下がり検出(F_TRIG)」は、入力信号の立ち下がり(TRUE→FALSE)を検出すると、1スキャンのみ出力信号をON(TRUE)にするファンクションブロックです。
立ち下がり検出(F_TRIG)を用いることにより「スイッチを押して放した瞬間を検出して一瞬(1スキャン)だけON」するプログラムを作ることができます。
この記事では、キーエンスKV-X500/X300シリーズにおける立ち下がり検出(F_TRIG)の指令方法とラダープログラム、ST言語の例について解説します。
キーエンスKV-X500/X300シリーズでは、対となる立ち上がり検出(R_TRIG)ファンクションブロックが用意されています。立ち上がり検出(R_TRIG)ファンクションブロックについては以下のページで解説しております。

目次
1. 立ち下がり検出の指令方法
立ち下がり検出(F_TRIG)はLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

F_TRIG_instance(CLK, Q);
立ち下がり検出(F_TRIG)は↓の引数で構成されています。
引数 | タイプ | データ型 | 初期値 | コメント |
---|---|---|---|---|
CLK | IN | BOOL | – | 入力信号 |
Q | OUT | BOOL | – | 出力信号 |
LD表現
↓がLD表現で使用したラダープログラム例です。

このラダープログラムでは、入力信号であるInFlag(入力フラグ)の立ち下がり(TRUE→FALSE)を検出すると、1スキャンのみOutFlag(出力フラグ)がTRUEになります。それ以外OutFlag(出力フラグ)は常にFALSEになります。
スキャンとは、プログラム先頭からEND命令までの制御処理が一巡することで、長くても数十ms、短ければ1msを切る場合もあります。よって立ち上がり検出で1スキャンのみONする出力信号は人間の感覚からすると極一瞬になります。
タイムチャートは以下のようになります。

InFlag(入力フラグ)がON→OFFすると、1スキャンのみOutFlag(出力フラグ)がONします。※このタイムチャートは1マスを1スキャンとしています。
この時、InFlag(入力フラグ)がONしている時間は関係ありません。入力信号がON→OFFになったスキャンのみ出力信号がONになります。
ST表現
↓がST表現で使用したST言語例です。
F_TRIG1(CLK := InFlag, Q => OutFlag);
このSTでは、入力信号であるInFlag(入力フラグ)の立ち下がり(TRUE→FALSE)を検出すると、1スキャンのみOutFlag(出力フラグ)がTRUEになります。それ以外OutFlag(出力フラグ)は常にFALSEになります。※前述のLD表現と同じ動作です。
2.【例題①】立ち下がり検出を用いた自己保持回路(LD)
下記仕様のラダープログラムを立ち下がり検出(F_TRIG)を用いて解説します。
スイッチ黄を押すとランプ緑は消灯する。
スイッチ緑を押して放すとランプ緑が点灯し続ける自己保持回路を作成します。「押して放すと」の部分を立ち下がり検出の出力信号を使用します。
タイムチャート
タイムチャートは以下のようになります。

スイッチ緑がON→OFFするとランプ緑がONし続け、スイッチ黄がONするとランプ緑はOFFします。
スイッチ緑がON→OFFの時、スイッチ黄がONしていればランプ緑はONしません。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

スイッチ緑を押して放すとランプ緑が点灯し続け、スイッチ黄を押すとランプ緑が消灯します。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
F_TRIG1 | F_TRIG | FBインスタンス |
SwGreen | BOOL | スイッチ緑 |
SwYellow | BOOL | スイッチ黄 |
LpGreen | BOOL | ランプ緑 |
SwGreenF_Trig | BOOL | スイッチ緑 立ち下がり |
ラダープログラム
ラダープログラムは以下のようになります。

スイッチ緑(SwGreen)を押して放すと、立ち下がり検出(F_TRIG1)によりSwGreenF_Trigが1スキャンのみONします。
SwGreenF_TrigがONすると、ランプ緑(LpGreen)の自己保持回路にてランプ緑は点灯し続けます。
3.【例題②】立ち下がり検出を用いたデバイス値の切替(ST)
下記仕様のST言語を立ち下がり検出(F_TRIG)を用いて解説します。
スイッチ黄を押して放すとData00に「5」を格納する。
スイッチ赤を押して放すとData00に「0」を格納する。
各スイッチを押して放すとData00にデバイス値を格納するSTを作成します。各スイッチはそのまま使用せずに立ち下がり検出の出力信号を使用します。
タイムチャート
タイムチャートは以下のようになります。

スイッチ緑がONからOFF→Data00に「10」、スイッチ黄がONからOFF→Data00に「5」、スイッチ赤がONからOFF→Data00に「0」を格納します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

スイッチ緑を押して放す→Data00に「10」、スイッチ黄を押して放す→Data00に「5」、スイッチ赤を押して放す→Data00に「0」を格納します。
使用する変数
使用する変数は以下のようになります。
変数 | データ型 | コメント |
---|---|---|
F_TRIG1 | F_TRIG | FBインスタンス |
F_TRIG2 | F_TRIG | FBインスタンス |
F_TRIG3 | F_TRIG | FBインスタンス |
SwGreen | BOOL | スイッチ緑 |
SwYellow | BOOL | スイッチ黄 |
SwRed | BOOL | スイッチ赤 |
SwGreenF_Trig | BOOL | スイッチ緑 立ち下がり |
SwYellowF_Trig | BOOL | スイッチ黄 立ち下がり |
SwRedF_Trig | BOOL | スイッチ赤 立ち下がり |
ST言語
ST言語は以下のようになります。
//スイッチの立ち下がり検出
F_TRIG1(CLK := SwGreen, Q => SwGreenF_Trig);
F_TRIG2(CLK := SwYellow, Q => SwYellowF_Trig);
F_TRIG3(CLK := SwRed, Q => SwRedF_Trig);
//スイッチ緑押下から解放→Data00を10
IF SwGreenF_Trig THEN
Data00 := 10;
END_IF;
//スイッチ黄押下から解放→Data00を5
IF SwYellowF_Trig THEN
Data00 := 5;
END_IF;
//スイッチ赤押下から解放→Data00を0
IF SwRedF_Trig THEN
Data00 := 0;
END_IF;
スイッチ緑(SwGreen)を押して放すと、立ち下がり検出(F_TRIG1)によりSwGreenF_Trigが1スキャンだけONします。
スイッチ黄(SwYellow)を押して放すと、立ち下がり検出(F_TRIG2)によりSwYellowF_Trigが1スキャンだけONします。
スイッチ赤(SwRed)を押して放すと、立ち下がり検出(F_TRIG3)によりSwRedF_Trigが1スキャンだけONします。
各スイッチの立ち下がりを検出すると、IF分にてData00にスイッチに応じたデバイス値を格納します。
4. おわりに
キーエンスKV-X500/X300シリーズにおける立ち下がり検出(F_TRIG)について解説しました。
電気ハード設計、PLC/TPソフト設計、ロボットティーチング、制御盤製作の外注業務は、ぜひ永工舎にご相談ください。

当サイトを運営している電気設計人は、個人で永工舎として外注業務をお請けしております。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。