- 補助機能コード信号<F010>をBCDで取得する
- 機能命令DECで補助機能コードBCDとMコードの一致出力を作る
- 一致出力を外部機器の動作条件に埋め込む
- 外部機器の動作完了を完了信号<G004.3>でCNCに返信する
- 3ケタ以上のMコードを使うときは、機能命令DECB(SUB25)でデコードする
NCプログラム中で当たり前のように使用している”Mコード”。
新たにMコードを追加する方法についてご存じでしょうか。
ラダーを扱うシーケンス制御エンジニアなら、ぜひ知っておきたいMコードの追加方法について解説します。
必要なもの
FANUC LADDER Ⅲ
FANUC LADDER Ⅲは、FANUCが提供するPMCラダー編集ソフトウェアです。
CNC本体の画面からPMCを編集することもできますが、編集量が多い場合は専用ソフトウェアをオススメします。
内蔵イーサネットポートを利用し、オンライン接続でPMCラダーを編集できます。
シーケンス回路&ラダープログラミングの知識
シーケンス回路を最低限理解でしていることを前提として解説をします。
あくまでもMコードの追加方法を知りたい人向けの解説です。
PMCプログラム
概要
PMCラダーに新規Mコードを追加するにあたっての大まかな流れは次の通りです。
- CNCから補助機能コード信号<Fn010~013>をバイナリコードで取得しBCDコードに変換する
- 機能命令SUB4 DEC(デコード)で補助機能コード信号に対応するMコードの一致出力を作成する
- Mコードの一致出力信号を動作させたい機器の運転条件に追加する
- Mコードの一致出力信号によって動作させた機器の動作完了で完了信号FIN<Gn004.3>を出力する
各手順の解説
CNCから補助機能コード信号<Fn010~013>をバイナリコードで取得しBCDコードに変換する
CNCから出力された補助機能コード信号は、補助機能コード信号<Fn010~Fn013>によりPMC側で取得することができます。
補助機能コード信号はバイナリデータで出力されるため、以降の処理でBCDデータを扱うにあたりデータ形式の変換が必要となります。
機能命令DCNVを使用して補助機能コード信号F010#0~7の8bitバイナリコードを、内部リレーR0000にBCDコードに変換して代入します。
機能命令DCNVに対しての入力信号、パラメータ、出力信号についての詳細は下記のとおりです。
機能命令DCNV<SUB14>
- BYT:データのサイズ指定
=0 1バイト指定(8bit)
=1 2バイト指定(16bit) - CNV:変換形式指定
=0 第一パラメータのバイナリコードをBCDコードに変換
=1 第一パラメータのBCDコードをバイナリコードに変換 - RST:リセット
=0 エラー出力コイルR100.0をリセットしない
=1 エラー出力コイルR100.0をリセットする
※F001.0 リセット指令により適時変換エラーをリセットする - ACT:実行指令
=0 データ変換を実行しない
=1 データ変換を実行する
※常時データ変換を実行する - 第一パラメータ
設定値:F010(補助機能コード信号バイナリコード) - 第二パラメータ
設定値:R0000(補助機能コード信号BCDコード格納用) - エラー出力
=0 正常
=1 データ変換エラー
また、補助機能コード信号の詳細については下記のとおりです。
[区分]出力信号
[機能]補助機能が指令されたことを通知する
[動作]スタート位置待ち合わせ機能が有効の時、待ち合わせ中に軸の移動完了を待つ間にMコードが出力される
機能命令SUB4 DEC(デコード)で補助機能コード信号に対応するMコードの一致出力を作成する
前項で取得した機能コード信号のBCDコードと一致する番号を判別します。
機能命令DECを使用して、補助機能コード信号BCDコードと指定した定数の一致を内部リレーR0145.0に出力します。
今回の例では、CNCから取得した補助機能コード信号がMコード45番であるかどうかを確認しています。第二パラメータ”4511″の上二桁部分で一致確認を行いたいMコード番号を指定してください。
ここで一致の確認がとれれば、CNCが実行中のMコード番号をPMC側で取得できます。
機能命令DEC<SUB4>
- ACT:実行指令
=0 データ変換を実行しない
=1 データ変換を実行する
※Mコード実行ストローブ信号F007.0の入力を受けて一致確認を実行する - 第一パラメータ<コード信号のアドレス>
設定値:R0000(補助機能コード信号BCDコード) - 第二パラメータ<デコード指示>
設定値:4511(上二桁:Mコード番号 下二桁:桁数) - デコード結果出力
=0 不一致
=1 一致
Mコードの一致出力信号を動作させたい機器の運転条件に追加する
デコード結果出力信号R145.0を起動信号として利用し、動作させたい外部機器を運転します。
この部分については、各機械に合わせてPMCラダー回路を設計する必要があります。
今回は解説の便宜上、Mコード信号で直接シリンダを前進させる回路としました。
Mコードの一致出力信号によって動作させた機器の動作完了で完了信号FIN<Gn004.3>を出力する
前項ではMコード信号でシリンダを前進させました。いずれシリンダは前進端まで移動し運転を完了します。なので、動作完了したことをCNCへ返答する必要があります。
CNCがMコードによる動作が完了したことを検知するためには、PMCより完了信号FIN<G004.3>を出力してあげましょう。
完了信号FINを受け取ったCNCは、補助機能コード信号をリセットし、Mコードが記述されたNCプログラム上のブロックの実行を終了します。
[区分]入力信号
[機能]補助機能、主軸機能、工具機能、第2補助機能、外部動作機能が完了したことを示す
以上でMコード指令を追加することができました。
3ケタ以上のMコードを追加したい場合
たとえばMコード100番以降を利用する場合は、デコード命令を変更します。
機能命令DECBは、バイナリデータ形式のコードデータをデコードする機能です。
設定した8個の連続する番号のうち、いずれかとコードデータが一致すると、指定番号に対応する出力データのビットが”オン”します。
基本仕様でデコードする場合、8ビット分のMコード指令番号を追加できます。
拡張仕様を利用すると、形式指定で指定した8ビット×nn個をまとめてデコードできます。
たとえばM100からM195までMコードの一致を確認する場合は、下記の回路となります。
デコード回路の意味がわかればMコード追加は簡単
今回はMコード指令の追加方法について解説しました。
MコードについてPMC側の処理を理解することができれば、ラダー回路の組み方次第で様々な機能を実装できます。
普段NCプログラムしか触らない人でも、PMCラダー上での処理を知識として知っておくと技術の引き出しが増えますよ。
コメント
コメント一覧 (7件)
質問させてください。
Mコードが3桁だった場合、デコードでの一致確認はどのようになりますでしょうか?
T.A様
ご質問ありがとうございます。
記事内に3桁のMコードを追加する方法を記載しました。
ご確認お願いします。
taroimo様
ご丁寧にご説明いただきありがとうございます!
ご教授いただいた方法で運用してみます。
ありがとうございました。
いつも参考にさせてもらってます
質問なんですがGコードはNCソフト側なので追加や修正は不可能なんでしょうか?
固定サイクル中の信号はPMCで拾えるんでしょうか?
ttnt様
コメント頂き、ありがとうございます。
>質問なんですがGコードはNCソフト側なので追加や修正は不可能なんでしょうか?
GコードはNC側固有の機能なので追加や修正はできません。
>固定サイクル中の信号はPMCで拾えるんでしょうか?
拾えます。やり方は下記の2つです。
①固定サイクル前後カスタムマクロを挿入する方法
【例】
#1000=1;
G** (固定サイクルのGコード)
#1000=0;
PMC側では接点G54.0でGコード実行中を取得する
メリットは簡単なこと。デメリットはC/Tに影響する点とNCプログラム側も修正しないと行けない点です。
カスタムマクロ参考:https://taroimo-lifestyle.com/pmc-nc-custommacro/873/
②WINDR機能でモーダルデータを取得する
WINDR機能で機能コード32を指定すると、モーダルなGコードを取得できます。
特定の固定サイクルで毎回PMC側で処理をおこないたい場合、こちらのほうが汎用性が高いです。
WINDR機能についてはこちらを参照:https://taroimo-lifestyle.com/pmc-absoluteposition-windr-application/831/
モーダルデータの取得方法についての記事は、1月末にアップ予定です。それまでお待ちいただければわかりやすい説明をできると思います。
ご丁寧にありがとうございました!
また疑問があれば質問させてください
お世話になってます。
パラメータ番号8800以降にある
ビット入力、2ワード入力の機械メーカー専用パラメータというのがあるのですが、
例えばビット入力の場合、どこかデータテーブル等に信号として送られPMCで使えるんでしょうか?
ネットで入手可能な説明書はできる限り漁りましたが、見つからず、またパラメータを変えつつ、PMCの信号画面を行き来して地道に探しても見つかりませんでした。
このパラメータの使い方がわかるのであればぜひ、ご教授頂きたく思います