キーエンスKV-Xシリーズにおける「剰余(MOD)FUN」は、被除算データを除算データで除算した時の剰余(余り)を求めるファンクションです。
この記事では、キーエンスKV-X500/X300シリーズにおける剰余(MOD)FUNの指令方法とラダープログラム、ST言語の例について解説します。
キーエンスKV-X500/X300シリーズでは、被除算データを除算データで除算した商を求める除算(DIV)ファンクションが用意されています。除算(DIV)ファンクションについては以下のページで解説しております。

目次
1. 剰余FUNの指令方法
剰余(MOD)FUNはLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

Result := In1 MOD In2;
剰余(MOD)FUNは↓の引数で構成されています。
引数 | タイプ | データ型 | 初期値 | コメント |
---|---|---|---|---|
EN | IN | BOOL | – | イネーブル入力 |
ENO | OUT | BOOL | – | イネーブル出力 |
In1 | IN | – | – | 被除算データ |
In2 | IN | – | – | 除算データ |
Result | RETURN | – | – | 演算結果 |
LD表現
↓がLD表現で使用したラダープログラム例です。

このラダープログラムでは、被除算データであるInData00から除算データであるInData01を除算した剰余をOutDataに格納します。
剰余(MOD)FUNは除算データ(In2)が「0」の場合、演算エラーとなります。演算エラーを避けるには「除算データ(In2)を「0」にならないようにする」「除算データ(In2)が「0」の時は剰余(MOD)FUNを実行しないようにする」等の対策が必要です。後者のラダープログラム例は↓になります。

ST表現
↓がST表現で使用したST言語例です。
OutData := InData00 MOD InData01;
このSTでは、被除算データであるInData00から除算データであるInData01を除算した剰余をOutDataに格納します。※前述のLD表現と同じ動作です。
2.【例題】変数の剰余を求める
下記仕様のラダープログラム、STを剰余(MOD)FUNを用いて解説します。
Data01の値が「0」の時は剰余を求める処理は行わない。
変数は全て1ワード符号なし整数(UINT)型として扱う。
Data00からData01を除算した剰余を求める処理に剰余(MOD)FUNを使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

変数Data00からData01を除算した剰余を常にData02に格納します。
Data01の値が「0」の時は剰余を求める処理は行わないため、Data01の値が「0」になる前の演算結果がData02に格納され続けます。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
Data00 | UINT | データ00(In1) |
Data01 | UINT | データ01(In2) |
Data02 | UINT | データ02(Result) |
ラダープログラム
ラダープログラムは以下のようになります。

被除算データにData00、除算データにData01を指令した剰余(MOD)FUNで、剰余をData02に格納します。
除算データであるData01が「0」の場合、剰余(MOD)FUNを実行させないため、比較<>(NE)FUNを使用しています。
ST言語
ST言語は以下のようになります。
//Data00からData01を除算した剰余をData02に格納
IF Data01 <> UINT#0 THEN
Data02 := Data00 MOD Data01;
END_IF;
3. おわりに
キーエンスKV-X500/X300シリーズにおける剰余(MOD)FUNについて解説しました。
電気ハード設計、PLC/TPソフト設計、ロボットティーチング、制御盤製作の外注業務は、ぜひ永工舎にご相談ください。

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