|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。/ `" d' p7 u, D* d" R% o
2 H+ B+ M) ]! b , D4 s! l2 g' `9 S' X% H
, {/ p3 W9 Q5 E& H1 y" f! P& u! `6 V+ u1 Z2 L
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
W+ }0 k3 `6 D: M; R! d# ~
1 C, o2 L! H; ^3 x5 w* `4 z3 F; J7 l$ x$ G' N2 C+ ~
( G# D; E+ I4 C& B2 Q- }. S
" J" F0 g, |! [0 r% k8 x' A5 u+ h1 Q/ t
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
9 I' _9 Y& x0 {$ Q4 h9 `2 O7 A x( F- n9 r/ Z8 P
3 i, G" Y* u) r) Y3 T# I
/ d, `: T; |/ [那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
/ ?% g! t3 p3 k" B+ }7 H5 N& n# v
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
- I" A A+ ^' C
8 w- r5 j0 b( Q/ H v( V) q
& f" Y5 O0 o' G9 G/ F$ P9 B- w- A( [% p9 B0 v, ]& V7 I& [% k$ {
& Q' g1 U& [/ p8 a' \3 o2 ~
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
! x |. ^' L3 _" S1 P: L* R
2 Q" T* j( `! D7 O9 Q矢量复制函数的用法如下:0 H' j" a8 I$ X) h0 K
3 `: a( [- F! b0 j; _5 A/ f, i4 Q D$ F' P1 ~+ l- Q$ [: i
* }: D* ? r; W4 |) i5 d$ D3 q0 u" F
% ]# p8 ^( I# {( R, N! O/ F* J, I
这句话的意思是return的结果值等于当前x$的矢量值。9 x7 V. ?7 R. @' o3 V2 j
4 J; B6 `+ R0 o" k9 ^ H
" `$ _' G- t6 D
" b: S' L5 h/ k$ U1 n
; E; z& ]6 h! ^' n
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
- U7 x' W2 f1 C" Q) w
2 |1 z4 D8 N x6 v# k定义数据格式:/ Z% S: y8 @- ~+ B
+ S1 U- t2 {" ?. d; [9 ]& `, B& g2 t# J' v d! g6 C/ d
- fmt 2 tox_shift5 g1 y' s, R: Z6 B
! H) k2 W! s+ s+ U+ D: }1 D/ j- fmt 2 toy_shift3 |7 s+ s c3 G9 `0 W( H
9 O4 S# |9 A4 X0 U5 J- O w) ]% k) y- fmt 2 toz_shift
3 o+ Z! ^' Y& j9 g - + X/ M8 C/ f7 F
- fmt 2 tox_g5 ]2 J% w+ ^/ i* @ s
- y# f( k+ w3 a0 I: d- fmt 2 toy_g8 o; v4 O: f; o) O2 K0 B" ?$ N3 @
2 D; ]" X& ]8 h% z/ @- fmt 2 toz_g
! Q: `" K# L: Q' N9 b& S# D - $ X3 u$ ]* N, l8 S9 R
- fmt 2 wcs_shift- x0 N! r, w% g3 u$ F) D
4 q6 ^, M! O0 R0 i! t' W- fmt 4 axis_def
复制代码 2 U3 v. U' m# W Z: o
开关及初始数据定义6 H4 [& L2 z+ f. P5 Q6 m
' v+ @( p+ u* E' H5 }+ V+ r
$ J6 q, Q+ L, b- g' e* y/ X8 K
- use_wcs_shift : 1 #坐标偏移开关
- M& ]9 l% x/ V/ e- B' N% i3 J( b; Q - s! _* f( y6 T5 F8 g+ g x
- wcs_shift : 0 #偏移轴2 L$ F, J8 |& J6 I' Q* p' ]0 m7 ?
$ c+ |5 d+ J5 i7 X, R- axis_def :0 #偏移类型
' K7 f+ F) v) W3 J4 Q2 l# s - 7 e! }- T7 O6 \! L6 O; `9 }4 u! p- i
- tox_shift_x : 0 #X轴偏移量% E) I4 f$ \( j* M; c5 {
- 2 n& D6 |' L3 ~* K
- tox_shift_y : 0 #Y轴偏移量8 X2 {/ G! \9 [2 G
- - J# D9 W2 K; u- p* b( t0 g# [
- tox_shift_z : 0 #Z轴偏移量
复制代码
+ q2 b9 [( P2 J8 r/ k定义交互提示语句% ]7 p; e5 z% {( X; K6 c$ |) K
$ H) y# z! h) a& e1 a" M; t
$ I$ c$ D4 v& K0 X3 z- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"
( B0 C2 d' i9 k7 y/ X6 ?4 J# \3 F - % w- D3 ]: @$ [9 n0 Q
- fq 24 tox_shift_x "输入X轴偏移量"
8 L8 Y i& z* L2 \$ h& s - 7 D! O% e5 M" J5 f; P
- fq 25 tox_shift_y "输入Y轴偏移量"+ z( C$ z: X/ Q2 f& E+ L# Y
- , \' U% x8 \/ L! p" D. Q
- fq 26 tox_shift_z "输入Z轴偏移量"
4 B/ C1 q. B( z% [2 i
9 P5 r6 A( \, K7 ?) ~" S- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码
T0 F+ S; |; N; w坐标系偏移过程处理及交互过程处理" l8 R, b7 }8 g- u3 |$ t4 O
( r+ z9 Q' r) M$ T7 g; N, k# G. [) P+ ?/ n8 D
- pwcs_Shift! l& t! f( \# E4 Z2 c; E N# q" V/ u
8 G2 G4 p& V4 t1 [; `7 U8 U/ j- tox_g = vmap(tox$,rmtx1)6 M9 n7 \) Z3 c& E7 S
- U3 ~3 Q6 i7 |" b9 J4 @) @& C' m/ S
- if use_wcs_shif = 1,
4 o6 `- c' W3 {* F - [
$ P4 n: w5 d6 i - while axis_def < 1 | axis_def > 2,q23
; i+ u( W% Q- c5 W) H& y: e/ M - if axis_def = 1,
- L( s6 A" R _9 M: t - [
5 U6 H3 \; k8 y4 `* | - while wcs_shift < 1 | wcs_shift > 3, q27$ h8 k5 u4 l8 b2 W# ]6 z- S; U
- if wcs_shift = 1, q24, tox_shift = tox_shift_x
; d$ X w1 Q4 q - if wcs_shift = 2, q25, toy_shift = tox_shift_y
1 |) p) g/ r& }! G* G, U - if wcs_shift = 3, q26, toz_shift = tox_shift_z
( o% Q, P( T( V8 s& k - ]( S- t# m+ j! F5 R. c' I$ ~
- else,9 A8 ~2 N3 J5 r6 U& s* v+ E" |7 n
- [; t! j. a+ c$ p R# K6 W2 d
- q24, tox_shift = tox_shift_x ^3 Z- } Z3 D, K1 b5 c [/ S2 W' h
- q25, toy_shift = tox_shift_y
" H# ?. b W( [1 b1 @2 K - q26, toz_shift = tox_shift_z C$ c! ^' |4 O/ D: F Y: e. I
- ]
: @( a: _) } C8 g$ y4 z - tox_g = vequ(tox_shift) * m! F* A0 ]; }
- ]
复制代码 ! Z9 N* Y& U @6 U0 o2 ^' ]
在XYZ的计算过程中把偏移量添加进去,位置如下
: q! O @. U' z) I4 V2 `; x& y6 f I: n) C* ]
* C8 p' k2 K; E1 j$ f- pxyzout04 ]- \/ v1 c- \0 p; z' U5 A4 N
6 v) n8 P5 j. m: W& [, g0 x- pxyzout1
. V; ?; N! m) a9 e4 a
" s, z$ u/ ~2 t* h# U1 o4 y- pxyzout2
$ |4 }" u1 n \. B- u3 v3 Y* G
9 A' M6 R) z% P* O- pxyzout3
复制代码 , W% J7 Y* U3 _3 x* X* @5 }
偏移量的增加函数:vadd# j3 U, A! ?% e7 t* V( u4 e
7 `8 U& V7 o2 _/ n3 n4 p/ z K7 E7 R Y& r; U+ N& G9 {# X) Z7 f, H. V
$ A0 j3 _7 Z( c2 v9 |8 m增加2个3D向量,即相当于2个3D向量进行加法运算。$ H% }7 n3 }6 q/ q& K" y& [3 b
3 h8 H7 U3 _* z% L
7 Q5 k! V5 i+ V* e4 U; }" B
- {$ U* G% d+ B) i实例:( N* O3 x4 D. {
- pxyzcout0 #Toolplane Positioning
+ }8 Z' \7 }' {8 W. \1 t2 K - xabs = vequ(x$)- m+ j# H% O# J W
- xabs = vadd(xabs,tox_g)$ S$ k9 t) |) E# \
- iout = vequ(i$) * f! G, u! j8 w- j! b7 I1 \
- if rot_on_x = two, csav = -c$( L7 ?* ]" y& k9 a! C, x
- else, csav = c$
复制代码
3 J/ @, e! r0 g7 Y! f3 s无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化! d2 }* L/ q j6 m% f
' n9 F5 C' I( \: H& O1 y4 I, W
$ N+ ^6 L* \ `' s* d7 ^' v- pxyzcout3
" ]. V" \8 i- Y6 d) x - xabs = vadd(xabs,tox_g)1 C1 H0 g) I# f) [7 p
- ua = vadd(ua,tox_g)
复制代码 - P9 F4 d; J: p8 c" u8 X# Y8 {0 j
至此,坐标系偏移以增加到相应的点上。
n8 E3 O6 b X3 E4 f+ Y8 A* e$ f, R( m3 W& p
( ^: _+ F* U! ]
9 _' r& n) v' Y! x" `- N2 s4 T/ `& C- q/ o$ S# l
! D: a/ f; }/ z, u4 I0 P: a
0 s- P8 ^- G ^+ H$ C
% ] G7 q9 {4 H. e0 X
以上及部分代码可能存在错误,自行修正。( I; l+ c3 Z0 ^( r: u; N# o& ?
; ~+ t, {% z7 ^, g1 t1 c& G8 n# U" J: K, N4 E4 `' D+ S( `& G9 z
6 P6 {: `$ a0 K h) Y
( j: m8 ]/ J) E- E; K, [9 [1 b; Q! d, o
g! t+ c6 s% X) u E0 F) Y2 J o4 _/ `5 F6 e1 q, i2 V
4 Y6 T7 A8 H6 u' x
# q7 Z- V6 l% v1 m @
, c' Z2 _7 u" A/ x
+ x1 r& p( S) s" H! b& q6 d8 E( A& U1 p
9 k) E" R1 S5 j9 n+ w
7 Y9 x. ~6 ^( x9 V" X2 e& @7 v
|
|