【オムロンNJ/NX】配列要素の平均値算出(AryMean)FUNの指令方法とラダープログラム/ST例

00_【オムロンNJNX】配列要素の平均値算出(AryMean)FUNの指令方法とラダープログラムST例

オムロンNJ/NXシリーズにおける「配列要素の平均値算出(AryMean)」は、指定した要素分の配列要素の平均値を算出するファンクションです。(以下、平均値算出(AryMean)として表記します。)

平均値算出(AryMean)を用いることにより「配列要素の平均値を算出する」プログラムを作ることができます。

この記事では、オムロンNJ/NXシリーズにおける平均値算出(AryMean)の指令方法ラダープログラム、ST言語の例について解説します。

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

1. 平均値算出の指令方法

平均値算出(AryMean)はLD表現(ラダープログラム)とST表現(ST言語)で使用することができます。

10_LD表現
ラダープログラム
ST言語
Out := AryMean(In, Size);

平均値算出(AryMean)は↓の引数で構成されています。

引数タイプデータ型初期値コメント
ENINBOOLイネーブル入力
ENOOUTBOOLイネーブル出力
InIN演算対象配列
SizeINUINT1演算対象の要素数
OutRETURN演算結果

LD表現

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

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

このラダープログラムでは、InFlag(入力フラグ)がON(TRUE)している間、InData[0]~[9](要素数10)の平均値をOutData(出力データ)に格納します。

InFlag(入力フラグ)がON(TRUE)中にInData[0]~[9](入力配列)の値が変化すると、OutData(出力データ)の値も追従して変化します。

InFlag(入力フラグ)がON(TRUE)した瞬間のみInData[0]~[9](入力配列)の平均値をOutData(出力データ)に転送する場合、「InFlag(入力フラグ)を立ち上がり微分(R_TRIG)ファンクションブロック等で微分化する」または「平均値算出(AryMean)FUNに微分型(@)を指定する」方法があります。

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

00_【オムロンNJNX】立ち上がり微分(R_TRIG)FBの指令方法とラダープログラムST例 【オムロンNJ/NX】立ち上がり微分(R_TRIG)FBの指令方法とラダープログラム/ST例

微分型(@)を指定する場合、FUN(ファンクション)入力時、頭文字に@を付けます。

12_微分指定

ST表現

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

ST言語
IF InFlag THEN
	OutData := AryMean(InData[0], UINT#10);
END_IF;
メモ
引数タイプがIN、IN-OUTの場合は、「:=」で引数に値を引き渡します。引数タイプが「OUT」の場合は、「=>」で引数の値を変数に格納します。

このSTでは、InFlag(入力フラグ)がON(TRUE)している間、InData[0]~[9](要素数10)の平均値をOutData(出力データ)に格納します。※前述のLD表現と同じ動作です。

2.【例題】配列指定変数の平均値を求める

下記仕様のラダープログラム、STを平均値算出(AryMean)を用いて解説します。

仕様
配列指定変数Ary00[0]~[4]の平均値を常時Data00に格納する。
スイッチ緑を押すと、配列指定変数Ary00[0]~[4]の値をゼロクリアする。
配列指定変数Ary00は一次元配列、要素は[0]~[4]の要素数5とする。

Ary00[0]~[4]の平均値をData00に格納する処理に平均値算出(AryMean)を使用します。

Ary00[0]~[4]をゼロクリアする処理に初期化(Clear)ファンクションを使用します。オムロンNJ/NXの初期化(Clear)ファンクションについては以下のページで解説しております。

01_【オムロンNJNX】初期化(Clear)FUNの指令方法とラダープログラムST例 【オムロンNJ/NX】初期化(Clear)FUNの指令方法とラダープログラム/ST例

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

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

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

配列型変数Ary00[0]~[4]の平均値を常時Data00に格納します。

スイッチ緑を押すと、配列型変数Ary00[0]~[4]の値をゼロクリアします。

使用する変数

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

変数データ型コメント
SwGreenBOOLスイッチ緑
Data00UINTデータ00(平均値)
Ary00ARRAY[0..4] OF UINT配列00
P_OnBOOL常時ONフラグ(システム変数)

ラダープログラム

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

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

算出する範囲の先頭にAry00[0]、算出する要素数にUINT#5、平均値格納先にData00を平均値算出(AryMean)に指令することで、Ary00[0]~[4](要素数5)の平均値をData00に格納します。

イネーブル入力にP_On(常時ONフラグ)を指令することで、平均値の算出を常時行います。

メモ
オムロンNJ/NXシリーズにおけるP_Onは『PLCがRUN中は常にONする』システム変数です。

イネーブル入力にSwGreen(スイッチ緑)、対象変数にAry00を初期化(Clear)に指令することで、スイッチ緑を押すとAry00の配列要素を全てゼロクリアします。

ST言語

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

ST言語
//Ary00[0]~[4]の平均値を常時Data00に格納
Data00 := AryMean(Ary00[0], UINT#5);

//スイッチ緑押下でAry00の値をゼロクリア
IF SwGreen THEN
	Clear(Ary00);
END_IF;

3. おわりに

オムロンNJ/NXシリーズにおける平均値算出(AryMean)について解説しました。

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

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

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

コメントを残す

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