こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

マクロのIF

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

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

N200;
M99;

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

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

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

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

投稿日時 - 2017-07-22 12:25:00

QNo.9475579

困ってます

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

0人が「このQ&Aが役に立った」と投票しています

回答(2)

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

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

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

投稿日時 - 2017-07-22 14:11:00

お礼

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

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

投稿日時 - 2017-07-22 14:29:00

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

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

投稿日時 - 2017-07-22 12:31:00

お礼

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

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

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

投稿日時 - 2017-07-22 14:31:00

あなたにオススメの質問