wang2011214 发表于 2013-4-4 13:38:24

偏移子程序…现在在个人内测,专家们审核审核,多多提意见!

本帖最后由 wang2011214 于 2013-4-4 13:51 编辑

背景:
我们厂的产品主要是售后的,批量很小,能上千的都很少。十几台数车加工每天的调试很频繁,没有技术员,全靠个人操作,还是计件的!加工刀具也多,少的三把,四把现在用新工艺加工最少就要五把刀,多的七八把刀加工,调试时对刀,调磨耗最麻烦。使用平移坐标系能很轻松解决这个问题,但好多同仁学了好多次也是模模糊糊不敢用。所以自己就做了个平移的代码,自己内测了两多星期,使用还算正常!想过些时候在组内推广…今天贴出来让专家们审核审核,多给点指导和意见…谢谢!

wang2011214 发表于 2013-4-4 13:40:08

z向平移代码使用方法
    在调试产品中平移的对刀速度想对于传统对刀速度有很大的提升,但操作起来操作步骤和注意事项也相对较多…在此将其繁杂的步骤和注意事项做入代码中,从而提高操作效率降低操作失误率,使平移更容易理解使用。
    平移代码是以手动平移为原理,并整合所有步骤和注意事项在程序中,以代码调用子程序的方式执行。先介绍下手动平移的注意事项和步骤。
    手动平移能正确使用的注意事项:
    ①刀塔上所有刀具x,z向在同一基准上,如若有刀具不在以一号刀为基准的坐标系中,那么操作时一定要有对刀动作,遵循先平移后对刀的原理。
    ②磨耗值会影响到平移精度,因为平移时在MDI的方式下磨耗不被计算到刀补里,所以平移前要将磨耗值加入刀补值中。
    ③机床丝杆的间隙补偿会影响到对刀时产生绝对坐标,从而使MDI执行刀补和自动执行刀补有误差。操作时要使每次手轮手动都是固定向Z正或Z负方向移动。
   手动平移的基本步骤:
    ①用基准刀试切工件。
    ②工件取下测量高度值。
    ③MDI方式执行基准刀刀补(如T0101)。
    ④切换至坐标画面显示(pos键),将绝对坐标记录下来。
    ⑤切换至坐标系将数值加进坐标中,注意正负,以加入后绝对坐标变为0为基准。
    ⑥加入测量工件计算后此处的z值,注意加入的正负性,以得到计算值为准。(平移完成)
    平移代码G100使用格式:
    G100 Z_;
   Z_:指定当前位置的绝对坐标。
    例:用一号刀试切后测量此处应为Z0.3,在MDI下执行G100 Z0.3;按启动,程序大约执行一秒不到,执行完切换坐标画面核对绝对坐标!平移完成…
    G100 W_;
    W_:相对平移。
    例:调试产品后需整体向下减0.2,在MDI执行G100 W-0.2;启动即可!
    G100 W0 A_;
    W0 为刀补录入功能选项。
    A_:取值范围为负数,0,和不大于机床刀具号的整数!
    G100 W0 A_;
    A为负数时:取消刀补对比功能,此时即使某把刀具刀补变化超过1毫米执行平移时也不会报警!此为模态,在不指定大于等于零的A值时一直被默认!
    G100 W0 A0;
    现有所有刀补数据覆盖保存刀补数据,不发出任何报警!首次调试程序时执行一次,或者撞机后重新对所有刀具后必须执行一次(执行此选项必须保证所有刀具可用)。
    G100 W0 A_;
   保存当前刀补值;A值指定要保存的刀具号(大于零且小于等于机床刀具数的整数),用于新添加刀具后保存刀补,此时应注意对刀时应和当前基准刀具同一零点。
    例:平移完成后,新添的一把刀具在10号刀位,对好后在MDI下执行G100 W0 A10;若对刀后未执行此命令,在下次平移时会报3110 X AND Z BIAN DONG;
    G100 T_ Z_;
    指定基准刀具偏移;在不指定T值的情况下默认基准刀为一号刀。
    例:只使用一号刀以外一把或几把刀具加工时,例如只使用四号刀,用四号刀试切后指定Z0,MDI下执行G100 T4 Z0;即可。
    不能试切刀具与执行刀具不一样,因为如果不一样坐标会出错,程序也会执行换刀动作!
    例:用三号刀试切,MDI下执行G100 T4 Z0;此时将以四号刀刀补计算坐标,得出的坐标值与三号刀有误差,但绝对坐标显示为Z0,且刀塔换刀换为四号刀!
    报警信息与处理:
    3001 Z AND W KONG;
    执行时Z,W不能同时不指定。
    3002 Z AND W CHONG;
    重复指定了Z和W。
    3001 NO X;
    不可指定X。
    3001 NO U;
    不可指定U。
    3003 T DA YU 10;
    指定基准刀具号大于机床刀位数。
    3004 A ERROR;
   A 不在取值范围。
    以上为录入数据错误报警,报警时没进行平移动作复位后录入正确数据即可。
    A值为负时,刀补对比取消,此时无论执行什么在程序结束时都会有提醒“PIAN YI OK”,意为偏移程序结束,未进行刀补对比。
    3100报警;
    以31开头报警为刀补变动的错误报警,31后两位为报警刀具号。如3108是八号刀刀补变动超过一毫米。
    31__ Z BIAN DONG;
    报警刀具刀补z方向变动超过一毫米。
    31__ X BIAN DONG;
    报警刀具刀补X方向变动超过一毫米。
    31__ X AND Z BIAN DONG;
    报警刀具刀补X,Z方向都变动超过一毫米。
    上述报警出现时,为此次平移的所有刀补值较上次变动超过一毫米,此时平移已经完成,出错刀具如果不安全可以直接对刀,完成后执行G100 W0;保存报警刀具刀补。报警后程序会记录下报警刀具号,保存刀补时可不指定A值。如果没保存已经正确的刀补值,下次平移时还会报出同样的错误。
    注意:在平移时为消除丝杆间隙的影响,刀塔会有一个毫米的往返运动。误操作可能导致刀塔换刀。所以要远离工件操作!
    此代码为调用子程序,没有子程序或未对机床进行设置不能使用。
    报警只是提供参考,不能以其作为安全保障,错误的操作可能会保存错误的刀补数值。程序测试成功后其逻辑性是正确的,因此不对任何误操作引起的后果负责,请在完全理解的情况下使用!此代码为方便操作,提高调试效率和安全性,但不能完全替代手动操作,扎实的基本功、良好的调试习惯才是安全和效率的保障。
    如有需要改进的地方请即使反馈作出修改...

wang2011214 发表于 2013-4-4 13:41:53

自己写的代码说明…下面贴出源程序,比较庸长,自己也是新手,很多逻辑都是自己想了好久…专家们多多指点!

wang2011214 发表于 2013-4-4 13:42:32

本帖最后由 wang2011214 于 2013-4-4 13:54 编辑

O9010(PIAN YI);
IF[[#26 EQ #0]AND [#23EQ#0]] THEN #3000=1 (Z AND W KONG);
IF[[#26 NE #0]AND [#23NE#0]] THEN #3000=2 (Z AND W CHONG);
IF[#24 NE #0] THEN #3000=1(NO X);
IF[#21 NE #0] THEN #3000=1(NO U);
IF[#20 GT 10] THEN #3000=3(T DA YU 10);
IF[#1 NE #0] THEN #620=#1;
IF[#620 LT 0] GOTO 90;
IF[#23 EQ 0] GOTO 500;
N90 #20=FIX[#20];
IF[#20 LT 1] THEN #20=1;
#=#+#;
#=0;
IF[#23 NE #0] GOTO 100;
T[#20*101]
#5202=0;
#5222=0;
#2601=0;
G98 G1 W1. F500;
W-1.;
G99;
#30=1;
WHILE[#5042 NE #26] DO1;
IF[#30 GE 9] THEN #3000=3(PIAN YI ERROR);
#31=1;
#32=1;
#33=1;
IF[[#30 EQ 5] OR [#30 EQ 6]] THEN #31=-1;
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #31=-1;
IF[[#30 EQ 3] OR [#30 EQ 4]] THEN #32=-1;
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #32=-1;
IF[[#30 EQ 2] OR [#30 EQ 4]] THEN #33=-1;
IF[[#30 EQ 6] OR [#30 EQ 8]] THEN #33=-1;
#5202=#31*#26+#32*#5022+#33*#;
#30=#30+1;
END1;
GOTO 200;
N100 #10=#5042;
#14=1;
#15=1;
N300#5202=#5202+#14*#15*#23;
#14=2;
#15=-1;
IF[#23 LE 0] GOTO 400;
IF[#5042 GT #10] GOTO 300;
GOTO 200;
N400 IF[#5042 LT #10] GOTO 300;
N200(DUI BI);
IF[#620 LT 0] GOTO 99;
#27=1;
WHILE[#27 LE 10] DO2;
#28=ABS[#]-ABS[#];
IF GE 1] THEN #600=#27;
#29=ABS[#]-ABS[#];
IF GE 1] THEN #630=#27;
IF[ GE 1] AND GE 1]] THEN #3100=(X AND Z BIAN DONG);
IF GE 1] THEN #3100=(Z BIAN DONG);
IF GE 1] THEN #3100=(X BIAN DONG);
#27=#27+1;
END2;
N99 IF[#620 LT 0] THEN #3006=1(PIAN YI OK);
M99;
N500(LU RU DAO BU);
IF[#600 GT 0] GOTO 600;
IF[#630 GT 0] GOTO 700;
IF[ NE ABS[#1]] OR [#1 GT 10]] THEN #3000=4(A ERRER);
IF[#1 EQ 0] GOTO 800;
IF[#1 GE 1] GOTO 900;
GOTO 200;
N600#=#;
GOTO 500;
N700#=#;
GOTO 500;
N900 #600=#1;
#630=#1;
#1=#0;
GOTO 500;
N800(FU GAI);
#1=1;
WHILE[#1 LE 10] DO3;
#=#;
#=#;
#1=#1+1;
END 3;
#600=#0;
#630=#0;
M99;

风随意 发表于 2013-4-4 13:44:49

貌似没有必要吧?

wang2011214 发表于 2013-4-4 13:47:09

自己英文白痴,报警信息都是拼音…嘿嘿,能看懂就好了!

wang2011214 发表于 2013-4-4 17:38:09

风随意 发表于 2013-4-4 13:44
貌似没有必要吧?

做这个程序是麻烦点,但使用很方便…特别是刀具多的时候!

wang2011214 发表于 2013-4-4 17:42:53

程序能自己寻找算法,报PIAN YI ERRER的时候是系统变量号不对,修改变量号就可以了,在三个版本的法兰克系统测试过了

veroinca 发表于 2013-4-4 18:05:12

用工件移不是更快

wang2011214 发表于 2013-4-4 18:09:55

veroinca 发表于 2013-4-4 18:05
用工件移不是更快

和工件移一个道理,多了的就是刀具对比…工件移的前提就是刀具在一个基准上
页: [1] 2 3
查看完整版本: 偏移子程序…现在在个人内测,专家们审核审核,多多提意见!