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

今天,本人续写关于宏程序循环控制的第二篇,依旧是那位仁兄,不过这次难度加大了。

题目:

钻一排孔,每三孔一组,孔距为11.75,每组孔的第一孔相距40,总共360长,10组孔。

先贴上原程序:

此程序,我真心看不懂,由于是三层嵌套,所以就乱了套,我也没法进行分析,贴上供大家研究参考。

下面我贴上我修改过的程序,并重点叙述下。

很显然,想达到题目要求,须有三层循环:

1、最内层控制钻孔动作,由#12参数控制,初始值为#5,终止条件为等于#6;

2、第二层循环控制每组孔中的孔位,由#11参数控制,终止条件为等于23.5;

3、最外层循环控制每组孔的首孔位置,由#10参数控制,终止条件为等于360;

顺清每层循环及嵌套关系,事已完成一半,然后就是一层一层编写程序。这里我给个建议:对于初学者,如果不能熟练掌握循环,可以从内层向外层编写,虽然程序是从外层向内层执行的,这样逻辑思路会较为清晰。

这里我特别提出的是,此程序中有个关键点:即每个孔的孔位实际是受最外层与第二层循环参数共同控制的,这是初学者难于驾驭的问题,但却是多层循环中最常遇的问题。常见思维错误是:如果你用一个参数进行累加控制,往往就会违背我前篇所说的第二条原则:

嵌套循环不能相互交叉干涉

(原程序就是如此,最终无法达到效果,于是就不断修改增加参数与语句,最后就是什么也不是。)

那么,对于此问题该怎样解决呢?

方法很简单:把原一个参数分解成多个参数,让每层循环只使用其中一个参数进行控制,这样,外一层循环就只有一个控制参数在变更,内一层循环本身也只有一个控制参数在变更。但注意,要让内层循环需要的结果是由其分解的参数总成产生,这样才能使内一层循环能够继承上一层循环的结果。

(这点可以仔细观摩我提供的程序)

再强调一点,上述所言针对的仅是循环体的控制参数,事实上,每层循环体内是可以有无限多个可进行同时运算的参数。(所以是控制参数,不是指所需的任何参数)

好了,今天内容结束。