《宏程序编程》3.0版本,是军哥的第三套宏程序教程。主要传授数车宏程序编程。
当我自己写了这么多套教程,我才发现其实市面大部分书籍,资料都太垃圾。
为什么这么说呢?
先看看下面截图内容:


这是市面上销量不错的宏程序书籍中的内容,军哥截取了部分。
没有对比就没有伤害,军哥给你分享《宏程序编程》3.0版本宏变量的内容。
学宏程序之前要先学变量。
1,什么是宏程序的变量
军哥,你经常说玩宏就是玩变量,什么是变量啊?一脸迷惑的小白想从军哥这得到答案。
军哥把桌上的电脑转动到小白面前,让他先看了看下面这个零件图。问道,你该知道这个零件如何编写程序吧。

小白一看,这个简单,不就车外圆吗?自己计算点位坐标一句一句写代码,于是
……
…..
G0X42.Z2.
X36.
G01Z-30.F0.1
X42.
G0Z2.
X32.
G01Z-30.F0.1
……
……
这种办法可以编写出来,但是OUT了,小白突然想起G90,G71等循环指令,是的, G90 G71等循环指令,其实是系统厂商用宏程序开发出来的G代码。本质上属于宏程序范畴,你学会宏程序,也可以定义属于自己的G代码,让程序通用性强,关于这点绝活,军哥我后面传授,就目前而言,先把变量理解透彻。
你看上面程序G代码后面都是些具体的数值,那么变量并非是一个具体数值,而是由符号来代替具体数值。
举个例子,上面零件毛坯为D42 ,要加工到尺寸D20,长为20,那么我用符号 #1,#2,#3分别定义为毛坯尺寸,要加工到的尺寸,加工的长度等。
这个程序如下:

军哥我用#1,#3等符号来代表零件的毛坯尺寸,零件的长度等,加工形状相似,尺寸不同的零件,这个程序就有了通用性。
看完军哥的讲解,小白顿时觉得采用#1,#2这种符号来编写程序太方便了。
于是小白接着问:“#1,#2,#3这种“符号”怎么理解?是不是还可以使用#4,#5,#6等等。
军哥我知道小白是个善于思考的人,于是就给他讲到:这些符号就是宏变量,你看市面上有不少数控系统,如三菱,法拉克,哈斯,广州数控,华中数控等等,变量都是由#和数字组成。所以军哥我以FANUC系统为蓝本来展开讲解宏程序变量,这样一通百通。
既然宏程序的变量是由#和数字组成,如#1,#2……#33,#300,#301,#302….., #1000,#1001 ……等等,编写程序的时候,可以任意使用这些变量?
标示数字的不同,宏变量的意义也不同,分局部变量(#1~#33)、公共变量、系统变量,就目前来说,先学会使用局部变量,也就是#1,#2,#3,#4,#5…….,#33这33个变量,可以任意使。比如上面的例子,你可以用#1~#33中的任意一个变量来代表零件毛坯尺寸。
小白皱着眉头问:“#1~#33中的任意一个变量来代表零件毛坯尺寸” 比如,使用了#6代表毛坯尺,还可以使用#6代表零件加工长度吗?
军哥我给你举个例子,在一个班上,有两个学生都叫小白,当你叫小白的时候,会发生一个问题,这两个人都会回答,但你其实只想喊其中的一个。
这就分不清了。同理,在一个程序中(比如O0001程序中),你使用同一个变量代表多个零件特征的时候,机床系统会发生糊。所以在一个程序中,不同特征建议用不同变量。
2,宏程序变量的赋值
有了变量,我们需要给变量赋值。什么是赋值?也就是将某一数值赋给某个变量的过程,称为赋值。
军哥还是结合上面案给你举个例子。

比如自定义了两个变量
#2 代表:加工到的尺寸
#3代表:加工的长度
那么根据零件图纸尺寸,我把20这个数值赋给#2; -30赋给#3的过程就是赋值。
在数控系统中,赋值的表示方式是:
#2=20
#3=-30
也就是等号右边的数值赋给了左边变量号。
此时#2的数值就相当于20,#3的数值就相当于-30。如果有这么一个程序段G00X#2 ; Z#3;
那将等同于G00X20 ; Z-30;
军哥再给你举几个例子,如果
#6=3
#8=10
那么:G01X#6 Y#8完全等同于 G01X3. Y10.
因为把3,10这两个数字分别赋值给了变量#6,#8,所以#6,#8就代表着数字3, 10;因此上面两段小程序完全等同!
讲到这,军哥调出了电脑中的一个工序图:


突然问小白:“上面形状类似,尺寸不同的零件,要精加工内孔,你能编写个宏程序吗? ”
小白一看,知道军哥我强调的玩宏就是玩变量,上面3种零件,加工的形状类似,只是尺寸不一样,那么可以用变量来代替这些尺寸, 于是任意设置了几个变量如#1 代表D1的尺寸,#2代表D2的尺寸,#3代表L1的尺寸,#4代表L2的尺寸。
然后给军哥写了如下精加工的程序:
%
O0001
T0101
M3S800
#1=60.02
#2=56.05
#3=20
#4=50
G0X#1Z2.
G01Z-#3F0.1
X#2
Z-#4
G0U-0.5
Z2.
Z100.
M30
%
是的,普通程序X,Y,Z后面都跟的是具体数值,如果有好几种类似的零件,完全可以采用变量替代这些具体数值,根据零件图纸,给变量赋予对应数值,从而让一个程序来完成n多种的零件加工。
3,宏程序变量的运算
说起运算,你肯定会想到上学的时候学过加减乘除,开方,平方根正,弦余弦等等运算,那么变量之间也可以这样运算的。
比如,#1+#2 #6*TAN45 #1-#6*#3等等。
如果#1=10 ;#2=20 ;#3=-30;#6=2
那么#1+#2运算的结果为:30 ;
#6*TAN45运算的结果为:20;
#1-#6*#3运算的结果为:70 ;
军哥讲到这里,小白表示完全明白,因为小学生都学过加减乘除运算法则,小白很想知道,开方,平方根正,正余弦等等数学公式运算,于是问道:军哥,三角函数,开方,曲线,椭圆等数学方程式在宏程序中如何应用的?
关于函数,数学公式等在编程中如何应用,军哥后面传授,毕竟学习好比爬楼梯,你要的东西在10楼,目前你还在一楼,需要一步一个脚印去学,就目前而言,先把变量搞明白。
关于变量的运算,军哥我补充道:
变量的运算顺序和数*运学**算顺序一样,有乘除的先算乘除,然后算加减。
如果有括号,先算括号里面的,在FAUNC系统中运算式要用 中括号括起来。
比如:#1=1 #2=3 #6=10
那么:#1+#6=11 #1+#2*#6=31
#1*[#1+#6]=11 #1-[#2+#6]=-12
比如: 假设 #1 = 100,#2 = 10,#3 = 50,#4 = 20
那么 #1 - #2 * #3
#1/#2
#3/#2*#4
#3/[#2*#4]
[#1-#3]/#2
以上五个运算表达式的结果分别是:-400、10、100、0.25、5 。
上面变量的算术运算和我们学的数*运学**算差不多吧,包括平方根,三角函数等等运算与数*运学**算的方法完全一致!只是在宏的运算中个别 算术运算符号的格式 是不一样的。比如下表:

上表是我们常用的运算符号,我们用宏编写宏程序的时候,必须用宏变量的运算符号,具体如何应用会在后续的讲解中逐步渗透!数学中还有一些比如平方,绝对值,三角函数等等运算宏编程也会用到,下面我大致给讲解下,具体应用会在宏程序编程案例中来讲解!
SQRT[ ]: 平方根
ABS: [ ]:绝对值
这两个运算在我们学数学中都讲过。只不过宏的符号不一样而已。我们看在宏程序中如何使用它们。
比如:
#1=9
#2=SQRT[#1]
此时,#2=3
分析:因为#1的值是9,而对9开方 ,其结果就是3
比如:
#1=-20
#2=10
#3=ABS[#1+#2]
此时,#3=10
数学课本中学过 负数的绝对值,都是正数。在宏程序中ABS的目的就是去掉负号。所以#1=-20,#2=2
#1+#2这么运算 即-10 , -10的绝对值为:10
军哥再举几个简单例子
取整数函数ROUND,它的含义是去掉小数点,并对小数点后面的值四舍五入,使整个数值结果为整。
如#1=1.234
ROUND[#1] 的结果是1
如#1=0.6
ROUND[#1]的结果为1。
还有些函数如上取整FIX,下去整FUP
比如上取整FIX意思是直接舍弃小数点后面的数值。
如#1=0.96 那么FIX[#1]运算后的值为0,(因为此函数不考虑四舍五入,直接舍弃小数点后面的所有数值)。
FUP呢?用法和FIX相反,把小数部分变为整数1,并加到整数部分。
比如#1=1.06 FUP[#1]运算后的值为2。
#2=0.01 那么FUP[#2]运算后的值为1。
好了,关于变量今天给大家分享到这里,学好数控编程 找军哥,因为一套好的,有价值的专业编程资料是让你看着不累,学着还轻松。
学好绝招,关注邹军爱数控,评论回复6,送你套【价值巨大】【内容震撼】的数控宏程序编程资料。