摘要:本文介绍了在开发全工位滑槽研磨机的运动程序过程中利用宏程序,子程序,变量计算简化加工程序的关键技术。对基于数控系统的专用机床需要多流程选择时的加工程序具有指导意义。
关键词:多流程程序选择、宏程序、子程序、变量计算
1.全工位滑槽研磨机的运动控制要求
某客户的“全工位滑槽研磨机”配用三菱M70B数控系统,伺服系统为2轴。伺服驱动器为MDS-D-SVJ3-20,伺服电机为HF204。
图1 “全工位滑槽研磨试验机”的运动控制要求
(1)能实现从“当前滑槽”向“任意下一滑槽”的运动。“任意下一滑槽”由操作面板上的组合按键选定。
(2)在X方向为快进定位,在Y方向为研磨工进。
(3)“运行距离”,“运行速度”能够任意设定,定位精度0.001mm。
(4)能够任意选择“滑槽位”;
(5)能够任意设定“磨削次数”
(6)能够实现点动,手轮,自动一键启停,紧急停止,中断运行等功能。
2.对研磨工艺运动逻辑的分析:
“全工位滑槽研磨试验机”运动路径如图2所示:
A型产品共有滑槽50道。B型产品共有滑槽100道。每道滑槽之间的距离不等。
研磨工艺要求:能从“当前滑槽”向“任意下一滑槽”的运动。
B型产品共有滑槽100道。如果按这一要求。在任一滑槽位置都可能有100种运动流程可选择。这样共有的“运动流程”为100*100=10000种。
如果按照常规的运动程序编制方法编制的研磨加工程序如基本加工程序P100。在P100中程序由下列部分组成
图2.基本加工程序P100方框图
基本加工程序P100
(1)当前位置判断程序步100。
N1 IF[#1132EQ1]GOTO1001;
……
.N99 IF[#1132EQ99]GOTO1099
N100 IF[#1132EQ100]GOTO1100-
#1132是表示工作台当前位置的变量。由PLC程序处理后发出。以上程序是判断工作台的当前位置。当前位置在1#滑槽,程序跳到N1001步。
当前位置在99#滑槽,程序跳到N1099步。
当前位置在100#滑槽,程序跳到N1100步。
有关“当前位置判断”的程序步为100步。
(2)当前位置在任一滑槽,都对应100种“下一加工槽位”选择指令
N1099.IF[#1132EQ99]GOTO 2001
……
“#1132变量”是选择指令,由操作面板选择经PLC程序处理后发出。选择指令=99槽,程序跳到N2099步。
100个槽位对应100种选择指令,共计判断条件10000步
(3)不同流程的加工程序10000个。每个加工程序12步。则加工程序长度12*10000=120000步
总加工程序步数
=条件判断程序10100步+运动程序步数120000步
=131000步。
这样100道滑槽的研磨工艺加工程序总步数可能达到130000步。基本加工程序P100的加工程序太长。编程困难,程序的安全系数也太低了。这一程序实用性不强。不过这是分析加工程序的基础。
3.对加工程序的简化:
3.1利用宏程序功能实现研磨工艺的简化
简化运动程序最有效的方法之一是使用子程序和宏程序;
凡是运动动作相同的一组运动都可以编制成为“子程序”,凡是可以用变量代替具体数据的程序可以编制成宏程序。按照这个原则,仔细分析每一研磨运动,发现其动作顺序是相同的,研磨程序为P200:
研磨程序P200
N1 M8-----开冷却液;
N2 M3------磨头启动旋转
N3 G90 G1Y0F2000-----研磨退回Y0位;
N4 M9-----关冷却液
N5 M5------关闭磨头旋转
N6 G90 G0Xx------运行到下一X位置
N7 M8-----开冷却液;
N8 M3------磨头启动旋转
N9 G90 G1YyF2000-----研磨下一滑槽;
N10 M9-----关冷却液
N11 M5------关闭磨头旋转
N12 M30-----END程序结束。
只是在“N6 G90G0Xx------运行到下一X位置”和
“N9 G90 G1Yy F2000-----研磨下一滑槽;”中的X轴移动距离和Y轴移动距离在不同的“研磨加工流程中”各不相同。如果将“X轴移动距离和Y轴移动距离”用变量表示。在选择不同的流程时给变量赋予不同的“数值”。这样就可以将研磨运动程序编制成为一“宏程序”;在适当的程序步赋予不同的变量并调用宏程序就可以完成研磨动作。
根据以上方案编制出“研磨加工宏程序P9200”
研磨加工宏程序P9200
N1 M8-----开冷却液;
N2 M3------磨头启动旋转
N3 G90 G1Y0F2000-----研磨退回Y0位;
N4 M9-----关冷却液
N5 M5------关闭磨头旋转
N6 G90 G0X#1------运行到下一X位置
N7 M8-----开冷却液;
N8 M3------磨头启动旋转
N9 G90 G1Y#2 F2000-----研磨下一滑槽;
N10 M9-----关冷却液
N11 M5------关闭磨头旋转
N12 M30-----END程序结束。
在此宏程序中:“X轴移动距离=#1(变量)
Y轴移动距离”=#2(变量)
这样,就可以将120000步运动程序简化为10000条的宏程序调用指令。简化后程序量仅为简化前程序的8%.
3.2不可以简化的程序部分:
由于存在10000条运动流程,每一流程中,X轴Y轴的运行距离不相同。即使采用了宏程序的简化方案,但变量的设置不能简化,所以这10000步变量设置程序不能简化。必须有规律的编写程序。
3.3运动流程判断条件程序的简化:
在程序中用变量“#1132”表示工作台当前位置;“#1133”表示“下一指令选择状态”.
按照基本程序P100的编制方法,用于“运动流程选择”的程序步就达到10100步,也需要简化。
以“当前位置”的判断为例:
(1)“当前位置”共有100点,在加工程序中的常规判断程序有100步。如果采用一循环程序,用一变量I从1—100进行循环比较,就可以判断“当前位置”,而且利用“GOTO”指令可以跳出循环,跳到指定的“程序步”。“程序步”也可以用变量指定。按这样的思路,编制了循环比较宏程序如下:
P300
N1 WHILE [ILE100] DO 1
N2 #1000=I*100------(制作步序号变量)
N3 IF[#1132 EQ I]GOTO#1000--可以跳到循环之外选定的步序号
N4 I=I+1;
N5 END 1
这样将常规100步比较程序简化为5步的循环比较程序。
(2)把判断“下一指令选择状态”的程序做同样处理,可以将常规10000步比较程序简化为500步的循环比较程序
这一部分,简化后程序仅为简化前程序的5%。
经过第一次简化后的程序步数
1当前位置判断程序=5步
2运动流程选择判断程序步=500步
3运动变量设置及宏程序调用程序步=10000步
4研磨运动程序步=12步
总步数=10517步。经过第1次简化。
简化程序仅为“常规基本程序”的8%。可以说是大大简化的加工运动程序。
4.对加工程序的再次简化:
由于
(1)运动变量设置及宏程序调用程序步=10000步
(2)研磨运动程序步=12步
已经不可简化。
还可以做进一步简化的就是“运动流程判断条件”
而“运动流程判断条件”实际上是“当前位置”和“下一指令选择”两种条件的组合;
而“当前位置”和“下一指令选择”两种条件实际上已经在PLC程序中给出。(即变量#1132和#1132已经确定)。这样问题就简化为:在已知“当前位置”和“下一指令选择”的条件下:如何选择“运动变量设置及宏程序调用程序的顺序号”。
4.1运动变量设置及宏程序调用子程序
可以将“运动变量设置及宏程序调用程序”单独制作成为一“子程序”。这个子程序共有10000步;
其“顺序步号”如果按一定规律设置:
“顺序步号”=(“当前位置变量”*100)+“下一指令选择变量”
“顺序步号”=(#1132*100)+#1133---------(式1)
则“运动变量设置及宏程序调用程序”P9100(共10000步)如下:
P9100
N0101 G65P9200A*B*-----------(在第1槽位选择第1槽)
N0102 G65P9200A*B*-----------(在第1槽位选择第2槽)
N0199 G65P9200A*B*-----------(在第1槽位选择第99槽)
N0200 G65P9200A*B*-----------(在第1槽位选择第100槽)
…….
N0201 G65P9200A*B*-----------(在第2槽位选择第1槽)
N0202 G65P9200A*B*-----------(在第2槽位选择第2槽)
N0299 G65P9200A*B*-----------(在第2槽位选择第99槽)
N0300 G65P9200A*B*-----------(在第2槽位选择第100槽)
………..
N9901 G65P9200A*B*-----------(在第99槽位选择第1槽)
N9902 G65P9200A*B*-----------(在第99槽位选择第2槽)
N9999 G65P9200A*B*-----------(在第99槽位选择第99槽)
N10000 G65P9200A*B*-----------(在第99槽位选择第100槽)
N10001 G65P9200A*B*-----------(在第100槽位选择第1槽)
N10002 G65P9200A*B*-----------(在第100槽位选择第2槽)
N10099 G65P9200A*B*-----------(在第100槽位选择第99槽)
N1010 0G65P9200A*B*-----------(在第100槽位选择第100槽)
P9100程序每一步看起来都相似,G65 P9200是调用宏程序P9200指令。只是每一宏程序的变量A、B不相同。A----1#变量。B----2#变量。Aa,Bb是对应于不同加工程序的X轴、Y轴移动距离,每一“研磨加工程序”的变量A、B必须预先设置。这就是P9100程序不能再被简化的原因。
4.2P9100程序的“顺序步号”
“顺序步号”=(#1132*100)+#1133---------(式1)
这样设置是为了能够有规律的检索到相关的程序步。也是简化程序的关键之一。
在编制完成“运动变量设置及宏程序调用程序”P9100后,余下的问题是如何选择其中的程序号
4.3“顺序步号变量”
将“顺序步号”设置成为变量,这样就可以在执行“子程序调用”时直接设定调用子程序的某一步。
N30#1500=(#1132*100)+#1133;----#1500是P9100中“顺序步号”(P9100中的“顺序号”已经按此公式设置)
这样在简化程序的过程中,先将10000步程序简化为505步,现在又简化为1步。彻底的简化了程序。
5.主加工程序
经过两次简化和对不可简化程序的判断,最后编制出主加工程序如下:P800
P800----主加工程序
N10 IF[#1133EQ0]GOTO90-----(无选择指令判断:如果没有选择“下一位置指令”,程序结束。
N20 IF[#1133EQ#1132]GOTO90----(同号选择判断--如果选择的“下一运动位置”与“当前位置相同”,程序结束。
N30 #1500=(#1132*100)+#1133;----#1500是P9100程序中“顺序号”(P9100中的“顺序号”必须按此公式设置)
N40 M98 P9100H#1500-----调用子程序P9100的H顺序段。H----P9100中“顺序号”
N90 M30 END
整个主程序虽然只有4步,但包含了一次“子程序”调用。在“子程序”中又包含了一次“宏程序”调用。
本程序对应可能的10000个不同的“研磨工艺”,程序步数只有10020步。实现了研磨运动程序的最简化。主程序只有4步。各程序便于分析,测试,查找。是利用宏程序编制加工工艺的典型方法。