机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4572|回复: 20

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

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

使用道具 举报

 楼主| 发表于 2013-4-4 13:40:08 来自手机 | 显示全部楼层
z向平移代码使用方法3 M: J3 V  [( Y9 W3 D  P
    在调试产品中平移的对刀速度想对于传统对刀速度有很大的提升,但操作起来操作步骤和注意事项也相对较多…在此将其繁杂的步骤和注意事项做入代码中,从而提高操作效率降低操作失误率,使平移更容易理解使用。
. W+ m! h% @* `; i% m. m    平移代码是以手动平移为原理,并整合所有步骤和注意事项在程序中,以代码调用子程序的方式执行。先介绍下手动平移的注意事项和步骤。
3 @& D, Q) R+ H% }" H0 n9 N    手动平移能正确使用的注意事项:
2 D' o) P! _2 x% u/ S    ①刀塔上所有刀具x,z向在同一基准上,如若有刀具不在以一号刀为基准的坐标系中,那么操作时一定要有对刀动作,遵循先平移后对刀的原理。* M- z4 [; o$ l
    ②磨耗值会影响到平移精度,因为平移时在MDI的方式下磨耗不被计算到刀补里,所以平移前要将磨耗值加入刀补值中。
2 ^( e! @& R  `7 _1 |- I& H4 ~    ③机床丝杆的间隙补偿会影响到对刀时产生绝对坐标,从而使MDI执行刀补和自动执行刀补有误差。操作时要使每次手轮手动都是固定向Z正或Z负方向移动。
; G. B2 w5 e* j  m- @   手动平移的基本步骤:7 P! e4 b' c- O2 D4 [* U0 _
    ①用基准刀试切工件。! }; n/ s! N9 l4 C
    ②工件取下测量高度值。( x( ^5 Q" r: ^# m5 r# u5 n
    ③MDI方式执行基准刀刀补(如T0101)。
# f' }7 v/ x/ L3 ]; J$ Z    ④切换至坐标画面显示(pos键),将绝对坐标记录下来。7 \5 Q) ~9 g! d
    ⑤切换至坐标系将数值加进坐标中,注意正负,以加入后绝对坐标变为0为基准。9 E/ d6 T2 A. p8 \
    ⑥加入测量工件计算后此处的z值,注意加入的正负性,以得到计算值为准。(平移完成)
& c; u* F% s* `    平移代码G100使用格式:# M; J7 d( r9 H6 r3 o4 y; e5 {) P# y
    G100 Z_;4 T, D" d0 _. |
     Z_:指定当前位置的绝对坐标。! |; ~0 [1 ]2 F" s& X( v3 V
    例:用一号刀试切后测量此处应为Z0.3,在MDI下执行G100 Z0.3;按启动,程序大约执行一秒不到,执行完切换坐标画面核对绝对坐标!平移完成…
/ L' z: f; U4 E$ m) r    G100 W_;
( e) y3 u/ |( v0 N    W_:相对平移。! H2 Z- P! Z* z: {
    例:调试产品后需整体向下减0.2,在MDI执行G100 W-0.2;启动即可!
1 M7 t' G4 r. A) y, x2 ?# j    G100 W0 A_;  {7 u& i3 L$ x& N1 R$ }
    W0 为刀补录入功能选项。; R9 p( x8 P4 _7 J
    A_:取值范围为负数,0,和不大于机床刀具号的整数!
, f  R) L! u" L6 H, Z  H, L    G100 W0 A_;1 Q; H. z1 F9 y4 K8 N' x0 b, e
    A为负数时:取消刀补对比功能,此时即使某把刀具刀补变化超过1毫米执行平移时也不会报警!此为模态,在不指定大于等于零的A值时一直被默认!
& ?+ a; E9 l7 d! C& q6 D) S    G100 W0 A0;. n$ @8 i$ @: ]+ |
    现有所有刀补数据覆盖保存刀补数据,不发出任何报警!首次调试程序时执行一次,或者撞机后重新对所有刀具后必须执行一次(执行此选项必须保证所有刀具可用)。! u5 }" ~& C/ i. D' u- B
    G100 W0 A_;. R0 s+ X2 W5 `3 ^* t3 w
     保存当前刀补值;A值指定要保存的刀具号(大于零且小于等于机床刀具数的整数),用于新添加刀具后保存刀补,此时应注意对刀时应和当前基准刀具同一零点。
+ w8 b3 @. h& i9 g( n/ b    例:平移完成后,新添的一把刀具在10号刀位,对好后在MDI下执行G100 W0 A10;若对刀后未执行此命令,在下次平移时会报3110 X AND Z BIAN DONG;
; ]. N% @& F- I# h# }* D    G100 T_ Z_;
+ ?& \! a% z7 n    指定基准刀具偏移;在不指定T值的情况下默认基准刀为一号刀。* e4 j. b6 q+ I5 h
    例:只使用一号刀以外一把或几把刀具加工时,例如只使用四号刀,用四号刀试切后指定Z0,MDI下执行G100 T4 Z0;即可。
+ k3 H8 n1 c/ T4 N6 V2 u9 z    不能试切刀具与执行刀具不一样,因为如果不一样坐标会出错,程序也会执行换刀动作!
  L9 x. O$ Z- a6 q& y    例:用三号刀试切,MDI下执行G100 T4 Z0;此时将以四号刀刀补计算坐标,得出的坐标值与三号刀有误差,但绝对坐标显示为Z0,且刀塔换刀换为四号刀!
) a6 M' a/ F% R; S( j: u    报警信息与处理:+ A2 B" d9 g- y4 i& W% M
    3001 Z AND W KONG;" O! i9 B' h1 G- V* I
    执行时Z,W不能同时不指定。
# B) R7 I6 e8 N/ L    3002 Z AND W CHONG;
+ G1 V2 [! r# J    重复指定了Z和W。1 g( W; u& K; Y! O8 l9 |
    3001 NO X;
, R4 b, v! f+ s5 N    不可指定X。* \" O4 t$ m* j3 f/ A+ D4 @3 w/ Y4 m8 p- r
    3001 NO U;* u9 [, x6 B9 @7 ~# V: }" Z
    不可指定U。7 J2 z: S0 Y" C9 _
    3003 T DA YU 10;) j* P; B& ?! b
    指定基准刀具号大于机床刀位数。6 \% S9 S. W( p* l" M, T0 d1 I
    3004 A ERROR;
1 `. ]% b! B* X) W* f+ v1 W     A 不在取值范围。
$ k3 V; b7 S* ^0 ]    以上为录入数据错误报警,报警时没进行平移动作复位后录入正确数据即可。
6 }* S) T( e, w+ e  _    A值为负时,刀补对比取消,此时无论执行什么在程序结束时都会有提醒“PIAN YI OK”,意为偏移程序结束,未进行刀补对比。
  C+ K2 L0 p; r2 n    3100报警;5 c! M) s) I- M3 p
    以31开头报警为刀补变动的错误报警,31后两位为报警刀具号。如3108是八号刀刀补变动超过一毫米。6 j8 F( d, I' ], K' u6 t/ I
    31__ Z BIAN DONG;6 g7 i. e+ i4 l  p2 R& e) t
    报警刀具刀补z方向变动超过一毫米。
; o/ _5 \0 P3 U$ |- }* z. H% W' B    31__ X BIAN DONG;, n) k/ K/ J2 M
    报警刀具刀补X方向变动超过一毫米。% Y/ I) f$ v$ y) v% s
    31__ X AND Z BIAN DONG;" |6 D7 H( W, w+ J" s
    报警刀具刀补X,Z方向都变动超过一毫米。9 X, M  B. y7 K) [1 Y  O
    上述报警出现时,为此次平移的所有刀补值较上次变动超过一毫米,此时平移已经完成,出错刀具如果不安全可以直接对刀,完成后执行G100 W0;保存报警刀具刀补。报警后程序会记录下报警刀具号,保存刀补时可不指定A值。如果没保存已经正确的刀补值,下次平移时还会报出同样的错误。/ Y0 S4 y8 ]( K% m% H
    注意:在平移时为消除丝杆间隙的影响,刀塔会有一个毫米的往返运动。误操作可能导致刀塔换刀。所以要远离工件操作!4 U% d& m) k) p  u7 P1 q
    此代码为调用子程序,没有子程序或未对机床进行设置不能使用。
7 A) h0 L4 q. J* d9 U5 k& {    报警只是提供参考,不能以其作为安全保障,错误的操作可能会保存错误的刀补数值。程序测试成功后其逻辑性是正确的,因此不对任何误操作引起的后果负责,请在完全理解的情况下使用!此代码为方便操作,提高调试效率和安全性,但不能完全替代手动操作,扎实的基本功、良好的调试习惯才是安全和效率的保障。
: N( T# a& X1 O* W0 i2 g    如有需要改进的地方请即使反馈作出修改...来自: Android客户端
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2013-4-4 13:42:32 来自手机 | 显示全部楼层
本帖最后由 wang2011214 于 2013-4-4 13:54 编辑
9 k) O7 z0 n" S1 c: {0 ~- c; M1 ?2 `" E
O9010(PIAN YI);  h2 u% x6 k- {5 o: K% S
IF[[#26 EQ #0]AND [#23EQ#0]] THEN #3000=1 (Z AND W KONG);
8 `9 G! W0 ~& i8 j& t IF[[#26 NE #0]AND [#23NE#0]] THEN #3000=2 (Z AND W CHONG);  z6 \8 M7 @0 @6 z
IF[#24 NE #0] THEN #3000=1(NO X);  L* Z9 F7 a+ q( I  h6 w
IF[#21 NE #0] THEN #3000=1(NO U);
5 T) V) p* [  {- ] IF[#20 GT 10] THEN #3000=3(T DA YU 10);
7 g1 p* |& X1 ?) a8 J IF[#1 NE #0] THEN #620=#1;
1 X9 I2 B8 a  a# K2 C% E IF[#620 LT 0] GOTO 90;
+ {( N- |! @' j+ H, \1 o: x IF[#23 EQ 0] GOTO 500;; Z5 N, [  [& l/ R
N90 #20=FIX[#20];  c) B" c5 ^9 a9 `$ d- v
IF[#20 LT 1] THEN #20=1;; P5 D+ Q7 D: Q
#[2800+#20]=#[2800+#20]+#[2100+#20];
: \# g! o$ B6 o8 j#[2100+#20]=0;
& L8 Q0 t! q* G0 c4 t+ ?7 _, X, a IF[#23 NE #0] GOTO 100;
- F+ o: `* K5 [T[#20*101]& B) V( R+ x+ H7 X/ @. j; n
#5202=0;
0 F+ b6 [0 H. b/ H3 X#5222=0;
2 n# K, f$ i: G( e6 @& `3 O4 ~3 y+ {: }#2601=0;2 u" x, K- |. T) n- c
G98 G1 W1. F500;' ~: Z8 {6 k+ l4 r$ K
W-1.;
& n- v( B& \( j5 CG99;
! E/ e5 D$ f' j. d#30=1;
% Y/ g/ u% B) O- W5 E: oWHILE[#5042 NE #26] DO1;
/ L3 p+ V$ f. A$ ~% X  w. xIF[#30 GE 9] THEN #3000=3(PIAN YI ERROR);; d8 R* p, B  m: m  k) l
#31=1;0 Y1 y/ [8 A3 w1 A
#32=1;- `' K, z! o7 E" p
#33=1;
( a; e3 h6 W& V2 `( P: tIF[[#30 EQ 5] OR [#30 EQ 6]] THEN #31=-1;) L8 G' x- s$ I$ v: O
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #31=-1;
3 u! f1 }- y) ^. ZIF[[#30 EQ 3] OR [#30 EQ 4]] THEN #32=-1;. M3 s' f; s- S; a, }' v  K
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #32=-1;
/ q! k4 H& d7 `# lIF[[#30 EQ 2] OR [#30 EQ 4]] THEN #33=-1; $ t4 o7 \2 M1 Z; r/ p" j: C
IF[[#30 EQ 6] OR [#30 EQ 8]] THEN #33=-1; # I3 G+ v, c- a. Q3 s; @3 B
#5202=#31*#26+#32*#5022+#33*#[2800+#20];
; z- f1 {5 E7 C, O# q5 \#30=#30+1;
. N2 U  L" T! N' \, i6 |* i4 FEND1;' q3 H8 C7 T* Z6 }5 a/ W! q; E$ ~
GOTO 200;
( T% U/ S6 M$ i! [N100 #10=#5042;( D& Z0 x  J, O0 f
#14=1;% A, T5 j  @8 d7 t  y, ~
#15=1;7 _. `8 Q" I3 [% d1 X
N300#5202=#5202+#14*#15*#23;
* r7 E% n! V; H, ~1 h#14=2;; z0 C8 x. x3 g
#15=-1;0 e, Q' O& w! Z  s$ K; }
IF[#23 LE 0] GOTO 400;
+ L1 B) r  R# M' a, h. }+ i, D9 pIF[#5042 GT #10] GOTO 300;2 ?: g! m/ H# Q1 P3 S
GOTO 200;' ~5 X* V, g+ K. F
N400 IF[#5042 LT #10] GOTO 300;
$ D# L# o* m+ k  W# B. BN200(DUI BI);3 v4 e9 g& k3 l
IF[#620 LT 0] GOTO 99;
$ h. \' Y% p2 H+ X& H5 k/ K9 A- G) R#27=1;8 Z; s3 R! y% \4 y! w
WHILE[#27 LE 10] DO2;8 B: f+ a9 p+ O, [: O; F9 g
#28=ABS[#[2800+#27]]-ABS[#[600+#27]];
8 P* a; n& Z" t$ U9 DIF[ABS[#28] GE 1] THEN #600=#27;/ e  ~8 ]. t. u! U$ E) Y5 ^( u5 M
#29=ABS[#[2700+#27]]-ABS[#[630+#27]];; {' }% Q9 Y" L1 b
IF[ABS[#29] GE 1] THEN #630=#27;
0 z# r6 Q/ \7 e' g# NIF[[ABS[#29] GE 1] AND [ABS[#28] GE 1]] THEN #3100=[100+#27](X AND Z BIAN DONG);
$ d8 |$ N7 W1 X& eIF[ABS[#28] GE 1] THEN #3100=[100+#27](Z BIAN DONG);5 e$ C) j$ H/ r! u. h
IF[ABS[#29] GE 1] THEN #3100=[100+#27](X BIAN DONG);4 J% Z- ?" g5 L7 Q$ @
#27=#27+1;
4 {( M! [! c" q0 P9 J; p; p, h& ZEND2;
" A5 R9 E4 P1 V3 [5 |! I! j8 vN99 IF[#620 LT 0] THEN #3006=1(PIAN YI OK);; h: D. u0 L7 B8 M. X' a
M99;3 g' T9 D2 p  C) j- f8 M0 w$ @
N500(LU RU DAO BU);% W+ E& p7 v& e. Z) z
IF[#600 GT 0] GOTO 600;
2 X& Y; T- z# r# {IF[#630 GT 0] GOTO 700;( |( X' I" V* k3 {0 R+ }! k% n
IF[[FIX[#1] NE ABS[#1]] OR [#1 GT 10]] THEN #3000=4(A ERRER);) p! _$ w. R& g
IF[#1 EQ 0] GOTO 800;
5 A- U; r5 C  p( C' p& H9 f' mIF[#1 GE 1] GOTO 900;
; k; I$ M% ^: ^  {" Q( l4 G8 ?GOTO 200;
/ t0 g; M& C8 b- |9 R1 y& fN600#[600+#600]=#[2800+#600];0 w; L1 n* r$ Y
GOTO 500;
1 I2 n$ P5 H+ g6 r/ E2 |* EN700#[630+#630]=#[2700+#630];
/ A. x4 D: c6 D, t/ e, J  TGOTO 500;# A& R3 C. U/ ^4 w/ M
N900 #600=#1;3 J8 `% I- y0 d- g# l
#630=#1;2 g% ]2 H  @8 n* o6 |7 D2 r- C
#1=#0;
- s/ T2 W( X2 V, z# l7 v5 E" i+ ~GOTO 500;
) }4 ~7 k2 u6 \  E8 gN800(FU GAI);; W4 R( _2 {% b0 S0 S' G' X" b
#1=1;% h1 {. R6 e8 Y# x% U
WHILE[#1 LE 10] DO3;
. @' a1 I  g7 K: ]0 j0 f4 Q4 F) {& n#[600+#1]=#[2800+#1];# a3 C; w! j  j( k7 S
#[630+#1]=#[2700+#1];
- E# O! q6 b$ n5 L- _! q#1=#1+1;
1 @  Z2 b, L  Q: N' E- uEND 3;) a$ K/ P$ a) G) g( F
#600=#0;0 \1 \6 x9 A! W8 V" _8 Z
#630=#0;
* w* K: I: I# L1 ]( 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:446 n. L2 @; X* g6 U$ I- W
貌似没有必要吧?
! @& n; z. N, u/ V1 X4 w: Y0 o' N
做这个程序是麻烦点,但使用很方便…特别是刀具多的时候!
回复 支持 反对

使用道具 举报

 楼主| 发表于 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: H$ D' a1 M* J/ s8 ^! `
用工件移不是更快
( P! L& l! J2 ^8 j5 {
和工件移一个道理,多了的就是刀具对比…工件移的前提就是刀具在一个基准上
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 07:54 , Processed in 0.062983 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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