机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4682|回复: 20

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

[复制链接]
发表于 2013-4-4 13:38:24 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 wang2011214 于 2013-4-4 13:51 编辑
* p1 @3 ~; T' q; s5 h" x" t1 ?
6 U, p5 S! b9 e- d背景:# F  c  [9 M8 M% O( N4 w) C5 E" g7 ?! U
我们厂的产品主要是售后的,批量很小,能上千的都很少。十几台数车加工每天的调试很频繁,没有技术员,全靠个人操作,还是计件的!加工刀具也多,少的三把,四把现在用新工艺加工最少就要五把刀,多的七八把刀加工,调试时对刀,调磨耗最麻烦。使用平移坐标系能很轻松解决这个问题,但好多同仁学了好多次也是模模糊糊不敢用。所以自己就做了个平移的代码,自己内测了两多星期,使用还算正常!想过些时候在组内推广…今天贴出来让专家们审核审核,多给点指导和意见…谢谢!来自: Android客户端
回复

使用道具 举报

 楼主| 发表于 2013-4-4 13:40:08 来自手机 | 显示全部楼层
z向平移代码使用方法; T. ~* `) T. N. w+ ]1 b
    在调试产品中平移的对刀速度想对于传统对刀速度有很大的提升,但操作起来操作步骤和注意事项也相对较多…在此将其繁杂的步骤和注意事项做入代码中,从而提高操作效率降低操作失误率,使平移更容易理解使用。0 [5 y. p7 `, |% q# n! S4 y" \
    平移代码是以手动平移为原理,并整合所有步骤和注意事项在程序中,以代码调用子程序的方式执行。先介绍下手动平移的注意事项和步骤。) I2 Q' ^" E+ V7 \4 P
    手动平移能正确使用的注意事项:
; y" h0 ]1 `( G/ l2 A1 n% K3 o& ]+ z    ①刀塔上所有刀具x,z向在同一基准上,如若有刀具不在以一号刀为基准的坐标系中,那么操作时一定要有对刀动作,遵循先平移后对刀的原理。- w7 y' R6 q- R( ~/ E
    ②磨耗值会影响到平移精度,因为平移时在MDI的方式下磨耗不被计算到刀补里,所以平移前要将磨耗值加入刀补值中。
' @' d( M( L* m* D: i$ w    ③机床丝杆的间隙补偿会影响到对刀时产生绝对坐标,从而使MDI执行刀补和自动执行刀补有误差。操作时要使每次手轮手动都是固定向Z正或Z负方向移动。
$ e% K- a* B2 T* v$ k4 t   手动平移的基本步骤:1 i' ~$ x2 g$ z
    ①用基准刀试切工件。2 E2 I0 l. x7 \# n
    ②工件取下测量高度值。
$ f. g' [1 `" ^3 {: }/ v    ③MDI方式执行基准刀刀补(如T0101)。5 F6 B9 G7 U3 G. m8 V" n* i
    ④切换至坐标画面显示(pos键),将绝对坐标记录下来。
# v  H5 P$ h5 r* p- M    ⑤切换至坐标系将数值加进坐标中,注意正负,以加入后绝对坐标变为0为基准。
9 F  t6 _& O- i+ l, o  D    ⑥加入测量工件计算后此处的z值,注意加入的正负性,以得到计算值为准。(平移完成)
1 }# h, z' I3 S3 m+ O( X( [    平移代码G100使用格式:, b$ P# r. G% V# O: m! d1 p# j/ d
    G100 Z_;2 A/ ^+ K6 m) ]& i8 n$ \& Y
     Z_:指定当前位置的绝对坐标。
; v+ a. M2 c' O& d- y7 u    例:用一号刀试切后测量此处应为Z0.3,在MDI下执行G100 Z0.3;按启动,程序大约执行一秒不到,执行完切换坐标画面核对绝对坐标!平移完成…# A$ K5 u4 l2 S- p* B, O0 N5 m
    G100 W_;* m* w' u! d+ {% |: }& i* ~
    W_:相对平移。
3 y' n  X. i- T" K& r. `    例:调试产品后需整体向下减0.2,在MDI执行G100 W-0.2;启动即可!
8 L" W. o/ S# t  J0 @6 T    G100 W0 A_;
0 J8 S' M) k: O* z7 q8 {7 U    W0 为刀补录入功能选项。, \1 M- \& `) V4 Z4 k. K/ R
    A_:取值范围为负数,0,和不大于机床刀具号的整数!
9 {7 l1 l: H* ?& ]- W+ q* V. M    G100 W0 A_;
! L  a9 C$ O6 l8 U) K( s( ^* n    A为负数时:取消刀补对比功能,此时即使某把刀具刀补变化超过1毫米执行平移时也不会报警!此为模态,在不指定大于等于零的A值时一直被默认!2 W2 D  h$ I# i6 c; J5 z' J" ^
    G100 W0 A0;
- s  n5 ~5 m  |0 \    现有所有刀补数据覆盖保存刀补数据,不发出任何报警!首次调试程序时执行一次,或者撞机后重新对所有刀具后必须执行一次(执行此选项必须保证所有刀具可用)。
4 W  J1 O: f" R8 y1 w    G100 W0 A_;9 M. b. Y& H% ?/ H
     保存当前刀补值;A值指定要保存的刀具号(大于零且小于等于机床刀具数的整数),用于新添加刀具后保存刀补,此时应注意对刀时应和当前基准刀具同一零点。
4 I# Y- @7 ~. L- t: f6 Z    例:平移完成后,新添的一把刀具在10号刀位,对好后在MDI下执行G100 W0 A10;若对刀后未执行此命令,在下次平移时会报3110 X AND Z BIAN DONG;' ?: C+ I+ s) h6 Z! ]* z
    G100 T_ Z_;' [3 l' ^$ y/ I7 Z
    指定基准刀具偏移;在不指定T值的情况下默认基准刀为一号刀。
5 |: b. \; w* R    例:只使用一号刀以外一把或几把刀具加工时,例如只使用四号刀,用四号刀试切后指定Z0,MDI下执行G100 T4 Z0;即可。8 A8 C' \0 x" O
    不能试切刀具与执行刀具不一样,因为如果不一样坐标会出错,程序也会执行换刀动作!
2 Y9 Z/ B9 ~) C- b- H5 |5 O& z  y    例:用三号刀试切,MDI下执行G100 T4 Z0;此时将以四号刀刀补计算坐标,得出的坐标值与三号刀有误差,但绝对坐标显示为Z0,且刀塔换刀换为四号刀!* P  z% ~* B* h! P( y5 l: n3 P
    报警信息与处理:
  K! X. p+ N1 G' q- f    3001 Z AND W KONG;
7 B% U, t4 w( T/ S- a+ G# d    执行时Z,W不能同时不指定。
; f) |/ l5 t( I  h6 C( r    3002 Z AND W CHONG;8 F7 n6 b- u6 [% y* S# w# Q
    重复指定了Z和W。
7 Z' x& R& |" n7 U% h    3001 NO X;
8 D; F7 m: L8 V8 D/ T    不可指定X。
' o  Q+ m) c7 x9 E% N9 I  I    3001 NO U;1 u& v7 w- @) ]( @) T) f
    不可指定U。' b1 Q9 w5 {5 ~2 y  H: H  `5 q
    3003 T DA YU 10;! g/ S: q8 u+ f3 n. |! R  T1 s
    指定基准刀具号大于机床刀位数。
+ C. J$ Z& E, ~    3004 A ERROR;7 I+ x1 G  }0 s. J% i2 g0 g, q: g
     A 不在取值范围。6 T4 r- ?4 }( k, P$ x- T8 m4 l; S. a
    以上为录入数据错误报警,报警时没进行平移动作复位后录入正确数据即可。
8 p3 Q2 x1 L0 A4 T  n    A值为负时,刀补对比取消,此时无论执行什么在程序结束时都会有提醒“PIAN YI OK”,意为偏移程序结束,未进行刀补对比。
* E0 P* M4 o, {$ f    3100报警;
' d9 X8 _& p2 q- u" E) x+ I% r+ q    以31开头报警为刀补变动的错误报警,31后两位为报警刀具号。如3108是八号刀刀补变动超过一毫米。
, Y9 E/ E' g  K6 m! u2 `) b: b    31__ Z BIAN DONG;
  l$ Z9 H2 G! A+ r    报警刀具刀补z方向变动超过一毫米。
. p0 G. T2 O( V: q4 l    31__ X BIAN DONG;
( }8 V! x% K6 K+ `" B5 d/ d7 _* ^& b, }    报警刀具刀补X方向变动超过一毫米。
' \6 S5 ?$ _* V  L1 B4 I3 V. d    31__ X AND Z BIAN DONG;
5 J3 p' H) _8 A& L1 b    报警刀具刀补X,Z方向都变动超过一毫米。5 m7 V8 w" U. e
    上述报警出现时,为此次平移的所有刀补值较上次变动超过一毫米,此时平移已经完成,出错刀具如果不安全可以直接对刀,完成后执行G100 W0;保存报警刀具刀补。报警后程序会记录下报警刀具号,保存刀补时可不指定A值。如果没保存已经正确的刀补值,下次平移时还会报出同样的错误。% R/ X: F$ a! V4 a' m6 }. i
    注意:在平移时为消除丝杆间隙的影响,刀塔会有一个毫米的往返运动。误操作可能导致刀塔换刀。所以要远离工件操作!
& l* q* l; l. [3 i* t    此代码为调用子程序,没有子程序或未对机床进行设置不能使用。9 |* a- {+ e" C1 b& X) g
    报警只是提供参考,不能以其作为安全保障,错误的操作可能会保存错误的刀补数值。程序测试成功后其逻辑性是正确的,因此不对任何误操作引起的后果负责,请在完全理解的情况下使用!此代码为方便操作,提高调试效率和安全性,但不能完全替代手动操作,扎实的基本功、良好的调试习惯才是安全和效率的保障。
& d, O( L( Q- g3 t8 M    如有需要改进的地方请即使反馈作出修改...来自: Android客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-4 13:41:53 来自手机 | 显示全部楼层
自己写的代码说明…下面贴出源程序,比较庸长,自己也是新手,很多逻辑都是自己想了好久…专家们多多指点!来自: Android客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-4 13:42:32 来自手机 | 显示全部楼层
本帖最后由 wang2011214 于 2013-4-4 13:54 编辑
8 _: `' k/ w% O. ~2 K3 `5 E* T  i. q6 r
O9010(PIAN YI);* F) j. u: \3 b
IF[[#26 EQ #0]AND [#23EQ#0]] THEN #3000=1 (Z AND W KONG);9 i6 c; Q7 f. A
IF[[#26 NE #0]AND [#23NE#0]] THEN #3000=2 (Z AND W CHONG);
# ~; M) R5 F0 G% H' g8 m0 ?% xIF[#24 NE #0] THEN #3000=1(NO X);
3 H- p( G* f% A& b* P  T. Q IF[#21 NE #0] THEN #3000=1(NO U);4 S( ]/ `7 e; V  U+ t# L! _5 C5 A
IF[#20 GT 10] THEN #3000=3(T DA YU 10);/ Q  ^" r2 j6 V7 |) ]+ J$ d
IF[#1 NE #0] THEN #620=#1;9 \' J+ C4 z5 }- s0 @
IF[#620 LT 0] GOTO 90;, u5 K; G, _7 v' U" A
IF[#23 EQ 0] GOTO 500;5 F1 T7 N( r, b/ [& x8 b7 A
N90 #20=FIX[#20];
  q7 y% n8 [7 }IF[#20 LT 1] THEN #20=1;0 B/ p% l, ]+ S( d
#[2800+#20]=#[2800+#20]+#[2100+#20];
! q& D9 D4 A# k! Q9 z5 i; |#[2100+#20]=0;
& Y" W1 I2 L- _# o IF[#23 NE #0] GOTO 100;1 \: o3 _, k  I. y4 F2 r, y
T[#20*101]% a/ O! ]) e, f0 K& M
#5202=0;+ l/ s! o9 C8 k  N( a* s
#5222=0;# @) _$ ~% @- j& `6 g) w
#2601=0;
% L" h  r! U; p$ o" JG98 G1 W1. F500;  u# V  \1 g$ `7 A0 [1 Y  k
W-1.;
" @2 R% k4 v; Q) I/ L  aG99;
: w' A0 g$ i* K3 Z3 T#30=1;
  ?" t6 ^' c2 [$ V7 QWHILE[#5042 NE #26] DO1;
; v8 `4 r+ [# ]8 ]6 ~IF[#30 GE 9] THEN #3000=3(PIAN YI ERROR);6 b9 K0 L# {# v
#31=1;* B( h- p0 L2 h. ?9 r1 f2 v
#32=1;; W: A( R; c7 ^0 \+ Z
#33=1;
1 K+ ]( ]- w6 R) P4 s& ^IF[[#30 EQ 5] OR [#30 EQ 6]] THEN #31=-1;
5 ]; X/ q/ k+ P: jIF[[#30 EQ 7] OR [#30 EQ 8]] THEN #31=-1;
/ {8 k% f, h! j2 S; NIF[[#30 EQ 3] OR [#30 EQ 4]] THEN #32=-1;
& @& s  n' W& ~# ^IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #32=-1;
$ V5 ]2 m- B, r5 _4 s% I* fIF[[#30 EQ 2] OR [#30 EQ 4]] THEN #33=-1;
, D, V9 L# J5 k/ J& E: ~IF[[#30 EQ 6] OR [#30 EQ 8]] THEN #33=-1; 3 }9 r* p2 T& c
#5202=#31*#26+#32*#5022+#33*#[2800+#20];* ^: j, @% {- @
#30=#30+1;, I7 ~: k6 K9 O: k/ s
END1;" r) [) ~( ^- y: Y4 d- x/ w
GOTO 200;, h; U5 U$ L% C! [. s  j/ \, M8 J
N100 #10=#5042;2 ]+ ^7 Y8 ?6 f
#14=1;8 @% b# o3 [/ P  m9 R: Y
#15=1;
" g, L- r0 d! Q/ D5 ZN300#5202=#5202+#14*#15*#23;
9 {0 L* |; J* ~3 u$ m" v2 a#14=2;
+ V4 X  j. u, P$ b, s+ u#15=-1;
2 u) D' k4 V7 {' d% i/ wIF[#23 LE 0] GOTO 400;* b7 o& C% r* ^# v
IF[#5042 GT #10] GOTO 300;0 p7 }, b( r9 V( ~' k$ \/ W
GOTO 200;
* y* P2 Y% V+ [2 C. o. T; cN400 IF[#5042 LT #10] GOTO 300;
* n- U8 z+ m) a! l0 W' A+ qN200(DUI BI);
, v. z- N: L& G; i1 m5 [IF[#620 LT 0] GOTO 99;
9 f6 C* F& w" U- N+ d2 |#27=1;
2 i+ W4 k6 h3 f2 eWHILE[#27 LE 10] DO2;' B1 V0 w; T4 J' k; o
#28=ABS[#[2800+#27]]-ABS[#[600+#27]];
8 M" a* v% d2 `# aIF[ABS[#28] GE 1] THEN #600=#27;
: @# u: Y, R. h2 U #29=ABS[#[2700+#27]]-ABS[#[630+#27]];
2 H1 A4 k# r  r0 I+ v& aIF[ABS[#29] GE 1] THEN #630=#27; , C" t( f% I5 H; b9 i1 [/ a; x
IF[[ABS[#29] GE 1] AND [ABS[#28] GE 1]] THEN #3100=[100+#27](X AND Z BIAN DONG);& [* R3 ^2 z2 H6 q- o0 ?6 r' l9 b
IF[ABS[#28] GE 1] THEN #3100=[100+#27](Z BIAN DONG);
9 S! I9 J0 H# [* t8 Y3 hIF[ABS[#29] GE 1] THEN #3100=[100+#27](X BIAN DONG);
( b- J! N. t6 I  [$ _#27=#27+1;
/ F6 ^; ^2 y2 u0 WEND2;
4 ?. ^: K# o6 J- \& @6 E- z- nN99 IF[#620 LT 0] THEN #3006=1(PIAN YI OK);: O. j6 R: r" ~, g8 b5 r' a7 E
M99;
: j2 a' [/ J$ u5 ~N500(LU RU DAO BU);  L" J* B( C' L/ B& I4 T) b  ?
IF[#600 GT 0] GOTO 600;
7 C) `% Y0 Z3 R! H7 jIF[#630 GT 0] GOTO 700;
9 k4 y* `; c* C: l* e$ R- E! O) FIF[[FIX[#1] NE ABS[#1]] OR [#1 GT 10]] THEN #3000=4(A ERRER);9 y9 `$ k. O  B6 v$ n5 S
IF[#1 EQ 0] GOTO 800;
) ?- N0 B& ]) I- I6 wIF[#1 GE 1] GOTO 900;
1 L( R% s1 c7 Q$ jGOTO 200;7 `/ y1 O) v; z
N600#[600+#600]=#[2800+#600];: {- l4 [! J) m
GOTO 500; : Y0 e  p  X- h- P0 y
N700#[630+#630]=#[2700+#630];
+ Q, A: V: e  |' e( I) Z0 d7 XGOTO 500;) f" `7 l3 H: S- h. }
N900 #600=#1;
3 ^5 d; |* i/ S7 |# H#630=#1;
$ m' p# Z9 X" i. E#1=#0;% k; e/ n( d( W8 l* R; K6 r
GOTO 500;
, T: s* @4 e( kN800(FU GAI);. f7 t# `2 l  S$ ^4 J4 J* {* ~
#1=1;
, y3 ^* q7 t% i. }WHILE[#1 LE 10] DO3;$ Y; F) v& p  @  _, Q! Y# u
#[600+#1]=#[2800+#1];
! H4 T7 n' I; T#[630+#1]=#[2700+#1];
  p- n* H4 U6 P- K( [#1=#1+1;, [6 v9 j+ T/ Q0 b, R
END 3;% d0 {0 Q# L& G* ]
#600=#0;7 ?! a8 g- B2 j5 L2 y
#630=#0;* E7 N6 O( Y' s" W" `
M99;来自: Android客户端

点评

好深奥啊.学习了.不过只需改Z向可以坐标系偏移00坐标系.只需要对一把刀的Z向.差多少就改多少.很方便啊  发表于 2013-12-2 18:58
回复 支持 反对

使用道具 举报

发表于 2013-4-4 13:44:49 | 显示全部楼层
貌似没有必要吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-4 13:47:09 来自手机 | 显示全部楼层
自己英文白痴,报警信息都是拼音…嘿嘿,能看懂就好了!来自: Android客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-4 17:38:09 来自手机 | 显示全部楼层
风随意 发表于 2013-4-4 13:44
: Y/ X7 m# |3 {0 s貌似没有必要吧?

( E( a% t. U0 R2 ?6 h6 x0 T做这个程序是麻烦点,但使用很方便…特别是刀具多的时候!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-4 17:42:53 来自手机 | 显示全部楼层
程序能自己寻找算法,报PIAN YI ERRER的时候是系统变量号不对,修改变量号就可以了,在三个版本的法兰克系统测试过了
回复 支持 反对

使用道具 举报

发表于 2013-4-4 18:05:12 | 显示全部楼层
用工件移不是更快
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-4 18:09:55 来自手机 | 显示全部楼层
veroinca 发表于 2013-4-4 18:05
5 F" a0 q* p! P: D用工件移不是更快

" ?; I& X& {* J& [和工件移一个道理,多了的就是刀具对比…工件移的前提就是刀具在一个基准上
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-1-11 23:37 , Processed in 0.064828 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表