本节学习要点
1.熟练掌握IF...GOTO语句的用法
2.熟练掌握WHILE...DO语句的用法
3.深入理解本节的文字描述与例题
在前面的两章简单介绍了宏程序的基本概念,在本章中将介绍宏程序中最重要的一个模块——程序流程控制语句。
要说宏程序与普通程序有什么本质的区别,其中之一就在于流程控制了。什么是流程控制呢?比如普通程序在执行的时候,它总是从第一行开始,依次执行到程序的最后一行,中途是不会改变执行顺序的;但宏程序不同,它可以改变程序的执行顺序。并且可以根据需求,让某段程序重复执行多少次等。要学会程序的执行顺序控制,必须学会以下两种语句:“IF...GOTO”“WHILE...DO”。
我们先看“IF...GOTO”吧!
首先我们白话翻译该语句:“IF”在单词中表示“如果”的意思;“GOTO”则表示“去哪里”或者“到哪里”。那么在两个单词中的省略号,它表示条件!条件只有两种可能:成立、不成立。
我们可以用这个语句造句,“如果明天开学了,我就要去学校”。在此语句中,要表达的意思非常明确,当条件是“开学”的时候,“我才会去学校”。如果”不开学”,那我不会去。在这里,“开学”与“不开学”就表示条件的成立与不成立。成立就执行,不成立就不执行!
但我们会发现一个问题:“IF[条件]GOTO”语句中,“GOTO”后面是要跟着目的地的。比如造句时候,目的地是“学校”,那在程序中,该怎么表达目的地呢?其实很简单,目的地就是——行号!在数控程序中,能够表示目的地的也只有行号了。接下来通过一个例子,来综合本节与前几章的知识点吧。
例3-1
在上例中综合了前面所有的知识内容。让我们逐一分析:
首先,程序对#1这个变量进行赋值,它的结果是2。到了下一行出现了N1。众所周知,N在数控程序中是行号功能字,后面跟的阿拉伯数字表示第几行(其实行号可以自己定义,在本例程序中,把“#1=#1-1”定义为第一行)当程序执行到N1行的时候,系统发现#1这个变量进行了自减运算。但系统不知道自减的目的,于是继续向下执行,来到了“IF[#1 GE 0]GOTO1”这一行这时候系统才明白,原来#1自减的目的是用来判断的。当执行到这行的时候#1的结果已经不是2,而是1了。然后系统会把#1这个结果与0进行比较,它发现#1当前的值(1)是大于等于0的。由于该语句的意思是,如果#1的结果大于或等于0,就跳转到第一行,所以系统会跳转到第一行执行(N1处),不会执行下面的“G0 X100”等语句。
然后程序跳到了N1处,马上又开始了自减一次。这时候#1的结果是0,而不是1了,运算过后又来到了“IF”语句进行判断,发现当前#1的值虽然不大于0,但等于0。因此条件又成立了,只好继续跳到第一行。于是又进行了一次运算,此时#1的结果是−1。当再次执行到“IF”语句时,系统发现#1当前的值是既不大于也不等于0,因此条件就不满足了。条件不满足,那么就不执行“GOTO1”这个命令,而是执行下一行“G0 X100”。然后依次执行。如果用示意图表示,就像例3-2这样。
例3-2
现在可以做个总结:如果条件满足,就会执行GOTO命令;如果不满足就执行“IF...GOTO”下一行的语句!
讲完“IF...GOTO”语句,再来看看“WHILE...DO”语句。
其实“WHILE...DO”语句的道理和“IF...GOTO”语句完全一致。按惯例把该语句白话翻译:“当...就执行”。这里的“DO”表示执行。同样的,中间的省略号也表示条件,当条件成立了,就执行程序,不成立就不执行。
但细心的读者很快会发现一个问题:如果条件成立,就执行程序。那么执行从哪一行到哪一行的程序呢?它又没有给出行号什么的。没错“WHILE...DO”这个语句,是不需要行号的。如果条件成立,它要执行的程序范围需要一个专门的关键词——“END”来指定。让我们先看一个例子吧。
例3-3(www.xing528.com)
在本例程序中,不难发现END关键词所在位置。它位于循环体的最后面。也就是说,用WHILE判断的时候,如果条件成立,就执行DO与END之间的程序。后面的那个阿拉伯数字“1”,表示第一层。有关层数问题,后面的章节会详细讲解,这里不赘述。但一定要记住,DO和END后面的阿拉伯数字必须一一对应。不能出现“DO1”与“END2”这个类型。要么都是1,要么都是2。
在例3-3中,程序的执行顺序与结果和“IF...GOTO”一致。首先系统得知#1的值目前是2,但不知道干吗的。于是向下执行,发现这里有个WHILE语句,并且有个条件判断,“如果#1的结果大于或者等于2,那就执行DO1与END1之间的程序”。经过判断,条件是成立的。所以就执行了“#1=#1-1”。然后执行END1并返回到WHILE语句,再次判断#1的值是否符合条件。系统发现#1的结果是0,仍然符合。于是继续执行DO1与END1之间的程序。一直到#1的结果不符合,程序才会执行“G0 X100”和下一行的程序。
该语句的执行顺序如例3-4所示。
例3-4
现在做个总结:如果条件满足,就会执行DO与END之间的程序;如果不满足,就执行END下面的那一行程序!
讲到了这里,可以用一份图样来综合前面所讲的知识点
例3-5(图3-1)
毛坯:φ60mm×62mm
图 3-1
出于例题需要,不要其他的尺寸及公差。
看到这个图样,一眼就知道它是单纯的车削外圆轮廓。车出一个φ50mm×40mm的零件。让我们先来写一个普通的程序(非G71或G90)。
由上面的程序可知,零件仅X向有变化,Z向长度都是固定的-40mm。那么完全可以用一个变量来表示X向,然后让它自减就行。
(背吃刀量1mm,演示用)
本节讲到这里已经结束了,请读者一定要完全吸收消化上述的内容。毫不夸张地说,只要你用到宏程序,那么必定会用到这两个语句。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。