UG爱好者

标题: 请教一个宏程序的问题 [打印本页]

作者: skyhx*    时间: 2015-5-24 09:33
标题: 请教一个宏程序的问题
本帖最后由 skyhx 于 2015-5-24 09:54 编辑

G0 G90 G54 X20 Y0;

MS S1200;

Z3;

M8;

#1=0;

IF [#1 GE -17.5 ] GOTO 1;

#1=#1-0.25;

G01 #1 F20;

G03 I-20 F1000;

N1 G0 G90 Z100;

M30;


如上,编辑了一个宏程序,用的床子是发那科的系统,但是运行的时候一直提示宏程序表达式非法  是哪里写错了吗?



下面这样写的才对  是吗?

G0 G90 G54 X20 Y0;
MS S1200;
Z3;
M8;
#1=0;
N10 #1=#1-0.25;
G01 Z#1 F20;
G03 I-20 F1000;
IF [#1 GT -17.5 ] GOTO 10;
G0 G90 Z100;

M30;


或者


G0 G90 G54 X20 Y0;
MS S1200;
Z3;
M8;
#1=0;
WHILE [#1 GT -17.5] DO 10;
#1=#1-0.25;
G01 Z#1 F20;
G03 I-20 F1000;
EBD 10;
G0 G90 Z100;

M30;







作者: song1539*    时间: 2015-5-24 10:00
楼主这程序写的是惨不忍睹啊。

虽然明白你的意思, 想分层铣个内孔。 但是程序写的不对, 无法执行的。   你的那个错误应该是出现在"G01 #1 F20."  你应该在#1前加轴名Z   , 为 Z#1.。       但是这仍然无法运行,因为你的判断语句有问题,执行的时候直接跳到程序尾部了。

正确的写法是:

#1=0
N2 IF [#1 LT -17.5] GOTO1
  #1=#1-0.25
G1 z#1 F20
G3 I-20. F1000
GOTO2
N1 G90 G0 z100
m30
作者: skyhx*    时间: 2015-5-24 10:09
song1539 发表于 2015-5-24 10:00
楼主这程序写的是惨不忍睹啊。

虽然明白你的意思, 想分层铣个内孔。 但是程序写的不对, 无法执行的。 ...

呵呵   是的   开始那个程序是忘记加Z 了   

看了你的程序又知道了另一种方法  非常感谢   

那麻烦你看看我上面写的 用WHILE  的方式对不对?
作者: song1539*    时间: 2015-5-24 15:51
skyhx 发表于 2015-5-24 10:09
呵呵   是的   开始那个程序是忘记加Z 了   

看了你的程序又知道了另一种方法  非常感谢   

这个用法是对的  没有问题
作者: √隨夢╰洏飛    时间: 2015-5-24 20:22
WHILE语句有问题吧?
应该是end1 或2 或3
作者: zy123456    时间: 2015-5-24 21:10
song1539 发表于 2015-5-24 15:51
这个用法是对的  没有问题

我想学习一点红程序知识,有什么资料推荐给我
一般的nc程式我都能轻松看懂
唯独宏程序不知道怎么入门
作者: skyhx*    时间: 2015-5-25 20:01
√隨夢╰洏飛 发表于 2015-5-24 20:22
WHILE语句有问题吧?
应该是end1 或2 或3

今天试了一下  还是报错
作者: √隨夢╰洏飛    时间: 2015-5-25 21:24
skyhx 发表于 2015-5-25 20:01
今天试了一下  还是报错

宏比较锻炼人,考验人的思维,我也是会一些简单的指令。你自己慢慢琢磨吧。
作者: √隨夢╰洏飛    时间: 2015-5-25 21:24
skyhx 发表于 2015-5-25 20:01
今天试了一下  还是报错

宏比较锻炼人,考验人的思维,我也是会一些简单的指令。你自己慢慢琢磨吧。
作者: song1539*    时间: 2015-5-26 16:51
zy123456 发表于 2015-5-24 21:10
我想学习一点红程序知识,有什么资料推荐给我
一般的nc程式我都能轻松看懂
唯独宏程序不知道怎么入门

上次忘记说了, WHILE 用法好像只支持到DO3

另外,资料的话没什么合适的,我当时学的时候就是看的FANUC说明书中的宏部分。
一开始看不懂,看了大约五六十遍后就能看懂了,后来再实验摸索一下,就可以自己写了。

嗯 , 那是十年前的事了。。。。
作者: zy123456    时间: 2015-5-27 09:05
song1539 发表于 2015-5-26 16:51
上次忘记说了, WHILE 用法好像只支持到DO3

另外,资料的话没什么合适的,我当时学的时候就是看的FANU ...

呵呵,我也是看说明书的
连续看了3。4遍,不知道所以然
就算是算式之间的逻辑关系能搞懂
但是那个变量是需要赋值的吧
赋值的通道在哪里,说明书上没有说
作者: yang_yy    时间: 2017-11-17 21:40
while只有DO 1 DO 2 DO3 和END 1 END 2 END 3配用
作者: yang_yy    时间: 2018-3-8 20:25
WHIEL[ ] DO 1 2 3 对应 END 1 2 3只有这么多
作者: l铁匠l    时间: 2018-8-14 13:10
本帖最后由 l铁匠l 于 2018-8-14 13:13 编辑

DO循环只能1到3,也就是最多只能是3层。
如:
DO1
  DO2
    DO3
    END3
  END2
END1
或者
DO1
END1
.
DO1
END1
又或者(一般不建议这样)
DO1
END1
.
DO2
END2
.
DO3
END3
.
DO1
END1

DO1.2.3-END1.2.3一般用来做多层循环用的,一层只要DO1-END1就够了,程序只会从DO1开始读到第一个END1。还有就是GOTO不能从外面跳转到DO和END之内,但是可以从内部往外面跳转!
作者: 腾飞凤舞    时间: 2019-1-7 15:21
song1539* 发表于 2015-5-24 10:00
楼主这程序写的是惨不忍睹啊。

虽然明白你的意思, 想分层铣个内孔。 但是程序写的不对, 无法执行的。 ...

楼主十多年前就开始学习宏程序了啊! 太牛了! 我学操机时也是啃完了一本程序说明书,但到宏程序时就怎么都看不懂了,当时没人教!
作者: 肆意的倔强    时间: 2019-1-8 18:49
厉害了




欢迎光临 UG爱好者 (https://www.ugsnx.com/) Powered by Discuz! X3.2