卧式加工中心坐标系自动补偿原理及程序设计
简介数控卧式加工中心机床在加工零件时,由于零件加工部位的需要,通常要求工作台旋转任意角度。当工件坐标系原点与工作台旋转中心重合时,工作台的旋转不会给加工带来影响。但是由于工件坐标系原点的选择是根据零件结构特点、编程的需要而确定的,通常被加工零件无法与工作台的旋转中心重合,工件坐标系原点的位置随着工作台的旋转,在机床坐标系中发生变化。因此,要重新设定工件坐标系原点。现在我们公司采用的方法是:一个面的工件坐标系原点设定好之后,根据补偿值,人工计算其他面的工件坐标系原点并输入到相应的工件坐标系中,容易出错,且只能计算工作台旋转90度、180度、270度位置的工件坐标系原点,不能计算任意旋转角度的坐标系原点。该程序可根据初始工件坐标系原点设定值,实现工作台旋转任意角度的工件坐标系原点自动补偿计算,并设定新的工件坐标系原点,自动输入到相应的工件坐标系中,减少了工件坐标系设定时间和出错的概率,提高了生产效率和准确性。原理 当工件随夹具在工作台上安装后,初始工件坐标系原点经测量、设定后,在机床坐标系中即被确定。工件坐标系原点与工作台旋转中心的关系如下图所示:根据主轴B端(机床原点)和工作台回转中心的相对位置,分为两种情况,第一种情况如下:图中#110、#111表示工作台旋转中心O在机床坐标系中的X、Z值,#101、#103为初始工件坐标系原点A的测量设定值X、Z,#106、#107表示A点随工作台旋转一定角度后的B点的X、Z坐标。根据以上几何关系设计的自动补偿程序如下:#110=-624.94;#111=-199.5;回转中心都是负值主程序O7888;G65A1B90C2P7999;G65A1B180C3P7999;G65A1B270C4P7999;M30;
子程序O7999;#110=-624.94;#111=-199.5;IF[#1LT1]GOTO3000;IF[#1GT60]GOTO3000;IF[#1EQ49]GOTO3000;IF[#1EQ50]GOTO3000;IF[#1EQ51]GOTO3000;IF[#1EQ52]GOTO3000;IF[#1EQ53]GOTO3000;IF[#1LE48]GOTO20;#101=#*20];#102=#*20];#103=#*20];#104=#*20];读取B轴的数据GOTO30;N20#101=#*20];#102=#*20];#103=#*20];#104=#*20];GOTO30;N30#21=#101-#110;#22=#103-#111;#30=ABS[#21];#31=ABS[#22];IF[#2GT0]GOTO40;#2=#2+360;N40IF[#21EQ0]GOTO50;IF[#22EQ0]GOTO60;IF[#21GT0]GOTO70;IF[#22GT0]GOTO80;IF[#22LT0]GOTO90;N50IF[#22EQ0]GOTO100;IF[#22GT0]GOTO200;IF[#22LT0]GOTO300;N60IF[#21GT0]GOTO400;IF[#21LT0]GOTO500;N70IF[#22LT0]GOTO600;IF[#22GT0]GOTO700;N80#120=ATAN[#30] / [#31];GOTO1000;N90#120=ATAN[#31] / [#30]+90;GOTO1000;N100#101=#110;#103=#111;GOTO1050;N200#120=180;GOTO1000;N300#120=0; GOTO1000;N400#120=270;GOTO1000;N500#120=90;GOTO1000;N600#120=ATAN[#30] / [#31]+180;GOTO1000;N700#120=ATAN[#31] / [#30]+270;GOTO1000;N1000#18=SQRT[[#101-#110]*[#101-#110]+[#103-#111]*[#103-#111]];#19=#120+#2#23=#18*SIN[#19];#24=#18*COS[#19];#25=ABS[#23];#26=ABS[#24];#108=#104+#2;IF[#108LT360]GOTO800;IF[#108GE360]GOTO900;N900#108=#108-360;N800IF[#19LE90]GOTO1010;IF[#19LE180]GOTO1020;IF[#19LE270]GOTO1030;IF[#19LE360]GOTO1040;IF[#19LE450]GOTO1010;IF[#19LE540]GOTO1020;IF[#19LE630]GOTO1030;IF[#19LE720]GOTO1040;N1010#106=#110-#25;#107=#111+#26;GOTO2000;N1020#106=#110-#25;#107=#111-#26;GOTO2000;N1030#106=#110+#25;#107=#111-#26;GOTO2000;N1040#106=#110+#25;#107=#111+#26;GOTO2000;N1050#106=#110;#107=#111;#108=#104+#2;IF[#108GE360]GOTO1060;N1060#108=#108-360;当基准工件坐标系是位于270时,旋转240度时超过360度的处理N2000 IF[#3LT1]GOTO3000;IF[#3GT60]GOTO3000;IF[#3EQ49]GOTO3000;IF[#3EQ50]GOTO3000;IF[#3EQ51]GOTO3000;IF[#3EQ52]GOTO3000;IF[#3EQ53]GOTO3000;IF[#3LE48]GOTO2200;N2100#*20] =#106;#*20] = #102;#*20] = #107;#*20] = #108;赋值B轴的数据GOTO2300;N2200#*20] =#106;#*20] =#102;#*20] = #107;#*20] = #108; 赋值B轴的数据N2300 M99;N3000#3000=21;(#A&#C DATA ERROR)该程序已经在‘斗山HM800卧式加工中心’成功验证。
第二种情况如下:#110=525.035; #111=-99.92;回转中心一正一负
主程序O7888;G65A1B90C2P7999;G65A1B180C3P7999;G65A1B270C4P7999;M30;
(接上)子程序
O7999;
#110=-624.94;
#111=-199.5;
IF[#1LT1]GOTO3000;
IF[#1GT60]GOTO3000;
IF[#1EQ49]GOTO3000;
IF[#1EQ50]GOTO3000;
IF[#1EQ51]GOTO3000;
IF[#1EQ52]GOTO3000;
IF[#1EQ53]GOTO3000;
IF[#1LE48]GOTO20;
#101=#*20];
#102=#*20];
#103=#*20];
#104=#*20];
GOTO30;
N20#101=#*20];
#102=#*20];
#103=#*20];
#104=#*20];
GOTO30;
N30#21=#101-#110;
#22=#103-#111;
#30=ABS[#21];
#31=ABS[#22];
IF[#2GT0]GOTO40;
#2=#2+360;
N40IF[#21EQ0]GOTO50;
IF[#22EQ0]GOTO60;
IF[#21GT0]GOTO70;
IF[#22GT0]GOTO80;
IF[#22LT0]GOTO90;
N50IF[#22EQ0]GOTO100;
IF[#22GT0]GOTO200;
IF[#22LT0]GOTO300;
N60IF[#21GT0]GOTO400;
IF[#21LT0]GOTO500;
N70IF[#22LT0]GOTO600;
IF[#22GT0]GOTO700;
N80#120=ATAN[#30] / [#31];
GOTO1000;
N90#120=ATAN[#31] / [#30]+90;
GOTO1000;
N100#101=#110;
#103=#111;
GOTO1050;
N200#120=180;
GOTO1000;
N300#120=0;
GOTO1000;
N400#120=270;
GOTO1000;
N500#120=90;
GOTO1000;
N600#120=ATAN[#30] / [#31]+180;
GOTO1000;
N700#120=ATAN[#31] / [#30]+270;
GOTO1000;
N1000#18=SQRT[[#101-#110]*[#101-#110]+[#103-#111]* [#103-#111]];
#19=#120+#2
#23=#18*SIN[#19];
#24=#18*COS[#19];
#25=ABS[#23];
#26=ABS[#24];
#108=#104+#2;
IF[#108LT360]GOTO800;
IF[#108GE360]GOTO900;
N900#108=#108-360;
N800IF[#19LE90]GOTO1010;
IF[#19LE180]GOTO1020;
IF[#19LE270]GOTO1030;
IF[#19LE360]GOTO1040;
IF[#19LE450]GOTO1010;
IF[#19LE540]GOTO1020;
IF[#19LE630]GOTO1030;
IF[#19LE720]GOTO1040;
N1010#106=#110-#25;
#107=#111+#26;
GOTO2000;
N1020#106=#110-#25;
#107=#111-#26;
GOTO2000;
N1030#106=#110+#25;
#107=#111-#26;
GOTO2000;
N1040#106=#110+#25;
#107=#111+#26;
GOTO2000;
N1050#106=#110;
#107=#111;
#108=#104+#2;
IF[#108GE360]GOTO1060;
N1060#108=#108-360;
N2000 IF[#3LT1]GOTO3000;
IF[#3GT60]GOTO3000;
IF[#3EQ49]GOTO3000;
IF[#3EQ50]GOTO3000;
IF[#3EQ51]GOTO3000;
IF[#3EQ52]GOTO3000;
IF[#3EQ53]GOTO3000;
IF[#3LE48]GOTO2200;
N2100#*20] =#106;
#*20] = #102;
#*20] = #107;
#*20] = #108;
GOTO2300;
N2200#*20] =#106;
#*20] =#102;
#*20] = #107;
#*20] = #108;
N2300 M99;
N3000#3000=21;(#A&#C DATA ERROR) liangliangnihao 发表于 2015-1-26 09:10 static/image/common/back.gif
这个宏程序要怎么用呢,每旋转B轴都要执行一这个程序吗,还是一次装夹只要一次就可以了呢
只要一次就可以了。实现一次同时加工4面 谢谢楼主分享 谢谢分享 感谢楼主分享! 高手呀,谢谢楼主分享 zhutou512 发表于 2015-1-25 20:10 static/image/common/back.gif
(接上)子程序
O7999;
#110=-624.94;
这个宏程序要怎么用呢,每旋转B轴都要执行一这个程序吗,还是一次装夹只要一次就可以了呢 好好学习,天天向上 好好学习,天天向上
页:
[1]
2