【オムロンNJ/NX】文字列長さ検出(LEN)FUNの指令方法とラダープログラム/ST例

00_【オムロンNJNX】文字列長さ検出(LEN)FUNの指令方法とラダープログラムST例

オムロンNJ/NXシリーズにおける「文字列長さ検出(LEN)」は、指定した文字列の文字数をカウントして結果を格納するファンクションです。

文字列長さ検出(LEN)を用いることにより「表示器や外部機器から入力された文字列」や「ラダープログラム内で格納した文字列」の文字列長(何文字か)をカウントするプログラムを作ることができます。

この記事では、オムロンNJ/NXシリーズにおける文字列長さ検出(LEN)の指令方法ラダープログラム、ST言語の例について解説します。

注意
この記事中のプログラムはSysmac Studio Ver.1.62で作成しており、CPUはNJ501-1500に設定してあります。
当サイトは現場の技術者を応援するスポンサー様のご支援により運営されています。
スポンサー様一覧ページはこちら>>

1. 文字列長さ検出の指令方法

文字列長さ検出(LEN)はLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

10_LD表現
ラダープログラム
ST言語
Out := LEN(In);

文字列長さ検出(LEN)は↓の引数で構成されています。

引数タイプデータ型初期値コメント
ENINBOOLイネーブル入力
ENOOUTBOOLイネーブル出力
InINSTRING長さ検出対象
OutRETURNUINT検出結果

LD表現

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

10_LD使用例
メモ
文字列長さ検出(LEN)はFUN(ファンクション)のため、インスタンス名を指令する必要はありません。

このラダープログラムでは、InFlag(入力フラグ)がON(TRUE)している間、文字列InStrの文字数をOutData(出力データ)に格納します。

InFlag(入力フラグ)がON(TRUE)中に文字列InStrの文字列長さが変化すると、OutData(出力データ)の値も追従して変化します。

InFlag(入力フラグ)がON(TRUE)した瞬間のみ文字列InStrの文字数をOutData(出力データ)に転送する場合、「InFlag(入力フラグ)を立ち上がり微分(R_TRIG)ファンクションブロック等で微分化する」または「文字列長さ検出(LEN)FUNに微分型(@)を指定する」方法があります。

立ち上がり微分(R_TRIG)ファンクションブロックについては以下のページで解説しております。

00_【オムロンNJNX】立ち上がり微分(R_TRIG)FBの指令方法とラダープログラムST例 【オムロンNJ/NX】立ち上がり微分(R_TRIG)FBの指令方法とラダープログラム/ST例

微分型(@)を指定する場合、FUN(ファンクション)入力時、頭文字に@を付けます。

12_微分型

ST表現

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

ST言語
IF InFlag THEN
	OutData := LEN(In := InStr);
END_IF;
メモ
引数タイプがIN、IN-OUTの場合は、「:=」で引数に値を引き渡します。引数タイプが「OUT」の場合は、「=>」で引数の値を変数に格納します。

このSTでは、InFlag(入力フラグ)がON(TRUE)している間、文字列InStrの文字数をOutData(出力データ)に格納します。※前述のLD表現と同じ動作です。

2.【例題】変数の文字列長さを検出

下記仕様のラダープログラム、STを文字列長さ検出(LEN)を用いて解説します。

仕様
スイッチ緑を押すと、Str00に格納されている文字列長さ(何文字か)をData00に格納する。
スイッチ黄を押すと、Str01に格納されている文字列長さ(何文字か)をData00に格納する。
スイッチ赤を押すと、定数”0”をData00に格納する。

文字列変数(Str00,Str01)に格納されている文字列長(何文字か)をData00に格納する処理に文字列長さ検出(LEN)を使用します。

Data00に定数”0”を格納する処理に転送(MOVE)ファンクションを使用します。オムロンNJ/NXシリーズの転送(MOVE)ファンクションについては以下のページで解説しております。

01_【オムロンNJNX】転送(MOVE)FUNの指令方法とラダープログラムST例 【オムロンNJ/NX】転送(MOVE)FUNの指令方法とラダープログラム/ST例

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

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

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

スイッチ緑を押すと、Str00に格納されている文字列長さ(何文字か)をData00に格納します。スイッチ黄を押すと、Str01に格納されている文字列長さ(何文字か)をData00に格納します。

スイッチ赤を押すと、定数”0”をData00に格納します。

使用する変数

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

変数データ型コメント
SwGreenBOOLスイッチ緑
SwYellowBOOLスイッチ黄
SwRedBOOLスイッチ赤
Data00UINTデータ00(文字列長さ)
Str00STRING[30]文字列00
Str01STRING[30]文字列01

ラダープログラム

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

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

イネーブル入力にSwGreen(スイッチ緑)、長さ検出対象にStr00、検出結果にData00を指令することで、スイッチ緑を押すとStr00に格納されている文字列長さ(何文字か)をData00に格納します。(1行目)

イネーブル入力にSwYellow(スイッチ黄)、長さ検出対象にStr01、検出結果にData00を指令することで、スイッチ黄を押すとStr01に格納されている文字列長さ(何文字か)をData00に格納します。(2行目)

イネーブル入力にSwRed(スイッチ赤)、転送元にUINT#0、転送先にData00を指令することで、スイッチ赤を押すとData00にUINT#0(1ワード符号なし整数の0)を格納します。(3行目)

ST言語

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

ST言語
//スイッチ緑押下でStr00の文字列長さをData00に格納
IF SwGreen THEN
	Data00 := LEN(In := Str00);
END_IF;

//スイッチ黄押下でStr01の文字列長さをData00に格納
IF SwYellow THEN
	Data00 := LEN(In := Str01);
END_IF;

//スイッチ赤押下でData00に定数"0"を格納
IF SwRed THEN
	Data00 := UINT#0;
END_IF;

3. おわりに

オムロンNJ/NXシリーズにおける文字列長さ検出(LEN)について解説しました。

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

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

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

コメントを残す

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