首页 理论教育 算法与程序流程框图的设计优化

算法与程序流程框图的设计优化

时间:2023-06-16 理论教育 版权反馈
【摘要】:图4-3 实现钻孔的两种程序流程框图a)设置#100=7 b)设置#100=03.根据算法以及流程框图编写加工的宏程序代码程序1:按图4-3所示的流程框图编写的宏程序代码实例4-1 程序1编程要点提示:本程序先采用1号刀(中心钻)进行孔的预定位加工,再采用2号刀钻头进行钻孔加工。在宏程序编程中,有时为了使程序能按编程人员设计的意图执行和避免出现无限循环的现象,设定一个标志变量是很有必要的。

算法与程序流程框图的设计优化

1.算法的设计

(1)该实例钻孔过程规划为:X、Y轴快速移动到孔的加工位置,然后进行钻孔循环,钻到预定的深度后,Z轴抬刀到安全平面,准备移至下一个位置孔进行加工。FANUC系统提供了一系列钻孔循环来满足不同孔的加工需求,因此对于编程人员来说只要找准孔位置在零件中的坐标值,以及考虑孔加工的路径即可,至于加工孔的循环过程则由机床按照编程人员给定的指令和参数来完成。

(2)由图4-1可知,零件中7个通孔的位置呈线性排开,孔直径大小相等、且孔与孔之间的间距也相等。采用宏程序编程只需要知道第一个孔的位置坐标,然后通过变量的运算,即可以控制其余6个孔的位置,结合钻孔循环G81指令写出宏程序代码。

(3)关于控制循环结束的条件,可以采用以下两种算法:

1)以孔的个数作为循环结束的判定条件。设置#100号变量控制钻孔的个数。设置#100=7(也可以设置#100=0),每钻好一个孔,#100=#100-1,通过条件判断语句IF[#100 GT0]GOTO 10或IF[#100 LT7]GOTO 10实现连续钻7个孔的循环过程。

2)采用X轴的坐标值作为循环结束的判定条件。设置#100=10,每钻好一个孔后,通过语句#100=#100+30的累加,使X轴移动到下一个钻孔位置,通过条件判断语句IF[#100 GE 190]GOTO 10实现连续钻7个孔的循环过程。

(4)关于钻孔固定循环的过程。可以采用FANUC数控系统提供的钻孔循环G81指令来实现;也可以采用G01直线进给的方式,设置#101号变量控制每次钻孔的深度,采用G01X[#101]和#101=#101+2,通过每次钻孔深度为2mm,这样有利于排屑,相当于钻孔循环G73/G83指令的功能,最后通过判断孔的深度来完成整个钻孔过程。

978-7-111-45798-5-Chapter04-3.jpg

图4-2 钻孔的刀路轨迹示意图

2.程序流程框图设计

根据以上对图样和算法的设计,规划钻孔的刀路轨迹如图4-2所示,程序流程框图的设计如图4-3所示,其中图4-3a所示为#100变量初始值为7,图4-3b所示为#100变量初始值为0。

978-7-111-45798-5-Chapter04-4.jpg

图4-3 实现钻孔的两种程序流程框图

a)设置#100=7 b)设置#100=0

3.根据算法以及流程框图编写加工的宏程序代码

程序1:按图4-3所示的流程框图编写的宏程序代码

978-7-111-45798-5-Chapter04-5.jpg

978-7-111-45798-5-Chapter04-6.jpg

实例4-1 程序1编程要点提示:

(1)本程序先采用1号刀(中心钻)进行孔的预定位加工(防止直接用φ10mm钻头钻孔时,钻头定心不准而影响孔的精度),再采用2号刀(φ10mm)钻头进行钻孔加工。

(2)钻孔循环指令如G81是模态指令,一旦指定,就一直保持有效,直到用G80撤销指令为止,因此只要在开始时使用了这些指令,在以后连续加工中不必重新指定。

(3)讨论#103号变量和IF[#103 GT 0.5]GOTO 30的作用:

1)#103号变量作为标志变量,是控制程序流向执行的依据。下面举例说明这一点:(www.xing528.com)

比如水库闸门的作用:当水位上涨到一定高度就开闸放水,否则水闸关闭,而开闸放水的条件就是水位达到一定的高度。

在宏程序编程中,有时为了使程序能按编程人员设计的意图执行和避免出现无限循环的现象,设定一个标志变量是很有必要的。一般在出现GOTO语句和粗、精加工采用同一段程序时,需要考虑采用标志变量实现程序的顺利跳转,以避免出现无限循环(死循环)现象。

2)下面结合程序语句来分析标注变量的用法:

在程序的变量赋值中,#100=0使#100变量赋值为0,接着程序执行钻中心孔的程序代码,钻中心孔结束后,执行IF[#103GT0.5]GOTO30语句,该语句的作用就是判断标志变量是否大于0.5,是决定程序是否跳转的条件(相当于水库中水位高度是否达到一定的高度),此时#100号变量值为0而不大于0.5,程序继续按顺序执行,执行到#103=#103+1,使#103号变量的值为1,GOTO20语句是程序无条件跳转到N20执行钻孔循环的程序段,钻孔循环结束后,再次执行IF[#103GT0.5]GOTO30,而此时#103号变量值为1,大于0.5,满足了程序跳转的条件,所以程序跳转到标号为30处执行(程序结束语句)。

(4)关于T1M06后面T2语句的说明。该语句用于加工中心带自动刀库的备刀,实际加工中,当加工零件的工序较多,使用的刀具较多,编程人员往往不会从1号刀到最后刀号都按顺序使用的。例如:加工中心的刀库最多可以存储60把刀。T1号在加工,如下一工序加工使用T55,而刀库中的刀库编号按顺序排放的,在T1号加工结束后,再执行T55M06(换刀指令),机床执行换刀指令会有较长的停顿时间。为了节省时间,通常在程序执行时,进行备刀T55动作,执行T55指令后,刀库在运作时并不影响机床正常运行。程序2:采用G01实现钻孔循环的宏程序代码

978-7-111-45798-5-Chapter04-7.jpg

978-7-111-45798-5-Chapter04-8.jpg

978-7-111-45798-5-Chapter04-9.jpg

实例4-1 程序2编程要点提示:

(1)程序O4001和程序O4002的区别在于:程序O4001采用FANUC系统提供的钻孔循环来实现孔的加工,程序O4002是采用执行进给的方式完成孔加工。采用G01编写孔的宏程序代码,相当于FANUC系统提供的G73或G83指令功能,在钻入一定深度后,Z轴抬刀,利于排屑和零件散热,防止钻孔卡死,属于深孔加工通用方式。

(2)IF[#110 LE#106]GOTO 50和N50之间的循环语句实现控制加工孔的循环过程。其中的判断条件[#110 LE#106]是将已加工孔的深度和需要加工的深度进行比较,实现动态判别,只要修改#106的值,就可以实现任意深度孔的加工,在深孔加工中具有代表性。

程序3:采用调用子程序嵌套的方式实现孔加工的宏程序代码

978-7-111-45798-5-Chapter04-10.jpg

978-7-111-45798-5-Chapter04-11.jpg

978-7-111-45798-5-Chapter04-12.jpg

实例4-1 程序3编程要点提示:

(1)程序O4003采用子程序嵌套的方式实现孔加工的宏程序代码,该实例中钻中心孔、钻φ10mm的孔采用调用同一个子程序。

(2)由于第一个孔中心与编程原点的距离和两个孔之间的孔距不一样,所以调用一级子程序时,要先使用G0 G90G54X-20Y0语句使机床移动到相应的位置,调用一级子程序,执行语句:G91和G0 X[30]Y0使机床移动(相对移动)至孔的位置,然后再调用二级子程序进行钻孔循环。

(3)中心孔钻削完毕后,机床会执行:Z轴会快速移动到换刀点、换刀等一系列的动作。X、Y轴的初始移动见(2)点所述。

(4)钻中心孔深度和钻φ10mm孔的深度不一样,因此程序中采用了#105号变量控制钻孔的深度,具体解决方法参考如下程序:

978-7-111-45798-5-Chapter04-13.jpg

由以上程序可知:机床执行换刀后,#105号变量赋相应的深度值即可。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈