【キーエンスKV-X】文字列切出(MID)FUNの指令方法とラダープログラム/ST例

00_【キーエンスKV-X】文字列切出(MID)FUNの指令方法とラダープログラムST例

キーエンスKV-Xシリーズにおける「文字列切出(MID)」は、指定した文字列分、文字列の一部を切り出すファンクションです。

文字列切出(MID)を用いることにより「表示器や外部機器から入力された文字列」や「ラダープログラム内で格納した文字列」の文字列の一部を切り出す回路を作ることができます。

この記事では、キーエンスKV-X500/X300シリーズにおける文字列切出(MID)の指令方法ラダープログラム、ST言語の例について解説します。

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

1. 文字列切出の指令方法

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

10_LD表現
ラダープログラム
ST言語
Result := MID(In, L, P);

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

引数タイプデータ型初期値コメント
ENINBOOLイネーブル入力
ENOOUTBOOLイネーブル出力
InINSTRING[65534]切り出す対象文字列
LINUINT1切り出す文字数(0~1999)
PINUINT1切り出し開始位置(1~)
ResultRETURNSTRING[65534]切り出した文字列結果
注意
文字列切出(MID)で扱える文字列は1バイト文字で最大1999文字になります。

LD表現

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

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

このラダープログラムでは、InFlag(入力フラグ)がON(TRUE)している間、文字列ABCDEFの開始位置3から2文字を切り出したCDをOutStr(出力文字列)に格納します。

20_命令イメージ

切り出した文字列結果には終端コードNULL(00H)が付与されます。

メモ
文字列の定数を指定する場合、文字列を'(シングルクオーテーション)で囲います。

InFlag(入力フラグ)がON(TRUE)中に切り出す対象文字列(上記だとABCDEF)が変化すると、OutStr(出力文字列)の結果も追従して変化します。

InFlag(入力フラグ)がON(TRUE)した瞬間のみ切り出す対象文字列を切り出す場合、「InFlag(入力フラグ)を立ち上がり検出(R_TRIG)ファンクションブロック等で微分化する」または「文字列切出(MID)FUNを微分指定する」方法があります。

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

00_【キーエンスKV-X】立ち上がり検出(R_TRIG)FBの指令方法とラダープログラムST例 【キーエンスKV-X】立ち上がり検出(R_TRIG)FBの指令方法とラダープログラム/ST例

微分指定する場合、命令の引数設定ダイアログで微分(E)にチェックを入れます。

12_微分指定

ST表現

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

ST言語
IF InFlag THEN
	OutStr := MID(In := 'ABCDEF', L := UINT#2, P := UINT#3);
END_IF;
メモ
引数タイプがIN、IN-OUTの場合は、「:=」で引数に値を引き渡します。引数タイプが「OUT」の場合は、「=>」で引数の値を変数に格納します。

このSTでは、InFlag(入力フラグ)がON(TRUE)している間、文字列ABCDEFの開始位置3から2文字を切り出したCDをOutStr(出力文字列)に格納します。※前述のLD表現と同じ動作です。

2.【例題】変数の文字列を切り出す

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

仕様
スイッチ緑を押すと、Str00に格納されている文字列の2文字目から3文字を切り出しStr01に格納する。
Str00の文字列長が5文字以上の場合のみ、切り出し処理を行う。
※Str00の文字列長が5文字未満であればスイッチ緑を押しても切り出し処理は行わない。

Str00に格納されている文字列の2文字目から3文字を切り出す処理に文字列切出(MID)を使用します。

Str00の文字列長が5文字以上の場合のみ切り出し処理を行うため、文字列長検出(LEN)を使用してStr00の文字列長を一度変数に格納します。キーエンスKV-X500/X300シリーズの文字列長検出(LEN)ファンクションについては以下のページで解説しております。

00_【キーエンスKV-X】文字列長検出(LEN)FUNの指令方法とラダープログラムST例 【キーエンスKV-X】文字列長検出(LEN)FUNの指令方法とラダープログラム/ST例

Str00の文字列長を格納した変数と定数”5”を比較して、5以上の場合のみ文字列切出(MID)にて切り出し処理を行うようにします。(変数≧定数5)

キーエンスKV-X500/X300シリーズの比較(>=)ファンクションについては以下のページで解説しております。(他の比較についてもまとめて解説しております。)

00_【キーエンスKV-X】比較FUNの指令方法とラダープログラムST例 【キーエンスKV-X】比較(=,<>,<,<=,>,>=)FUNの指令方法とラダープログラム/ST例

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

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

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

スイッチ緑を押すと、Str00に格納されている文字列の2文字目から3文字を切り出しStr01に格納します。

Str00の文字列長が5文字以上の場合のみ、切り出し処理を行います。5文字未満の場合は、スイッチ緑を押しても切り出し処理を行いません。

使用する変数

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

変数データ型コメント
SwGreenBOOLスイッチ緑
Str00_LenUINT文字列00長さ
Str00STRING[30]文字列00(切り出す対象文字列)
Str01STRING[30]文字列01(切り出した文字列結果)

ラダープログラム

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

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

イネーブル入力に_AlwaysOn(常時ON)、対象文字列にStr00、文字列長結果にStr00_Lenを指令することで、Str00に格納されている文字列長(何文字か)を常にStr00_Lenに格納します。(1行目)

メモ
キーエンスKV-X500/X300シリーズにおける_AlwaysOnは『PLCがRUN中は常にONする』システム変数です。

イネーブル入力にSwGreen(スイッチ緑)、Str00_Len>=UINT#5の比較を指令することで、Str00が5文字以上の状態でスイッチ緑を押した場合のみ文字列切出(MID)が実行されます。(2行目の条件)

イネーブル入力に上記、切り出す対象文字列にStr00、切り出す文字数にUINT#3、切り出し開始位置にUINT#2、切り出した文字列結果にStr01を指令することで、Str00が5文字以上の状態でスイッチ緑を押した場合のみ、Str00の2文字目から3文字を切り出しStr01に格納します。(2行目の文字列切出(MID))

ST言語

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

ST言語
//Str00の文字列長をStr00_Lenに格納
Str00_Len := LEN(Str00);

//スイッチ緑押下かつStr00_Lenが5以上の場合、Str01にStr00の2文字目から3文字を格納
IF SwGreen AND Str00_Len >= UINT#5 THEN
	Str01 := MID(In := Str00, L := UINT#3, P := UINT#2);
END_IF;

3. おわりに

キーエンスKV-X500/X300シリーズにおける文字列切出(MID)について解説しました。

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

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

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

コメントを残す

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