找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5313|回复: 20

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

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

使用道具 举报

 楼主| 发表于 2013-4-4 13:40:08 来自手机 | 显示全部楼层
z向平移代码使用方法
$ f) C( S: A0 j3 x& y' e    在调试产品中平移的对刀速度想对于传统对刀速度有很大的提升,但操作起来操作步骤和注意事项也相对较多…在此将其繁杂的步骤和注意事项做入代码中,从而提高操作效率降低操作失误率,使平移更容易理解使用。
' }1 K; I1 V* R! [! @    平移代码是以手动平移为原理,并整合所有步骤和注意事项在程序中,以代码调用子程序的方式执行。先介绍下手动平移的注意事项和步骤。( E$ ~- K1 ]* i6 j- {: J5 C, f
    手动平移能正确使用的注意事项:
7 \9 e3 ]* w0 v, f5 M! o8 y! E    ①刀塔上所有刀具x,z向在同一基准上,如若有刀具不在以一号刀为基准的坐标系中,那么操作时一定要有对刀动作,遵循先平移后对刀的原理。
" J9 c/ h, `$ w% p! R& X    ②磨耗值会影响到平移精度,因为平移时在MDI的方式下磨耗不被计算到刀补里,所以平移前要将磨耗值加入刀补值中。
2 P7 x% m: L$ @* j) {6 X    ③机床丝杆的间隙补偿会影响到对刀时产生绝对坐标,从而使MDI执行刀补和自动执行刀补有误差。操作时要使每次手轮手动都是固定向Z正或Z负方向移动。
9 F( x) V# Z" o! T9 }: L* k& a: U   手动平移的基本步骤:
& U+ c+ _% }: V& ~& k) w: o    ①用基准刀试切工件。
: \3 \8 `  c3 g- U    ②工件取下测量高度值。
3 o+ d+ j& T8 A, i! G    ③MDI方式执行基准刀刀补(如T0101)。
  N( @  `8 y- S7 x    ④切换至坐标画面显示(pos键),将绝对坐标记录下来。
: j, d4 p* m3 @: }- E" S    ⑤切换至坐标系将数值加进坐标中,注意正负,以加入后绝对坐标变为0为基准。
" A6 x( }  x& f8 p! C- l    ⑥加入测量工件计算后此处的z值,注意加入的正负性,以得到计算值为准。(平移完成)
6 D2 B- x% o  ^; a$ \6 e0 W    平移代码G100使用格式:5 Q, ?4 h: ~/ Y* F
    G100 Z_;
1 r) N2 ~- {$ g. S4 b7 V$ q     Z_:指定当前位置的绝对坐标。
2 ]( t" w; M) r' M8 A    例:用一号刀试切后测量此处应为Z0.3,在MDI下执行G100 Z0.3;按启动,程序大约执行一秒不到,执行完切换坐标画面核对绝对坐标!平移完成…1 y5 J) |; y1 D" l: n& V
    G100 W_;
6 ^4 |1 G2 C# E8 G    W_:相对平移。3 @2 M5 H. H5 r$ t9 C9 p0 A
    例:调试产品后需整体向下减0.2,在MDI执行G100 W-0.2;启动即可!
. a; `$ f! a% j& E+ e$ e    G100 W0 A_;
3 v) D  T5 l) a- B8 D    W0 为刀补录入功能选项。2 s) d8 m- R* l; t) t
    A_:取值范围为负数,0,和不大于机床刀具号的整数!7 f2 y2 [7 K" ]" s  S; x: N
    G100 W0 A_;# V5 S# C& j8 M: d, R
    A为负数时:取消刀补对比功能,此时即使某把刀具刀补变化超过1毫米执行平移时也不会报警!此为模态,在不指定大于等于零的A值时一直被默认!0 a4 |4 e. s$ A: n
    G100 W0 A0;
% I  V. p' `2 p" B1 s    现有所有刀补数据覆盖保存刀补数据,不发出任何报警!首次调试程序时执行一次,或者撞机后重新对所有刀具后必须执行一次(执行此选项必须保证所有刀具可用)。6 b3 [7 Z( O5 A1 {+ I
    G100 W0 A_;' N; O8 G0 u3 j7 A3 C3 K
     保存当前刀补值;A值指定要保存的刀具号(大于零且小于等于机床刀具数的整数),用于新添加刀具后保存刀补,此时应注意对刀时应和当前基准刀具同一零点。
# [5 W* P+ @: n0 M    例:平移完成后,新添的一把刀具在10号刀位,对好后在MDI下执行G100 W0 A10;若对刀后未执行此命令,在下次平移时会报3110 X AND Z BIAN DONG;
5 d( e) f0 H+ Z2 ]% I! S8 h    G100 T_ Z_;* l& h7 x& M) \! {
    指定基准刀具偏移;在不指定T值的情况下默认基准刀为一号刀。
0 N2 U* g' R! L! t; `4 l% Q    例:只使用一号刀以外一把或几把刀具加工时,例如只使用四号刀,用四号刀试切后指定Z0,MDI下执行G100 T4 Z0;即可。
8 ^! A* x# X2 o7 U9 I% k' N5 e    不能试切刀具与执行刀具不一样,因为如果不一样坐标会出错,程序也会执行换刀动作!
7 M0 V9 o! R( J- O! [* W    例:用三号刀试切,MDI下执行G100 T4 Z0;此时将以四号刀刀补计算坐标,得出的坐标值与三号刀有误差,但绝对坐标显示为Z0,且刀塔换刀换为四号刀!. \8 t6 C/ c  k: C4 U' Q9 d1 r5 J
    报警信息与处理:
& V1 \7 {  l5 @    3001 Z AND W KONG;3 T; Q( N" Q* p8 U5 t5 U
    执行时Z,W不能同时不指定。1 S. s: @) ?. |  b9 v6 s* T# l0 f
    3002 Z AND W CHONG;
* v! L' d5 v' S+ H4 k! A/ Z1 S1 \) A    重复指定了Z和W。4 f( n6 h" D: p* k! |. d
    3001 NO X;* x' T( _& ?2 @6 ^9 H8 ~% j* i
    不可指定X。  W0 X, [2 c1 i( z8 R' [$ J- D
    3001 NO U;. j& C5 j0 S' i$ Z) z( Y4 }% ?: t
    不可指定U。
, K' y! G( j8 R. n& a2 b$ p  i    3003 T DA YU 10;
) s, b' q' D: {* v& c9 }    指定基准刀具号大于机床刀位数。& g9 d: V0 z: v) i
    3004 A ERROR;
1 k" Z7 I! @8 x4 s     A 不在取值范围。( q3 C9 M- u2 }- y6 H
    以上为录入数据错误报警,报警时没进行平移动作复位后录入正确数据即可。, j4 T7 ~6 [( K  \' O3 H) I  p$ X
    A值为负时,刀补对比取消,此时无论执行什么在程序结束时都会有提醒“PIAN YI OK”,意为偏移程序结束,未进行刀补对比。
; {: a2 @9 A7 D2 n' d    3100报警;
4 n, O1 ]# z, C. ~8 q    以31开头报警为刀补变动的错误报警,31后两位为报警刀具号。如3108是八号刀刀补变动超过一毫米。) q/ K7 `. I( |
    31__ Z BIAN DONG;
. q8 P) x! s! D) L! b& r    报警刀具刀补z方向变动超过一毫米。
  R- g/ O/ ~) _! j# D- M    31__ X BIAN DONG;  u& m$ G. z8 X' x' }9 I* Y
    报警刀具刀补X方向变动超过一毫米。6 |  o( H- ]5 [; h* C$ D8 H. ^
    31__ X AND Z BIAN DONG;1 n( U" |, v0 b) C1 i8 O# ]' w
    报警刀具刀补X,Z方向都变动超过一毫米。
5 g' y% _' ~" n2 J    上述报警出现时,为此次平移的所有刀补值较上次变动超过一毫米,此时平移已经完成,出错刀具如果不安全可以直接对刀,完成后执行G100 W0;保存报警刀具刀补。报警后程序会记录下报警刀具号,保存刀补时可不指定A值。如果没保存已经正确的刀补值,下次平移时还会报出同样的错误。6 ^3 g/ O. P+ n" Q) x8 P$ _2 O
    注意:在平移时为消除丝杆间隙的影响,刀塔会有一个毫米的往返运动。误操作可能导致刀塔换刀。所以要远离工件操作!
  x# q+ u$ c# S9 u! ?% P    此代码为调用子程序,没有子程序或未对机床进行设置不能使用。
6 J9 F8 H! |1 t    报警只是提供参考,不能以其作为安全保障,错误的操作可能会保存错误的刀补数值。程序测试成功后其逻辑性是正确的,因此不对任何误操作引起的后果负责,请在完全理解的情况下使用!此代码为方便操作,提高调试效率和安全性,但不能完全替代手动操作,扎实的基本功、良好的调试习惯才是安全和效率的保障。
5 S$ J9 m, E0 d' N* \8 F    如有需要改进的地方请即使反馈作出修改...来自: Android客户端
 楼主| 发表于 2013-4-4 13:41:53 来自手机 | 显示全部楼层
自己写的代码说明…下面贴出源程序,比较庸长,自己也是新手,很多逻辑都是自己想了好久…专家们多多指点!来自: Android客户端
 楼主| 发表于 2013-4-4 13:42:32 来自手机 | 显示全部楼层
本帖最后由 wang2011214 于 2013-4-4 13:54 编辑
4 f" o+ [/ ]. K/ f0 D# n+ Z# z/ o+ Y4 ]# [  `
O9010(PIAN YI);. s, Z6 S7 ], C0 Q& {& O: [
IF[[#26 EQ #0]AND [#23EQ#0]] THEN #3000=1 (Z AND W KONG);
2 r. f) S4 _( L( x IF[[#26 NE #0]AND [#23NE#0]] THEN #3000=2 (Z AND W CHONG);+ u1 N4 F* \0 K0 z
IF[#24 NE #0] THEN #3000=1(NO X);* T& e2 r8 N, Q8 ]# [+ I1 s. E/ l
IF[#21 NE #0] THEN #3000=1(NO U);
1 L4 H. C3 t, \* h0 L- Z IF[#20 GT 10] THEN #3000=3(T DA YU 10);6 e' |' b, O0 b8 R6 W+ O/ k! \
IF[#1 NE #0] THEN #620=#1;
/ k; H6 [4 P6 W4 f2 h" d0 N IF[#620 LT 0] GOTO 90;
; i0 ^5 T! @; e1 f4 W* u4 v IF[#23 EQ 0] GOTO 500;6 r  U! t; y" U6 s5 {
N90 #20=FIX[#20];
. E4 N. N4 d& w/ X- ]- yIF[#20 LT 1] THEN #20=1;
' N7 \; h) F! c2 M' w- _/ W" ]#[2800+#20]=#[2800+#20]+#[2100+#20];; M; w+ k; o, k. `, c
#[2100+#20]=0;* X) c. t8 H& s0 D
IF[#23 NE #0] GOTO 100;
3 q& D. c6 u- e" NT[#20*101]- \5 a  L: b/ w7 q! a6 T) h8 h4 g# U
#5202=0;. l* }" Q; `4 C
#5222=0;- S' N5 p6 U. k0 e0 [, V5 ^  d
#2601=0;1 J# L" R: x2 Y! j; q8 g
G98 G1 W1. F500;
; H( T9 X, @+ f. SW-1.;/ i! g  u! o" ?. L1 l8 N* v6 x
G99;' A- i% n/ T# t. _3 A3 c
#30=1;* r8 L- N4 R( c4 F/ H" c" U8 S
WHILE[#5042 NE #26] DO1;& y+ n, m! M7 }7 }7 ~  V+ T
IF[#30 GE 9] THEN #3000=3(PIAN YI ERROR);
4 {* F( `2 e" Z2 \0 }#31=1;$ ?$ Y& R6 _& U' ~/ s! a' w
#32=1;
: X5 l. p" _9 A0 B" w#33=1;
' g2 \/ J8 Z* U! N0 p8 ^IF[[#30 EQ 5] OR [#30 EQ 6]] THEN #31=-1;
4 P' J- h. z' w$ I3 A, t; AIF[[#30 EQ 7] OR [#30 EQ 8]] THEN #31=-1;
  D) e. R; k* r8 `3 [& k; _IF[[#30 EQ 3] OR [#30 EQ 4]] THEN #32=-1;
' a& q& |2 J( ~IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #32=-1;
. i6 q9 ]1 u. A7 m) SIF[[#30 EQ 2] OR [#30 EQ 4]] THEN #33=-1;
1 A0 t1 p0 Z, O' B# x9 g/ rIF[[#30 EQ 6] OR [#30 EQ 8]] THEN #33=-1;
& Y8 g# g6 \6 s7 T. e#5202=#31*#26+#32*#5022+#33*#[2800+#20];  ?8 {: C4 c+ v) }5 z! n6 p
#30=#30+1;6 W% S3 ~% P& ~3 g
END1;7 N) X, s1 d0 ~4 P0 U  H
GOTO 200;
- X0 x, v. C0 V) T3 sN100 #10=#5042;
4 O8 S: x* o' `# b: i9 c0 e$ Y#14=1;0 C/ F. C9 X/ t: F# ~6 |1 v
#15=1;) Q1 S. `) h+ U
N300#5202=#5202+#14*#15*#23;
' i2 s" q8 Y* ^5 K" _#14=2;+ n' [* x. U6 a
#15=-1;
  S! x4 U7 U9 |+ d/ v$ RIF[#23 LE 0] GOTO 400;7 Z! B& Q' b4 K& v9 l& D. q9 m- X
IF[#5042 GT #10] GOTO 300;1 b( @) j1 Q$ Z; W, O. O5 X
GOTO 200;* A* ^3 Y/ y9 D, @9 J
N400 IF[#5042 LT #10] GOTO 300;, [- P- X" T+ c7 t0 n5 q  i
N200(DUI BI);
' j% {$ y6 h4 L: p& AIF[#620 LT 0] GOTO 99;
% z( T  B; T1 r9 i+ ]! J1 t7 e! R1 A#27=1;4 ?( Q. |. M" f# |0 o/ l( H, X
WHILE[#27 LE 10] DO2;
" `* Z# L7 ]* {0 c#28=ABS[#[2800+#27]]-ABS[#[600+#27]];
% j/ a3 D2 y+ ]2 q3 }) Y# O9 RIF[ABS[#28] GE 1] THEN #600=#27;
, S' D7 _" [0 {4 c  R" y* F #29=ABS[#[2700+#27]]-ABS[#[630+#27]];
4 T0 j& {% ^6 v) p7 p& P8 D, c" u" NIF[ABS[#29] GE 1] THEN #630=#27; ( l# C3 y  x0 P) i0 k" _8 @
IF[[ABS[#29] GE 1] AND [ABS[#28] GE 1]] THEN #3100=[100+#27](X AND Z BIAN DONG);
3 x& q  D1 B6 w% L8 o% PIF[ABS[#28] GE 1] THEN #3100=[100+#27](Z BIAN DONG);
# `: q4 R% ?/ I  ^( b8 OIF[ABS[#29] GE 1] THEN #3100=[100+#27](X BIAN DONG);
, Q' b/ ~- X: c" A5 ?& F#27=#27+1;
& b% [+ ~: s5 L8 h  M+ Q& u7 w: vEND2;+ Q2 g+ _- x9 p" E9 w
N99 IF[#620 LT 0] THEN #3006=1(PIAN YI OK);
4 L, B: K! p$ JM99;, H8 N" v! X1 ^5 q# z
N500(LU RU DAO BU);! y0 A) g! x; Q" s5 X
IF[#600 GT 0] GOTO 600;
" u9 L" [8 S. s$ ZIF[#630 GT 0] GOTO 700;/ F. y- X- m, d7 z2 E3 M
IF[[FIX[#1] NE ABS[#1]] OR [#1 GT 10]] THEN #3000=4(A ERRER);
3 a  `  i- I" @# H1 w  lIF[#1 EQ 0] GOTO 800;9 k1 A; O9 F2 E, k/ }, E
IF[#1 GE 1] GOTO 900;
) Z. q. B2 Z) J: z! o0 o  H) n! cGOTO 200;
5 M! h. F: j% `& n; M; G5 QN600#[600+#600]=#[2800+#600];3 r! z' x/ o, O# |+ j5 J8 z
GOTO 500;
0 K# ]$ b- d6 h% bN700#[630+#630]=#[2700+#630];/ Y" t- C; F% p' [# A7 R
GOTO 500;
" B' h3 ^4 l4 Y7 }1 RN900 #600=#1;2 [2 r' X  a! `
#630=#1;$ g) h! W$ e" Q$ |* ?; y
#1=#0;
% s$ M( [, G+ w; QGOTO 500;  K. ~* C+ o' u$ u2 I3 m0 o
N800(FU GAI);+ H& G: ]2 J" @
#1=1;
' c1 p: }3 l+ AWHILE[#1 LE 10] DO3;; h4 S' q) R& l: f2 {) f! Y% ^
#[600+#1]=#[2800+#1];& W; I8 A; o# e3 o9 u6 H9 ]
#[630+#1]=#[2700+#1];. }& j3 x- @+ Y2 p, e! J5 T2 f5 V
#1=#1+1;- I2 ~, G" X, `( }
END 3;
- v# k9 w/ y2 w/ Z  t4 ?#600=#0;
; h* K( t7 `" I. D7 S#630=#0;
! M' `( }9 u, C- cM99;来自: 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
5 q9 t* m4 g- i5 O, j" Q  N" f9 d貌似没有必要吧?
/ K/ t' P' W  T. d& S
做这个程序是麻烦点,但使用很方便…特别是刀具多的时候!
 楼主| 发表于 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
( x  [! x/ \/ W$ O% O* r: `3 F用工件移不是更快
) w1 k3 n* L$ t7 G% T8 g
和工件移一个道理,多了的就是刀具对比…工件移的前提就是刀具在一个基准上
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-21 09:10 , Processed in 0.074157 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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