邹军:想成为编程工程师,玩透数控宏程序编程,这里有一个大招分享给你

想成为一名专业知识过硬的编程工程师,掌握数控高级编程宏程序是一基本功。
不懂宏程序也只能默默的看着别人装逼了!如果你有钱可以买五轴数控机床,没有人有意见的。

光看看这些,用宏程序加工的作品就知道,月薪上万是没有问题的。

这样的技术你是不是觉得离自己很遥远?
只有想不到没有做不到的。

宏程序应用在很多方面,使用过宏程序的人都能感受到宏程序的便利,掌握宏编程技术是一件多么牛逼的事情啊。

但是,万事开头难,懂点数控G指令的师傅,如何能在段时间内快速掌握数控宏程序?
最近几个月,我做到了非常NB的一招,就是宏程序都看不懂的学员,按照教程体系学,就能够在一两个星期内独立编写宏程序,最多1个月就可以玩转宏程序编程。
如此神奇,如何做到的呢?
针对学习宏程序编程而言,大多数人都是在网上,东找找,西看看,猴子掰玉米式的,把学习搞的太复杂。
其实把一点学透,远比你泛泛的学习重要。
甚至个别学员基础非常差,自称小学都没毕业,我告诉他了九个字的心法,配合我精心设计的干货,很快就上道了,有多快,3天他就觉得自己进步很快, 就能独立编写简单宏程序了。
你能够把我教程中传授的编程方法学到,你编程功底就会上升N个层次。
如何才算学透呢?
举个例子:用宏程序在数车上搞定网纹滚花的加工。
经验丰富的老师傅知道:采用车螺纹的办法,圆周分度,多头正反交替车螺纹,出来就是压花的效果了。
知道并不等于会,落实在行动上面不少师傅可能会一脸蒙圈。
先看车多头螺纹,(比如使用G32指令),法拉克格式如下:
G32 Z_F_Q_
其中,Q是螺纹起始角。若车单头螺纹起始角度值为零,可省略。
车双头螺纹,主要程序段如下:
……
G32Z-50.F30.Q0      (车第1头 ,Q0可以省略)
……
G32Z-50.F30.Q180000  (车第2头)
备注:
因为是双头,一圈360度平分为二,所以起始角为0度和180度。
其精度单位是0.001度,所Q180000。
若是4头螺纹,那么程序如下:
……
G32Z-50.F30.
……
G32Z-50.F30.Q90000
……
G32Z-50.F30.Q180000
……
G32Z-50.F30.Q270000
……
若是8头螺纹呢?若是16头螺纹呢?
很明显只有Q在变化,而且有规律的变化。
此时你能联想到宏程序的某个知识点么?
是不是和变量的自增有关?
关于变量自增:比如设变量#7
法拉克的格式为:#7=#7+1  ,后面的+1代表每运算一次变量#7就增加1。(当然,根据需要你也可以+2,代表每运算一次变量#7就增加2,或者还可以设置变量比如#7=#7+#5,代表每运算一次变量#8就增加#5的值)。
那么车多头螺纹,其中Q的变化完全可以采用变量,比如设角度变量为#7,变量#7每运算一次 自增多少?
假如你要车60头,那么360/60=60,也就是Q每次自增60 度,即#7= #7+60000
Q自增到什么时候为止?即多头螺纹360度分度加工完为止。

此时你能联想到宏程序的某个知识点么?
是不是可以利用WHILE  [ ]DO语句来控制是否加工了一圈(360度)。
关于WHILE  [ ]DO语句,格式为:
WHILE [ #7LT#360000  ] DO 1
……
END 1
当 [#7小于#360000]条件表达式满足,则执行从DO到END之间的程序,否则转至END后面的程序。
那么DO和END之间就填上要加工的程序内容,END后面就填上退刀程序
比如下面部分程序段:
%
…….
#7=0 (角度变量#7初始赋值为零,0为起始角)
WHILE[#7LT360000]DO1(当#7的值小于360度,就执行循环内的程序)
G32Z-40.F40.Q#7
G32Z20.F40.Q#7
#7=#7+60000
END1
G0X100
Z100
M30
%
1,    程序由上往下依次运行,先读取#7的数据。
2,    然后读取WHILE语句,判断设置的条件是否成立,成立就执行WHILE到END1之间的程序。
3,    因为#7初始值为0 ,0是小于360000的,所以就执行WHILE到END1之间的程序。即:
G32Z-40.F40.Q#7
G32Z20.F40.Q#7
这两句正好是正反车螺纹的程序,出来就是网状花纹了。
#7=#7+60000(运行到此程序段时候,变量自增,此时#7的值增加了60000)
4,    机床继续往下运行读取END1,然后返回WHILE语句,再次判断#7的值是否小于360000,如果小于360000就继续执行WHILE到END1之间的程序。
就这样,通过变量#7的自增运算,来实现角度分度,WHILE语句控制是否加工了一圈(360度)。
这就是变量自增和WHILE语句结合应用的一个例子。当你把这些基础知识搞明白学透彻之后,你就可以随时举一反三,快速使用!
如何举一反三?
再举个例子,比如说利用宏程序来实现刀具寿命管理。
假如说我这把刀具能加工200件零件,当累积加工零件200件后就要提醒操作者更换刀具。
如何编写程序呢?
此处重点是:当累积加工零件200件后就要提醒操作者更换刀具。
 
你会联想到宏程序的那些知识点?
 
是不是可以利用变量的自增和WHILE [ ]DO语句来控制是否加工了200件?
 
比如变量#501 的自增,格式如下:
#501=#501+1
通过变量#501=#501+1 自增的方式,来帮我统计零件加工数量
利用WHILE语句设置条件:
WHILE[#501EQ200]DO1
……
END1
也就是当#501的值等于200的时候,就执行WHILE到END之间的程序。
而我在WHILE与END之间写上一个报警提升语句,当它执行WHILE到END之间的程序,到报警程序段,就通报警屏提升操作者改换刀了。
即:
%
T0101 S2000 M3
……
(加工内容)
……
……
#501=#501+1
WHILE[#501 EQ 200]DO1
#501=0
#3000=1(YOU MUST CHANGE THETOOL)
END1
……
M30
%
备注:
法拉克系统变量 # 3000是用户自定义的报警变量
格式为:#3000=0~200 (  )
当#3000的值为0到200的时候系统会停止运行且报警
说明:
1,0到200是报警号, NC屏幕上显示报警号为:变量#3000的值加上3000。
2,括号中可以写报警信息,但是括号中不能操过26个字符。
我简单分析下上面程序:
1,我把要加工零件的程序段落放在WHILE语句前面,也就是先加工零件,零件加工完之后,就遇到变量的自增运算,变量#501的数值会增加1,相当于系统帮我统计零件加工数量。程序每运行一次#501的数值会增加1。
2,设置的条件是:#501的值等于200的时候,就执行WHILE到END之间程序段。
当程序运行200次之后,也就是#501的值为200的时候,条件就满足了,就要执行WHILE与END之间程序段。
WHILE[#500 EQ 200]DO1
#501=0
#3000=1(YOU MUST CHANGE THETOOL)
END1
而WHILE与END之间有两个程序段。
1,#501=0
2, #3000=1
添加#501=0 是让#501的值清零,目的为了更换刀具后重新计数。然后遇到#3000程序段,程序就报警了,括号中我写的英文字母就会显示在机床界面中,告知操作者更换刀具。
(0)

相关推荐