宏程序如何使用?

宏程序如何使用?,第1张

记下指令和格式就和子程序差不多。指令(EQ为=,NE不等于,

GT大于,

LT小与,

GE大于等于

,LE小于等于)WH

DO

END是运算指令也是英文缩写。

例赋值#2等于5。运算#2=#2+1

运行一次后#2值就是6,运行n次#2值为5+n。

A宏程序的编制方法就是:

利用变量编程的

1、条件语句1

IF

[条件表达式]

GOTO

n

n….

当条件满足时,程序就跳转到同一程序中语句标号为n的

语句上继续执行,

当条件不满足时,程序执行下一条语句。

2、条件语句2WHILE

[条件表达式]

DO

m...…END

m

当条件满足时,从DO

m到ENDm之间的程序就重复执行

当条件不满足时,程序就执行ENDm下一条语句。

3、椭圆的解析方程:

4、椭圆的参数方程:

条件语句2。

5、椭圆加工程序

N010

#1=1

角度步长

N020

#2=-90

(270)

初始角度

N030

#3=90

终止角度

N040

#4=10

刀具半径

N050

#5=30

长半轴

N060

#6=20

短半轴

N070

G90G00X0Y

[#6+#4]

刀具运行到(0,-30,)的位置

N080

S1000M03

N090

G01Z-3F100

刀具下到-3mm

N100

WHILE[#2LE#3]DO1

起始角度小于等于终止角度

N110

#7=#5*COS[#2]

计算X坐标值(椭圆参数方程)

N120

#8=#6*SIN[#2]

计算Y坐标值

(椭圆参数方程)

N130

G1X#7Y#8F300

直线插补一个步长

N14

0#2=#2+#1

变量#2增加一个角度步长

N150

END1

N160

G90G00Z100.0M05

快速抬刀。

if语句,if( ),括号里的内容和while( )里的内容都是判定句,判定为真则执行语句,假则不执行语句,不同点就是if没有循环的性子,一旦执行过后就跳出语句,而while判定为真后执行它下面的语句,执行完后返回括号里继续判定,判定为真继续执行语句知道括号里判定为假为止

宏程序流程控制和循环语

数控车床宏程序与普通程序有什么区别呢?第一个就是流程控制

普通程序在执行的时候,它总是从第一段开始依次执行到最后一段程序结束,中途不改变执行顺序。而宏程序可以改变程序的执行顺序。可以根据加工需要,让某段程序重复执行多少次等。要学会程序的执行顺序控制,必须学会以下两种语句:

“IF……GOTO"

*WHILE……DO”。

先看“IF……GOTO

“IF”在单词中表示“如果”的意思;“GOTO”则表示“去哪里”或者“到哪里”。那么在两个单词中的省略号,它表示条件!

条件只有两种可能:成立、不成立。

我们可以用这个语句造句,“如果明天开学了,我就要去学校”。在此语句中,要表达的意思非常明确,当条件是“开学”的时候,“我才会去学校”。如果“不开学”,那我就不会去。在这里,“开学”与“不开学”就表示条件的成立与不成立。成立就执行,不成立就不执行!

但我们会发现一个问题:“IF[条件]GOTO”语句中,“GOTO”后面是要跟着目的地的。比如造句时候,目的地是“学校”,那在程序中,该怎么表达目的地呢?其实很简单,目的地就是——行号!在数控程序中,能够表示目标地的也只有行号了。举个例子

#1=2

N1#1=#1-1

IF[#1 GE 0] GOTO1

(GE 表示大于等于)

( GOTO1 表示跳到第一行,这里不用写 N )

G0 X100

Z100

M30

程序对#1 这个变量进行赋值,它的结果是 2。到了下一行出现了N1。都知道N在数控程序中表示程序段,后面跟的数字表示第几行(其实行号可以自己定义,在本例程序中,把“#1=#1-1”定义为第一行)。当程序执行到 N1 行的时候,系统发现#1 这个变量进行了自减运算。但系统不知道自减的目的,于是继续向下执行,来到了“IF [#I GE 0] GOTO1”这一行。

这时候系统才明白,原来#1 自减的目的是用来判断的。当执行到这行的时候,#1 的结果已经不是 2,而是 1 了。然后系统会把#1 这个结果与 0 进行比较,它发现#1 当前的值(1)是大于等于 0 的。由于该语句的意思是,如果#1 的结果大于或等于 0,就跳转到第一行,所以系统会跳转到第一行执行(N1 处),

不会执行下面的“GO X100”等语句。

然后程序跳到了 N1 处,又自减了一次。这时候#1 的结果是 0。而不是1 了,运算过后又来到了“IF”语句进行判断,发现当前#的值虽然不大于 0,但等于 0。因此条件又成立了,只好继续跳到第一行。于是又进行了一次运算,此时#的结果是-1。当再次执行到“IF”语句时,系统发现#当前的值是既不大于也不等于 0,因此条件就不满足了。条件不满足,那么就不执行“GOTO1”这个命令,而是执行下一行“G0 X100”。然后依次执行。

再来看*WHILE……DO”

#1=2

WHILE [#I GE O] DO1

#1=#1-1

END1

Go x100

z100

M30

这就看出来END 关键词所在位置。它位于循环体的最后面。也就是说,用 WHILE 判断的时候,如果条件成立,就执行 DO 与 END 之间的程序。后面的那个阿拉伯数字“1”,表示第一层。一定要记住,DO 和 END 后面的数字必须一一对应。不能出现“DO1”与“END2”这个类型。要么都是 1,要么都是2。

程序的执行顺序与结果和“IF..GOTO”一致。首先系统得知#1 的值目前是 2,但不知道干嘛的。于是向下执行,发现这里有个 WHILE语句,并且有个条件判断,“如果#1 的结果大于或者等于 2,那就执行 DO1 与END1 之间的程序"。经过判断,条件是成立的。所以就执行了“#1=#1-1”。

然后执行 END1 并返回到 WHILE 语句,再次判断#1 的值是否符合条件。系统发现#1 的结果是 0,仍然符合。于是继续执行 DO1 与 ENDI 之间的程序。一直到#1的结果不符合,程序才会执行“G0 X100”和后面的程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12200785.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存