【キーエンスKV-X】除算(DIV)FUNの指令方法とラダープログラム/ST例

00_【キーエンスKV-X】除算(DIV)FUNの指令方法とラダープログラムST例

キーエンスKV-Xシリーズにおける「除算(DIV)FUN」は、被除算データの値から除算データの値を除算した結果を求めるファンクションです。

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

注意
この記事中のラダープログラムはKV STUDIO Ver.12で作成しており、対応機種はKV-X500に設定してあります。

キーエンスKV-X500/X300シリーズでは、他の四則演算(加算・減算・乗算)ファンクションが用意されています。他の四則演算ファンクションについては以下のページで解説しております。

00_【キーエンスKV-X】加算(ADD)FUNの指令方法とラダープログラムST例 【キーエンスKV-X】加算(ADD)FUNの指令方法とラダープログラム/ST例 00_【キーエンスKV-X】減算(SUB)FUNの指令方法とラダープログラムST例 【キーエンスKV-X】減算(SUB)FUNの指令方法とラダープログラム/ST例 00_【キーエンスKV-X】乗算(MUL)FUNの指令方法とラダープログラムST例 【キーエンスKV-X】乗算(MUL)FUNの指令方法とラダープログラム/ST例

1. 除算FUNの指令方法

除算(DIV)FUNはLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

10_LD表現
ST言語
Result := In1 / In2;

除算(DIV)FUNは↓の引数で構成されています。

引数タイプデータ型初期値コメント
ENINBOOLイネーブル入力
ENOOUTBOOLイネーブル出力
In1IN被除算データ
In2IN除算データ
ResultRETURN演算結果

LD表現

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

11_LD使用例
メモ
除算(DIV)はFUN(ファンクション)のため、インスタンス名を指令する必要はありません。

このラダープログラムでは、被除算データであるInData00から除算データであるInData01を除算した結果を演算結果であるOutDataに格納します。(InData00 ÷ InData01 = OutData)

除算(DIV)FUNは除算データ(In2)が「0」の場合、演算エラーとなります。演算エラーは避けるには「除算データ(In2)を「0」にならないようにする」「除算データ(In2)が「0」の時は除算(DIV)FUNを実行しないようにする」等の対策が必要です。後者のラダープログラム例は↓になります。

11_演算エラー対策

ST表現

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

ST言語
OutData := InData00 / InData01;

このSTでは、被除算データであるInData00から除算データであるInData01を除算した結果を演算結果であるOutDataに格納します。(InData00 ÷ InData01 = OutData)※前述のLD表現と同じ動作です。

2.【例題①】変数の除算結果を求める(整数型)

下記仕様のラダープログラム、ST言語を除算(DIV)FUNを用いて解説します。

仕様
変数Data00からData01を除算した結果を常にData02に格納する。
Data01の値が「0」の時は除算処理を行わない。
変数は全て1ワード符号なし整数(UINT)型として扱う。

Data00からData01を除算に除算(DIV)FUNを使用します。

変数は全て1ワード符号なし整数(UINT)型のため、小数点以下は切り捨てられます。

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

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

例題①_タッチパネル

変数Data00からData01を除算した結果を常にData02に格納します。Data01の値が「0」の時は除算処理を行いません。

使用する変数

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

変数データ型コメント
Data00UINTデータ00(In1)
Data01UINTデータ01(In2)
Data02UINTデータ02(Result)

変数は全て1ワード符号なし整数(UINT)を使用します。

ラダープログラム

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

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

被除算データにData00、除算データにData01を指令した除算(DIV)FUNで、除算結果をData02に格納します。

除算データであるData01が「0」の場合、除算(DIV)FUNを実行させないため、比較<>(NE)FUNを使用しています。

ST言語

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

ST言語
//Data00からData01を除算した結果をData02に格納
IF Data01 <> UINT#0 THEN
	Data02 := Data00 / Data01;
END_IF;

3.【例題②】変数の除算結果を求める(浮動小数点型)

下記仕様のラダープログラム、ST言語を除算(DIV)FUNを用いて解説します。

仕様
変数Data00からData01を除算した結果を常にData02に格納する。
Data01の値が「0」の時は除算処理を行わない。
変数は全て単精度浮動小数点型(REAL)型として扱う。

Data00からData01を除算に除算(DIV)FUNを使用します。

変数は全て単精度浮動小数点型(REAL)型のため、小数点以下も演算されます。

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

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

例題②_タッチパネル

変数Data00からData01を除算した結果を常にData02に格納します。Data01の値が「0」の時は除算処理を行いません。

使用する変数

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

変数データ型コメント
Data00REALデータ00(In1)
Data01REALデータ01(In2)
Data02REALデータ02(Result)

変数は全て単精度浮動小数点型(REAL)型を使用します。

ラダープログラム

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

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

被除算データにData00、除算データにData01を指令した除算(DIV)FUNで、除算結果をData02に格納します。(【例題①】と同様)

除算データであるData01が「0」の場合、除算(DIV)FUNを実行させないため、比較<>(NE)FUNを使用しています。(【例題①】と同様)

ST言語

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

ST言語
//Data00からData01を除算した結果をData02に格納
IF Data01 <> REAL#0 THEN
	Data02 := Data00 / Data01;
END_IF;

4. おわりに

キーエンスKV-X500/X300シリーズにおける除算(DIV)FUNについて解説しました。

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

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

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

コメントを残す

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