【FANUC】PMCラダーで実行中のモーダルなGコードを取得する

このページでは、実行中のモーダルなGコードをPMCラダーで取得する方法について解説します。

目次
↓これは広告です↓

記事作成に至った経緯

以下のコメントを頂いたことが、今回の記事作成に至った理由です。

いつも参考にさせてもらってます。

質問なんですがGコードはNCソフト側なので追加や修正は不可能なんでしょうか?

固定サイクル中の信号はPMCで拾えるんでしょうか?

まずは1つ目の質問について。

GコードはNCソフト側なので追加や修正は不可能なんでしょうか?

Mコードと違い、Gコードを追加したり修正することはできません。

つぎに、2つ目の質問について。

固定サイクル中の信号はPMCで拾えるんでしょうか?

WINDR機能(ウィンドウ読出)を利用すれば、固定サイクル実行中かどうかを判断できます。

今回はこちらの質問に対して回答していきます。

やり方は、WINDR命令からG機能のモーダル情報の読み出しを使ってモーダルなGコードを取得。固定サイクルに該当するGコードが実行されたら、固定サイクル実行中の内部コイルをONさせるだけです。

WINDR命令(SUB 51)と機能コード32『G機能のモーダル情報の読み出し』の基礎

WINDR命令と機能コード32『G機能のモーダル情報の読み出し』について、基本的な構造を説明します。

PMCでNCウィンドウデータを読み出す機能がWINDR命令

WINDR命令とは、CNCウインドウデータの読み取り機能です。PMC-CNC間のウィンドウを経由して各種データの読み出しをおこないます。

10バイト分の制御パラメータを与えて命令を実行。11バイト以降に読み出したデータが格納されます。

機能コード何を読み出すかを指定します
完了コード命令実行後の完了状態が入力されます
データ長データ領域のバイト長を指定します
データ番号各機能に対する実行パラメータ
データ属性各機能に対する実行パラメータ

モーダルなGコードを読み出せるのが機能コード32の役割

今回使用する機能コードは32番です。G機能のモーダル情報の読み出す際に使用します。

設定するパラメータは『機能コード』『データ番号』『データ属性』の3つです。

機能コードGコード読み出し機能は32。
データ番号Gコードのグループ番号を指定します。
0~33:指定したグループ番号のデータを読み出し
-1:32グループを一括で読み出し
-3:リザーブを含めた全グループを一括で読み出し
データ属性Gコード読み出しのタイミングを指定します。
0:現在実行中のブロック
1:次のブロック
2:リザーブ

固定サイクルに該当するGコードのグループ番号は8です。固定サイクルだけが対象なので、データ番号に8を指定します。データ属性は0に設定してください。

固定サイクル以外のモーダルなGコードを取得したい場合は、下記のマシニングセンタ系G機能のモーダル情報一覧を参照してください。

今回の解説ではマシニングセンタ系のGコードが対象です。旋盤系の場合、各グループの対応はマシニングセンタ系と異なります。

WINDRでモーダルなGコードを読み出すラダープログラムの解説

WINDR命令で固定サイクルが実行中かを判断する、ラダープログラムの作り方を解説します。

プログラム内のアドレスとコメントは以下の通りです。

アドレスコメント
D0000~D0001機能コード(モーダル読出)
D0006~D0007データ番号(モーダル読出)
D0008~D0009データ属性(モーダル読出)
D1010~D1011G機能モーダル情報BIN
D2000~D2001G機能モーダル情報BCD

WINDR命令の制御パラメータ設定

機能コード

D0000~D0001(1,2バイト目)に機能コード32をNUMEB命令(バイナリ定数の定義)で定義します。

データ番号

D0006~D0007(6,7バイト目)にデータ番号8をNUMEB命令(バイナリ定数の定義)で定義します。

データ属性

D0008~D0009(8,9バイト目)にデータ番号0を、NUMEB命令(バイナリ定数の定義)で定義します。

WINDR命令実行

制御バラメータを定義した後、WINDR命令を実行します。D1010~D1011に現在行で実行中のGコードデータが格納されるため、これを取り出していきます。

モーダルなGコード情報の取り出し

バイナリからBCDへ変換

モーダルデータとの比較一致演算をおこなうため、バイナリデータからBCDへ変換します。変換にはDCNV命令(データ変換)を使用してください。

モーダルなGコードをコイルへ変換

取得したモーダルなGコードデータと、一覧表のグループ内コードとの一致をおこないます。

グループ内コードGコード機能実行中検出コイル
10G73高速深穴あけR0001.0
11G74逆タッピングR0001.1
12G76ファインボーリングR0001.2
0G80固定サイクルキャンセルR0001.3
1G81スポットドリリングR0001.4
2G82カウンタボーリングR0001.5
3G83深穴あけR0001.6
4G84タッピングR0001.7
13G84.2正リジットタップR0002.0
14G84.3逆リジットタップR0002.1
5G85切削ボーリングR0002.2
6G86早送りボーリングR0002.3
7G87バックボーリングR0002.4

PMCラダーの回路例は以下のとおりです。

実行中の固定サイクルを起動条件にする

R0001.0を使えば、G73高速深穴あけ実行中にクーラントを吐出するといった制御ができます。

コメント

コメント一覧 (2件)

  • ありがとうございます!

    マクロインターフェイスのF信号ですが、
    リセットボタンで0に戻るのと戻らないのがあります。
    F54.2はマクロ内で#1102=1と代入後、リセットボタンで0に戻るのですが、F276.0はリセットボタンを押しても1のままです。

    リセット押印で0に戻したいんですが、リセットする信号範囲をどこかで設定してるんでしょうか?

    • ttntさま

      パラメータ6001#1は「1(拡張仕様)」になっていますか?

      F054.0~F055.7はパラメータに関係なく使用できますが、
      F276.0~F277.7は拡張仕様になっていないと使えません。

      コモン変数をリセットする信号範囲といったパラメータがないため、
      まずはパラメータ6001#1を「1(拡張仕様)」に変更してお試しください。

コメントする

CAPTCHA


目次