昔の資料を整理していたところ、違いを書きだしたメモが出てきました。
最近はあまり必要としていませんが、とりあえず、残しておこうと思います。
もう、15年以上前の資料なので、現在では変わっている箇所もあるかもしれません。
この手の記事は、ネット上には沢山あると思うので、怪しい場合にはそちらも参考にしてください。
基本的な、工具の位置移動指令は、ほぼ同じ
工具の移動先を指令する、基本的なコードはほぼ同じです。
G17、G18、G19:平面指定
G90、G91:絶対・相対 座標指定
G00、G01、G02、G03 : 位置決め、直線・円弧補間
G04 : ドウェル
G40、G41、G42 : 工具径補正
G73~、G80~:固定サイクル、完全同じではないが、同じ機能が多い
M00、M01、M02、M30:プログラムストップやエンド
M02、M03、M04、M05:スピンドル回転
工具移動に関する基本的なコードは、だいたい同じです。
ただ、固定サイクルは、まったく同じではないので注意が必要です。
特に、穴あけ動作後の工具の退避指令や、リジットタップでは違いがあります。
(リジットタップは、同じファナック機でも違いがありますね~😠)
ワーク座標系
Fanuc : G54 ~ G59
標準では、G54 ~ G59 の6個の座標系が使用できます。
座標系を使い分けると、一つのテーブルに何個(何種類)か製品を載せて、自動運転が可能になります。
ただ、普通の仕様では、6個の製品しか載せられませんね。
実は、カスタムマクロを利用すると、増やすことも可能です。
機会があれば記事にしようと思います。
Fanuc : G54.1P1 ~
オプションになる機種もあると思いますが、G54.1 P「数値」のコードで設定します。
何個使えるかは、仕様により変わりますが、数十個から数百個は使用可能だと思います。
OSP : G15H1 ~
Fanuc の「G54.1P」が「G15H」に変わった感じです。
余談ですが、どうしてFanucは「G54.1」などというコードになったのでしょう?
私のいい加減な推測ですが、昔は6個の座標で十分だったけど、だんだん足りなくなってきて
増やそうにも、G60は既に割り当てられていたので、苦肉の策で小数点を使って拡張したという感じでしょうか?
変換ソフトなど作る場合など、ほんと面倒です。
工具長補正
Fanuc : G43
「G43 Z50.0 H01」のように、指定高さに移動するまでに補正値を完了させる指令です。
OSP : G56
こちらも、番号が変わっただけで、同様に指令します。
工具長補正キャンセル
Fanuc : G49
工具長補正をキャンセルするコードですが、ちょっと注意が必要です。
機種にもよりますが、キャンセルに動作が伴う場合があります。
その場合、補正値によっては、主軸が下がる場合があるので注意です。
したがって、直前に「G91G28Z0」で主軸をZ原点に退避させた後、キャンセルするのが安全です。
OSP : G53
こちらも番号が変わっただけですが、上のFanuc編で説明した、
Z原点へ退避させる原点復帰指令はOSPにはないので注意です。
原点復帰
Fanuc : G28
「G28」は、「移動軸」と共に「中間点」を同時に指令します。
「G90G28X100.0」とすると、まず「X100.0」の位置へ移動し、その後「X軸原点」へ移動します。
この動作を利用して、現在の位置からZ軸を原点へ移動させたい場合「G91G28Z0」のコードがよく使われます。
OSP : なし
OSPは原点復帰指令はありません。
海外の機械もそうですが、必ずしもZ軸機械原点が安全位置(最上面)にあるとは限らないから
危険だという事かもしれません。
その代わりに、退避させたい軸に、機械仕様よりも大きな数値を入れて移動させます。
ファナック機では、オーバートラベルのエラーが出てしまう場合がありますが、オークマ機はエラーになりません。
「G00Z1000.0」のようにします。
固定サイクル
ハイデンハインの場合には、いろいろなサイクルが用意されていますが、
ファナックの場合にはドリル加工用サイクルがほとんどです。
穴加工固定サイクルは「Gコード」で穴の加工モードを指令し、加工位置や深さを指定します。
穴加工サイクルのGコードの番号は、FanucとOSPでは、だいたい同じですが
違いもあるので、詳細はマニュアルやネット情報で調べてみてください。
固定サイクルは一度指令すれば、キャンセルコード「G80」が来るまで、指令位置へ同様の穴加工を行います。
穴加工サイクルが指令される、直前のZ軸の高さから、
実際の加工がスタートする高さを「R点」といい、「R」アドレスで指令します。
「直前の高さ」から「R点」までは、早送りで移動し、「R点」から加工送りスピードになります。
穴加工サイクルは、指定座標で加工サイクルが終了し、次へ移動する時のZ軸高さを2種類設定できます。
一つは、「R点」まで戻り移動する場合で「R点復帰」と呼ばれています。
もう一つは、 「直前の高さ」 か「指定高さ」まで戻り、移動する場合になります。
この移動高さをFanucでは「イニシャル点」と呼ばれていますが
オークマではなんと呼ぶのでしょう?「指定点」とかでしょうか?
ここでは。「イニシャル点」に統一し、「R点復帰」に対して「イニシャル点復帰」とします。
固定サイクル・R点復帰
Fanuc : G99
Fanuc固定サイクルの、「R点復帰」指令は、「G99」です。
・
G90 G00 Z50.0
G99 G73 X20.0 Y35.0 Z-30.0 R5.0 Q1.0 F200
X-20.0 Y35.0
X-20.0 Y-30.0
X20.0Y-30.0
G80
この例の場合、Z50.0の高さに位置決め後、「X20.0Y35.0」へ移動、
「高速深穴あけサイクルG73」で穴加工後、
R点「Z5.0」へ退避し、次の座標「 X-20.0Y35.0 」へ同様の穴加工を行います。
この場合「イニシャル点」は「Z50.0」ですが、「G99」なので、「Z5.0」で次の穴位置へ移動します。
OSP : M54
OSPの「R点復帰」指令は、Gコードでなく「M54」とMコードになります。
上の例の「G99」⇒「M54」に変更したデータになります。
固定サイクル・イニシャル点復帰
Fanuc : G98
Fanucのイニシャル点は、固定サイクル指令の「直前の高さ」になります。
「G98」により、固定サイクル中の移動は、「イニシャル点」の高さになります。
OSP : M53
OSPのイニシャル点は、直前という縛りはないですが事前に「G71」コードで指定します。
「G71 Z50.0」で、イニシャル点は「Z50.0」に設定されます。
「M53」により、固定サイクル中の移動は、「イニシャル点」の高さになります。
動作なし固定サイクル指令
一つのNCプログラムで運用する場合には、あまり必要にはなりませんが、
サブプロ的仕様で、穴加工の位置座標のみ、サブプロデータとして呼び出して使用する場合
固定サイクル指令と位置座標指令は別プログラムとしておいたほうが便利です。
このような場合、動作を伴わない固定サイクル指令が必要になります。
Fanuc : L0 もしくは K0 (ゼロ)
機種によって「L」と「K」の場合があるので、注意してください。
固定サイクル指令時に、「L0」または「K0」を追加します。
次の例では、「L0」や「K0」を指令していません
・
G90 G00 X0 Y0 Z50.0
G98 G73 Z-30.0 R5.0 Q1.0 F200
X20.0 Y35.0
X-20.0 Y35.0
X-20.0 Y-30.0
X20.0Y-30.0
G80
この場合、「X0 Y0」位置へも、穴あけ加工をします、
G73行に「L0」または「K0」を追加する事で、 「X0 Y0」位置 への穴加工を回避できます。
OSP : NCYL
・
G90 G00 X0 Y0
G71 Z50.0
NCYL G73 Z-30.0 R5.0 Q1.0 F200 M53
X20.0 Y35.0
X-20.0 Y35.0
X-20.0 Y-30.0
X20.0Y-30.0
G80
OSPでは、「NCYL」という「ニーモニックコード」と呼ばれる英文字単語を使います。
ここで注意が必要です。
単語なので、「NCYLG73Z-30.0R5.0Q1.0F200」とスペースなしで連続して指令してしまうと
「NCLYG」と判断されてしまいます。「NCYL G71」と「ニーモニックコード」を使用する場合には
必ず「スペース」が必要です。
サブプログラム呼び出し
Fanuc : M98 もしくは M198
M98とM198は、機種やサブプロの保存箇所によって違ってきます。
M98はサブプロがメインプロと同じメモリ内にある場合に使用します。
M198はデータサーバなど外部入出力機器内のサブプロを呼び出す場合に使用します。
呼び出すには、サブプロのO番号の「O」を「P」に変えて呼び出します
M98P1000 の場合、メインと同じメモリ内のO1000 を呼び出します。
OSP : CALL
OSPは「CALL」というニーモニックコードを使用します。
呼び出すプログラム名は「O」を先頭にした英数文字です。
CALL OSUB01 のように指令します
サブプログラムからの戻り
NCプログラムの終了は、Fanuc も OSP も「M02」や「M30」です同じですが
もし、サブプロの終了にこのコードを使用すると、そこでプログラムは終了してしまいます。
場合によってはサブプロで終了させたい事例もあるかもしれませんが、
通常は呼び出したメインプロの次の行へ戻します。
Fanuc : M99
サブプログラム実行中に「M99」を読み込むと、呼び出し元の次の行へ制御が移ります。
ちなみに、メインプログラムからの呼び出しでなく、直接「M99」で終了するプログラムを実行すると
永遠に繰り返しますので、サブプログラムを単独で実行したい場合には注意してください。
OSP : RTS
OSPも同様ですが、「RTS」がリターンコードになります。
サブプログラムの始まりと終了
Fanuc : %
Fanucは「%」を読み込んで初めて、NCプログラムだと認識しNC制御を始めます。
また、NC制御が始めり、再度「%」を読み込むと、終了します。
「%」~「%」の間を一つのNCプログラムとして処理します。
これを、連続して機械へ入力する事も可能です。
その場合「%」~「%」の組数により、複数のNCプログラムを一度に機械へ登録できます。
機種によっては、「%」と「%」の途中に、「M30」や「M99」がある場合、それをプログラム終了と判断し
複数のNCプログラムとして処理する機種もあります。
OSP : なし
OSPはFanucのような特殊な文字はありません。
ただし、「/」で区切る事で、メインプロとサブプロを一度に登録できます。
O1000
・
・
M53G81X-150.Y-125.8R5.Z-26.549F255
X-150.Y125.8
X150.Y-125.8
X150.Y125.8
X-55.Y-142.
X55.Y-142.
G80
G0Z1000.
M9
CALL OSUB01
・
・
M2
/
OSUB01(M206)
M132
G0Z1000M339
M5
G4P7
M133
RTS
/
OUSB02(M207)
M132
G0Z1000M121
S100M03
G4P3
M5
M9
M133
RTS
このように、よく使うコードは常にサブプロとして登録するようにすると便利です。
工具呼び出し
T「工具番号」のコードで呼び出すのは、FanucもOSPも同じです。
しかし、機種によっては、主軸工具をNCプログラムで呼び出すと、無視してくれる場合と
エラーで止まってしまう場合があります。
これは、Funuc機でも、エラーになる機械もありますが、オークマ機では
私の知っている限りでは、全てエラーになりました。
基本的には、主軸工具は呼び出さない仕様がよいと思いますが、その時の工具長補正の処理は
よく検討しておいたほうが、トラブルは少なくなると思います。
コメント文
NCプログラム中には、メモ書きとしてコメント文を挿入できます。
コメント文は、FanucもOSPも ( ・・・・ ) のように「 ( ) 」で囲まれた中身は
NC的には全く意味を持ちません。人間の参考用です。
以前はこの仕様は、同じだと思っていましたが、ある日、下記のような違いに遭遇した事がありました。
これが、全てに当てはまるのか?は、確認しておりませんが、体験談です。
Fanuc : ( ~ ) までを、コメントとする
( ・・・ ) に挟まれた文をコメントと扱います。
複数行であっても、閉じるまで、コメント扱いとなります。
改行があっても、コメント中として処理されます。
G90
( T02 M06
G00 G43 Z50. H02
Z5.0 )
この例では、先頭の「G90」以下はすべてコメント扱いになりますが
最後の ) が省略されると、エラーになる可能性があります。
OSP : ( だけで閉じられていなくても、改行までがコメントとなる
( ・・・ ) に挟まれた場合は、Fanucと同じですが、( だけでも改行までがコメントになります
G90
( T02 M06
G00 G56 Z50. H02
Z5.0
T02 の工具交換を無視にしたい場合、上記のように行の先頭のみに ( を入れる事で実現できます。
この場合は、T02 M06 はコメントとして無視させますが、
次の工具長補正 G00 G43G56 Z50. H02 は処理させたいのが、作業者の意図ですが
Fanucへの変換ソフトなど作成する場合には、注意が必要ですね!
コメントは「必ず閉じる」を必須にしたほうが、安全です。
まとめ
まだ違いは沢山あると思います。
ねじ切りサイクルや冷却指令なども、違いますが、これらの指令は、同じFanuc のバージョンであっても
機械で違う事もあるので、ここでは省略しました。
完璧なものは無理だと思いますが、時間を見つけて、Fanuc ⇒OSP の変換ソフトを作ってみようと思っています。
Fanuc ⇒ OSP 変換ソフトを公開しました。
また、今回の記事で間違いなどあったら、コメントいただければ助かります。
コメント
———————————————————————————————-
OSP : ( だけで閉じられていなくても、改行までがコメントとなる
( ・・・ ) に挟まれた場合は、Fanucと同じですが、( だけでも改行までがコメントになります
G90
( T02 M06
G00 G56 Z50. H02
Z5.0
T02 の工具交換を無視にしたい場合、上記のように行の先頭のみに ( を入れる事で実現できます。
この場合は、T02 M06 はコメントとして無視させますが、
次の工具長補正 G00 G43 Z50. H02 は処理させたいのが、作業者の意図ですが
——————————————————————————————————
この部分の最後の行は “G43” ではなく “G56” ですかね。
FANUC コードはそこそこ見慣れているので、オークマを使う時には頭の切り替えが大変です。
ニーモニック命令の後はスペースが必要というのも
バサッとスペースを削除するわけにはいかないので処理が面倒ですね。
ZENKYUさん、こんにちは。
そうですね。
OSPの項目だったので、G56 でしたね。
私も混乱していますね。直しておきます。ありがとうございます。
変換ソフトは、むか~し、会社では作った事がありましたが
暇つぶしに、作ってみようと思ってます。
かずばんさん、OSPについて教えてください。
ファイル名の拡張子に MIN や SUB がありますが
サブ呼び出しの時のたとえば CALL OSUB1 としたとき
OSUB1 というのはサブプログラムの先頭に書かれた”プログラム名”であって
ファイル名ではないんですよね?
同じファイルの中にメインとサブを含めて書いて読み込ませた時は
なんとなくわかるような気がしますが(実際にはよくわかってないですが…)
別ファイルで読み込ませた時は CALL でファイル名を指定するんですか?
ファイル名とプログラム名の扱いがわからないのです。
ZENKYUさん、こんにちは。
OSP機を立ち上げたのが、かなりの昔なのと、現在実機に触れる環境でないので
記憶をたどるしかないのですが、
記憶では、機械内のサブプロの置き場の容量が少なかったので、OSP機は工具交換時の
エア掃除程度だけメインプロに追加してサブで呼んでる感じです
ファナック機はサブプロ仕様での運用なので、ファナックデータを使用する場合には
サブプロをパッケージ化するソフトで対応しています
そういえば、
> ファイル名とプログラム名の扱いがわからないのです。
これは、確かにそうですね。
ファナックでも、「M98P1000」であれば、「O1000」を呼んできますが
これは現状、ファイル名もO番号も同じにしていますが、どうなんでしょう?
ご存じのかたいらっしゃったら、教えてください。
比較的新しい機械の場合、「M98<sabfilename.nc>」のように<>でファイル名指定が
できますけどね。