|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。( t1 M Z' S- A& b/ m, X5 h
; w) k! ]9 m# A2 |* |* U- H
# f3 ^ V% k! C
4 U3 O& T% G9 Q3 @ X) d
* i$ X( b+ U$ P) X7 W) J1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。- D. N! Q& U( ?
n+ k1 z0 v) t' `7 v
6 N* S z9 c6 y9 b' y8 N \
. ?7 z0 |5 w/ `8 X% M' c
/ w% H& r' f& Q
. R; r. o6 e# u6 j- h ~5 x2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。 u% f0 k7 J/ b7 M2 Z
* Z& @# \* f* w- x7 r4 y) L
! n9 n% Q4 b: k
. D; h; H; G1 Y那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
* p$ J5 @! z/ ?0 ?- x$ R0 ~* [
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
. a$ N, C" _1 s/ o/ q% ?/ `) T; J/ N3 u. v$ S' c
$ S4 X* Y1 y7 r! [% x% e$ r2 H+ d' t" b* d: F
6 N3 x- c9 i6 c0 l: N5 q首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
* r6 z5 o4 q0 R* n8 p7 P! a% p# I9 }4 p5 c8 s
矢量复制函数的用法如下:
/ B, [+ w9 v" U1 R5 y
# c4 h1 B0 W1 e' e; f& w! f" z) n4 b* V2 X1 { z1 [6 {% ^
* q B: N% u* r! q( p! l& k& z
& h6 c0 R6 Y4 v/ r ^" Z" J* @! v4 m0 C2 x; ?+ w
这句话的意思是return的结果值等于当前x$的矢量值。
; `* A$ `" y8 `: [2 @
2 q; v0 M4 i, }6 m% u0 o p3 m. ?
- R# C: X/ A; W Z
- o2 Q9 w) h) \' W/ N同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。' K8 T* X, }! p. j. P3 S" b7 p/ M
6 Z% @- `; q5 r9 D
定义数据格式:& Q" P1 ? [$ L. T9 P1 q" h9 O1 X9 q
% d* S, |' ?& s
' c1 m/ e! g( x& \% A; l0 c
- fmt 2 tox_shift
2 L! A* R( H9 P% C i4 ^
7 T+ [" m5 [. L" l! N; _# @2 V( o- fmt 2 toy_shift
& ~" }9 j( Q; v" F' o& C+ a4 v
) O/ ^. K5 F9 f$ s- b" M- fmt 2 toz_shift" N z) @0 o% M" x1 w
- 0 L1 F* W2 T- B) s1 X7 f; V! I& D
- fmt 2 tox_g
4 |$ X8 m# w/ U# z' T. V l
- p% @- C4 f `6 ^* N- fmt 2 toy_g
' L, T, G2 |" T7 k1 g1 S/ ~3 ~
4 y9 B4 x7 {* [9 A" Y" f$ _- fmt 2 toz_g/ _& |, o6 M0 e1 e& ^3 ^
- / r F5 o: t- X( I
- fmt 2 wcs_shift
5 p, f) z" ]+ `4 s9 q0 P4 `# A - ( A* W4 t$ T" H
- fmt 4 axis_def
复制代码 $ @5 X' T+ w- }, \- p
开关及初始数据定义6 X# |% _! {& Y3 x. Y4 Y" F8 x' R8 i
6 d2 l( _4 k$ y+ L
' v) [, V3 W5 i( f/ y; M6 ?- use_wcs_shift : 1 #坐标偏移开关' N3 |# y- ?$ t. b( T
4 B) r# t7 _! q% K+ h) y, L- wcs_shift : 0 #偏移轴
- K- o2 {8 j5 u
/ A( p# ?, p5 H$ y& s' z0 R) g, l- axis_def :0 #偏移类型' g" ~7 Y% c& r; S+ H& D/ i
- ' y0 N, N! ]" D5 G
- tox_shift_x : 0 #X轴偏移量
" Q: F8 q1 T; L/ d% K \8 A
6 _4 j, v# w5 J6 }- tox_shift_y : 0 #Y轴偏移量8 K! O* S2 z: }4 C# z! Z/ S
- % V& E- W$ r8 o+ Y) R9 U
- tox_shift_z : 0 #Z轴偏移量
复制代码
6 g6 L9 k0 V+ c3 d* L" G) i定义交互提示语句
$ N; A' H, V8 t" y
& X8 |8 z2 }' C9 g3 @: x# z8 V8 T% T7 `7 ~! P0 _1 \, ^" V* f
- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"
4 s% P% T2 ]/ m+ q, G - 3 ` T2 Q7 U. I
- fq 24 tox_shift_x "输入X轴偏移量"5 X5 b+ f0 {2 B1 z9 M- h
- * d3 F6 h/ Q9 N+ R2 E. j4 t3 w
- fq 25 tox_shift_y "输入Y轴偏移量"
) \2 X$ _6 i. O, z' G0 X - / j; y" _' {' h+ G. R/ U/ y( J
- fq 26 tox_shift_z "输入Z轴偏移量"3 A3 X- {1 n1 d9 m/ r
- - A. Y; s4 i q9 `3 f
- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码 , u2 M8 u& g( z9 T' ~
坐标系偏移过程处理及交互过程处理 k) R9 n0 N# b4 G+ y# h
5 D- Q; U$ R7 I, ?* u6 v
9 u6 d& }, _! J' y) t3 Z, h
- pwcs_Shift+ p2 V4 M4 l% X1 I k9 A
- 4 M4 R# \2 g: T$ n! ?6 L
- tox_g = vmap(tox$,rmtx1)( n* C: d$ w1 ~9 u" c& S
- ! p( w: a5 a, B! d
- if use_wcs_shif = 1,
' S# s4 Y9 ?( R {+ W, _ - [: H3 p) n' s: S. S) s- y
- while axis_def < 1 | axis_def > 2,q23
' ^ m+ h' Q# c/ h% S$ { - if axis_def = 1,
/ }8 R% K' m5 u# W) F - [- J. Y. x5 a* }* T0 b* ?; u
- while wcs_shift < 1 | wcs_shift > 3, q27' K/ i6 e1 J+ q( E' R T8 }2 l1 d
- if wcs_shift = 1, q24, tox_shift = tox_shift_x
. Q, \0 S+ Z* [( y' \ - if wcs_shift = 2, q25, toy_shift = tox_shift_y
5 I7 T% q. L" m5 q$ M+ K - if wcs_shift = 3, q26, toz_shift = tox_shift_z
* E, \8 W3 l5 K8 P7 Y - ]
- P3 @' h4 w/ }: T - else,/ w0 ~8 h9 D: H- g+ u' B
- [. L9 w3 @* f2 I4 {! T
- q24, tox_shift = tox_shift_x
# B- `* a+ q# w6 J( J - q25, toy_shift = tox_shift_y
3 A, N) `2 o( ^% D; {. t - q26, toz_shift = tox_shift_z
+ u5 @2 D# s, k; S - ]
/ \7 v7 \, e) T7 E - tox_g = vequ(tox_shift)
6 R, o9 |( l" u/ z1 x" ^ - ]
复制代码 ' E1 d. @) P; @
在XYZ的计算过程中把偏移量添加进去,位置如下8 O: K' r* L) }3 Q
9 r% L: g" R8 y8 p7 f; S! }+ I b7 [3 e7 }1 L. j. p, B! @; A X
- pxyzout00 @0 H h% A$ X) U( M' [( r
- 6 D7 S. I9 ^3 b5 C
- pxyzout1# b" f9 D8 D$ {$ W
6 h/ }3 H y8 K/ n5 h0 Q$ D" m0 R- pxyzout2
- Z0 L1 j; `* M! B" f - 4 o0 ] o. K2 Z O2 w5 \
- pxyzout3
复制代码
. R7 i$ t) v* o$ L偏移量的增加函数:vadd
+ s4 t R, ^. j D+ V
9 r$ p7 k5 O/ @0 ~( B% h; S- D8 z( b$ ~) m1 J/ r4 ]5 a0 j) \
, M0 W) K: Y# y5 I; C5 N9 `( X
增加2个3D向量,即相当于2个3D向量进行加法运算。
: ?2 D8 z5 L" H* g7 G2 X+ y- b) K8 |2 j5 N4 E/ ^
$ l0 o: j0 x3 L8 L$ |
: c) M1 u+ c6 E0 h3 _& y1 t
实例:: d; }& f6 \1 \' B4 {. R5 p7 ]$ p
- pxyzcout0 #Toolplane Positioning- x6 H. C% l8 I. M
- xabs = vequ(x$)
! b/ e6 I+ X5 I6 T - xabs = vadd(xabs,tox_g)% T: P/ H3 r8 T- ]* P6 h
- iout = vequ(i$)
; D: i- i. I+ r5 { - if rot_on_x = two, csav = -c$
+ A }/ |4 R7 Y0 `8 b - else, csav = c$
复制代码 " Q, g1 ]/ O# J
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化
8 b: m: y. `0 p
; k# y [7 @3 a0 p$ x, C X8 R
1 m% \8 Q( X0 A. b% @- pxyzcout37 e/ J7 @, ` m' n0 G
- xabs = vadd(xabs,tox_g)
7 T `' b5 |" A - ua = vadd(ua,tox_g)
复制代码 4 t! H' |. z6 R
至此,坐标系偏移以增加到相应的点上。
/ d( v% _5 d1 w2 n0 i
1 S* w9 D6 V U
2 v. S. |9 p \
/ F% W9 X: d1 o- d1 p9 ?) R3 [2 D" h. G/ Y
6 L3 O2 j$ b! q/ @: O- l
" j3 t& z+ a5 S/ }* l% g! r! }1 F
以上及部分代码可能存在错误,自行修正。2 [6 C- M# ]) V B* Y& Z7 u
: i' s3 t$ i5 K6 o% m9 O
' P& ?9 S6 R" T" [3 C2 O, A/ ?0 E+ O
) W+ y2 E* O9 W/ {& O. w; s# b" T3 y* E
( r5 s* I! Y6 j5 y1 s
4 A" w, }" @2 T1 t; A/ F8 b
6 \) v& G6 P: H c' X& \6 O2 H: H
4 t$ |0 s( k8 Z K v# m9 j) a0 f9 g4 k5 M3 I
" F5 X3 ?( S8 C3 _8 d
! w( f/ b" }3 [+ M
+ ^. ]3 I. i" X* J, [% ^2 j. Z3 w6 l2 \, l* W0 e
4 M" p& \9 e# o. f$ M8 H7 L
|
|