このページでは、実行中のモーダルな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機能のモーダル情報一覧を参照してください。
WINDRでモーダルなGコードを読み出すラダープログラムの解説
WINDR命令で固定サイクルが実行中かを判断する、ラダープログラムの作り方を解説します。
プログラム内のアドレスとコメントは以下の通りです。
アドレス | コメント |
---|---|
D0000~D0001 | 機能コード(モーダル読出) |
D0006~D0007 | データ番号(モーダル読出) |
D0008~D0009 | データ属性(モーダル読出) |
D1010~D1011 | G機能モーダル情報BIN |
D2000~D2001 | G機能モーダル情報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コード | 機能 | 実行中検出コイル |
---|---|---|---|
10 | G73 | 高速深穴あけ | R0001.0 |
11 | G74 | 逆タッピング | R0001.1 |
12 | G76 | ファインボーリング | R0001.2 |
0 | G80 | 固定サイクルキャンセル | R0001.3 |
1 | G81 | スポットドリリング | R0001.4 |
2 | G82 | カウンタボーリング | R0001.5 |
3 | G83 | 深穴あけ | R0001.6 |
4 | G84 | タッピング | R0001.7 |
13 | G84.2 | 正リジットタップ | R0002.0 |
14 | G84.3 | 逆リジットタップ | R0002.1 |
5 | G85 | 切削ボーリング | R0002.2 |
6 | G86 | 早送りボーリング | R0002.3 |
7 | G87 | バックボーリング | 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は拡張仕様になっていないと使えません。
コモン変数をリセットする信号範囲といったパラメータがないため、を「1(拡張仕様)」に変更してお試しください。
まずはパラメータ6001#1