本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:ブロックデリートを使用せずに加工をスキップする方法)

ブロックデリートを使用せずに加工をスキップする方法

2023/10/17 18:40

このQ&Aのポイント
  • プログラム中でN3の工程をスキップする方法について教えてください。
  • ブロックデリートを使用せずにN2工程からN4工程に自動的にジャンプする方法はありますか?
  • マクロやGOTO文などを使わずにN2工程からN4工程へジャンプさせる方法を教えてください。
※ 以下は、質問の原文です

ブロックデリートを使用せずに加工をスキップする方法

2009/03/20 16:11

加工工程毎にN番号で区切ったプログラムをしています。
このうちN3の工程だけ一時的に不要になったので
N2→N4へプログラムを飛ばしたいのですが
ブロックデリート"/"をN3の全部の行に付けるのは
面倒ですし、オペレータがブロックデリートを無効に
してしまうとN3工程の加工がされてしまいます。

マクロのようにGOTO文などを使って
N2工程→N4工程へ自動的にジャンプさせる
方法はないでしょうか?

サブプロ等も使わず、プログラム本文中でやりたいです。

回答 (2件中 1~2件目)

2009/03/21 14:11
回答No.2

そのプログラムがメインプログラムであれば、
つまり、他のプログラムのサブプログラムや
マクロプログラムとして呼び出されたものでなければ、
M99P__
で、Pで指定したシーケンス番号まで飛ばせます.
ただ、M99は基本的にサブプログラムからの復帰用の指令なので、
万が一にもサブプログラムやマクロであった場合には、
メインプログラムに戻り、指定シーケンス番号に実行が移されてしまいます.
ですから、サブプログラムとして呼び出される可能性がある場合、
例えば、MDIからM98で呼び出す可能性がある様な場合には、
この、メインプログラムとサブプログラムとでの挙動の違いに
注意しないといけません.

また、M99はプログラムを順繰りにサーチしますので、
検索のオーバーヘッドが発生します.
NCの機種によっては、GOTOよりはかなり遅いですね.

サブプログラム内で特定のシーケンス番号まで飛ばすには
一旦M98で別のプログラムを呼び出して、M99P__ですかね.

お礼

2009/03/22 12:49

ありがとうございます。

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2009/03/20 16:26
回答No.1

ファナックの場合。
例えばN1終了後、N4に飛ばしたいとき。
N1工程のM01の後に、M99 P4と入れるとN4までスキップします。
プログラムの途中まで飛ばしたい時は、飛ばしたい部分にシーケンスNoを付けておき、やりたい加工が終了した次のブロックにM99 P()を挿入します。
またもとのプログラムを復帰するときはM99のブロックを消去するだけなので楽です。

お礼

2009/03/22 12:47

ありがとうございます。
今まではブロックデリートで消したり
バックアップを取った後プログラム自体を消していたので
かなり楽になります。

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。