【ノウハウ中級】デバイス値を四捨五入するラダープログラム【三菱FX】

00_【ノウハウ中級】デバイス値を四捨五入するラダープログラム【三菱FX】

四捨五入とは、端数処理の一種で『求める次の位(下の位)の数値が5以上(5,6,7,8,9)であれば切り上げ、逆に5未満(0,1,2,3,4)であれば切り捨てる』ものです。

四捨五入は日常的に色々な用途で使用されることから「ExcelであればROUND関数」「C言語であれば標準ライブラリのround関数」といったようにアプリケーション・プログラミング言語内に用意されている場合が大半です。

ラダープログラムにおいても、四捨五入を実行する命令があると思いましたが、私が調べた中では存在しませんでした…(恐らく用意されているPLCも世の中には存在すると思います。)

ラダープログラムで制御する「産業機械」や「工場設備」において数値を四捨五入することが稀有であるからだと思いますが、必要に迫られる可能性もあります。

今回は、三菱電機製シーケンサFXシリーズにおけるデータレジスタの数値を四捨五入するラダープログラム例を2ヶ解説します。

注意
この記事中のラダープログラムはGX Works2で作成しており、PCタイプはFX3G/FX3GCに設定してあります。

1.【例題①】1の位を四捨五入する

下記仕様のラダープログラムを解説します。

仕様
データレジスタD0のデバイス値を1の位で四捨五入して、結果をD10に格納する。
この処理をPLCがRUN中に常時行う。

1の位で四捨五入する場合、求める数値を”10”で割ったときの剰余(余り)が5以上であれば切り上げ、5未満であれば切り捨てを行います。

フローチャート

フローチャートは以下のようになります。

例題①_フローチャート

各処理の詳細は以下のようになります。

D0を定数10で割った剰余(余り)をD3に格納する。

D3が「5以上であれば切り上げ」「5未満であれば切り捨て」と判断する。

「5未満で切り捨て」の場合、D0からD3の値を減算した結果をD10に格納する。

「5以上で切り上げ」の場合、定数10からD3を減算した結果をD4に格納して、D0にD4の値を加算した結果をD10に格納する。


例)D0の値が3456の場合

定数10で割った剰余(余り)であるD3には”6”が格納されます。

D3の値が5以上であることから「切り上げ」と判断して④に分岐します。

3456を1の位で切り上げるためには、”4”を足す必要があります。まず定数10からD3に格納されている”6”を減算した結果である”4”をD4に格納します。その後、D0にD4を加算した結果である”3460”をD10に格納します。

GOTの動作イメージ

GOTの動作イメージは以下のようになります。

メモ
GOT(グラフィックオペレーションターミナル)とは、三菱電機製タッチパネルのことで生産現場や工場設備で広く使用されている製品です。
ここでは「GOTはラダープログラムで使用されているデバイスのON/OFF状態や現在値をモニタしたり、変更することができるもの」程度の認識でOKです。
例題①_GOT

GOTから入力できるデータレジスタD0の値を1の位で四捨五入して、結果をD10に格納します。

ラダープログラム

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

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

①処理部分】

M8000を入力条件とする除算(DIV)命令にてD0を10で割った商と剰余(余り)をD2・D3に格納します。

例題①_命令イメージ①

四捨五入するには、商は使用せずに剰余(余り)のみ使用します。

メモ
三菱電機製シーケンサFXシリーズにおけるM8000は『PLCがRUN中は常にONする』特殊なデバイスです。

【②処理部分】

接点形比較命令を用いて、D3が5以上か判定します。D3が5以上であれば補助リレーM0がONします。M0がONのとき、つまりD0を10で割った剰余(余り)が5以上であれば切り上げと判断します。

例題①_解説②

【③処理部分】

M0がOFFのときは「切り捨て」の処理を行います。減算(SUB)命令を用いてD0からD3の値を減算した演算結果をD10に格納します。

例題①_命令イメージ③

D0の値を1の位で切り捨ててD10に格納する処理はこれで完了です。


【④処理部分】

M0がONのときは「切り上げ」の処理を行います。まず減算(SUB)命令を用いて切り上げるために必要な値をD4に格納します。その後、加算(ADD)命令を用いてD0とD4を加算した演算結果をD10に格納します。

例題①_命令イメージ④

D0の値を1の位で切り上げてD10に格納する処理はこれで完了です。


この【例題①】で使用した命令は以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱FXシリーズ】除算(DIV)命令の指令方法とラダープログラム例【三菱FXシリーズ】除算(DIV)命令の指令方法とラダープログラム例 00_【三菱FXシリーズ】接点形比較命令の指令方法とラダープログラム例【三菱FXシリーズ】接点形比較命令の指令方法とラダープログラム例 00_【三菱FXシリーズ】加算(ADD)命令の指令方法とラダープログラム例【三菱FXシリーズ】加算(ADD)命令の指令方法とラダープログラム例 00_【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例

2.【例題②】10の位を四捨五入する

下記仕様のラダープログラムを解説します。

仕様
データレジスタD0のデバイス値を10の位で四捨五入して、結果をD10に格納する。
この処理をPLCがRUN中に常時行う。

10の位で四捨五入する場合、求める数値を”100”で割ったときの剰余(余り)が50以上であれば切り上げ、50未満であれば切り捨てます。

フローチャート

フローチャートは以下のようになります。

例題②_フローチャート

処理の流れは【例題①】と同様ですが、10の位で四捨五入する場合は↑の赤字部分の値が異なります。

GOTの動作イメージ

GOTの動作イメージは以下のようになります。

例題②_GOT

GOTから入力できるデータレジスタD0の値を10の位で四捨五入して、結果をD10に格納します。

ラダープログラム

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

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

【例題①】に対して、↓の赤枠部分の数値が異なります。

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

赤枠部分以外は【例題①】と同様です。

3. おわりに

三菱電機製シーケンサFXシリーズで作成する四捨五入するラダープログラム例を解説しました。

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

ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。

各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。

ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。

DODA』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。

「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。

コメントを残す

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