キーエンスKV-Xシリーズにおける「転送(MOVE)FUN」は、転送元の値を転送先に転送するファンクションです。
転送(MOVE)FUNを用いることにより「変数に定数を格納するプログラム」や「変数の値を他の変数に転送するプログラム」を作ることができます。
この記事では、キーエンスKV-X500/X300シリーズにおける転送(MOVE)FUNの指令方法とラダープログラム、ST言語の例について解説します。
目次
1. 転送FUNの指令方法
転送(MOVE)FUNはLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

Dst := Src;
転送(MOVE)FUNは↓の引数で構成されています。
引数 | タイプ | データ型 | 初期値 | コメント |
---|---|---|---|---|
EN | IN | BOOL | – | イネーブル入力 |
ENO | OUT | BOOL | – | イネーブル出力 |
Src | IN | – | – | 転送元 |
Dst | Out | – | – | 転送先 |
LD表現
↓がLD表現で使用したラダープログラム例です。

このラダープログラムでは、InFlag(入力フラグ)がON(TRUE)している間、InData(入力データ)の値をOutData(出力データ)に転送します。
InFlag(入力フラグ)がON(TRUE)中にInData(入力データ)の値が変化すると、OutData(出力データ)の値も追従して変化します。
InFlag(入力フラグ)がON(TRUE)した瞬間のみInData(入力データ)の値をOutData(出力データ)に転送する場合、「InFlag(入力フラグ)を立ち上がり検出(R_TRIG)ファンクションブロック等で微分化する」または「転送(MOVE)FUNを微分指定する」方法があります。
立ち上がり検出(R_TRIG)ファンクションブロックについては以下のページで解説しております。

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

ST表現
↓がST表現で使用したST言語例です。
IF InData THEN
OutData := InData;
END_IF;
このSTでは、InFlag(入力フラグ)がON(TRUE)している間、InData(入力データ)の値をOutData(出力データ)に転送します。※前述のLD表現と同じ動作です。
注意事項
転送元(Src)と転送先(Dst)のデータ型がINT/UINT/DINT/UDINT/REAL/LREALのいずれかで、転送元(Src)と転送先(Dst)のデータ型が異なる場合、転送元(Src)の値は転送先(Dst)の型に変換されてから転送されます。
転送元(Src)に配列全体、配列の1要素、構造体全体、構造体の1メンバを指定した場合は、↓のように処理します。
転送元(Src) | 処理内容 |
---|---|
配列全体 | 配列のすべての要素を転送 |
配列の1要素 | その要素だけを転送 |
構造体全体 | 構造体のすべてのメンバを転送 |
構造体の1メンバ | そのメンバだけを転送 |
2.【例題①】変数に定数を転送
下記仕様のラダープログラム、STを転送(MOVE)FUNを用いて解説します。
スイッチ黄を押すと、変数Data00に定数0を転送する。
スイッチ緑と黄を両方押した場合、後から押された処理を適用する。
Data00にスイッチに応じた定数の転送に転送(MOVE)FUNを使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

スイッチ緑を押すと変数Data00に定数5を転送します。スイッチ黄を押すと変数Data00に定数0を転送します。
スイッチ緑と黄を両方押した場合、後から押された処理が適用されます。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
R_TRIG1 | R_TRIG | FBインスタンス |
R_TRIG2 | R_TRIG | FBインスタンス |
SwGreen | BOOL | スイッチ緑 |
SwYellow | BOOL | スイッチ黄 |
Data00 | UINT | データ00 |
ラダープログラム
ラダープログラムは以下のようになります。

立ち上がり検出(R_TRIG)を使用することにより、各スイッチの立ち上がり(FALSE→TRUE)を検出した時のみ転送(MOVE)FUNが実行されます。
転送(MOVE)FUNの転送元に各スイッチに応じた定数をUINT型(1ワード符号なし整数)で指定することで、UINT型の変数Data00に1ワード符号なし整数の値が転送されます。
立ち上がり検出(R_TRIG)ファンクションブロックについては以下のページで解説しております。

ST言語
ST言語は以下のようになります。
//スイッチの立ち上がり検出
R_TRIG1(CLK := SwGreen);
R_TRIG2(CLK := SwYellow);
//スイッチ緑の立ち上がりでData00に定数5を転送
IF R_TRIG1.Q THEN
Data00 := 5;
END_IF;
//スイッチ黄の立ち上がりでData00に定数0を転送
IF R_TRIG2.Q THEN
Data00 := 0;
END_IF;
3.【例題②】配列型変数の転送
下記仕様のラダープログラム、STを転送(MOVE)FUNを用いて解説します。
スイッチ黄を押すと、配列型変数Ary01の値をAry00に転送する。
スイッチ緑と黄を両方押した場合、後から押された処理を適用する。
配列型変数はいずれも一次元配列、要素は[0]~[4]の要素数5とする。
転送(MOVE)FUNの転送元と転送先に配列型変数(全体)を指定します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

スイッチ緑を押すと配列型変数Ary00の値をAry01に転送します。スイッチ黄を押すと配列型変数Ary01の値をAry00に転送します。
スイッチ緑と黄を両方押した場合、後から押された処理が適用されます。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
R_TRIG1 | R_TRIG | FBインスタンス |
R_TRIG2 | R_TRIG | FBインスタンス |
SwGreen | BOOL | スイッチ緑 |
SwYellow | BOOL | スイッチ黄 |
Ary00 | ARRAY[0..4] OF UINT | 配列00 |
Ary01 | ARRAY[0..4] OF UINT | 配列01 |
ラダープログラム
ラダープログラムは以下のようになります。

立ち上がり検出(R_TRIG)を使用することにより、各スイッチの立ち上がり(FALSE→TRUE)を検出した時のみ転送(MOVE)FUNが実行されます。※【例題①】と同様
転送(MOVE)FUNの転送元と転送先に配列型変数(全体)を指定することにより、配列のすべての要素が転送されます。
ST言語
ST言語は以下のようになります。
//スイッチの立ち上がり検出
R_TRIG1(CLK := SwGreen);
R_TRIG2(CLK := SwYellow);
//スイッチ緑の立ち上がりでAry01にAry00を転送
IF R_TRIG1.Q THEN
Ary01 := Ary00;
END_IF;
//スイッチ黄の立ち上がりでAry00にAry01を転送
IF R_TRIG2.Q THEN
Ary00 := Ary01;
END_IF;
4.【例題③】構造体型変数の転送
下記仕様のラダープログラム、STを転送(MOVE)FUNを用いて解説します。
スイッチ黄を押すと、構造体型変数WorkData01の値をWorkData00に転送する。
スイッチ緑と黄を両方押した場合、後から押された処理を適用する。
構造体は「WorkData」とし、メンバはワーク有無、品種、検査結果とする。(詳細は構造体「WorkData」に記述)
転送(MOVE)FUNの転送元と転送先に構造体型変数(全体)を指定します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

スイッチ緑を押すと構造体型変数WorkData00の値をWorkData01に転送します。スイッチ黄を押すと構造体型変数WorkData01の値をWorkData00に転送します。
スイッチ緑と黄を両方押した場合、後から押された処理が適用されます。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
R_TRIG1 | R_TRIG | FBインスタンス |
R_TRIG2 | R_TRIG | FBインスタンス |
SwGreen | BOOL | スイッチ緑 |
SwYellow | BOOL | スイッチ黄 |
WorkData00 | WorkData | ワークデータ00 |
WorkData01 | WorkData | ワークデータ01 |
データ型WorkDataの内容は構造体「WorkData」に記述します。
構造体「WorkData」
構造体「WorkData」する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
Exist | UINT | ワーク有無 |
Type | STRING[15] | 品種 |
Result | REAL | 検査結果 |
ラダープログラム
ラダープログラムは以下のようになります。

立ち上がり検出(R_TRIG)を使用することにより、各スイッチの立ち上がり(FALSE→TRUE)を検出した時のみ転送(MOVE)FUNが実行されます。※【例題①②】と同様
転送(MOVE)FUNの転送元と転送先に構造体型変数(全体)を指定することにより、構造体のすべてのメンバが転送されます。
ST言語
ST言語は以下のようになります。
//スイッチの立ち上がり検出
R_TRIG1(CLK := SwGreen);
R_TRIG2(CLK := SwYellow);
//スイッチ緑の立ち上がりでWorkData01にWorkData00を転送
IF R_TRIG1.Q THEN
WorkData01 := WorkData00;
END_IF;
//スイッチ黄の立ち上がりでWorkData00にWorkData01を転送
IF R_TRIG2.Q THEN
WorkData00 := WorkData01;
END_IF;
5. おわりに
キーエンスKV-X500/X300シリーズにおける転送(MOVE)FUNについて解説しました。
電気ハード設計、PLC/TPソフト設計、ロボットティーチング、制御盤製作の外注業務は、ぜひ永工舎にご相談ください。

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