|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。# q |) K5 B0 c+ v( c
* X" H+ h( U; x( U8 M- s4 p
& E3 H+ P0 ~0 O7 M: G. _ ~$ ^! j
! B" S" |) m4 o) _" m
& Q+ ~ Z4 B" j+ e) e' P* Z1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
1 {5 B/ _% n7 T! x% o! _- ]3 v% [6 @3 v6 J% j$ T
- s2 f# q) K# E3 J" s6 V4 B) p8 _2 Y7 b" f7 Y6 G# H' S
# @7 f. V1 ?0 e m2 j
1 i8 x4 z# A e& u2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
, W8 r1 I) e" M5 z6 v3 r
# g5 C) Z2 @9 c9 `3 w9 q2 ~/ R( [6 U. u
; @5 X+ Y# `* x$ s- @# |8 q7 u1 z3 B
, |# \6 r8 n) k& b2 `那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
& ? k' l# q0 k6 l4 S/ J; R5 H" E, X! \" _
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
) j2 ~% x9 Y# ? J1 _, `% O* V6 W: V/ T8 P; B, y
v+ t5 U/ A6 f. g8 i Y
- |% W& c+ _0 P4 _* K$ J& C; _, g
5 G6 u' s0 w, {. E6 @9 `首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
. c) l9 ^; P6 D
9 F% E0 D" `! m# v; e8 M矢量复制函数的用法如下:
2 Q, c( L( b! E, y
9 _" x8 |4 E3 F+ }. x. L7 C# ~9 n: d$ d+ k
q6 i L4 y/ v
* a4 u! N6 d' A- F6 B1 g$ B8 D. V
$ @$ W$ k& t0 N" b# k) A* T这句话的意思是return的结果值等于当前x$的矢量值。
2 l7 T0 q' R+ K0 a: C# S* G* e/ k- H/ W. V
# c+ X) b' R2 s0 ?& x. @, N
1 \1 e1 U9 H0 Y- m% Y. m
" Z, z) d5 w8 z" g7 t同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。0 p2 h& c. q. W9 S. d! i
: I" Z* E) p) v0 e# }( D2 W9 \7 n定义数据格式:
. |* M5 E# U0 ^ T0 X8 G0 a; K9 x. d& V- c* {7 T4 v, u' N& l
4 c v3 f# }5 S6 C0 B0 S# O2 a6 G
- fmt 2 tox_shift7 r& x/ ~7 v3 t/ y0 X' `+ U9 \ A8 z9 W
1 b$ ?. o2 G( `& q. O; ?- fmt 2 toy_shift
3 v; m4 ^4 r0 a }/ r
# @6 o# W6 s0 \1 U4 w# Q* C- fmt 2 toz_shift/ P8 Q1 ]1 F0 i) H: w9 ~( q' y: P
- 4 t8 p( p' w: F2 ~* ~8 b& U
- fmt 2 tox_g
+ P5 q# e7 x5 ^" k' h5 d% [! x - 0 J$ k. \) Q0 h. h
- fmt 2 toy_g) Y' m: L2 q' C! h- m0 Q$ r( y
+ J4 a/ F9 Q) m4 I; ~/ ?- fmt 2 toz_g
# b4 a0 n9 K6 Z& u - 1 G% d" C5 K- c
- fmt 2 wcs_shift
! K$ R% z' c) D$ |# N, \
* G9 Q% P2 `2 L' @4 y! S6 _0 j# ?- fmt 4 axis_def
复制代码 6 p3 E3 D+ c1 B7 H: V
开关及初始数据定义
7 i2 G5 w& g6 ^) g6 e+ m' _7 S$ w5 ~6 W
5 K" b. E; t) y* t% Z0 k `- use_wcs_shift : 1 #坐标偏移开关
% h0 M8 }" d/ p! k, C - 1 W9 O- F% I0 ]( l
- wcs_shift : 0 #偏移轴
' a% B) ?$ V, {0 k- P) } - - L% u$ y3 h' \
- axis_def :0 #偏移类型
6 F9 B" E y0 [9 c5 I9 U* M
, P# z, M3 x5 R3 _, f6 r) a- tox_shift_x : 0 #X轴偏移量
% p$ b# \8 ~$ d! G7 R) ^ ? - " G1 H0 `1 ^0 V
- tox_shift_y : 0 #Y轴偏移量. y$ N+ V# u4 i$ T
- ( r5 |! |, N" b2 D. Y1 X+ c W
- tox_shift_z : 0 #Z轴偏移量
复制代码
2 r- e3 S% \" G, K定义交互提示语句 |( c7 @( u' z
. \6 }& x; J5 }% o+ E! Z: V( Q& s
- Y( @5 [3 A$ d1 c w) }6 J" Q
- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移", ]$ I" S5 r; J
- 2 X; G) B* Q* ?! H" y7 @
- fq 24 tox_shift_x "输入X轴偏移量"
. C) S9 j: @+ d8 r: B0 n - 3 ~7 j- b, b/ t7 n) \" ~
- fq 25 tox_shift_y "输入Y轴偏移量"
/ t4 K# F4 F; j3 N( ^ - 5 U* a' N* r& O& b0 C- b
- fq 26 tox_shift_z "输入Z轴偏移量"* U- b8 I# o# {4 f3 A A8 L' }
- - `9 q; `* p4 |) O( N
- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码 / s6 E ~) M" d3 s# I5 P
坐标系偏移过程处理及交互过程处理! ?; |/ z6 c# W$ H& }# R9 J
6 D" p% v9 C5 W- h
* Q3 X: b+ a+ z, J' q+ O2 s- pwcs_Shift7 Y, V' B3 _( `* E; N1 ~+ Y j# K! c
9 w; h/ ^8 g! C$ t- tox_g = vmap(tox$,rmtx1)
; j2 l/ ^3 }- w* K1 f/ x G
3 \5 ^' ]6 w6 Y: n1 N& b0 P- if use_wcs_shif = 1,8 S& C, U0 M: w- Q( {3 c/ ]- C$ R
- [
, Y0 A0 t0 g' }. R1 K - while axis_def < 1 | axis_def > 2,q23
' s; S$ t8 z& ?4 V& G - if axis_def = 1,4 @8 @$ |4 `! g: i# `2 s. s
- [0 \1 r. G- H7 `2 a: d
- while wcs_shift < 1 | wcs_shift > 3, q277 _; d; K# l/ l
- if wcs_shift = 1, q24, tox_shift = tox_shift_x5 p% [. k& e1 ~
- if wcs_shift = 2, q25, toy_shift = tox_shift_y* u5 B$ S3 i8 S1 z! M
- if wcs_shift = 3, q26, toz_shift = tox_shift_z0 I: p( H7 X/ W2 p1 r5 q3 g! x$ B
- ]
5 C8 t" O( t- R- A0 _9 C: B! ` - else,
' ~, z+ i A& g - [1 `. Z5 i) h5 o+ v0 y; M
- q24, tox_shift = tox_shift_x
6 w5 v9 Q1 ?! P. w; x& g1 `5 J - q25, toy_shift = tox_shift_y
V+ }6 {& ?+ Y/ N; m4 c3 ] - q26, toz_shift = tox_shift_z
1 h. t& H) i1 K. Q - ]
8 H% k/ w. l) l* E/ h" B) ? - tox_g = vequ(tox_shift) 1 M! f/ P3 c5 |
- ]
复制代码
9 c2 o; A5 X6 _# f |! C1 F; ^在XYZ的计算过程中把偏移量添加进去,位置如下
( K& a" h/ ^2 r w$ g9 u7 T! s* u+ ?9 }+ }+ V* E" H
! J- [6 c4 J& {# b) {( e- pxyzout0
1 \2 J% G9 s7 Q4 q& \ - & k5 x n0 ^& Z$ R
- pxyzout1" G6 V% ]% Y% |1 I! ~0 v
9 V0 T- S9 s. P: S! M d- pxyzout24 e3 O+ g. c8 K7 l _8 K
3 h; T. I( u# N- pxyzout3
复制代码
$ _! Z$ {' M& E偏移量的增加函数:vadd
( W* g' V: l6 j" X& G& k; ?! M; R7 |; Z; w3 n0 s, y0 d
' D5 M( A5 g% v; S& o8 ]2 V
8 f- j" b: P4 x, k( e. Q! R增加2个3D向量,即相当于2个3D向量进行加法运算。( w6 N# G& X& N" F3 {
. W/ W% }) n+ [4 k7 }" _( c/ X+ v/ t8 v
; r% S Z: `5 n实例:
8 [* M, G! C. _2 \1 `, c+ s) l- pxyzcout0 #Toolplane Positioning
% ?0 z m0 S- K3 v- p5 ?& B& p - xabs = vequ(x$)" h1 ~- u/ N+ J, O8 \6 G: X
- xabs = vadd(xabs,tox_g)
( H; ~9 R% [$ K, k( o( h8 n' R - iout = vequ(i$)
8 b$ M, m: h7 j7 a - if rot_on_x = two, csav = -c$
! l$ s4 w: L: d3 ?5 | - else, csav = c$
复制代码 & @5 O# M$ s$ R( @
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化0 E1 J ?- Q/ ?
- Y3 i. P3 f3 E- K
5 i+ g' w# k. c0 k' d' g- u# I" F- pxyzcout3% ~. k) N: Q: I% F( s6 r
- xabs = vadd(xabs,tox_g)
7 t; b0 ~5 a5 \) Y - ua = vadd(ua,tox_g)
复制代码
* d+ e5 S; r7 v9 R7 s# \至此,坐标系偏移以增加到相应的点上。
5 z) @2 i }/ ?6 g7 a$ I
9 x& j! V' j j: ], E$ H- ~) B; m" c" @
' @. S& y \ Y, ]3 x3 W( p2 k& `* V# p1 [ m/ n
y* a- b7 G8 r& |1 X/ C4 t# w+ d
O/ V% x& s F0 C
T) H( b2 R' x以上及部分代码可能存在错误,自行修正。
. g: J% U/ |. ?( T' b
! O- W* W3 q% w) G8 U
# R- J7 y$ l8 l5 t# _0 m" V* A6 z
F& g# c; R8 {/ c: ?5 T
% I6 \. F5 s: }1 S1 s5 G- X e/ a7 j
9 M8 Q! s$ @( N* F
1 ]" W8 N! g5 k4 P1 W# V7 ]
1 Z( X: E. W" }/ x8 @+ F4 v& s* p0 R% z1 |1 u6 F
& O1 F3 b, j/ Q* j$ O. l
9 X1 s) I" K8 o* U% S' @( s! C H7 m2 E: Y9 S
" g3 O* X+ v+ K
|
|