机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4780|回复: 20
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2013-4-4 13:38:24 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wang2011214 于 2013-4-4 13:51 编辑 0 i9 f) U+ r! [$ K1 M! J" u
* b& y; e/ p& w
背景:
- B* d8 l) O5 v2 _* T* U* g 我们厂的产品主要是售后的,批量很小,能上千的都很少。十几台数车加工每天的调试很频繁,没有技术员,全靠个人操作,还是计件的!加工刀具也多,少的三把,四把现在用新工艺加工最少就要五把刀,多的七八把刀加工,调试时对刀,调磨耗最麻烦。使用平移坐标系能很轻松解决这个问题,但好多同仁学了好多次也是模模糊糊不敢用。所以自己就做了个平移的代码,自己内测了两多星期,使用还算正常!想过些时候在组内推广…今天贴出来让专家们审核审核,多给点指导和意见…谢谢!来自: Android客户端
回复

使用道具 举报

2#
 楼主| 发表于 2013-4-4 13:40:08 来自手机 | 只看该作者
z向平移代码使用方法/ p5 @& h. |4 A2 P3 n4 Q9 `+ j
    在调试产品中平移的对刀速度想对于传统对刀速度有很大的提升,但操作起来操作步骤和注意事项也相对较多…在此将其繁杂的步骤和注意事项做入代码中,从而提高操作效率降低操作失误率,使平移更容易理解使用。  b/ p( P" _$ }+ r5 o4 S
    平移代码是以手动平移为原理,并整合所有步骤和注意事项在程序中,以代码调用子程序的方式执行。先介绍下手动平移的注意事项和步骤。" r/ v3 f0 v& S& n! c6 J9 T
    手动平移能正确使用的注意事项:8 M9 d4 I: @8 E1 p
    ①刀塔上所有刀具x,z向在同一基准上,如若有刀具不在以一号刀为基准的坐标系中,那么操作时一定要有对刀动作,遵循先平移后对刀的原理。8 G) S5 w% H4 J. ~: f+ }9 U
    ②磨耗值会影响到平移精度,因为平移时在MDI的方式下磨耗不被计算到刀补里,所以平移前要将磨耗值加入刀补值中。
$ W* T& Z( {" G# w$ ?4 }    ③机床丝杆的间隙补偿会影响到对刀时产生绝对坐标,从而使MDI执行刀补和自动执行刀补有误差。操作时要使每次手轮手动都是固定向Z正或Z负方向移动。- z5 _2 P' R3 E1 A- ?! f
   手动平移的基本步骤:# y$ P9 B/ d0 n; c6 Y( i5 m
    ①用基准刀试切工件。# ~1 i$ |! ^. b  ~1 h: Z# n
    ②工件取下测量高度值。
: f6 t- l9 ]) |/ o4 y    ③MDI方式执行基准刀刀补(如T0101)。
: d) u3 z* u# F' l, c    ④切换至坐标画面显示(pos键),将绝对坐标记录下来。* W- k+ p( H$ M- w4 a* S$ S; ~
    ⑤切换至坐标系将数值加进坐标中,注意正负,以加入后绝对坐标变为0为基准。
! P0 Y7 P: o; E. L/ \; a! [3 O    ⑥加入测量工件计算后此处的z值,注意加入的正负性,以得到计算值为准。(平移完成)
  |& U! k" P) z  Z    平移代码G100使用格式:
+ v' w- H4 K; w1 v8 p' E0 o# G    G100 Z_;
* F! K! t9 o# y# \     Z_:指定当前位置的绝对坐标。; G7 ?# t' z1 f/ D" D0 y: k" Q
    例:用一号刀试切后测量此处应为Z0.3,在MDI下执行G100 Z0.3;按启动,程序大约执行一秒不到,执行完切换坐标画面核对绝对坐标!平移完成…9 |" M: I3 a! f) w; b& `2 r
    G100 W_;
- l0 k% J6 b4 R, t8 ?2 X+ s    W_:相对平移。
" {6 [% Q0 p. h% j% }2 A& J8 T! V% g    例:调试产品后需整体向下减0.2,在MDI执行G100 W-0.2;启动即可!2 f1 D$ W9 z7 C" b' E3 ?2 S
    G100 W0 A_;, Z5 M1 a5 ^8 g% v5 h0 ?
    W0 为刀补录入功能选项。: u: D; l8 z5 r
    A_:取值范围为负数,0,和不大于机床刀具号的整数!
" ^: K9 m, {8 R" x    G100 W0 A_;
5 _1 V2 ?5 H0 B( k    A为负数时:取消刀补对比功能,此时即使某把刀具刀补变化超过1毫米执行平移时也不会报警!此为模态,在不指定大于等于零的A值时一直被默认!
1 X3 D7 N1 r4 j, r2 ]3 z8 v" h    G100 W0 A0;& d8 C, l( T9 l! J! f9 Q
    现有所有刀补数据覆盖保存刀补数据,不发出任何报警!首次调试程序时执行一次,或者撞机后重新对所有刀具后必须执行一次(执行此选项必须保证所有刀具可用)。
* |( i) X! d" }) i: E; C    G100 W0 A_;
) a; \, k' e7 l# k     保存当前刀补值;A值指定要保存的刀具号(大于零且小于等于机床刀具数的整数),用于新添加刀具后保存刀补,此时应注意对刀时应和当前基准刀具同一零点。5 I- l2 Q8 f7 y$ l6 k& L
    例:平移完成后,新添的一把刀具在10号刀位,对好后在MDI下执行G100 W0 A10;若对刀后未执行此命令,在下次平移时会报3110 X AND Z BIAN DONG;( ^, ~( Z) n* k  l9 E# j6 Y
    G100 T_ Z_;
" D" z' X0 m! g( n# o8 {9 U; @    指定基准刀具偏移;在不指定T值的情况下默认基准刀为一号刀。
# m3 j( r9 M5 c    例:只使用一号刀以外一把或几把刀具加工时,例如只使用四号刀,用四号刀试切后指定Z0,MDI下执行G100 T4 Z0;即可。
- c6 q, a7 e) D' V$ h; _    不能试切刀具与执行刀具不一样,因为如果不一样坐标会出错,程序也会执行换刀动作!
9 `* z6 O0 E1 }' k) I2 \0 T    例:用三号刀试切,MDI下执行G100 T4 Z0;此时将以四号刀刀补计算坐标,得出的坐标值与三号刀有误差,但绝对坐标显示为Z0,且刀塔换刀换为四号刀!/ P# w0 t4 l, e; }& J5 {/ a' m3 a
    报警信息与处理:
& i  }: m4 C: A; X    3001 Z AND W KONG;: C3 @" c  O# z) q; P" b/ i
    执行时Z,W不能同时不指定。
2 r- K  h: T+ Q    3002 Z AND W CHONG;( {0 r6 d7 U' S; G  q
    重复指定了Z和W。& E1 e6 |4 C, X+ x
    3001 NO X;" S! b9 h5 q6 [5 _& M
    不可指定X。
" W" W( }5 k/ q7 G- m    3001 NO U;
  g* r  T# z8 A) }2 K1 g1 k4 i# b/ _    不可指定U。
( x6 V. W1 k" M    3003 T DA YU 10;
& r, Q+ K% k3 f# E! F    指定基准刀具号大于机床刀位数。
8 e2 B! L7 y( }& D0 \, a    3004 A ERROR;* p, g1 V) j8 s& A' c# Q
     A 不在取值范围。2 D2 f! J: p( n) p& F
    以上为录入数据错误报警,报警时没进行平移动作复位后录入正确数据即可。
! \4 {, g9 d+ Q6 a. Q- Q- X, p    A值为负时,刀补对比取消,此时无论执行什么在程序结束时都会有提醒“PIAN YI OK”,意为偏移程序结束,未进行刀补对比。2 B/ F( c/ N6 Q+ w% I
    3100报警;8 j( e& Q1 S1 y& B
    以31开头报警为刀补变动的错误报警,31后两位为报警刀具号。如3108是八号刀刀补变动超过一毫米。. T# ]$ X# H9 l4 ~$ J9 A6 u' k: X( \
    31__ Z BIAN DONG;
, U$ K- ]0 R3 C6 Y+ P    报警刀具刀补z方向变动超过一毫米。0 k8 t3 i% N# b
    31__ X BIAN DONG;. x7 R9 |; A$ z+ Y, q8 D
    报警刀具刀补X方向变动超过一毫米。
$ D( x; I. X4 b  ^    31__ X AND Z BIAN DONG;
2 C7 X7 I- H1 E5 i( |    报警刀具刀补X,Z方向都变动超过一毫米。  {7 f, R4 U/ M  M7 |, C- w" I0 C8 l
    上述报警出现时,为此次平移的所有刀补值较上次变动超过一毫米,此时平移已经完成,出错刀具如果不安全可以直接对刀,完成后执行G100 W0;保存报警刀具刀补。报警后程序会记录下报警刀具号,保存刀补时可不指定A值。如果没保存已经正确的刀补值,下次平移时还会报出同样的错误。+ w0 p4 r) [! H; b, {# w
    注意:在平移时为消除丝杆间隙的影响,刀塔会有一个毫米的往返运动。误操作可能导致刀塔换刀。所以要远离工件操作!* O' v8 q( C/ c
    此代码为调用子程序,没有子程序或未对机床进行设置不能使用。( J$ d# M" b7 ^6 A
    报警只是提供参考,不能以其作为安全保障,错误的操作可能会保存错误的刀补数值。程序测试成功后其逻辑性是正确的,因此不对任何误操作引起的后果负责,请在完全理解的情况下使用!此代码为方便操作,提高调试效率和安全性,但不能完全替代手动操作,扎实的基本功、良好的调试习惯才是安全和效率的保障。# B9 z. z: f9 j5 a, ^; _
    如有需要改进的地方请即使反馈作出修改...来自: Android客户端
回复 支持 反对

使用道具 举报

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

使用道具 举报

4#
 楼主| 发表于 2013-4-4 13:42:32 来自手机 | 只看该作者
本帖最后由 wang2011214 于 2013-4-4 13:54 编辑
+ Q0 J6 P! @, Z7 d8 R. e: L0 a) E
1 u9 i- L. j% U* R3 F+ A& ^7 VO9010(PIAN YI);
# P! U( Y, I  F8 L! S2 sIF[[#26 EQ #0]AND [#23EQ#0]] THEN #3000=1 (Z AND W KONG);
) R- l" O; v9 I" a IF[[#26 NE #0]AND [#23NE#0]] THEN #3000=2 (Z AND W CHONG);
. ?4 u1 X* ?' _  r8 ZIF[#24 NE #0] THEN #3000=1(NO X);7 `( w4 O! Y8 |; e
IF[#21 NE #0] THEN #3000=1(NO U);; O& g# `& {# t+ l% ~" ?
IF[#20 GT 10] THEN #3000=3(T DA YU 10);
6 s: f6 ]7 b; `% J) B! ]( ]( t IF[#1 NE #0] THEN #620=#1;
( N6 ~$ P' {8 W IF[#620 LT 0] GOTO 90;
9 U* x; C# |5 F! I8 \ IF[#23 EQ 0] GOTO 500;" C! I. r! B& t+ w% R  m$ |8 o
N90 #20=FIX[#20];
7 N7 W3 x  F8 Y: h- t! sIF[#20 LT 1] THEN #20=1;
$ F8 b. I7 z) q- T8 o) J#[2800+#20]=#[2800+#20]+#[2100+#20];
( }6 l3 {7 T9 I/ C9 A3 j5 G#[2100+#20]=0;. q0 O1 J/ A. V% `# V! ?
IF[#23 NE #0] GOTO 100;: @" {- F1 e2 i7 |0 I
T[#20*101]
$ @; E. |9 e  b* V9 B* `#5202=0;% k2 K3 C6 N. d  |7 N- ]
#5222=0;) U+ L4 P- E: j) S* G; r) n
#2601=0;5 {& H* `, e/ e/ J, h
G98 G1 W1. F500;
) V- Q. e4 r! D; M7 y6 ]/ z# l2 vW-1.;
% X% _5 j7 x' Y9 F# F1 KG99;
+ r; m: R/ h6 u#30=1;' ?0 X( Y; x, R" t7 k( f8 d
WHILE[#5042 NE #26] DO1;
. E6 c0 ?$ G6 u; f/ GIF[#30 GE 9] THEN #3000=3(PIAN YI ERROR);* Z' w, _  |& Y3 {+ ~
#31=1;  q( }3 d$ r" Z3 z5 J, n: L
#32=1;
% Y  B2 Z! E# N: x/ m& K% l7 ~7 k' t#33=1;
0 y9 ^, Y/ m+ n: N( IIF[[#30 EQ 5] OR [#30 EQ 6]] THEN #31=-1;) c- _; v- t% P' t& M
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #31=-1;
, ^6 A% E- Y* Y7 f6 s1 }/ RIF[[#30 EQ 3] OR [#30 EQ 4]] THEN #32=-1;7 ?5 Y1 z6 @) V& Y! f3 l) m
IF[[#30 EQ 7] OR [#30 EQ 8]] THEN #32=-1;
, T9 r/ n# F* T- N1 I- X& h% N4 TIF[[#30 EQ 2] OR [#30 EQ 4]] THEN #33=-1;
% |2 Q+ |  |3 sIF[[#30 EQ 6] OR [#30 EQ 8]] THEN #33=-1; 1 T) @$ T0 {, G
#5202=#31*#26+#32*#5022+#33*#[2800+#20];& l4 z2 k; L% F& w1 l9 j
#30=#30+1;& r- r$ h3 j! ?1 h" @
END1;( W1 R& r$ s2 t
GOTO 200;
% X8 ?# D. ^6 \5 |. rN100 #10=#5042;: X5 o4 k' m4 K; i9 ^$ P5 m
#14=1;
& r3 S9 R+ x. w! ?#15=1;
5 \, w: ?: `$ m" [( {+ u9 Y) kN300#5202=#5202+#14*#15*#23;) V$ K1 v. Z% e
#14=2;( o& @, D% \) @% H* I8 B# K3 ^
#15=-1;2 A5 f9 K* d5 x
IF[#23 LE 0] GOTO 400;' e* N8 v% t9 E
IF[#5042 GT #10] GOTO 300;3 x" P5 G$ U' z7 B9 Z/ b
GOTO 200;
3 H5 a& O8 q* w9 U3 kN400 IF[#5042 LT #10] GOTO 300;
, y8 t! Z' W' PN200(DUI BI);+ H. [2 y6 [5 a0 N  ?
IF[#620 LT 0] GOTO 99;
4 ^- U/ `& ^* q- d+ v  {#27=1;7 z# X* C% P4 {
WHILE[#27 LE 10] DO2;9 I3 b7 w. [  R4 A
#28=ABS[#[2800+#27]]-ABS[#[600+#27]];
! p2 B0 J3 F3 z* c$ tIF[ABS[#28] GE 1] THEN #600=#27;- V8 _3 N8 F* s& e7 k8 t( t
#29=ABS[#[2700+#27]]-ABS[#[630+#27]];
7 P8 \; e, s, E; N. U+ T3 p3 B! E+ ]IF[ABS[#29] GE 1] THEN #630=#27; - ]/ `: n1 m$ o, i
IF[[ABS[#29] GE 1] AND [ABS[#28] GE 1]] THEN #3100=[100+#27](X AND Z BIAN DONG);, m& i) C4 F) |% y  S
IF[ABS[#28] GE 1] THEN #3100=[100+#27](Z BIAN DONG);
: I7 U8 H' x. YIF[ABS[#29] GE 1] THEN #3100=[100+#27](X BIAN DONG);
* N* t8 v8 s" Z0 n0 @& P5 p1 _#27=#27+1;
" I9 [/ B( n% N0 @5 lEND2;
7 [9 u4 ~1 }- `7 aN99 IF[#620 LT 0] THEN #3006=1(PIAN YI OK);
( Q# K( n/ S0 T5 P! q9 D6 ^. G# |M99;' i% ^* S4 T0 p" z( n- s3 D
N500(LU RU DAO BU);2 E- `# w  x7 H3 c0 e3 N
IF[#600 GT 0] GOTO 600;
. `% k: l" K' J: j' eIF[#630 GT 0] GOTO 700;8 C  \3 j; t( z' P) W
IF[[FIX[#1] NE ABS[#1]] OR [#1 GT 10]] THEN #3000=4(A ERRER);
9 J2 v. G7 @" h! y2 AIF[#1 EQ 0] GOTO 800;
& U% L4 v4 o+ X* s' O8 s. SIF[#1 GE 1] GOTO 900;" P7 f- Q/ I. w+ m* h
GOTO 200;
$ L$ T- y) h, k" Q8 F) uN600#[600+#600]=#[2800+#600];
' P  i  D1 ~' a4 o, g; p! R1 @; zGOTO 500;
* f7 V$ a) }9 TN700#[630+#630]=#[2700+#630];
+ c! h3 u0 ]5 [$ ]- oGOTO 500;
! o) ?! Y& ^/ q) F0 R& ZN900 #600=#1;% ^& v3 j) W4 Y0 N2 \
#630=#1;& ?1 J+ Q8 S- P" M* J
#1=#0;
' n! t9 ~$ G! j2 uGOTO 500;/ O; P) r+ V( k" ~
N800(FU GAI);
8 ^/ T  p1 h% \  i$ E8 k' ]#1=1;
) _4 V3 B4 T. R' t- m: ]# g/ K; TWHILE[#1 LE 10] DO3;
7 V$ O& Y+ @0 v/ Q3 z#[600+#1]=#[2800+#1];
2 j: _$ \" r: g3 }- c! f# Q#[630+#1]=#[2700+#1];4 U7 B! J: M$ N; r2 ~2 w+ j
#1=#1+1;
7 f8 T, T3 }% g& ?END 3;, L" F- h- ]6 Q/ ^; D8 N! X7 D
#600=#0;" ^* f1 ^$ m0 _% e7 E; {' a" l
#630=#0;
$ p1 ?6 F: a' a, i- L, s( xM99;来自: Android客户端

点评

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

使用道具 举报

5#
发表于 2013-4-4 13:44:49 | 只看该作者
貌似没有必要吧?
回复 支持 反对

使用道具 举报

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

使用道具 举报

7#
 楼主| 发表于 2013-4-4 17:38:09 来自手机 | 只看该作者
风随意 发表于 2013-4-4 13:44; L$ d5 ~- s& {4 S
貌似没有必要吧?
8 p  @& s# v7 {& R3 v0 l
做这个程序是麻烦点,但使用很方便…特别是刀具多的时候!
回复 支持 反对

使用道具 举报

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

使用道具 举报

9#
发表于 2013-4-4 18:05:12 | 只看该作者
用工件移不是更快
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2013-4-4 18:09:55 来自手机 | 只看该作者
veroinca 发表于 2013-4-4 18:05. \" \7 a5 z8 c
用工件移不是更快

+ l, V" Z' e" p' n+ Z$ m  h7 Q和工件移一个道理,多了的就是刀具对比…工件移的前提就是刀具在一个基准上
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:44 , Processed in 0.069005 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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