GコードやMコードからなるNCデータの文法は、
日本製のコントローラーFANUC,MELDAS,OSP,TOSNUCなどは、
OSPの仕様で一部違いはあるものの大きな差はありません。
ただし海外製のHEIDENHAINに関しましては、
根本的に異なる部分も多いため、
別途こちらで、その違いを説明させておいていただきます。
★ ()で囲まれたブロックはコメント行とし無視されます。
認識するGコード
・G00:位置決め指令
・G01:直線補間指令
・G02/G03:円弧補間指令
・G04:ドウェル指令
・G06.2:NURBS補間指令 (FANUC)
・G132:NURBS補間指令 (OKUMA/OSP)
・G10:補正値と磨耗値のプログラマブルデータ入力
(詳細はコントローラー定義ファイルで指定するG10MODEを参照)
・G15:ワーク座標選択(OSPモードのときのみ有効)
・G17/G18/G19:平面指定
(初期状態はG17が指定されています)
・G28/G29/G30:レファレンス点復帰関連指令
・G39:コーナー円弧補間
・G40:工具径補正キャンセル
・G41/G42:工具径補正指令(補正値の指定はコントローラー定義
ファイルのMEMORY指定を参照)
注意:本バージョンでは、過剰なオフセット量により、
2つ以上先の移動情報と干渉する場合も、アラ−ムは発生させません。
参考という観点から切削を強引に行う仕様にしています。
なお、現在普及している一般的なNC制御装置は、
ひとつ先の移動情報との干渉は、自動的に除去されるのが普通です。
注意:一般的に最近のCNC装置において、径補正時干渉除去するための先読み処理は、
その数を指定することが可能になっています。
ただし、その数をあまり多くすると本来の経路(8の字経路など)が勝手に削除されたりすることもあり、
先読み数が多いから良いというものではないです。
現行のTRYCUTでは、この値は1固定になっていて、
十分な仕様とは言えないのですが、
逆に安全サイドの結果(TRYCUTで食い込んでも実機では食い込まないケースがある)
が得られることにもなります。
・G43/G44/G49:工具長補正/キャンセル指令(補正値の指定は
コントローラー定義ファイルのMEMORY指定を参照)
※OSPモードのときは、
G56,G53を工具長補正ならびにキャンセルコードとみなします。
・G50/G51:スケール
・G50.1/G51.1:ミラー
・G52,G53,G54〜G59:ワーク座標系選択(
FANUCモードのときのみ有効。実際の座標系の指定はコントローラー定義ファイルの
MEMORY指定を参照)
・G68/G69:座標回転指令
・G71:戻り点指定(OSPモードのときのみ有効)
・G73/G74/G76/G80〜G89:固定サイクル指令
注意:G73とG83を実加工モードでシミュレーションする場合、
一回の切り込み量(Qコード値)が小さいことによりZ値の移動が90回を超える場合は、
効率化の観点から、最後に一気に最終穴底位置まで切削を行います。
・G90/G91:絶対座標値/相対座標値切り換え指令
・G92:座標系設定指令
・G98/G99:復帰点レベル切り換え指令
・G274/G284:固定サイクル指令(OSPモードのときのみ有効)
認識する他のコード
・/,/1〜9:オプショナルスキップブロック指令
・Dxxx/Hxxx:xxxは1〜999の整数
・F:送り速度(直接指令、間接指令)
・T:待機工具指定又は工具交換 機械設定ファイルのATC TYPE参照
・M00:停止
・M01:オプショナルストップ
・M06:待機工具に工具交換
註:TコードやM06コードによる工具交換は、Tコードで指定されている工具が
工具設定ファイルで定義されていない場合は無視され
ます。
・M52:上限レベル復帰モード(OSPモードのときのみ有効)
・M53:G71による指定点レベル復帰モード(OSPモードのときのみ有効)
・M54:R点レベル復帰モード(OSPモードのときのみ有効)
・M109:側面創成加工(G119)解除(OSPモードのときのみ有効)
・M98<...>:外部サブプログラム呼び出し
・M198P... 又は<...>:外部サブプログラム呼び出し
・M99:サブプログラムからの復帰
・CALL ...:外部サブプログラム呼び出し(OSPモードのときのみ有効)
・NCYL:固定サイクル サイクル軸動作なし(OSPモードのときのみ有効)
サブプログラムの呼び出しは、実機と同等仕様ではありませんが以下の制約を満たす場合には外部ファイルからの読み込みが可能です。
・引数なし
・呼び出し回数指令省略(1回)
・内部でカスタムマクロ文を使用していない
上記3条件を満たす場合、サブプログラム部分を記述した拡張子なしのテキストファイル(例:"O112")を、
NCデータと同一フォルダに設置して下さい。ただし、M98/M198の<...>指定の場合と、
HEIDENHAINのCALL PGMは、パス指定が可能ですので設置フォルダは自由です。
ファイルが存在する場合にのみ、サブプログラム内のNCデータを参照します。
存在しない場合にはサブプログラム呼び出しブロック自体が無視されます。
[外部サブプログラムのファイル名]
呼び出し指令例 | 外部サブプログラムのファイル名 | 備考 |
M98<...> | <>内で指定したファイル名 | |
M198<...> | <>内で指定したファイル名 | |
M198P20 | "O20" 又は"O0020" (前者優先) | |
M198P0020 | "O20" 又は"O0020" (前者優先) | |
CALL URA_DR1.NC | "URA_DR1.NC" | OSPモード |
CALL O0020 | "O0020" | OSPモード |
CALL PGM O0020.H | "O0020.H" | HEIDENHAINモード |
HEIDENHAINは、独自のハイデンハイン言語と、
FANUCのGコード体系の仕様に合わせたISO形式の2種類のNCデータ形式があります。
TRYCUT2000で扱えるのは後者だけになります。
(※TRYCUT5000では、前者のハイデンハイン言語も主要部分は対応しています。)
前者は、直線補間がL、円弧補間ではC/CCで記述されるなど、
FANUCのGコード系のNCデータとは全く異なる記述になっています。
一方、後者もFANUC系と仕様が異なる部分があります。
G00,G01,G02,G03,G40,G41,G42など主要なGコード/Mコードの仕様は、
FANUC系と合わせている面が多いですが、
モーダル値や補正値の考え方などは色々と違いがあります。
CTLファイル内で、"PRODUCT=HEIDENHAIN"を指定した場合のNCデータの認識処理で、 FANUC系と異なる部分を以下にまとめました。
1.G02/G03時のIJK指定値をモーダル値として認識。
2.径補正値に関しては、Dコード指定がないため、
各マガジン(工具)番号に対応したD-CODEの値から参照。
ただし値がゼロの場合は、工具径の半分の値を補正値とみなす。
3.サイクル加工に関して現時点においてはG83,G84のみ対応。
M99指定部で実際のサイクル動作を行なう。
4.各行";"コード以降はコメントとみなす。
※TRYCUT2000でのHEIDENHAINの対応は、
実績が未だ少なく、あくまでも基本的な部分のみの対応となっています。
またHEIDENHAINの場合は、他の設定も強制的に変更していただく必要があるものもあります。
以下に今までのある実績例を列記しておきます。
CTLファイル内において
・EOR行を削除 (←FANUCのように"%"に対応するものがないため)
・DECIMAL POINT = NORMAL (←数値が小数点有り無し混在のため)
MTLファイル内において
・ATC TYPE = DIRCET (←M06がない場合)
指定平面に直交する軸方向だけの移動は、いくら連続していてもかまいません。 (XY平面指定中はZ方向だけの移動) なお、垂直要素群の前後に存在する移動要素どうしのオフセットが交点をもつ場合は、 この交点位置で垂直移動を行ないます。 交点がない場合は、手前の要素の終点のオフセット位置で垂直動作を行ないます。