【キーエンスKV-X】オンディレイタイマ(TON)FBの指令方法とラダープログラム/ST例

00_【キーエンスKV-X】オンディレイタイマ(TON)FBの指令方法とラダープログラムST例

キーエンスKV-Xシリーズにおける「オンディレイタイマ(TON)」は、設定時間経過後にON(TRUE)を出力するファンクションブロックです。

オンディレイタイマとは、入力条件がONしてから設定された時間が経過すると、出力がONするタイマです。

オンディレイタイマ(TON)を用いることにより「スイッチを設定した時間押し続けるとランプが点灯する」プログラムを作ることができます。

この記事では、キーエンスKV-X500/X300シリーズにおけるオンディレイタイマ(TON)の指令方法ラダープログラム、ST言語の例について解説します。

注意
この記事中のラダープログラムはKV STUDIO Ver.12で作成しており、対応機種はKV-X500に設定してあります。

キーエンスKV-X500/X300シリーズでは、オフディレイタイマ(TOF)ファンクションブロックが用意されています。オフディレイタイマ(TOF)ファンクションブロックについては以下のページで解説しております。

00_【キーエンスKV-X】オフディレイタイマ(TOF)FBの指令方法とラダープログラムST例 【キーエンスKV-X】オフディレイタイマ(TOF)FBの指令方法とラダープログラム/ST例

1. オンディレイタイマの指令方法

オンディレイタイマ(TON)はLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

10_LD表現
ラダープログラム
ST言語
TON_instance(In, PT, Q, ET);

オンディレイタイマ(TON)は↓の引数で構成されています。

引数タイプデータ型初期値コメント
InINBOOLタイマ入力
PTINTIMET#0s設定時間
QOUTBOOLタイマ出力
ETOUTTIME経過時間

LD表現

↓がLD表現で使用したラダープログラム例です。

11_LD使用例
メモ
オンディレイタイマ(TON)はFB(ファンクションブロック)のため、インスタンス名(上記ではTON_1)を指令する必要があります。

このラダープログラムでは、タイマ入力であるInFlag(入力フラグ)がON(TRUE)すると、経過時間であるETが時間とともに増加し、ETが設定時間であるPTに達するとOutFlag(出力フラグ)がON(TRUE)します。

↑のラダープログラムでは、設定時間を3秒に設定しているため、InFlag(入力フラグ)がON(TRUE)すると、3秒後にOutFlag(出力フラグ)がON(TRUE)します。その後、InFlag(入力フラグ)がOFF(FALSE)すると、同時にOutFlag(出力フラグ)もOFF(FALSE)します。

設定時間、経過時間はTIME型の変数で指令する必要があります。TIME型については後述します。

注意
タイマ入力がOFF(FALSE)すると、タイマ出力はOFF(FALSE)して、経過時間は0にリセットされます。

タイムチャートは以下のようになります。

12_タイムチャート

InFlag(入力フラグ)がON(TRUE)すると、3秒後にOutFlag(出力フラグ)がON(TRUE)します。

ST表現

↓がST表現で使用したST言語例です。

ST言語
TON_1(In := InFlag, PT := T#3s, Q => OutFlag);
メモ
引数タイプがIN、IN-OUTの場合は、「:=」で引数に値を引き渡します。引数タイプが「OUT」の場合は、「=>」で引数の値を変数に格納します。

このSTでは、設定時間を3秒に設定しているため、InFlag(入力フラグ)がON(TRUE)すると、3秒後にOutFlag(出力フラグ)がON(TRUE)します。その後、InFlag(入力フラグ)がOFF(FALSE)すると、同時にOutFlag(出力フラグ)もOFF(FALSE)します。※前述のLD表現と同じ動作です。

TIME型

TIME型(持続時間型)とは、IEC61131-3準拠のPLCプログラミングで使用される時間を扱うためのデータ型です。

KV-Xシリーズの場合、TIME型は日~ns(ナノ秒)までの時間を下記のように記述することが可能です。

記述形式記述例
T#{日}d{時}h{分}m{秒}s{ミリ秒}ms{マイクロ秒}µs{ナノ秒}nsT#1d2h3m10s
TIME#{日}d{時}h{分}m{秒}s{ミリ秒}ms{マイクロ秒}µs {ナノ秒}nsTIME#1d2h3m10s

例として、1分20秒の場合、T#1m20s、またはT#80sと記述します。

2.【例題①】タイマの設定時間を変更する

下記仕様のラダープログラム、STをオンディレイタイマ(TON)を用いて解説します。

仕様
スイッチ緑を押すと設定時間後にランプ緑が点灯する。
スイッチ緑を放すと同時にランプ緑が消灯する。
設定時間はタッチパネルのData00からms単位で設定できるようにする。

スイッチ緑押下からランプ緑点灯までの遅延にオンディレイタイマ(TON)を使用します。

タッチパネルでTIME型の変数を定義することが出来ないため、DINT→TIME型に変換する必要があります。今回はms単位で設定時間を指定するため、MilliSecToTime(ミリ秒→時間変換)ファンクションを使用します。

タッチパネルの動作イメージ

タッチパネルの動作イメージは以下のようになります。

例題①_タッチパネルイメージ

※撮影環境の都合で実際の時間に対して少し遅延しています。

スイッチ緑を押すと設定時間後にランプ緑が点灯します。スイッチ緑を放すと同時にランプ緑が消灯します。

タッチパネルのData00からms単位で設定できるようにしています。Data00はDINT型で↓のような設定になっています。

例題①_タッチパネル説明

使用する変数

使用する変数は以下になります。

変数データ型コメント
TON_1TONFBインスタンス
SwGreenBOOLスイッチ緑
LpGreenBOOLランプ緑
Data00DINTデータ00(設定時間の設定)
Data00TimeTIMEデータ00TIME型

ラダープログラム

ラダープログラムは以下のようになります。

例題①_ラダープログラム

MilliSecToTime(ミリ秒→時間変換)ファンクションで、DINT型のData00(ms)をTIME型のData00Timeに変換します。(1行目)

タイマ入力にスイッチ緑、タイマ出力にランプ緑、設定時間にTIME型であるData00Timeを指定したオンディレイタイマ(TON)で、スイッチ緑を押すと設定時間後にランプ緑が点灯します。(2行目)

ST言語

ST言語は下記のようになります。

ST言語
//DINT型のData00(ms)をTIME型のData00Timeに変換
Data00Time := MilliSecToTime(In := Data00);

//スイッチ緑押下でData00Time時間後にランプ緑点灯
TON_1(In := SwGreen, PT := Data00Time, Q => LpGreen);

3.【例題②】タイマの経過時間をモニタする

下記仕様のラダープログラム、STをオンディレイタイマ(TON)を用いて解説します。

仕様
スイッチ緑を押すと設定時間後にランプ緑が点灯する。
スイッチ緑を放すと同時にランプ緑が消灯する。
設定時間はタッチパネルのData00からms単位で設定できるようにする。
経過時間はタッチパネルのData01でms単位でモニタできるようにする。

【例題①】に対して、経過時間のモニタ(Data01)を追加します。

タッチパネルでTIME型の変数を定義することが出来ないため、TIME→DINT型に変換する必要があります。(【例題①】とは逆)

今回はms単位で経過時間をモニタするため、TimeToMilliSec(時間→ミリ秒変換)ファンクションを使用します。

タッチパネルの動作イメージ

タッチパネルの動作イメージは以下のようになります。

例題②_タッチパネルイメージ

※撮影環境の都合で実際の時間に対して少し遅延しています。

スイッチ緑を押すと設定時間後にランプ緑が点灯します。スイッチ緑を放すと同時にランプ緑が消灯します。

タッチパネルのData00からms単位で設定、Data01でms単位でモニタできるようにしています。Data00、Data01はDINT型で↓のような設定になっています。

例題①_タッチパネル説明

使用する変数

使用する変数は以下になります。

変数データ型コメント
TON_1TONFBインスタンス
SwGreenBOOLスイッチ緑
LpGreenBOOLランプ緑
Data00DINTデータ00(設定時間の設定)
Data01DINTデータ01(経過時間の表示)
Data00TimeTIMEデータ00TIME型
Data01TimeTIMEデータ01TIME型

ラダープログラム

ラダープログラムは以下のようになります。

例題②_ラダープログラム

MilliSecToTime(ミリ秒→時間変換)ファンクションで、DINT型のData00(ms)をTIME型のData00Timeに変換します。(1行目)

タイマ入力にスイッチ緑、タイマ出力にランプ緑、設定時間にTIME型であるData00Time、経過時間にTIME型であるData01Timeを指定したオンディレイタイマ(TON)で、スイッチ緑を押すと設定時間後にランプ緑が点灯します。(2行目)

TimeToMilliSec(時間→ミリ秒変換)ファンクションで、TIME型のData01TimeをDINT型のData01(ms)に変換します。(3行目)

ST言語

ST言語は下記のようになります。

ST言語
//DINT型のData00(ms)をTIME型のData00Timeに変換
Data00Time := MilliSecToTime(In := Data00);

//スイッチ緑押下でData00Time時間後にランプ緑点灯
TON_1(In := SwGreen, PT := Data00Time, Q => LpGreen, ET => Data01Time);

//TIME型のData01TimeをDINT型のData01(ms)に変換
Data01 := TimeToMilliSec(In := Data01Time);

4. おわりに

キーエンスKV-X500/X300シリーズにおけるオンディレイタイマ(TON)について解説しました。

電気ハード設計、PLC/TPソフト設計、ロボットティーチング、制御盤製作の外注業務は、ぜひ永工舎にご相談ください。

当サイトを運営している電気設計人は、個人で永工舎として外注業務をお請けしております。

以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です