キーエンスKV-Xシリーズにおける「平方根(SQRT)FUN」は、指定したデータの平方根を求めるファンクションです。
この記事では、キーエンスKV-X500/X300シリーズにおける平方根(SQRT)FUNの指令方法とラダープログラム、ST言語の例について解説します。
目次
1. 平方根FUNの指令方法
平方根(SQRT)FUNはLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

Result := SQRT(In);
平方根(SQRT)FUNは↓の引数で構成されています。
引数 | タイプ | データ型 | 初期値 | コメント |
---|---|---|---|---|
EN | IN | BOOL | – | イネーブル入力 |
ENO | OUT | BOOL | – | イネーブル出力 |
In※ | IN | – | – | 演算データ |
Result※ | RETURN | – | – | 演算結果 |
ラダープログラム上でデバイスを指定した場合、REAL(単精度浮動小数点)型として扱われます。
LD表現
↓がLD表現で使用したラダープログラム例です。

このラダープログラムでは、演算データであるInDataの平方根をOutDataに格納します。
平方根(SQRT)FUNは演算データ(In)の値が負の場合、演算エラーとなります。演算エラーを避けるには「演算データ(In)を負にならないようにする」「演算データ(In)が負の時は平方根(SQRT)FUNを実行しないようにする」等の対策が必要です。
前者の場合、絶対値(ABS)FUNを用いて演算データを事前に負にならないようにする方法があります。絶対値(ABS)FUNについては以下のページで解説しております。

後者のラダープログラム例は↓になります。※InDataはREAL(単精度浮動小数点)型とします。

ST表現
↓がST表現で使用したST言語例です。
OutData := SQRT(InData);
このSTでは、演算データであるInDataの平方根をOutDataに格納します。※前述のLD表現と同じ動作です。
2.【例題】変数の平方根を求める
下記仕様のラダープログラム、STを平方根(SQRT)FUNを用いて解説します。
Data00の値が負の時は平方根を求める処理は行わない。
変数は全て単精度浮動小数点(REAL)型として扱う。
変数Data00の平方根を求める処理に平方根(SQRT)FUNを使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

変数Data00の平方根を常にData01に格納します。
Data00の値が負の時は平方根を求める処理は行わないため、Data00の値が負になる前の演算結果がData01に格納され続けます。
タッチパネルの対象変数は整数部2桁、小数部3桁に設定してあります。
使用する変数
使用する変数は以下になります。
変数 | データ型 | コメント |
---|---|---|
Data00 | REAL | データ00(In) |
Data01 | REAL | データ01(Result) |
ラダープログラム
ラダープログラムは以下のようになります。

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

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