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

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

締切済み
※ ChatGPTを利用し、要約された質問です(原文:マクロのIF)

マクロのIFでシステム変数#100の値が正しく読み取れない理由についての質問

2023/10/19 16:49

このQ&Aのポイント
  • FANUC CNCでNCのマクロを使用しようとしています。システム変数#100の値を読み取って、1ならマクロを抜けて、それ以外なら原点復帰して停止するプログラムです。しかし、実行すると#100にどんな値を入れてもマクロが実行されてしまいます。
  • 現在はテストですので、#100の値は手動で入力しています。
  • なぜ#100が常に空の値になっているのか、理由が分かる方がいらっしゃったら教えてください。
※ 以下は、質問の原文です

マクロのIF

2017/07/22 12:25

FANUC CNCでNCのマクロを使用しようとしています.
システム変数#100の値をを読んで1ならマクロを抜けて,それ以外なら原点復帰して停止するプログラムです.

O1000;
IF[#100EQ1.0]GOTO201;

N200;
M99;

N201;
G28G91Z0;
G28G91Y0;
M1;
M5;
M30;
%

呼び出し側はG65P1000;と記述しています.
現在はテストですので,#100の値は自動運転中に手動で入力しています.

上記を実行したところ#100にどんな値を入れてもN201が実行されてしまいます.
どうも#100が常に空の値になっているような気がします.

上記の現象が発生する理由がお分かりになられる方がいらっしゃおましたら,何卒ご教授お願い致します.

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

2017/07/22 14:11
回答No.2

>>システム変数#100の値をを読んで1ならマクロを抜けて,
>>それ以外なら原点復帰して停止

とありますが、マクロ文は#100=1でN201にとんで原点復帰、
それ以外ならM99で脱出しています
もういちど確認してみてください

また、#100に何を入れてもまたは空でもIF文が実行されて
N201に飛ぶのも解せませんね
(1)さんご回答の通り、IF文の前に#100=1.0とか#100=2.0とか
入れてみて、マクロがどのように実行されるか確認してみては
如何でしょう

お礼

2017/07/22 14:29

ご回答ありがとうございます.
質問文を間違えており申し訳ありませんでした.

回答1様のおっしゃる通り,プログラムの先読みのバッファをキャンセルすることで所望の結果を得ることが出来ました.

質問者

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

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

質問する
2017/07/22 12:31
回答No.1

マクロは先読み実行されるので、#100に手動で値をセットするよりも前に
IF文が処理されてしまっているのでは無いでしょうか。

G65呼び出しの前に、手動ではなくマクロ文にて#100に値をセットするか
O1000の先頭でバッファリングをキャンセルするMコードを指令すると
正常に動く様な気がします。

お礼

2017/07/22 14:31

ご回答ありがとうございます.

正にご回答の通りの内容が原因でした.
マクロ先頭にM12を挿入すると,所望の結果を得ることができました.

非常に助かりました.
ありがとうございました.

質問者

お礼をおくりました

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

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