「モーダル」と「ワンショット」
NCプログラムのGコードは「モーダル」と「ワンショット」に分類されます。
「ワンショット」とは、そのブロックのみに影響のあるGコードのことです。
例えば、「G04」主軸を一定時間停止する、ドウェル機能などが該当します。
これについては、特に問題ありません。
一行にしか影響がないので、いちいち、このGコードはワンショット…と考える必要がないのです。
Gコードの意味を理解していけば、自然と身につくと思います。
問題は「モーダル」と呼ばれるタイプです。
感覚的にわかりにくいので、私は理解するのに苦労しました。
「モーダル」は、いくつかのGコードがグループになっていて、必ずいずれかの状態が保持されるタイプのGコードです。
座標の指定モードを決める「G90」「G91」や主軸の移動方法を指定する「G00」〜「G03」などが該当します。
例えば「G90」(アブソリュート)と「G91」(インクレメンタル)は、NCプログラムが実行されている間、今どちらのモードで動くか、マシニングセンターに情報が保存されています。
この時、「G90」と「G91」は、一つのグループと見なすことが出来ます。
同じように、「G00」〜「G03」は、XYZなどの座標指令が行なわれた時、どのように動くのか?というグループになります。
「G80」〜の、穴あけ用の固定サイクルは、全て同じグループです。
これを理解するには、インターネットのアンケートで見かける、ラジオボタンをイメージすると、わかりやすいように思います。
上のように、同じグループの中で、必ずひとつだけが選択された状態にあります。
もし、この状態で、「G91G01」というプログラムが読まれると、以降はその状態が続くのです。
このように、「モーダル」タイプのGコードは、一度宣言すれば、その後は同じグループのGコードが読まれない限り、状態が維持されます。
つまり、最初に「G90G00」と入力すれば、その後はブロック毎に「G90」や「G00」を入れなくても、同じように動くのです。
上の二つは、同じ動きになります。
どちらでもプログラム上は問題ありません。
しかし、左の方が、見た目がスッキリして、見やすいプログラムになります。
また、プログラムの容量にも影響するので、なるべく省略した記述を、目指したほうがよいでしょう。
ここで注意しなければならないのは、一度読んだモーダルタイプのGコードは、その後も変更されないことです。
一時的に「G91」のインクレメンタルを使用した時や、円弧切削の「G03」を使用した時は、特に注意が必要です。
この状態で、「G90」や「G01」のつもりでXYZの座標指令をしてしまうと、とんでもない動きになります。
慣れてくると、よくやるミスなので、忘れずにチェックしましょう。
加工の開始と終わりに、「G90G00」を入れる癖を付けておくと、ミスが減ります。
「ワンショット」とは、そのブロックのみに影響のあるGコードのことです。
例えば、「G04」主軸を一定時間停止する、ドウェル機能などが該当します。
これについては、特に問題ありません。
一行にしか影響がないので、いちいち、このGコードはワンショット…と考える必要がないのです。
Gコードの意味を理解していけば、自然と身につくと思います。
問題は「モーダル」と呼ばれるタイプです。
感覚的にわかりにくいので、私は理解するのに苦労しました。
「モーダル」は、いくつかのGコードがグループになっていて、必ずいずれかの状態が保持されるタイプのGコードです。
座標の指定モードを決める「G90」「G91」や主軸の移動方法を指定する「G00」〜「G03」などが該当します。
例えば「G90」(アブソリュート)と「G91」(インクレメンタル)は、NCプログラムが実行されている間、今どちらのモードで動くか、マシニングセンターに情報が保存されています。
この時、「G90」と「G91」は、一つのグループと見なすことが出来ます。
同じように、「G00」〜「G03」は、XYZなどの座標指令が行なわれた時、どのように動くのか?というグループになります。
「G80」〜の、穴あけ用の固定サイクルは、全て同じグループです。
これを理解するには、インターネットのアンケートで見かける、ラジオボタンをイメージすると、わかりやすいように思います。
G90 (アブソリュート) G91 (インクレメンタル) |
G00 (早送り) G01 (切削送り) G02 (円弧切削右回り) G03 (円弧切削左回り) |
上のように、同じグループの中で、必ずひとつだけが選択された状態にあります。
もし、この状態で、「G91G01」というプログラムが読まれると、以降はその状態が続くのです。
G90 (アブソリュート) G91 (インクレメンタル) |
G00 (早送り) G01 (切削送り) G02 (円弧切削右回り) G03 (円弧切削左回り) |
このように、「モーダル」タイプのGコードは、一度宣言すれば、その後は同じグループのGコードが読まれない限り、状態が維持されます。
つまり、最初に「G90G00」と入力すれば、その後はブロック毎に「G90」や「G00」を入れなくても、同じように動くのです。
| ←→ 同じ動き |
|
上の二つは、同じ動きになります。
どちらでもプログラム上は問題ありません。
しかし、左の方が、見た目がスッキリして、見やすいプログラムになります。
また、プログラムの容量にも影響するので、なるべく省略した記述を、目指したほうがよいでしょう。
ここで注意しなければならないのは、一度読んだモーダルタイプのGコードは、その後も変更されないことです。
一時的に「G91」のインクレメンタルを使用した時や、円弧切削の「G03」を使用した時は、特に注意が必要です。
この状態で、「G90」や「G01」のつもりでXYZの座標指令をしてしまうと、とんでもない動きになります。
慣れてくると、よくやるミスなので、忘れずにチェックしましょう。
加工の開始と終わりに、「G90G00」を入れる癖を付けておくと、ミスが減ります。
G90G00 X100.Y100. Z10. G91G01Z-10.F250. X100. G03Y20.R10. G01X-100. G03Y-20.R10. G01Z10. G90G00 Z300. |
posted by center drill at 18:12
| Comment(3)
| NCプログラム
欲張りにいろんな事聞いてすみません、知っている範囲内でお願いします。 m(__)m
補正というのは、精度の厳しい加工をする場合の
調整でよろしいでしょうか?
私の職場の場合、2次元ですむような加工パスは、
径補正(G41、G42)で出力させています。
使用しているCAMソフトの表現だと、
「コントロール」という補正タイプです。
これなら、マシニングセンター側に設定した
工具径の値を増減させることで、現場で調整できます。
簡単な3次元加工なら、アプローチ点(参照点)を用意し、
加工パスをG91で出力することもあります。
加工のスタート位置を微調整することで、
寸法を出す方法です。
(調整しやすいよう、パスを工夫する必要があります)
複雑な3次元加工の場合は、
機械側の調整は無理なので、実際に削ってみて、
調整が必要だったら、CAMで補正して
まるごとNCプログラムを出力し直す…という
作業をしてます。
機械による対話形式は、すみません、
わかりません。
他の方の意見が聞けると、私も助かります。