【ノウハウ初級】絶対値を求めるラダープログラム例【三菱FX】

00_【ノウハウ初級】絶対値を求めるラダープログラム例【三菱FX】

三菱電機製シーケンサFXシリーズでは、データレジスタ(D)や拡張レジスタ(R)といった数値を格納することができるデバイスが存在します。

これらのデバイスはワードデバイスと呼ばれ、1点が16ビットで構成されます。

ワードデバイスは、ラダープログラム内で「タイマやカウンタの設定値」「アラームにするか判断する閾値」「一連動作の工程番号」などなど様々な活用方法があります。

このワードデバイスは、符号ビットを”1”にすることで負の数値として扱われます。移動量や補正量といった量を演算で求める際、時として負の数値は弊害になる場合があります。つまり数値の絶対値が必要となる場合があります。

この記事では、ワードデバイスの代表ともいえるデータレジスタに格納された数値の絶対値を求めるラダープログラム例を2ヶ解説します。

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

三菱電機製シーケンサFXシリーズにおけるデータレジスタについては以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱FXシリーズ】データレジスタ(D)の使用方法とラダープログラム例【三菱FXシリーズ】データレジスタ(D)の機能と動作例 00_【三菱FXシリーズ】データレジスタ(D)の使い方【三菱FXシリーズ】データレジスタ(D)の使い方

1.【例題①】絶対値を転送する

下記仕様の絶対値を求めるラダープログラムを解説します。

仕様
データレジスタD0の絶対値をD2に転送する。

そもそも絶対値とは「符号を無視して得られる負ではない数値」のことです。絶対値は『正の数値であればそのまま』『負の数値であれば-1を乗算する』ことで求められます。

↑の仕様に置き換えると『D0のデバイス値が正の数値であればそのままD2に転送』『D0のデバイス値が負の数値であれば-1を乗算してD2に転送』すると求めることができます。

処理のイメージは以下のようになります。

例題①_フローチャート

ここでは負の数値を0未満、正の数値を0以上とします。(代数的には少し語弊があるかもしれません。)


このラダープログラムを作成するため、以下の命令を使用します。

ワードデバイスのデバイス値や定数を比較するには接点形比較命令を使用します。今回はD0と定数0を比較します。

00_【三菱FXシリーズ】接点形比較命令の指令方法とラダープログラム例【三菱FXシリーズ】接点形比較命令の指令方法とラダープログラム例

デバイス値を他のデバイスに転送するには転送(MOV)命令を使用します。今回はD0が正の数値であればそもままD2に転送します。

00_【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例

デバイス値を乗算するには乗算(MUL)命令を使用します。今回はD0が負の数値であれば-1を掛けて結果をD2に格納します。

00_【三菱FXシリーズ】乗算(MUL)命令の指令方法とラダープログラム例【三菱FXシリーズ】乗算(MUL)命令の指令方法とラダープログラム例

GOTの動作イメージ

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

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

データレジスタD0の絶対値をD2に転送します。

ラダープログラム

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

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

接点形比較命令を用いて、データレジスタD0と定数0を比較します。

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

D0が0以上の場合、転送(MOV)命令を用いてD0のデバイス値をD2に転送します。MOV命令は16ビット実行形のため、D0とD1は1ワード(16ビット)長として扱われます。

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

D0が0未満の場合、乗算(MUL)命令を用いてD0と-1を乗算した結果をD2・D3に格納します。MUL命令の演算結果は2ワード(32ビット)長を占有します。

例題①_ラダープログラム解説3
注意
乗算(MUL)命令は16ビット実行形であっても演算結果は32ビット(2ワード)を占有します。↑のラダープログラムでD3は指定していませんが、他の用途では使用できなくなります。

2.【例題②】減算結果の絶対値を求める

下記仕様の絶対値を求めるラダープログラムを解説します。

仕様
スイッチ(X0)を押すと、データレジスタD0からD1を減算した絶対値をD2に格納する。

デバイス値を減算するには減算(SUB)命令を使用します。今回はD0からD1を引いた結果をD2に格納します。

00_【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例

GOTの動作イメージ

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

例題②_GOT

スイッチ(X0)を押すと、データレジスタD0からD1を減算した絶対値をD2に格納します。

ラダープログラム

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

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

入力条件をX0をする減算(SUB)命令を用いて、D0からD1を引いた結果をD2に格納します。

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

接点形比較命令を用いて、D2が0未満の場合に乗算(MUL)命令にてD2と-1を乗算した結果をD2・D3に格納します。※例題①と同様にD3も占有します。

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

接点形比較命令と乗算(MUL)命令を用いて「負の数値の場合は-1を掛ける」ことで絶対値を求めましたが、三菱電機製シーケンサFXシリーズでは、補数(NEG)命令を用いることで符号を反転することができます。

この補数(NEG)命令は、デバイス値が負の数値の場合に実行することで絶対値を求めることができます。

補数(NEG)命令は以下のページで解説しておりますので宜しければご覧ください。

00_【三菱FXシリーズ】補数(NEG)命令の指令方法とラダープログラム例【三菱FXシリーズ】補数(NEG)命令の指令方法とラダープログラム例

ただし、FXシリーズの中で使用できるシーケンサはFX3U/FX3UCのみですのでご注意ください。

3. おわりに

三菱電機製シーケンサFXシリーズで作成する絶対値を求めるラダープログラム例を解説しました。

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

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

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

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

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

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

コメントを残す

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