用变量的方式进行数控编程的方法就叫做数控宏程序编程。
我们普通程序(如G01X100.Y100.F200)X,Y地址后面都是些常量,如果我们把这些常量用变量来编写如G01X#1 Y#2 F200,这就是我们所谓的宏程序。
备注:FUNC系统是用#1,#2等等来表示变量的。
*(机床系统不同表示的方式也不同,在这以FUNC系统为例)FUNC系统是用#1,#2等等来表示变量的。即“#”和“数字”组成的。如#1,#2……#33等。这些#后面的数子1,2,3等等有什么含义吗?其实它只是宏变量的代号而已。
举个最简单的例子:如果有三个人,他们的名字叫小李、小李、小李。那么当你呼叫小李的时候,会发生一个问题,这三个人都会回答,但你其实只想喊其中的一个。这就分不清了。同理,#1 #1 #1 ,如果后面的数字都是一样,当系统使用#1的时候,它也会发生糊涂,到底让我用哪个呢?所以为了区分它们,就把后面的数字写成不同的,比如#1,#2,#3。此时如果系统使用#1,就不会发生混乱了。
变量是一个会变化的量,与之对应的是常量。(常量比如:1,2,22,65等等阿拉伯数字。变量比如:#1,#2,#5等等,#1,#2的值到底是多少??因为它是变量,一个会变化量)。
比如把#1,#2等变量当做的银行卡,你往这些卡里存了多钱,那么这些卡里就有多钱(比如:往#1里面存了500元,此时#1就相当于500,又取走了300此时#1里面就有200)
往#1里面存了500元等这么一个过程就叫变量赋值。如果你不在往“#1“里面存钱,或取钱,那么#1就相当于500.也就是说#1不发生运算的情况下就是500.如果有这么一个程序段G0X#1,也就等同于此程序段G0X500.
那么变量在数控机床中是怎么赋值的呢?
格式如下:
机床中的赋值 | 中文解释 | 备注 |
#5=100 | 把100这个数值赋给变量#5 | 把常量赋给了#5 |
#1=#1-1 | 把#1-1这个运算结果赋值给#1 | 把表达式结果赋值给了#1 |
#6= [#11 #15 3] | 把[#11 #15 3]这个表达式的运算结果赋值给#6 | 把表达式结果赋值给了#6 |
直观意思是:如果...就跳转到哪(或者是做什么事)。
那么我们用一个小程序来详细的解释下这语句。
%
O0001
#1 = 10
N10 #2 = 20
IF[#2 EQ 20] GOTO10
G0 X100.
Z100.
.......
M30
%
上面这个IF语句是什么意思呢? 它表示:如果#2这个变量的值等于20的话,就跳转到第10号程序段。可能有人会问“GOTO10” 后面的10表示什么意思。其实这个10表示行号。
数控的程序一般都有行号的,如果没有,那是系统参数设定的事,不过你只要知道有行号就行。还有人会问 EQ 是什么意思,这个是英文EQUAL的简写,含义是等于的意思。
对于新手,建议掌握以下几个常用的符号(如下表):
运算符 | 含义 | 英文注释 |
EQ | 等于(=) | Equal |
NE | 不等于(≠) | Not Equal |
GT | 大于(>) | Great Than |
GE | 大于或等于(≧) | Great than or Equal |
LT | 小于(﹤) | Less Than |
LE | 小于或等于(≦) | Less than or Equal |
所以都这里我们不难理解上面判断语句的意思了:如果#2等于20,就跳转到第10号段。
由于#2是等于20的(因为在赋值的时候,#2=20),所以条件成立,就跳到了第10号段执行。我们都知道数控程序一般是从上往下执行的,那么我们这跳到了第10行,接着往下执行时又遇到了IF判断语句,于是有开始判断#2是不是等于20,结果等于!于是又成立了,继续跳到第10行。所以,这个程序是死循环,永远不会结束。
说到这,细心人会发现一个问题:条件成立了,会执行GOTO语句,那要是不成立,程序会怎么办? 其实很简单,不成立就往下面走。也就是说如果不成立,就执行G0X100. 的程序段,直到程序运行至M30结束!
总结:如果条件成立,就执行GOTO语句,你写的行号是多少,它就跳到那个行;要是条件不成立,那么就执行IF下面的语句,不执行GOTO语句!
联系客服