Nc宏程序有两个主要语句。
一、IF .GOTO门
二、while.do门
1、IF .GOTO门3360
直观意义:如果.直接跳到哪里(或做什么事)。
我们不妨用这个格式来造句,如果福布斯有我的名字,那么 我就不上班了;
如果 我看过清风的宏教程,那么我还会看他的其他教程!
这类语句都有一个共同点:“如果”的后面会跟着一个条件!
根据这个条件,决定我做什么事!
所以很多书中都这么介绍此语句: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的简写,含义是等于的意思。
对于新手,建议掌握以下几个常用的符号(如下表):
所以都这里我们不难理解上面判断语句的意思了:如果#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其实一样的,只不过格式不同、目的地的表示方法不同而已。
宏语句先分享到这里,分享的越多收获的越多,欢迎转载分享给你的好友。