オムロンNJ/NXシリーズにおける「パルス出力(TP)」は、起動から設定時間だけON(TRUE)を出力するファンクションブロックです。
パルス出力(TP)を用いることにより「スイッチを押すと設定時間だけランプが点灯する」プログラムを作ることができます。
この記事では、オムロンNJ/NXシリーズにおけるパルス出力(TP)の指令方法とラダープログラム、ST言語の例について解説します。
オムロンNJ/NXシリーズでは、オンディレータイマ(TON)、オフディレータイマ(TOF)ファンクションブロックが用意されています。各タイマのファンクションブロックについては以下のページで解説しております。


目次
1. パルス出力の指令方法
パルス出力(TP)はLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

TP_instance(In, PT, Q, ET);
パルス出力(TP)は↓の引数で構成されています。
引数 | タイプ | データ型 | 初期値 | コメント |
---|---|---|---|---|
In | IN | BOOL | – | タイマ入力 |
PT | IN | TIME | T#0s | 設定時間 |
Q | OUT | BOOL | – | タイマ出力 |
ET | OUT | TIME | – | 経過時間 |
LD表現
↓がLD表現で使用したラダープログラム例です。

このラダープログラムでは、タイマ入力であるInFlag(入力フラグ)がON(TRUE)すると、OutFlag(出力フラグ)がON(TRUE)し、経過時間であるETが時間とともに増加してETが設定時間であるPTに達するとOutFlag(出力フラグ)がOFF(FALSE)します。
↑のラダープログラムでは、設定時間を3秒に設定しているため、InFlag(入力フラグ)がON(TRUE)すると、3秒間だけOutFlag(出力フラグ)がON(TRUE)します。
設定時間、経過時間はTIME型の変数で指令する必要があります。TIME型については後述します。
タイムチャートは以下のようになります。

InFlag(入力フラグ)がON(TRUE)すると、3秒間だけOutFlag(出力フラグ)がON(TRUE)します。
ST表現
↓がST表現で使用したST言語例です。
TP_1(In := InFlag, PT := T#3s, Q => OutFlag);
このSTでは、タイマ入力であるInFlag(入力フラグ)がON(TRUE)すると、OutFlag(出力フラグ)がON(TRUE)し、経過時間であるETが時間とともに増加してETが設定時間であるPTに達するとOutFlag(出力フラグ)がOFF(FALSE)します。※前述のLD表現と同じ動作です。
TIME型
TIME型(持続時間型)とは、IEC61131-3準拠のPLCプログラミングで使用される時間を扱うためのデータ型です。
NJ/NXシリーズの場合、TIME型は日~ms(ミリ秒)までの時間を下記のように記述することが可能です。
記述形式 | 記述例 |
---|---|
T#{日}d{時}h{分}m{秒}s{ミリ秒}ms | T#1d2h3m10s |
TIME#{日}d{時}h{分}m{秒}s{ミリ秒}ms | TIME#1d2h3m10s |
例として、1分20秒の場合、T#1m20s、またはT#80sと記述します。
2.【例題①】タイマの設定時間を変更する
下記仕様のラダープログラム、STをパルス出力(TP)を用いて解説します。
設定時間はタッチパネルのData00から秒単位で設定できるようにする。
スイッチ緑押下時のランプ緑点灯→消灯をパルス出力(TP)を使用します。
タッチパネルでTIME型の変数を定義することが出来ないため、LINT→TIME型に変換する必要があります。今回は秒単位で設定時間を指定するため、SecToTime(秒→時間変換)ファンクションを使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

※撮影環境の都合で実際の時間に対して少し遅延しています。
スイッチ緑を押すたび設定時間だけランプ緑が点灯します。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
TP_1 | TP | FBインスタンス |
SwGreen | BOOL | スイッチ緑 |
LpGreen | BOOL | ランプ緑 |
Data00 | LINT | データ00(設定時間の設定) |
Data00Time | TIME | データ00TIME型 |
ラダープログラム
ラダープログラムは以下のようになります。

SecToTime(秒→時間変換)ファンクションで、LINT型のData00(秒)をTIME型のData00Timeに変換します。(1行目)
タイマ入力にスイッチ緑、タイマ出力にランプ緑、設定時間にTIME型であるData00Timeを指定したワンショットタイマ(TP)で、スイッチ緑を押すたび設定時間だけランプ緑が点灯します。(2行目)
ST言語
ST言語は下記のようになります。
//LINT型のData00(秒)をTIME型のData00Timeに変換
Data00Time := SecToTime(In := Data00);
//スイッチ緑押下時にData00Time時間だけランプ緑点灯
TP_1(In := SwGreen, PT := Data00Time, Q => LpGreen);
3.【例題②】タイマの経過時間をモニタする
下記仕様のラダープログラム、STをパルス出力(TP)を用いて解説します。
設定時間はタッチパネルのData00から秒単位で設定できるようにする。
経過時間はタッチパネルのData01で秒単位でモニタできるようにする。
【例題①】に対して、経過時間のモニタ(Data01)を追加します。
タッチパネルでTIME型の変数を定義することが出来ないため、TIME→LINT型に変換する必要があります。(【例題①】とは逆)
今回は秒単位で経過時間をモニタするため、TimeToSec(時間→秒変換)ファンクションを使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

※撮影環境の都合で実際の時間に対して少し遅延しています。
スイッチ緑を押すたび設定時間だけランプ緑が点灯します。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
TP_1 | TP | FBインスタンス |
SwGreen | BOOL | スイッチ緑 |
LpGreen | BOOL | ランプ緑 |
Data00 | LINT | データ00(設定時間の設定) |
Data01 | LINT | データ01(経過時間の表示) |
Data00Time | TIME | データ00TIME型 |
Data01Time | TIME | データ01TIME型 |
ラダープログラム
ラダープログラムは以下のようになります。

SecToTime(秒→時間変換)ファンクションで、LINT型のData00(秒)をTIME型のData00Timeに変換します。(1行目)
タイマ入力にスイッチ緑、タイマ出力にランプ緑、設定時間にTIME型であるData00Timeを指定したパルス出力(TP)で、スイッチ緑を押すたび設定時間だけランプ緑が点灯します。(2行目)
TimeToSec(時間→秒変換)ファンクションで、TIME型のData01TimeをLINT型のData01(秒)に変換します。(3行目)
ST言語
ST言語は下記のようになります。
//LINT型のData00(秒)をTIME型のData00Timeに変換
Data00Time := SecToTime(In := Data00);
//スイッチ緑押下でData00Time時間後にランプ緑点灯
TP_1(In := SwGreen, PT := Data00Time, Q => LpGreen, ET => Data01Time);
//TIME型のData01TimeをLINT型のData01(秒)に変換
Data01 := TimeToSec(In := Data01Time);
4. おわりに
オムロンNJ/NXシリーズにおけるパルス出力(TP)について解説しました。
電気ハード設計、PLC/TPソフト設計、ロボットティーチング、制御盤製作の外注業務は、ぜひ永工舎にご相談ください。

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