「数控宏程序应用」:通过实例浅析循环控制技巧

今天,有位头条朋友从网上得个程序,结果出错不管用,请我帮忙改一改,我就拿此例浅析下宏程序循环控制的一点小技巧。

不少人对宏程序很感兴趣,但又苦于找不着入门之路觉得很难,这是因为他们长期编写固定G代码程序而造成的影响。宏程序事实上有点类似于计算机编程语言,虽然相较后者要简易也简单的多,但同样是种以逻辑为主具有一定运算功能的语言,这有别于固定G代码程序。

固定G代码程序的执行顺序是严格遵守先读先执行,当然也可以通过巧妙的构造来实现跳转、分支、循环与嵌套,但总体框架结构还是顺序语言,即先做什么就先写,后做什么就后写,不需要复杂的逻辑考量。而宏程序则有所不同,虽然它读程序时也是先写先读先执行,但全篇最终执行顺序不一定是先写的就一定先执行后写的就一定后执行,而是由你编写的逻辑进行控制的。所以,你学宏程序必须得先有以上的逻辑意识。好,我通过以下例子加以说明:

题目是:

要钻一排孔,孔间距为40, 总长为360 (共10个孔)。

原程序大致如下:

「数控宏程序应用」:通过实例浅析循环控制技巧

此程序思路可以说是很清晰的,问题在于受顺序语言干扰太严重,没有逻辑思维方式。上述程序结果是:只钻第一个孔,并且是反复死循环地钻。

我分析如下:

1、 此程序有两层嵌套循环,最内层是控制钻孔动作,控制参数是#1,判定条件是达到指定深度-5,即 #1=0.0 初始, 最终#1=#3 (#1=#1-1);

2、 外层循环是控制孔位,控制参数为#4,判定条件是达到指定长度360,

即 #4=0.0 初始, 最终#4=#5 (#4=#4+40);

以上两套循环框架是没问题的,问题出于逻辑顺序。对于外层循环而言,第一次按顺序执行没问题,但当#4=#4+40后进行跳转至N1时,#1至#4参数又重新赋值了一遍,等于又回到了初始条件。这就成了死循环而且始终在第一孔位置处。

所以,记住:

1、 控制循环的参数初始赋值语句是不能包含在本循环体内,因为在本循环体内,此参数是要进行累加运算用于逻辑判断循环何时结束。你不断重新赋初始值,它何时才能达到你设定的条件?

2、 循环嵌套方式可以多样,但每层循环是不能干涉的,即内外层循环不能交叉。

3、 最重要一点是:每层循环的控制参数初始赋值语句位置是有讲究的,不是按顺序随便堆砌的。(这点是很多初学者感到头疼的事,没法,只有不断练习吧。)

以下是我修改的程序并加以说明初始值赋值位置说明:

「数控宏程序应用」:通过实例浅析循环控制技巧

好,本节关于循环控制的内容结束,欢迎有问题的朋友加我微信提问题,只要我会也不太费时,我就帮忙嗨。


分享到:


相關文章: