このQ&Aは役に立ちましたか?
ブロックデリートを使用せずに加工をスキップする方法
2023/10/17 18:40
- プログラム中でN3の工程をスキップする方法について教えてください。
- ブロックデリートを使用せずにN2工程からN4工程に自動的にジャンプする方法はありますか?
- マクロやGOTO文などを使わずにN2工程からN4工程へジャンプさせる方法を教えてください。
ブロックデリートを使用せずに加工をスキップする方法
2009/03/20 16:11
加工工程毎にN番号で区切ったプログラムをしています。
このうちN3の工程だけ一時的に不要になったので
N2→N4へプログラムを飛ばしたいのですが
ブロックデリート"/"をN3の全部の行に付けるのは
面倒ですし、オペレータがブロックデリートを無効に
してしまうとN3工程の加工がされてしまいます。
マクロのようにGOTO文などを使って
N2工程→N4工程へ自動的にジャンプさせる
方法はないでしょうか?
サブプロ等も使わず、プログラム本文中でやりたいです。
回答 (2件中 1~2件目)
そのプログラムがメインプログラムであれば、
つまり、他のプログラムのサブプログラムや
マクロプログラムとして呼び出されたものでなければ、
M99P__
で、Pで指定したシーケンス番号まで飛ばせます.
ただ、M99は基本的にサブプログラムからの復帰用の指令なので、
万が一にもサブプログラムやマクロであった場合には、
メインプログラムに戻り、指定シーケンス番号に実行が移されてしまいます.
ですから、サブプログラムとして呼び出される可能性がある場合、
例えば、MDIからM98で呼び出す可能性がある様な場合には、
この、メインプログラムとサブプログラムとでの挙動の違いに
注意しないといけません.
また、M99はプログラムを順繰りにサーチしますので、
検索のオーバーヘッドが発生します.
NCの機種によっては、GOTOよりはかなり遅いですね.
サブプログラム内で特定のシーケンス番号まで飛ばすには
一旦M98で別のプログラムを呼び出して、M99P__ですかね.
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
ファナックの場合。
例えばN1終了後、N4に飛ばしたいとき。
N1工程のM01の後に、M99 P4と入れるとN4までスキップします。
プログラムの途中まで飛ばしたい時は、飛ばしたい部分にシーケンスNoを付けておき、やりたい加工が終了した次のブロックにM99 P()を挿入します。
またもとのプログラムを復帰するときはM99のブロックを消去するだけなので楽です。
お礼
2009/03/22 12:47
ありがとうございます。
今まではブロックデリートで消したり
バックアップを取った後プログラム自体を消していたので
かなり楽になります。
お礼
2009/03/22 12:49
ありがとうございます。