❶ 誰知道數控宏程序是什麼意思啊
宏就是用公式來加工零件的,比如說橢圓,如果沒有宏的話,我們要逐點算出曲線上的點,然後慢慢來用直線逼近,如果是個光潔度要求很高的工件的話,那麼需要計算很多的點,可是應用了宏後,我們把橢圓公式輸入到系統中然後我們給出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」和後面的程序。