|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。
1 T" c+ U0 f8 |
1 A# U* S" F" [& x/ p 1 Z5 o5 c. b4 w
; E# }0 \4 |* Y* b2 W$ O% @+ X
7 S8 {6 }( L# T* `; {2 W' _! e7 v% |
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
6 {9 Z# V, c: Y3 s3 A4 _1 w3 ^" b/ y& l3 @' p
# I6 L* j. {$ m/ E' [8 I% N$ L
6 H3 O% ]& m9 G. p2 J
9 Z( i, x& z/ Q2 |
" ?: z8 H2 ?; {# s2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。) g2 |6 J/ R0 `0 Y/ G
7 p* X \$ m8 r- G; u/ V. V
' C1 y+ d; _* Q2 M4 k4 t5 S
. D* U: q# I+ Z/ {那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?; K. K# {: ]5 k5 Y
8 x! J8 R6 D$ u* r: h K
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。* I6 ? S3 o% Y# L( T0 l" p5 U
* ]( D/ `7 @" k2 G: ~
4 _- B+ G7 Y; J9 G- b5 G, P
3 P$ @" C! v7 j' \+ h! r2 Y- T b9 Z, \ M( S! b
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。( N, W& x8 I; H
% f9 j+ J0 ~! E- n* U矢量复制函数的用法如下:( P) y) e) m. q3 V& s) e
7 q6 E0 [! d% D' l- W; l
& ^. [9 D2 c- Y+ X; s* U
( ~0 S$ j% ^/ \1 u& v+ M
# V# N( h% O* [, ?6 Y; g8 i" A# } e, ~) T) I0 C
这句话的意思是return的结果值等于当前x$的矢量值。
! {8 |* @* V O) F! K
: h! E2 H J" |$ A4 I& R. M! h: N& g; z( p0 f1 S' C- r
5 @* j; j- ]) C9 ^, W) z0 g; f) a( b8 I4 U$ \+ b- Z7 ~4 {$ ]$ X
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
& F' Y, m5 t# u( E$ @! T
7 `7 M) \5 `3 S, G; A9 Z定义数据格式: O! Y7 V; c4 f5 d! N
" p; D) v8 o- h }, f
2 z3 c2 j- a5 s7 |! j
- fmt 2 tox_shift9 W2 f* q9 l* {6 c8 q- k8 o
- : g( V+ \- {9 i& Y/ G- B1 |& d9 q
- fmt 2 toy_shift& h$ m9 F8 t8 C8 T2 [, G- i% B
- 8 E8 Y6 T) n) z; [: S9 J$ c q+ A
- fmt 2 toz_shift
& L8 L5 H6 U; x$ A/ ~/ O
" b% t$ H+ z* M' r- fmt 2 tox_g; ^, i* D7 J$ z6 F
- & S" V' @3 U; F0 r# G% F
- fmt 2 toy_g
8 F6 b0 g: H% K
0 q1 f! F& W: Y# n8 X" e- fmt 2 toz_g' o9 m6 T& l# M# I, p% _
6 p% L7 u2 [( Y- X" _$ e- fmt 2 wcs_shift
; c% H6 o( m% F& E) H6 X5 G - ' v7 T9 H, D0 O0 y v$ p
- fmt 4 axis_def
复制代码 " s, v. z6 v/ C5 X5 Z B
开关及初始数据定义- g; q2 ]+ {2 T6 N
5 P4 u y* ?6 o' r* d0 }& H
7 n1 P* i8 P4 d- use_wcs_shift : 1 #坐标偏移开关% p c0 D; @ s$ k0 h
* P& }: B( n7 J* a5 `- wcs_shift : 0 #偏移轴
" T E, k/ u8 q- Z
+ L3 c: {7 R7 I& o# r- axis_def :0 #偏移类型, o: f1 ?& Y$ q( z8 \5 V4 W
: \9 F3 Z* \3 w @2 |) I7 e- tox_shift_x : 0 #X轴偏移量& h5 T; Y% v4 z+ j' P. F$ p
- - M6 F* ?4 L0 t" C
- tox_shift_y : 0 #Y轴偏移量
, |# f; T/ J1 j9 ^1 i/ N
3 t$ L9 k9 h- l- tox_shift_z : 0 #Z轴偏移量
复制代码
% e; Z- s9 c$ Z2 y. i定义交互提示语句 U$ \" h+ ^, s& X
0 e& T/ C# j; j5 K7 w6 G4 m" g$ g: a
- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"/ Q& O3 p. v" |) s% }& y3 V6 f
7 e7 G% z) p0 L8 S: G+ j4 w7 x- fq 24 tox_shift_x "输入X轴偏移量"
G ~+ e1 I/ \ s. O c
- h3 ~$ |- c* L6 D" \- fq 25 tox_shift_y "输入Y轴偏移量"
" {6 s. X) L% c8 u' B - T5 Y$ \6 g: E0 Z. E0 w
- fq 26 tox_shift_z "输入Z轴偏移量"
8 t/ s, z H" M7 t4 T, I# F) p
2 Y* w5 t6 D4 z# F- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码 ( F4 n/ c( P* E) R r5 U
坐标系偏移过程处理及交互过程处理
' p, E4 ^" Y) n* U# T4 q3 {1 C! ?! Z. o a& [0 `5 ], u
4 S. K3 a0 T8 X# P- pwcs_Shift6 Q! Z: l4 Z/ v2 j
- g& }1 s5 L9 |! d, O# v: I1 g- tox_g = vmap(tox$,rmtx1). [& @% P% J) F: V# B [9 U$ c0 u1 t, B
: |% j; t V$ m. _3 m2 o- if use_wcs_shif = 1," t9 p+ ?( f8 a f" T! C- u+ G. Z
- [
% \) n, {: k1 h% A6 s3 p. n - while axis_def < 1 | axis_def > 2,q23/ D& n( g) n) a$ s) T6 S. \
- if axis_def = 1,
6 Q7 e' Q) H0 E& u - [
( g) V+ }! K2 _) q) a - while wcs_shift < 1 | wcs_shift > 3, q27
" g1 f! v# k1 B4 m5 C - if wcs_shift = 1, q24, tox_shift = tox_shift_x- `/ K# o1 \5 |& `- \# k6 b
- if wcs_shift = 2, q25, toy_shift = tox_shift_y
) [, V! I4 D. m) F6 a- k7 A# Z - if wcs_shift = 3, q26, toz_shift = tox_shift_z0 Q) ?6 t; l( |: i
- ]
9 q! b3 V/ N8 n - else,
8 q/ e& R& O5 S5 G# P4 a4 Q - [9 o" d/ O, y' I# L J* x- P3 @! D
- q24, tox_shift = tox_shift_x
$ \. t: j9 ?. K, D% ?+ o7 d7 d - q25, toy_shift = tox_shift_y' j5 o3 F, j7 }7 K8 g5 y0 A
- q26, toz_shift = tox_shift_z
& A3 ~& b4 Y& f6 d- b+ n, p - ]
, d2 P3 G, B* V) u3 p" r$ x9 J - tox_g = vequ(tox_shift) 0 y @" _! W; @$ G+ s4 u
- ]
复制代码
b3 v7 O8 ~; q在XYZ的计算过程中把偏移量添加进去,位置如下
4 w$ L2 i8 Z0 F; }; p
8 ?% _& U4 R& B: `$ }( {5 R' r
- h! P, \$ [% h1 [. e- pxyzout0$ f: V, p' y' @! t8 O
- + ^: Y( Y4 U1 B& ]- F1 `
- pxyzout16 j4 n( Q) ~( W; r
- ' s) {+ _) o2 A" q- a# q
- pxyzout2' ?. Y, v7 w+ o: f; a2 h7 {9 [
# t4 K; g: p: _, l- pxyzout3
复制代码
& @0 @( H' H! p! l, A偏移量的增加函数:vadd: g i# U: q( f9 R8 i. c
1 I% j' d% [9 d l; p& I
+ F- w( `/ ~3 S ?; j8 s: Y( r7 B) ]1 m
增加2个3D向量,即相当于2个3D向量进行加法运算。
- Z4 Y$ G' A, ^. _$ Z+ W1 x7 V4 n6 M( B
7 F" ^) Z0 ~# N
+ [' c1 ]4 ]9 u' v; R# i实例:- Q2 m6 F& D- h7 e3 ?, \( h
- pxyzcout0 #Toolplane Positioning" u# ~6 t* t# L" Q+ `; K* i
- xabs = vequ(x$)/ B& z( T/ b; w1 L9 P ]
- xabs = vadd(xabs,tox_g)
4 r5 c* x# p& f1 G8 f - iout = vequ(i$)
' v) |; N! J$ x* x+ L3 F; D% {+ e - if rot_on_x = two, csav = -c$
8 b' I9 H) a0 J! c8 J% U' M; O - else, csav = c$
复制代码
3 t2 w5 R: { u+ z1 f, x: G无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化
1 s) o, q& `/ T6 z4 q* W0 M: k, |9 l0 L+ s6 r; ?: r
3 e* C! _+ I8 Q% f$ G; D, p! d- pxyzcout3
& V0 z ?/ x v- Z; O7 g - xabs = vadd(xabs,tox_g)
3 t1 n$ g* x, z' o - ua = vadd(ua,tox_g)
复制代码
{1 n5 x2 ]3 D% B5 R至此,坐标系偏移以增加到相应的点上。' y: X6 u5 K0 ~, m, Q
8 l+ G5 |. ?, r3 S+ _; G
/ P5 r7 E2 j! `: P9 ]( x' |
3 Q( Z& \) [2 v6 g3 k7 x3 y/ m, s8 ` X2 h* S) t4 ?
, {$ A7 r2 [( _ X9 d. S
% c7 n/ D$ Z! r
5 x$ f# K9 i r1 l' M以上及部分代码可能存在错误,自行修正。
/ B- q3 Q& H- ?8 X! I* e: M- Z
# K5 t+ S/ M6 O# E
/ ?3 ~6 v. y% t( f/ W2 L. a, f8 T2 G0 H/ V) L% W
0 R1 Z' I: @/ Q) Q3 \
9 p) B, ~& O' W6 D" E/ z' K
. D$ X5 K0 H9 R$ \7 W- B5 |8 l$ o1 c7 `7 {+ L. y ^
) o3 B" e4 d; \/ I4 s8 _# h$ v+ `5 _5 q) J
1 M& X8 F8 T6 P$ u
% S5 M' h+ N6 L; H; ~1 f T0 Y- i" y% l% z# n ?) w
( I& n: S9 b3 S
& M7 G! L; u5 r0 {3 @( l0 F
|
|