邹军爱数控:不管你是谁,100%让你学透宏程序编程

了解过数控宏程序的人都知道:宏程序里面应用了大量的编程技巧,数学关系式的表达,加工刀具的选择,走刀方式的取舍等;宏程序也最能反映编程者的工艺思想,同时程序特别精炼。

但是问题来了?宏程序到底难不难学?

这就像小马过河似一样,小马准备过一条河,然后大象说水非常浅,还不到膝盖,然后松鼠说,水非常深,把自己的同伴都淹死了……..。

宏程序之所以难学,那是因为市面上的资料等书籍把宏程序讲解的太高大上了,于是看的越多,智障越多,烦恼就越多。

人生苦短,时间宝贵,看看清风我怎么给您讲解数控宏程序编程,只要你会普通程序,我就能让你快速掌握宏程序编程。

邹军爱数控:不管你是谁,100%让你学透宏程序编程

相信大家见过宏程序的朋友,你们一定会见到很多的犹如#1、#2、#3....#149等宏变量以及一些IF [#1LE#3]GOTO 100 等之类的宏语句,其实用诸如用#1、#2等变量编写的程序就叫宏程序。下面我们进入正题。

一,变量(学宏之前先懂变量)

1,变量的含义:

我们普通程序(如G01X100.Y100.F200)X,Y地址后面都是些常量,如果我们把这些常量用变量来编写如G01X#1 Y#2 F200,这就是我们所谓的宏程序。

那么# 和后面的1、2、3、4.....数字标识到底什么关系。让我们用最白话的方式理解它吧。这些#号,它是宏代码,1、2、3....是区分这些宏代码的标记。

什么意思呢,举个最简单的例子:如果有三个人,他们的名字叫 小李、小李、小李。那么当你呼叫小李的时候,会发生一个问题,这三个人都会回答,但你其实只想喊其中的一个。

这就分不清了。同理,#1 #1 #1 ,如果后面的数字都是一样,当系统使用#1的时候,它也会发生糊涂,到底让我用哪个呢?所以为了区分它们,就把后面的数字写成不同的,比如#1,#2,#3。此时如果系统使用#1,就不会发生混乱了。

当然了,标示数字的不同,宏变量的意义也不同,分局部变量、公共变量、系统变量等等,就目前来说,我们使用的是局部变量,能把它用好就不错了,基础打好了再说!宏变量的目前就介绍到这。

2,变量的赋值:

这所谓赋值,我们可以这么理解:我本来很穷,突然有一天有人给我100块!那么此时此刻,这100块就是我的了,因为它给我了!这个“给我”的过程,就称为赋值。

那么在宏里面怎么赋值呢?我们看一个赋值的语句就理解了: #1 = 100 这就称为赋值!它的意思是把100这个值给了#1。那么#1在不发生运算的情况下,它的结果就是100。也就是说#1此后代表100。如果有一个程序语句:G0X100. 那么宏语句G0X#1 与其等同。下面在举个例子:

#1=10

#2=20

#3=30

G01X#1 Y#2 F#3

以上这个宏程序相当于G01X10.0 Y20.0 F30这个普通程序。

补充说明:

上面的例子是给变量 #1,#2,#3赋了一个具体值,宏程序中我们还可以

赋予表达式。(表达式的运算优先级就是加减乘除先算哪个,后算哪个。如果有括号,就先算括号里面的等等)看下面的例子:

例: 假设 #1 = 100,#2 = 10,#3 = 50,#4 = 20

那么 #1 - #2 * #3 = ?

#1/#2 = ?

#3/#2*#4 = ?

(#1-#3)/#2 = ?

以上四个运算表达式的结果分别是:-400、10、100、5 相信你也没什么问题吧!

以上已经诠释了变量,赋值等最基本的宏程序概念。大家明白即可!我们此时更重点是先学习好宏语句,所以下面是我们的重点所在,这些知识点将伴随着所有学习宏程序的人。而且永远都离不开这两个语句。所以一定要理解透彻!

二,宏程序两大主要语句

1,IF…..GOTO语句:

直观意思是:如果...就跳转到哪(或者是做什么事)。我们不妨用这个格式来造句,如果 福布斯有我的名字,那么 我就不上班了;

如果 我看了清风的宏程序入门教程,那么我就看清风的宏程序高级教程!等等这类语句都有一个共同点:“如果”的后面会跟着一个条件!根据这个条件,决定我做什么事!所以很多书中都这么介绍此语句:IF[条件成立]GOTO

那么我们用一个小程序来详细的解释下这语句。

%

O0001

#1 = 10

N10 #2 = 20

IF[#2 EQ 20] GOTO10

G0 X100.

Z100.

.......

M30

%

上面这个IF语句是什么意思呢? 它表示:如果#2这个变量的值等于20的话,就跳转到第10号程序段。可能有人会问“GOTO10” 后面的10表示什么意思。其实这个10表示行号。数控的程序一般都有行号的,如果没有,那是系统参数设定的事,不过你只要知道有行号就行。还有人会问 EQ 是什么意思,这个是英文EQUAL的简写,含义是等于的意思。对于新手,建议掌握以下几个常用的符号(如下表):

邹军爱数控:不管你是谁,100%让你学透宏程序编程


所以都这里我们不难理解上面判断语句的意思了:如果#2等于20,就跳转到第10号段。

由于#2是等于20的(因为在赋值的时候,#2=20),所以条件成立,就跳到了第10号段执行。

我们都知道数控程序一般是从上往下执行的,那么我们这跳到了第10行,接着往下执行时又遇到了IF判断语句,于是有开始判断#2是不是等于20,结果等于!于是又成立了,继续跳到第10行。所以,这个程序是死循环,永远不会结束。

说到这,细心人会发现一个问题:条件成立了,会执行GOTO语句,那要是不成立,程序会怎么办? 其实很简单,不成立就往下面走。也就是说如果不成立,就执行G0X100. 的程序段,直到程序运行至M30结束!

总结:如果条件成立,就执行GOTO语句,你写的行号是多少,它就跳到那个行;要是条件不成立,那么就执行IF下面的语句,不执行GOTO语句!

另外再说一个与教程不相关的问题

数学不好,能不能学。

首先这个问题,我的答案是:能学!

宏,说的直白点是靠逻辑思维能力。不是懂了微积分才能学好它,这是两码事。但有些程序确实需要点数学知识,比如三角函数,勾股定理。其实宏用到的数学知识真的不多。很多人看到什么椭圆,或者抛物线的方程觉得很可怕,这个不懂那个不懂。这里我要说一句,你懂不懂它的方程,不重要,重要的是你怎么去理解它的加工过程(曲线类的加工会在我的完整的宏教程教程中讲解,这里不赘述,而且曲线类的宏,是非常简单、小儿科的。只要记住:数学不好,照样玩转宏。)

2,WHILE…..DO语句:

看到这个语句,还是老样子,先直观翻译下:当.....就执行某某代码段。和IF语句差不多,这个语句也是用来做条件判断的,但WHILE.....DO自身没有跳转的功能。那么这个语句该怎么用?我们是造句说明吧,“当年薪达到100W的时候,我就可以买跑车”。这里“年薪达到100W”是条件,如果条件达到了100W,我就执行买跑车这个想法。就这么简单的逻辑!下面我们用一个程序来解释它。

%

O0002

#1 = 20

#2 = 20

WHILE[#1 EQ #2] DO1

GO X50.Y50.

G0 X0.Y0.

END1

G0X100.

Z100.

.......

M30

%

上面这个程序段的意思是:当#1和#2的值相等,那么就执行DO1与END1之间的程序。

有人会问一个问题:END1是什么东西。DO后面的 1 又是什么东西?这里呢要说明一下,WHILE语句一定要和 END 结合使用。因为END是它的目标地址。就像IF语句里的行号一样,是个目的地!那么END和DO 后面各有一个1,我们就白话的理解为第一层循环的意思。

如果这里DO后面跟的是2,而END后面跟的是1,那么程序将报警,因为DO2找不到与之匹配的END2!所以DO和END后面的数字,一定要匹配!

前面说到第一层循环,因为宏是支持循环嵌套的,这个知识点我会在玩转的教程中传授,这里不赘述。现在我们分析下上面的程序段。

由于#1和#2在初始赋值的时候都是20,所以#1和#2是相等的。程序在执行WHILE语句时,它会判断中括号里的#1和#2是不是相等,如果相等,就执行DO1与END1之间的程序;

反之如果#1和#2不相等,那么就不执行 DO1 与 END1 之间的程序,而是往END1下面的程序走,执行G0X100.直到程序运行至M30结束!

讲到这,很多朋友会发现WHILE和IF其实一样的,只不过格式不同、目的地的表示方法不同而已。

如果你看到了这里,请集中注意力!以下这个知识点是重中之重,直接关系到宏程序学习的成败!

变量的自增自减

自增自减的运算说简单也简单,说难也难!所以各位跟着我的思路走方可。

我们一直提到变量,变量,变量。那么什么是变量呢?通俗的说,变量是一个会变化的量。与之对应的是常量。常量比如:1,2, 100,89等等阿拉伯数字。在程序里,变量我们是用 # 代码来表示的。比如#1 = 10 这里#1是代表了10,但是它可不是永远都是10。至于为什么,这就是我要讲的地方。我们先看一个小程序段:

例: #1 = 10

#1 = #1 - 1

G0X#1

.......

首先G0 X#1,此时此刻的#1是9,而不是10!为什么?因为#1做了一个自减运算。在曲线加工中,专业术语叫 步距 。它怎么称呼并不重要,重要的是我们要理解它!下面我们来分析新手们郁闷的问题:

#1 = #1 - 1 等号左边的#1(下文简称左),怎么可能和右边的#1(以下简称右)做运算呢?因为自己不能和自己运算。就像10 = 10 - 1 这怎么可能呢???其实 #1 是个代号而已,不是常量。

既然#1是个代号,那么它里面的值是可以改的。上面的#1 = #1 - 1,其实等价于9 = 10 - 1 !

只不过9和10用的是同一个#1而已,但结果是不同的。

由于这里#1只做了一次运算,所以#1最终的值就是9 如果再执行一次,那么就变成了8 = 9 - 1 !

因为此时此刻右边的#1保存的是上一次经过运算后的值(也就是9),那么左边的自然而然就是8了。如果再有一次计算,那么就是7 = 8 - 1 ! 以此类推。总的来说要记住:变量的值是会变化的!

下面我们用一个实例来看下这个自增或自减的运算。

#1 = 5

#2 = 10

N1 #1 = #1 + 1(由于这里#1经过运算了,所以左边的#1是6,不是5)

IF[#1 LT #2] GOTO1(如果#1小于#2,那么就跳转到第N1行程序段)

GOX100.

.......

上面这个程序段的意思是:让#1不断的做自增1运算,也就是说从5开始,每次加1,一直加到不小于10。一旦#1的值 大于或者等于10,那么条件就不满足了,就会执行G0X100. …… 程序代码!如果你新手,还会被一个问题困扰:IF[#1 LT #2] 这里的#1,每次循环后的值是多少呢?

答案是:第一次这里的#1是6,第二次7,第三次8,第四次9,第五次10 。当到了第5次是,#1的值是10,而10是不小于10的(一定要小于10才跳转!!!),所以此刻的IF条件不满足了,就执行G0 X100……代码段了。这就是自增(自减)。

好了,上面热身篇理解即可。在正式开始讲解宏程序编程之前,先了解下宏程序在什么场合应用?

说白了宏程主要就两个方面的应用:

1, 产品、磨具加工

2, 自动化控制方面

邹军爱数控:不管你是谁,100%让你学透宏程序编程

邹军爱数控:不管你是谁,100%让你学透宏程序编程

关于产品加工方面的宏程序应用,清风早在2013年就写了套宏教程,这套资料不牛逼,平平淡淡,却让很多做数控小白都学会了宏程序,并且获得了如下四大编程功力:

1,掌握并具备宏程序进行零件加工的编程功力

2,宏程序的调用、宏程序误差处理方法,提高动手能力,提升数控系统使用功能

3,掌握用数学公式来编写宏程序的技巧

4,掌握参数编程技巧

早期这套教程看似很LOW,也不完美,但讲解的通俗易懂,不少一线操作者得益于这套教程的启蒙,加上自己的努力,走上了技术这条路。

宏程序第二大应用就是自动化方面,老外用的多,我国虽是个工业大国,因自动化程度不高,这方面的知识,在国内掌握在少数人的手里

。我们大多了解到的比如探针宏程序,防撞刀宏程序,在线测量……..。

邹军爱数控:不管你是谁,100%让你学透宏程序编程

关于宏程序的在数控加工中的应用太多了,如何玩转宏程序编程?在跟清风学《数控宏程序编程》2.0版本的教程中有传授。这套2.0版本的新教程是清风我在之前教程的基础上复盘而来,不仅有理论,有干货,还有方法论做支撑,从而让你编写宏程序就像做填空题一样简单。

此套系统的宏程序教程,从零基础讲解,逐步到提高,内容涉及比较广,除了宏基础知识之外,更多是编程思路、工艺思想,编程策略等方面的分析,简单易懂,目的是让你体会,感悟宏的魅力,整体上提高你的编程功底与逻辑思维训练。


学了这套教程你至少收获六大成果:

1、具备宏程序进行零件加工的编程能力

2、具备开发自己G代码的能力

3、用数学公式来编写宏程序的技巧

4、掌握宏程序的调用、宏程序误差处理方法

5、简单的模块化编程

6、参数化编程

7、宏程序用于生产管理

8,宏程序自动化方面的应用

朋友看过这套教程,觉得讲解的非常易懂,看的也非常爽,建议分享出来,欢迎关注邹军爱数控V❤:SOSCNC,免费索取教程。


分享到:


相關文章: