卧式加工中心工件坐标系自动补偿全解.docx
《卧式加工中心工件坐标系自动补偿全解.docx》由会员分享,可在线阅读,更多相关《卧式加工中心工件坐标系自动补偿全解.docx(12页珍藏版)》请在冰豆网上搜索。
卧式加工中心工件坐标系自动补偿全解
卧式加工中心坐标系自动补偿原理及程序设计
简介
数控卧式加工中心机床在加工零件时,由于零件加工部位的需要,通常要求工作台旋转任意角度。
当工件坐标系原点与工作台旋转中心重合时,工作台的旋转不会给加工带来影响。
但是由于工件坐标系原点的选择是根据零件结构特点、编程的需要而确定的,通常被加工零件无法与工作台的旋转中心重合,工件坐标系原点的位置随着工作台的旋转,在机床坐标系中发生变化。
因此,要重新设定工件坐标系原点。
现在我们公司采用的方法是:
一个面的工件坐标系原点设定好之后,根据补偿值,人工计算其他面的工件坐标系原点并输入到相应的工件坐标系中,容易出错,且只能计算工作台旋转90度、180度、270度位置的工件坐标系原点,不能计算任意旋转角度的坐标系原点。
该程序可根据初始工件坐标系原点设定值,实现工作台旋转任意角度的工件坐标系原点自动补偿计算,并设定新的工件坐标系原点,自动输入到相应的工件坐标系中,减少了工件坐标系设定时间和出错的概率,提高了生产效率和准确性。
原理当工件随夹具在工作台上安装后,初始工件坐标系原点经测量、设定后,在机床坐标系中即被确定。
工件坐标系原点与工作台旋转中心的关系如下图所示:
根据主轴B端(机床原点)和工作台回转中心的相对位置,分为两
种情况,第一种情况如下:
第三象限第四象限
270*
O*
第一-象限第一象眼
图中#110、#111表示工作台旋转中心O在机床坐标系中的X、Z值,#101、#103为初始工件坐标系原点A的测量设定值X、Z,#106、#107表示A点随工作台旋转一定角度后的B点的X、Z坐标。
根据以上几何关系设计的自动补偿程序如下:
#110=-624.94;#111=-199.5回转
中心都是负值
主程序
07888;
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=#[5221+[#1-54]*20];
#102=#[5222+[#1-54]*20];
#103=#[5223+[#1-54]*20];
#104=#[5224+[#1-54]*20];读取B轴的数据
GOTO30;
N20#101=#[7001+[#1-1]*20];
#102=#[7002+[#1-1]*20];
#103=#[7003+[#1-1]*20];
#104=#[7004+[#1-1]*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度的处理
N2000IF[#3LT1]G0T03000;
IF[#3GT60]GOTO3000;
IF[#3EQ49]GOTO3000;
IF[#3EQ50]GOTO3000;
IF[#3EQ51]GOTO3000;
IF[#3EQ52]GOTO3000;
IF[#3EQ53]GOTO3000;
IF[#3LE48]GOTO2200;
N2100#[5221+[#3-54]*20]=#106;
#[5222+[#3-54]*20]=#102;
#[5223+[#3-54]*20]=#107;
#[5224+[#3-54]*20]=#108;赋值B轴的数据
GOTO2300;
N2200#[7001+[#3-1]*20]=#106;
#[7002+[#3-1]*20]=#102;
#[7003+[#3-1]*20]=#107;
#[7004+[#3-1]*20]=#108;赋值B轴的数据
N2300M99;
N3000#3000=21;(#ACDATAERROR)
该程序已经在‘斗山HM800卧式加工中心’成功验证。
第二种情况如下:
#110=525.035;#111=-99.92回转中心一正一负
第一象限
*All
Z(#103)
180
第三象限
270
弟四象限
主程序
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=#[5221+[#1-54]*20];
#102=#[5222+[#1-54]*20];
#103=#[5223+[#1-54]*20];
#104=#[5224+[#1-54]*20];
GOTO30;
N20#101=#[7001+[#1-1]*20];
#102=#[7002+[#1-1]*20];
#103=#[7003+[#1-1]*20];
#104=#[7004+[#1-1]*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;
N2000IF[#3LT1]GOTO3000;
IF[#3GT60]GOTO3000;
IF[#3EQ49]GOTO3000;
IF[#3EQ50]GOTO3000;
IF[#3EQ51]GOTO3000;
IF[#3EQ52]GOTO3000;
IF[#3EQ53]GOTO3000;
IF[#3LE48]GOTO2200;
N2100#[5221+[#3-54]*20]=#106;
#[5222+[#3-54]*20]=#102;
#[5223+[#3-54]*20]=#107;
#[5224+[#3-54]*20]=#108;
GOTO2300;
N2200#[7001+[#3-1]*20]=#106;
#[7002+[#3-1]*20]=#102;
#[7003+[#3-1]*20]=#107;
#[7004+[#3-1]*20]=#108;
N2300M99;
N3000#3000=21;(#ACDATAERROR)