机械必威体育网址

标题: 偏移子程序…现在在个人内测,专家们审核审核,多多提意见! [打印本页]

作者: wang2011214    时间: 2013-4-4 13:38
标题: 偏移子程序…现在在个人内测,专家们审核审核,多多提意见!
本帖最后由 wang2011214 于 2013-4-4 13:51 编辑
+ f% h9 w6 a+ E1 V, K9 _' N8 b: _/ G9 r0 [
背景:
4 M' F6 x5 ]  X! M1 T! g/ z 我们厂的产品主要是售后的,批量很小,能上千的都很少。十几台数车加工每天的调试很频繁,没有技术员,全靠个人操作,还是计件的!加工刀具也多,少的三把,四把现在用新工艺加工最少就要五把刀,多的七八把刀加工,调试时对刀,调磨耗最麻烦。使用平移坐标系能很轻松解决这个问题,但好多同仁学了好多次也是模模糊糊不敢用。所以自己就做了个平移的代码,自己内测了两多星期,使用还算正常!想过些时候在组内推广…今天贴出来让专家们审核审核,多给点指导和意见…谢谢!
作者: wang2011214    时间: 2013-4-4 13:40
z向平移代码使用方法
6 b: Q! m6 U4 R9 W4 x% `6 F    在调试产品中平移的对刀速度想对于传统对刀速度有很大的提升,但操作起来操作步骤和注意事项也相对较多…在此将其繁杂的步骤和注意事项做入代码中,从而提高操作效率降低操作失误率,使平移更容易理解使用。
. ]( n4 t0 a! E+ Q) I. z  z" b9 E4 P    平移代码是以手动平移为原理,并整合所有步骤和注意事项在程序中,以代码调用子程序的方式执行。先介绍下手动平移的注意事项和步骤。* ?  R" r9 Q5 ?8 \+ R. \9 ~
    手动平移能正确使用的注意事项:; z; S: ~0 w. ^4 J, h
    ①刀塔上所有刀具x,z向在同一基准上,如若有刀具不在以一号刀为基准的坐标系中,那么操作时一定要有对刀动作,遵循先平移后对刀的原理。, ]1 S8 I  B7 {3 t; ^
    ②磨耗值会影响到平移精度,因为平移时在MDI的方式下磨耗不被计算到刀补里,所以平移前要将磨耗值加入刀补值中。
! l! B$ s+ R+ _, b+ m, m1 X- |    ③机床丝杆的间隙补偿会影响到对刀时产生绝对坐标,从而使MDI执行刀补和自动执行刀补有误差。操作时要使每次手轮手动都是固定向Z正或Z负方向移动。
, U) d! m! b; {% I9 c( V   手动平移的基本步骤:( M7 c6 U6 s% ^+ j* S
    ①用基准刀试切工件。
, m0 A$ e+ r/ U2 a; h    ②工件取下测量高度值。$ ~8 O5 q. I, E
    ③MDI方式执行基准刀刀补(如T0101)。( i3 d* T! w* }4 f' s: ~
    ④切换至坐标画面显示(pos键),将绝对坐标记录下来。8 h. @  O( M" u0 w
    ⑤切换至坐标系将数值加进坐标中,注意正负,以加入后绝对坐标变为0为基准。( ?3 w# q; g( h/ Z
    ⑥加入测量工件计算后此处的z值,注意加入的正负性,以得到计算值为准。(平移完成)
  J: X  d  k& ~' l( W- s7 _    平移代码G100使用格式:
. M7 G! j% J0 R0 T    G100 Z_;
, M! g4 _) |1 t( r( @6 J     Z_:指定当前位置的绝对坐标。
1 L  C( y( X# S2 h0 f( F    例:用一号刀试切后测量此处应为Z0.3,在MDI下执行G100 Z0.3;按启动,程序大约执行一秒不到,执行完切换坐标画面核对绝对坐标!平移完成…8 h; S; d4 i9 X$ h: a0 Q7 c
    G100 W_;; g8 B6 C2 i7 o2 q& S- a
    W_:相对平移。8 k: l& d" o5 T! h; R8 d: X- Z* `
    例:调试产品后需整体向下减0.2,在MDI执行G100 W-0.2;启动即可!
+ f8 k6 ~: ]9 P    G100 W0 A_;
2 K7 j2 v9 y: ?& D6 I6 j    W0 为刀补录入功能选项。& k1 K# ^+ a7 Z5 d# `2 u8 d3 M0 [/ e) e, Z
    A_:取值范围为负数,0,和不大于机床刀具号的整数!" E# Q- }$ A* P( h
    G100 W0 A_;( {, J5 q5 w0 ~( l, o8 F
    A为负数时:取消刀补对比功能,此时即使某把刀具刀补变化超过1毫米执行平移时也不会报警!此为模态,在不指定大于等于零的A值时一直被默认!
3 f6 u. j3 H; g+ g; C    G100 W0 A0;% B$ x* f, i$ V% l. {' w0 m" D
    现有所有刀补数据覆盖保存刀补数据,不发出任何报警!首次调试程序时执行一次,或者撞机后重新对所有刀具后必须执行一次(执行此选项必须保证所有刀具可用)。
' f7 p+ z# z) {3 L, G1 ^* Z0 o4 ^    G100 W0 A_;
2 Q% i4 p: [, `) C# e     保存当前刀补值;A值指定要保存的刀具号(大于零且小于等于机床刀具数的整数),用于新添加刀具后保存刀补,此时应注意对刀时应和当前基准刀具同一零点。5 R* E/ q, ?; [) O$ A
    例:平移完成后,新添的一把刀具在10号刀位,对好后在MDI下执行G100 W0 A10;若对刀后未执行此命令,在下次平移时会报3110 X AND Z BIAN DONG;. p9 v+ T" ]. i5 @
    G100 T_ Z_;: X) s& G0 Q3 l. U* R3 G
    指定基准刀具偏移;在不指定T值的情况下默认基准刀为一号刀。6 l6 Y8 a0 Q$ D+ M% z6 n0 o7 {
    例:只使用一号刀以外一把或几把刀具加工时,例如只使用四号刀,用四号刀试切后指定Z0,MDI下执行G100 T4 Z0;即可。: s7 M4 U% u$ P+ C. `% I" R2 I5 v
    不能试切刀具与执行刀具不一样,因为如果不一样坐标会出错,程序也会执行换刀动作!* g, [( f1 U) `  g) B' Y3 u
    例:用三号刀试切,MDI下执行G100 T4 Z0;此时将以四号刀刀补计算坐标,得出的坐标值与三号刀有误差,但绝对坐标显示为Z0,且刀塔换刀换为四号刀!
% l7 j' `, N  p! Y7 i, o    报警信息与处理:$ E! O+ L- j3 T4 L# D
    3001 Z AND W KONG;
$ L5 [0 i9 c* h1 U) ?    执行时Z,W不能同时不指定。+ I! N9 b. a+ g' Y& N& k
    3002 Z AND W CHONG;  B4 B2 r7 C! X; G
    重复指定了Z和W。& @4 I) X; m: v4 Y: q
    3001 NO X;
0 p) Y  r8 z, }6 G9 r( T5 Z3 G    不可指定X。' J: @# S0 }/ l6 I
    3001 NO U;
( O: [( R, G2 H/ p4 ?0 ~    不可指定U。
# C1 u8 z: P$ x3 i+ ^    3003 T DA YU 10;! h. q) z5 y' ?! {" \5 `
    指定基准刀具号大于机床刀位数。
% W6 d& v; H6 x% `9 ]; ?    3004 A ERROR;' X- Q- b0 V; Z  p  U. j) L
     A 不在取值范围。* }! s" }; R2 @+ s( A/ N+ m$ `# F
    以上为录入数据错误报警,报警时没进行平移动作复位后录入正确数据即可。- m* ^: `" N* ]* D; x$ `! {
    A值为负时,刀补对比取消,此时无论执行什么在程序结束时都会有提醒“PIAN YI OK”,意为偏移程序结束,未进行刀补对比。: _3 m* K5 k" N& X5 n" ]% U
    3100报警;+ R+ z( v% [/ v9 ~; q
    以31开头报警为刀补变动的错误报警,31后两位为报警刀具号。如3108是八号刀刀补变动超过一毫米。4 x& B% M4 ^5 X2 K. E2 j, J2 k
    31__ Z BIAN DONG;9 w' J: o3 U' _8 z+ E9 s; R6 Y
    报警刀具刀补z方向变动超过一毫米。! g) r$ ~3 r! ]  q7 \& ]- y  I( H. z
    31__ X BIAN DONG;
" J6 g3 Q  D8 L  R: K    报警刀具刀补X方向变动超过一毫米。1 B, A4 [0 N' n3 \
    31__ X AND Z BIAN DONG;
% K% m8 n/ h! v2 a    报警刀具刀补X,Z方向都变动超过一毫米。/ H* m% d$ \6 V1 h' N1 N
    上述报警出现时,为此次平移的所有刀补值较上次变动超过一毫米,此时平移已经完成,出错刀具如果不安全可以直接对刀,完成后执行G100 W0;保存报警刀具刀补。报警后程序会记录下报警刀具号,保存刀补时可不指定A值。如果没保存已经正确的刀补值,下次平移时还会报出同样的错误。, O  v% Q" L/ B/ D: ^4 }, X
    注意:在平移时为消除丝杆间隙的影响,刀塔会有一个毫米的往返运动。误操作可能导致刀塔换刀。所以要远离工件操作!9 p3 j: A/ Q+ v5 J6 @; `% ^
    此代码为调用子程序,没有子程序或未对机床进行设置不能使用。
! p6 @1 h3 ?7 b7 D    报警只是提供参考,不能以其作为安全保障,错误的操作可能会保存错误的刀补数值。程序测试成功后其逻辑性是正确的,因此不对任何误操作引起的后果负责,请在完全理解的情况下使用!此代码为方便操作,提高调试效率和安全性,但不能完全替代手动操作,扎实的基本功、良好的调试习惯才是安全和效率的保障。
8 i& U9 z( ~7 ?$ Z, H4 a    如有需要改进的地方请即使反馈作出修改...
作者: wang2011214    时间: 2013-4-4 13:41
自己写的代码说明…下面贴出源程序,比较庸长,自己也是新手,很多逻辑都是自己想了好久…专家们多多指点!
作者: wang2011214    时间: 2013-4-4 13:42
本帖最后由 wang2011214 于 2013-4-4 13:54 编辑
# P8 k% o/ g0 x, \/ }8 @* n# v) h) x: y2 \
O9010(PIAN YI);/ `7 i, u1 s+ s8 p# }
IF[[#26 EQ #0]AND [#23EQ#0]] THEN #3000=1 (Z AND W KONG);! G" m* x4 j. e. A! v# K) F) d) R3 i
IF[[#26 NE #0]AND [#23NE#0]] THEN #3000=2 (Z AND W CHONG);' x8 `; Y& V+ J5 J2 A$ f
IF[#24 NE #0] THEN #3000=1(NO X);; T* j/ b) V9 P1 X* R
IF[#21 NE #0] THEN #3000=1(NO U);* G. i- {. c9 Q# C$ q- g
IF[#20 GT 10] THEN #3000=3(T DA YU 10);
$ K! |( k# S7 a. r) e  h5 G( y IF[#1 NE #0] THEN #620=#1;8 F4 m/ |7 T/ Q+ [
IF[#620 LT 0] GOTO 90;
( [: u4 U# ?4 `, r, q0 F IF[#23 EQ 0] GOTO 500;
  r0 U) ~; h- NN90 #20=FIX[#20];
$ E' B6 X" Q+ FIF[#20 LT 1] THEN #20=1;7 s! n" C" x7 r* Z0 h/ ^
#[2800+#20]=#[2800+#20]+#[2100+#20];5 V+ o6 K& W: I# ]7 q, ~5 u: U0 J' V
#[2100+#20]=0;1 ^0 C9 Q1 i8 `# y6 B, R1 b
IF[#23 NE #0] GOTO 100;
1 O, M8 F2 L% P5 J$ ]! _, a9 l/ XT[#20*101]
7 ^, c# _0 J& \5 e#5202=0;
; E9 }" T3 a6 y% ~#5222=0;
- i8 p* B& n* ?+ U  q4 f/ Z#2601=0;2 Y5 a% e9 M/ N- b( u1 g$ V
G98 G1 W1. F500;
2 B3 M7 q% l; k5 f; B* VW-1.;
4 j8 P6 L2 R# D4 V  YG99;
5 h8 D4 @6 R* g+ a#30=1;. r7 o: p* M& |6 l- i! i" A
WHILE[#5042 NE #26] DO1;
0 c. k) y( L% G$ I( q" D/ a2 gIF[#30 GE 9] THEN #3000=3(PIAN YI ERROR);
9 F# b4 z! A: k4 i, b  r#31=1;
8 r7 I# R( w/ D% Y! C6 q#32=1;
8 x' c$ D! j, I% t- i#33=1;: F# l( ?2 l& O& p& z
IF[[#30 EQ 5] OR [#30 EQ 6]] THEN #31=-1;) a" L: a  J3 V. ]7 `- v1 f. O8 F
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #31=-1;
' j) G. F$ N5 j. t$ IIF[[#30 EQ 3] OR [#30 EQ 4]] THEN #32=-1;- y! t! Z1 `- \2 R7 M  f
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #32=-1;
; {0 ^/ z6 V  O; w7 Z/ oIF[[#30 EQ 2] OR [#30 EQ 4]] THEN #33=-1; % n" D* v! j, z& D6 q1 U- a
IF[[#30 EQ 6] OR [#30 EQ 8]] THEN #33=-1; / `' |: X% `# [' @$ h$ I) N
#5202=#31*#26+#32*#5022+#33*#[2800+#20];2 Q8 s! b) i* V: z5 _+ z
#30=#30+1;
- C7 b( I$ P% pEND1;
2 k6 c( ~3 k1 d6 LGOTO 200;
7 `" w" q+ ]% }  C; e7 p2 t  ~N100 #10=#5042;& \( f# f$ J5 e, o% c3 p
#14=1;
! `) i: q$ k  Z0 w! q#15=1;
# Z/ h6 i$ X* c1 G1 d# b. {- W2 RN300#5202=#5202+#14*#15*#23;5 D" {/ V/ S( g; W# @' S6 R
#14=2;
1 O2 @1 j" w! m" n) I#15=-1;& p% Y! i2 T# B) |! T* H6 C; A
IF[#23 LE 0] GOTO 400;* X+ [' [- U0 |; k' \
IF[#5042 GT #10] GOTO 300;
( f$ V( u4 @/ q# H9 [+ u7 KGOTO 200;6 x. H% [8 K) l8 `/ f! n
N400 IF[#5042 LT #10] GOTO 300;
" F5 b) U8 O1 b& @% ^N200(DUI BI);1 O. y7 d: j9 l
IF[#620 LT 0] GOTO 99;) F& V, k9 |9 j: j0 [1 e1 a& w
#27=1;" Q) {. j  }( c' S* I9 Q; F
WHILE[#27 LE 10] DO2;* Q4 u, e% C, V, M# x! T
#28=ABS[#[2800+#27]]-ABS[#[600+#27]];/ c/ O8 L% n" l0 p4 u' r
IF[ABS[#28] GE 1] THEN #600=#27;1 g4 y* W% N9 t' M' ~: w7 S6 U
#29=ABS[#[2700+#27]]-ABS[#[630+#27]];  U' K$ k: N( x. I
IF[ABS[#29] GE 1] THEN #630=#27;
. b% D( h+ j+ e4 R- @0 OIF[[ABS[#29] GE 1] AND [ABS[#28] GE 1]] THEN #3100=[100+#27](X AND Z BIAN DONG);
+ f6 z! S, o" \/ DIF[ABS[#28] GE 1] THEN #3100=[100+#27](Z BIAN DONG);
" \$ C2 M4 L0 J4 A7 b6 ^- W% d! IIF[ABS[#29] GE 1] THEN #3100=[100+#27](X BIAN DONG);
6 e3 L1 [& C$ _% G#27=#27+1;
0 {4 h! q6 Z$ [0 X- \! l# c6 K* ^END2;
6 c" ^) {0 ^1 I$ I( U8 DN99 IF[#620 LT 0] THEN #3006=1(PIAN YI OK);
9 ~3 d/ v/ e4 n+ OM99;
) g9 W( Q, ~4 `/ c: gN500(LU RU DAO BU);
& \( y5 k8 ~. b) IIF[#600 GT 0] GOTO 600;& A, M+ d  @! T/ b) B7 X6 @
IF[#630 GT 0] GOTO 700;! P. t; c1 n5 Z/ [( E( g
IF[[FIX[#1] NE ABS[#1]] OR [#1 GT 10]] THEN #3000=4(A ERRER);& I- G1 j5 R; H
IF[#1 EQ 0] GOTO 800;, R7 Y% t2 ?* L. V: P
IF[#1 GE 1] GOTO 900;9 a! b# P, x; Y$ w- h- P
GOTO 200;: \! ~0 O; J8 v7 p. ~
N600#[600+#600]=#[2800+#600];
/ `+ E5 T6 T1 j. FGOTO 500;
$ h; g5 T# Z8 @N700#[630+#630]=#[2700+#630];! H9 `+ P$ Z; v
GOTO 500;
' s9 ^2 n1 S  G, X% T  a% jN900 #600=#1;; p  r7 k- W/ f' C- r3 H$ O9 F
#630=#1;* ?( V5 ]' A- c8 _5 K
#1=#0;
3 h( q) R1 f' w' CGOTO 500;
8 b% m, J1 f6 M* SN800(FU GAI);+ ~7 \6 \8 x7 H
#1=1;# P5 M9 l6 S9 j
WHILE[#1 LE 10] DO3;# X/ D, p9 r( ?4 {
#[600+#1]=#[2800+#1];  Q- a3 b; k8 t6 l& C& T
#[630+#1]=#[2700+#1];
4 L4 q$ y8 v! L/ o- G#1=#1+1;
% G& n" Y+ R, l8 _* eEND 3;
" x+ ?5 Z; O; E#600=#0;
) g7 }* e- w( d: Z) n#630=#0;9 N5 H3 H. `$ u& c  `# N
M99;
作者: 风随意    时间: 2013-4-4 13:44
貌似没有必要吧?
作者: wang2011214    时间: 2013-4-4 13:47
自己英文白痴,报警信息都是拼音…嘿嘿,能看懂就好了!
作者: wang2011214    时间: 2013-4-4 17:38
风随意 发表于 2013-4-4 13:44
9 a3 y6 I( _$ Y  e6 r# J0 {貌似没有必要吧?

( R2 z$ b- E- k. }+ k& |/ i# @做这个程序是麻烦点,但使用很方便…特别是刀具多的时候!
作者: wang2011214    时间: 2013-4-4 17:42
程序能自己寻找算法,报PIAN YI ERRER的时候是系统变量号不对,修改变量号就可以了,在三个版本的法兰克系统测试过了
作者: veroinca    时间: 2013-4-4 18:05
用工件移不是更快
作者: wang2011214    时间: 2013-4-4 18:09
veroinca 发表于 2013-4-4 18:05/ Z' [+ B( c& X: g0 U. v; O
用工件移不是更快
! l7 Z- M. y, H- o" c
和工件移一个道理,多了的就是刀具对比…工件移的前提就是刀具在一个基准上
作者: wang2011214    时间: 2013-4-4 18:14
veroinca 发表于 2013-4-4 18:05) `  M3 y+ J5 h
用工件移不是更快

: Q( y9 a3 H* P; h和工件移一个道理,多了的就是刀具对比…工件移的前提就是刀具在一个基准上
作者: onelee    时间: 2013-4-4 18:50
认真学习了
作者: mcsino    时间: 2013-4-4 22:22
貌似把简单问题复杂化了
作者: wang2011214    时间: 2013-4-4 22:35
mcsino 发表于 2013-4-4 22:22. P4 a, ^8 T0 U% ^* l4 T
貌似把简单问题复杂化了

( a3 ?7 g, c3 a+ D* j! `2 g; z使用很简单,刀补功能复杂了点…操作起来还好
作者: mcsino    时间: 2013-4-4 23:29
我是来赚积分的,简单就好
作者: lukexc    时间: 2013-4-4 23:55
好像不错的样子,lz加油!
作者: 牛逼贩子    时间: 2014-3-5 04:00
终于找到了~~~帐号没了,帖子都不好找了!
作者: 80.后青年    时间: 2014-3-6 18:48
哇塞是宏程序啊,,看不懂,,,谢谢朋友你的分享
作者: jackjones    时间: 2014-4-5 22:04
还在学习,太高了
作者: 数控之巅    时间: 2014-4-6 10:28
  路过赚点积分
作者: cz82086123    时间: 2014-4-6 18:54
看上去很不错




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4