❶ 谁知道数控宏程序是什么意思啊
宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削, 实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.
❷ 宏程序的定义和使用 以及与现在的G代码编程的区别
宏程序里面包括G代码 关键是宏程序能够进行数学运算和逻辑运算 从而可以实现自动的循环切削 或者规律切削 或者加工公式曲线之类的轮廓!而宏程序里离不开普通程序 只不过那个值有的是变量 就是说是不断变化的!!而G代码一般只能跟固定的数值!比如G01x10.而宏可以用G01x#1 #1可以等于任何数字 看你怎么赋值了
❸ 数控宏程序编程100例 [用户宏程序的应用]
用户宏程序是FANUC系统提供的一种变量编程方式,它不同于普通的程序,用户宏程序允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程序更方便,更容易。使用用户宏时的主要方便之处在于可以用变量代替具体数值,因而在加工同一类的零件时,只需将实际的值赋予变量即可,而不需要对每一个零件都编一个程序。用户宏程序和普通程序的简要对比见表1。
一、用户宏程序的特征
用户宏程序的最大特征有以下几个方面:
可以在用户宏程序中使用变量;
可以进行变量之间的运算;
用户宏命令可以对变量进行赋值。
表1用户宏程序和普通程序的简要对比
普通程序 宏程序
只能使用常量 可以使用变量,并给变量赋值
常量之间不可以运算 变量之间可以运算
程序只能顺序执行,不能跳转 程序运行可以跳转
二、户宏程序的应用举例
1. 椭圆加工
加工如图1所示工件。
图1椭圆加工
工件右端部分为椭圆曲线,长半轴40mm,简裂短半轴20mm。采用线段逼近法编制程序,取工件右端面中心处为工件坐标系原点。
椭圆的参数方程为x=x0+acosθ,y=y0+bsinθ(θ为参数),长半轴为40mm,短半轴为20mm,启始角为0°,终止角为90°。以θ为自变量每次变化0.5,X、Z值为应变量,通过变量运算计算出相应X、Z的值。注意:X项为直径量编程。为了使程序更加通用,本例使用了以下变量进行运算。
编程时使用以下变量进行运算:#110为椭圆曲线起始角;#111为椭圆曲线各点Z轴坐标;#112为椭圆曲线各点X轴坐标。
参考精加工程序如下:
G01…(将刀具移至椭圆起点)
#110=0(设定自变量的初始值)
N20#111=40*COS[#110](变量运算出Z坐标)
#112=40*SIN[#110](变量运算出X坐标)
G01 X#112 Z#111 F100
#110=#110+0.5(自变量每次增量+0.5)
IF[#110 LE 90]GOTO 20(有条件跳转拦芦闭)
G…(椭圆部分加工结束,继续加工后续部分)
2. 抛物线加工
加工如图1-2所示工件。
由图可知,抛物线的方程为Z=-X2/4,则Z=0时,X为0;Z=-6.25时X为5。X=-SQRT[4*Z],以Z值为自变量,每次变化0.1,X值为应变量,通过变量运算计算出相应X的值。注意:X向为直径量编程。编程时使用以下变量进行运算:#101、#102。
精加工开口向左的抛物线OA外轮廓曲线段程序及分析。
G01 Z0(准备加工抛物线)
#101=0(抛物线起点的Z坐标)
N10#102=-2*SQRT[4*Z]
G01 X#102Z#101 F100
#101=#101-0.1(Z坐标每次增量-0.1)
IF[#101 GE-6.25]GOTO 10(有条件跳转)
G01…(抛物线加工结束,继续加工后续部分)
从以上的例子可以看出,宏程序在数控车上的编制并不难,用户宏程序还有多种功能,如用同一个宏程序加工尺寸不同而类型相同的零件;我们只要知道相关二次曲线的函数表达式,利用宏指令即可编制出相应的加工程序。
在我们的工作过程中,通过“宏”的使用,我们可以大大减少加工程序的指令数,从而使得程序简单、明了、便于修改,提高了加工的效率,用宏程序编制特殊功能的固定循环指令,实现了特殊的加工,例如:梯形、不等距螺纹的车削课题的加工等。
(作者单位:济南市技师学院)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
本文为全文原貌 未安装PDF浏哗告览器用户请先下载安装 原版全文
❹ 数控铣削宏程序
数控铣削加工宏程序的编制与应用
在数控编程中,宏程序编程灵活、高效、快捷。宏程序不仅可以实现象子程序那样,对编制相同加工操作的程序非常有用,还可以完成子程序无法实现的特殊功能,例如,型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等。
一、FANUC宏程序的理论基础
(一)FANUC宏程序的构成
1)包含变量
2)包含算术或逻辑运算(=)的程序段
3)包含控制语句(例如:GOTO,DO,END)的程序段
4)包含宏程序调用指令(G65,G66,G67或其他G代码,M代码调用宏程序)的程序段
(二)FANUC宏程序的变量
FANUC数控系统变量表示形式为# 后跟1~4位数字,变量有四种:
1、FANUC宏程序的变量Ⅰ
变量号
变量类型
功能
#0
空变量该变量总是空
没有任何值能赋给该变量
2、FANUC宏程序的变量Ⅱ
变量号
变量类型
功能
#1——#33
局部变量
局部变量只能用在宏程序中存储数据,例如运算结果。当断电时局部变量被初始化为空,调用宏程序时自变量对局部变量赋值。
3、FANUC宏程序的变量Ⅲ
变量号
变量类型
功能
#100—#199
#500—#999
公共变量
公共变量在不同的宏程序中的意义相同当断电时变量#100 #199初始化为空变量
#500 #999 的数据保存即使断电也不丢失
4、FANUC宏程序的变量Ⅳ
变量号
变量类型
功能
#1000——
系统变量
系统变量用于读和写CNC 运行时各种数据的变化例如刀具的当前位置和补偿值等
(三)刀具补偿存储器C用G10指令进行设定
H代码的几何补偿值
G10L10P R ;
D代码的几何补偿值
G10L12P R ;
H代码的磨损补偿值
G10L11P R ;
D代码的磨损补偿值
G10L13P R ;
P:刀具补偿号
R:绝对值指令(G90)方式时的刀具补偿值。增量值指令(G91)方式时的刀具补偿值为该值与指定的刀具补偿号的值相加。
用G10改变工件坐标系零点偏移值
格式:G10L12PpIP ;
P=0:外部工件零点偏移值
P=1:工件坐标系G54的零点偏移值
P=2:工件坐标系G55的零点偏移值
P=3:工件坐标系G56的零点偏移值
P=4:工件坐标系G57的零点偏移值
P=5:工件坐标系G58的零点偏移值
P=5:工件坐标系G59的零点偏移值
IP: 对于绝对值指令(G90),为每个轴的工件零点偏移值。
对于增量值指令(G91),为每个轴加到设定的工件零点偏移值。
(四)FANUC宏程序运算符Ⅰ
1、FANUC宏程序运算符Ⅰ
功能
格式
备注
定义
#i=#j
加法
#i=#j+#k
减法
#i =#j- #k
乘法
#i =#j*#k
除法
#i=#j/#k
2、FANUC宏程序运算符Ⅱ
功能
格式
备注
正弦
#i=SIN[#j]
角度以度指定,如90º30’表示为90.5度
反正弦
#i=ASIN[#j]
余弦
#i=COS[#j]
反余弦
#i=ACOS[#j]
正切
#i=TAN[#j]
反正切
#i=ATAN[#j]
3、FANUC宏程序运算符Ⅲ
功能
格式
备注
平方根
#i=SQRT[#j]
绝对值
#i=ABS[#j]
舍入
#i=ROUND[#j]
上取整
#i=FIX[#j]
下取整
#i=FUP[#j]
自然对数
#i=LN[#j]
指数函数
#i=EXP[#j]
4、FANUC宏程序运算符Ⅳ
功能
格式
备注
或
#i=#j OR #k
逻辑运算一位一位的按二进制数执行
异或
#i=#j XOR #k
与
#i=#j AND #k
从BCD转为BIN
#i=BIN[#j]
用于与PMC的信号交换
从BIN转为BCD
#i=BCD[#j]
(五)FANUC宏程序的转移和循环
1、FANUC宏程序的转移和循环Ⅰ
无条件转移:GOTOn
(n为顺序号,1——99999)
例:GOTO10为转移到N10程序段
2、FANUC宏程序的转移和循环Ⅱ
条件转移:(IF语句)
IF [条件表达式] GOTOn
当指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式不满足时,执行下个程序段
3、FANUC宏程序的转移和循环Ⅲ
条件转移:(IF语句)
IF [条件表达式] GOTOn
如果变量#1的值大于10,转移到顺序号N20的程序段。
如果条件不满足 IF [#1 GT 10] GOTO 2
如果条件满足
程 序
程程序序
N20 G00 G90 X100. Y20.
:
4、FANUC宏程序的转移和循环Ⅳ
IF [条件表达式] THEN
当指定的条件表达式满足时,执行预先决定的宏程序语句。
例:IF [#1EQ #2] THEN #3=0;
(六)FANUC宏程序的循环
FANUC宏程序循环Ⅰ
WHILE [条件表达式] Dom;
(m=1,2,3)
条件不满足 条件满足
ENDm
注:循环允许嵌套,最多3层,但不允许交叉;
FANUC宏程序循环Ⅱ
FANUC宏程序循环Ⅲ
(七)FANUC宏程序的条件表达式运算符
运算符
含义
EQ
等于
NE
不等于
GT
大于
GE
大于或等于
LT
小于
LE
小于或等于
(九)FANUC宏程序的调用Ⅰ
FANUC宏程序的调用Ⅰ
非模态调用G65:
格式: G65PpLl<自变量指定>
其中
p:要调用的程序号
L:调用次数(默认为1)
自变量:数据传递到宏程序
FANUC宏程序的调用Ⅱ
模态调用(G66):
G66PpLl<自变量指定>;
程序点
G67;(取消模态)
其中
p:要调用的程序号
L:调用次数(默认为1)
自变量:数据传递到宏程序
(十)FANUC宏程序的自变量指定
1、FANUC宏程序的自变量指定I
地址
变量
地址
变量
地址
变量
A
#1
I
#4
T
#20
B
#2
J
#5
U
#21
C
#3
K
#6
V
#22
D
#7
M
#13
W
#23
E
#8
Q
#17
X
#24
F
#9
R
#18
Y
#25
H
#11
S
#19
Z
#26
2、FANUC宏程序的调用II
地址
变量
地址
变量
地址
变量
A
#1
K3
#12
J7
#23
B
#2
I4
#13
K7
#24
C
J4
#14
I8
#25
I
#4
K4
#15
J8
#26
J
#5
I5
#16
K8
#27
K
#6
J5
#17
I9
#28
I2
#7
K5
#18
J9
#29
J2
#8
I6
#19
K9
#30
K2
#9
J6
#20
I10
#31
I3
#10
K6
#21
J10
#32
J3
#11
I7
#22
K10
#33
二、FANUC宏程序的应用
(一)宏程序示例(铣圆)
#1=圆心坐标X值
#2=圆心坐标Y值
#3=园孔最终Z值
#4=圆孔直径
#5=刀具直径
#6=[#4+#5]/4 (进刀半径)
#7= #3+50 (进刀高度)
#8= [#1+#4]/2-#6(进刀圆弧起点X值)
#9 = #2 - #6 (进刀圆弧起点Y值)
#10= #1+#4/2 (铣圆起点X值)
#11= -#4/2 (I矢量)
#12= #2+#6(退刀圆弧Y值)
%
O100
M03S1000
G00G90G54G43H01Z100.
X#1Y#2
Z#7
G01Z#3 F100
G41D02X#8Y#9
G03X#10Y#2R#6
G03X#10Y#2I#11J0
G03X#8Y#12R#6
G01G40X#1Y#2
G00Z100.
M30
%
(二)宏程序示例(铣半圆球)
自上而下等角度水平圆弧环绕球面精加工
#1=(A)球面的圆弧半径
#2=(B)球头铣刀刀具半径
#3=(C)球面的起始角度
#4= (I)球面的终止角度,#4≤90°
#17=(Q)Z坐标每次递减量
#24=(X)球心坐标X值
#25=(Y)球心坐标Y值
#26=(Z)球心坐标Z值
%
O200
M03S1000
G00G90G541Z100.
G00X0Y0
G65P1912X Y Z A B C I Q
M30
%
O1912 (宏程序)
G52X#24Y#25Z#26
G00X0Y0Z[#1+30]
#12=#1+#2
WHILE [#3LT#4]DO1
#5 = #12*COS[#3]
#6 = #12*SIN[#3]
X[#5+#2] Y#2
G03X#5Y0R#2F1000
G02 I-#5
G03X[#5+#2]Y-#2R#2
G00Z[#7+1]
Y#2
#3 = #3 + #17
END 1
GOO Z[#1+30]
G52 X0 Y0 Z0
M99
%
注释说明
(主程序)
调用宏程序O1912
(空格处为变量赋值)
在球心处建立局部坐标
球心与刀心连线距离
如果#3<#4,循环1继续
任意角度刀心X坐标值
任意角度刀心Y坐标值
G00定位于下刀点
圆弧进刀
沿球面切削
圆弧退刀
提刀1
移到进刀点
角度#3每次递增#17
循环1结束
提刀
恢复G54坐标
宏程序结束返回
(三) 宏程序示例Ⅰ
采用Φ20R4铣刀加工SR30的球,已知球心坐标为(X0Y0Z-5.)
宏程序示例Ⅱ
1、分析:铣球程序一般采用自动编程来实现,但是,利用宏程序强大的功能同样也可以实现,而且程序更加简洁。
2、编程思路:
铣球可以认为是多个铣圆的组合。
3、排刀分布:
有两种方案,一是按Z向分布,二是按圆心角分布。从保证表面质量来看,最佳方案为按圆心角分布。
圆弧起点计算,从X正向开始起刀。
刀具根部R4的圆心在XZ平面的运动轨迹为与R30等距的圆R34(见图示中红色轨迹),刀尖点上4mm处的轨迹(即褐色轨迹)为红色轨迹沿X正向平移6毫米,刀尖点坐标为褐色轨迹沿Z轴向下平移4mm(即绿色轨迹)。
起始角度=ARCSIN((5+4)/34)=15.349º
起始位置X值=34*COS(15.349)+6=38.787
起始位置Z值=0 (通用表达式=34*sin(15.349)-5-4)
4、变量定义:
#1为圆心角,范围由(15.349,90)
#2为刀尖中心X值,#2=34*COS[#1]+6
#3为刀尖中心Z值,#3=34*SIN[#1]-5-4
%
O300
M03S3000;
G00G90G54Z100.;
#1=15.349
X50.Y0;
Z10.;
WHILE[#1 LE 90] DO1;
#2=34*COS[#1]+6;
#3=34*SIN[#1]-5-4;
G01Z#3F900;
X#2;
G02X#2Y0I-#2J0;
#1=#1+1;
END1;
G00Z100.;
M30;
%
(四)宏程序示例II
用Φ20R10铣刀加工轮廓处R5圆角
下面为铣外形的一段程序,采用刀具半径补偿
G00X2.5Y26.664
G01G41D01X-8.991Y2.023
G03X2.5Y-3.336I11.491J9.641
X32.969Y-.208I0.J150.
G02X44.955Y-10.952I2.031J-9.792
G03Y-49.048I199.09J-19.048
G02X33.452Y-59.88I-9.955J-.952
G03X-28.452I-30.952J-197.59
G02X-39.922Y-48.75I-1.548J9.88
G03Y-11.25I-148.823J18.75
G02X-27.969Y-.208I9.922J1.25
G03X2.5Y-3.336I30.469J146.872
X13.991Y2.023I0.J15.
G40G01X2.5Y26.664
编程思路:
利用G10指令修改刀具半径偏置值来实现倒圆角。
G10格式为G10L12P1R ,其中,P1表示修改D01,R后为刀具半径偏置值。
设定倒角的圆心角为变量#1,取值范围为0-90º
设定#2为刀具半径偏置值,取值=COS[#1]*15-5
设定#3为Z值,取值=SIN[#1]*[5+10]-5-10
%
O400
M03S3000
G00G90G54Z100.
#1=0
X2.5Y26.64
Z5.
WHILE [#1 LE 90] DO1
#2= COS[#1]*15-5
#3= SIN[#1]
*[5+10]-5-10
G10L12P1R#2
G01Z#3F900
G00X2.5Y26.664
G01G41D01X-8.991Y2.023
G03X2.5Y-3.336I11.491J9.641
X32.969Y-.208I0.J150.
G02X44.955Y-10.952I2.031
J-9.792
G03Y-49.048I199.09J-19.048
G02X33.452Y-59.88I-9.955J-.952
G03X-28.452I-30.952J-197.59
G02X-39.922Y-48.75I-1.548J9.88
G03Y-11.25I-148.823J18.75
G02X-27.969Y-.208I9.922J1.25
G03X2.5Y-3.336I30.469J146.87
X13.991Y2.023I0.J15.
G40G01X2.5Y26.664
#1=#1+5
END1
G00Z100.
M30
%
三、小结
随着现代制造技术的发展和数控机床的日益普及,数控加工得到广泛应用。对于加工形状简单的零件,计算比较简单,程序不多,采用手工编程较容易完成。因此,在点定位加工及由直线与圆弧组成的轮廓加工中,手工编程仍广泛应用。但对于形状复杂的零件,特别是具有非圆曲线、列表曲线及曲面的零件,用一般的手工编程就有一定的困难,且出错机率大,有的甚至无法编出程序。在CAD/CAM软件普遍应用的今天,手工编程的应用空间日趋缩小。但手工编程是自动编程的基础。宏程序的运用,其最大的特点就是将有规律的形状或尺寸用最短的程序段表示出来,具有极好的易读性和易修改性。
❺ 在数控车床使用宏程序需要什么条件要修改什么参数吗它是在那输入的
宏程序的编制是一种变量编程方式,比如一条直线,常规编程仅需将直线上的各点坐标输入CNC设备,但宏程序是将描述直线的方程式经人脑翻译成CNC可接受的程序语句,然后通过CNC显示屏或其与电脑连线输入设备中,一般无需修改参数。但有一点,要熟练应用宏程序,必须对计算机语言编程熟悉,否则有绝大多数功能无法应用,一句话,在数控设备使用说明书中有详细描述与解释,我也是从此处学会的。
❻ 加工中心宏程序
宏程序的作用:
数控系统为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。
宏程序指令适合抛物线、椭圆、双曲线等没有插补指令的曲线编程;适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程。较大地简化编程;扩展应用范围。
加工中心宏程序应用:
以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行,
基本指令
H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中
G65H01P#101Q#10:把#10赋予到#101中
H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101
G65 H02 P#101 Q#102 R10
G65 H02 P#101 Q10 R#103
G65 H02 P#101 Q10 R20
上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数
值或变量号内的数值然后等于到P后面的变量号中.
H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101
G65 H03 P#101 Q#102 R10
G65 H03 P#101 Q10 R#103
G65 H03 P#101 Q20 R10
上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数
值或变量号内的数值然后等于到P后面的变量号中.
H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101
G65 H04 P#101 Q#102 R10
G65 H04 P#101 Q10 R#103
G65 H04 P#101 Q20 R10
上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数
值或变量号内的数值然后等于到P后面的变量号中.
H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101
G65 H05 P#101 Q#102 R10
G65 H05 P#101 Q10 R#103
G65 H05 P#101 Q20 R10
上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数
值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警)
以上内容参考:网络--宏程序
❼ 数控车床宏程序怎么编写,一般宏程序都加工什么样的零件
宏程序一般是在做重复路径的程序时用,最典型的就是切槽,切垫片等重复的零件会用到
一般是把某个重要数据用变量代数表示,后面在子程序里面做加减法
如切槽是把Z像坐标用代数表示,如在主程序起点坐标为Z2.,那么程序可以编时Z=#300,#300=2,然后在子切槽程序里加一段#300=#300-15。
那么这样每M99循环一次后定位时Z向就会往里边偏15毫米,5毫米的刀那么切出来的垫片就是10毫米厚。这个你可以在网上下载一些资料看一下,很容易理解的。而且那些很高深的,如乘法,除法,函数....等得应用你刚开始就不要去纠结了,有些难度,但实际工作中基本用不上。你把加减运算弄清楚就可以了,相对来说简单很多。希望能帮到你
❽ 数控车床宏程序的控制语句以及逻辑解析
宏程序流程控制和循环语
数控车床宏程序与普通程序有什么区别呢?第一个就是流程控制
普通程序在执行的时候,它总是从第一段开始依次执行到最后一段程序结束,中途不改变执行顺序。而宏程序可以改变程序的执行顺序。可以根据加工需要,让某段程序重复执行多少次等。要学会程序的执行顺序控制,必须学会以下两种语句:
“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”和后面的程序。