|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。& D/ ^# F* X; T# z+ F
. @9 E: g; M) a1 `+ K: {
# i& f3 U1 i$ w4 i) A5 h
. b$ N; I' f, q5 w* r9 t* a# S4 s- f0 U' Z
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。. }6 ? k- u9 B; h) G
) K+ G5 i7 s3 {, f* b% p& K+ X5 x1 Z" D& n9 o
7 ~9 B4 W" ^" i1 w0 g* D0 o" M b K1 p" i8 O
* w- g) y8 u7 p' r
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。; x. u1 B4 Y) f" Q
! u/ \7 j6 ?" r; a. x G% g' E1 y% E$ W( P2 Q5 S. S
2 G/ n. Y+ }. z) M
那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?* x1 }* d# o9 A/ e% D' u! U% N
, ?5 w) N. t9 l0 w0 u: W: z' x下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
( o, B5 D+ r* a- A+ a2 p
$ w, s, p6 t( V' P) O0 N7 c* O) s, N, W2 l" g
$ b2 i4 h0 t8 A0 H$ z9 k- t2 i) ]$ _" b5 Q1 s2 [6 \' D/ Q9 \( `" b# S h0 k
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
, V% W$ s( M- k3 Q$ n$ `8 P
g) ?. I7 p2 T/ m G矢量复制函数的用法如下:
+ F- f# X1 f- a. M1 r# t" T' u8 Y7 L. A0 B% ~
: Y$ @: t" y" j8 H. o9 X, w
' C7 ?! \ k1 K# J- ?
- M6 h6 S4 o& @) F2 m; t, [
, E" g4 N9 ^( P) H9 e2 {7 V/ M. e
这句话的意思是return的结果值等于当前x$的矢量值。* i7 o& Y+ V9 G& {# F
! l/ X/ E2 V; n# w/ m6 I3 J& W
# V8 _2 o; @7 D: t8 u6 r9 L: j( [5 ^
, N! G9 D4 T4 h同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
/ b& S6 V) u2 H7 ]' k3 C: o& L* }" F @( i9 d9 A; R; G' \6 S
定义数据格式:
! N% z; |* w7 A7 U1 X" H7 F/ e3 C. \' C& n! ~ K4 F3 m8 M
' |7 ^' v9 L _1 }9 a- fmt 2 tox_shift/ K6 L6 b8 o0 [( H# f* a4 [
- % q* \/ k! t& ]5 e
- fmt 2 toy_shift; y; \# U2 Q% Z$ i
- i1 @" z* m% J6 U* _ e. o
- fmt 2 toz_shift
' G6 w, U4 P4 ^/ g
+ F) D# U' i* v2 n2 c# F- g- fmt 2 tox_g9 T# p9 J! x/ M
- 1 c* v" Z- M Y. r$ d' ^
- fmt 2 toy_g5 d$ S2 ~) l+ d: v4 M$ f' `
- - a4 `& y# d2 [/ i: j
- fmt 2 toz_g' s! b) p- b! E6 s9 S
8 w* |: L+ M, E! e* X9 P3 ?- fmt 2 wcs_shift
; H: w, M* S/ y! ]: p - ; e; x8 B7 `- k. m. }$ l
- fmt 4 axis_def
复制代码
. \. F4 h5 H* Q7 q3 e U" ^! Y开关及初始数据定义$ i% }1 _2 o1 n+ ~
5 h) c! Q; P4 o6 P M( ~
7 R1 q, x- {( W8 V- use_wcs_shift : 1 #坐标偏移开关
2 n0 d, T X9 v - $ @9 u/ V7 d& l2 O! U
- wcs_shift : 0 #偏移轴8 H# Q& S" [. J* J% ]
- + D% k# `1 A, Q% D
- axis_def :0 #偏移类型% u# `, e# [% A9 v" m
- 1 f* s% Y# w" U( p+ J+ E, y
- tox_shift_x : 0 #X轴偏移量0 b4 V) _1 @+ Q
" w4 E/ [3 w$ Y( `; { ]- tox_shift_y : 0 #Y轴偏移量
7 x/ E; q' N) T/ k! N& T, a
3 _% o) O4 ?* W; @% ?- tox_shift_z : 0 #Z轴偏移量
复制代码 ! F+ ~% h! X! { |0 I/ p! a2 W# M
定义交互提示语句3 C D1 e9 {& Q5 [" R, v
9 A9 Y5 \8 |! g6 @2 t; l* g8 u3 |
- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"6 t! l9 E- }7 ]0 b/ [
9 Y' m9 ^+ _/ R, t- fq 24 tox_shift_x "输入X轴偏移量". W) V n4 c0 S. ~* G, h* O
- 3 V7 n, N! S0 Y1 _; @$ ]% `) ?1 p
- fq 25 tox_shift_y "输入Y轴偏移量"5 I; ^( G1 u+ w5 A7 ?8 W+ i- s, D. X
- " d; X D9 H7 U7 w% B, A1 M
- fq 26 tox_shift_z "输入Z轴偏移量"- }0 W" `# E7 _/ z! N
# A& x6 {( |' P1 V$ `. H- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码
" A9 x% `8 c# U, U' C! U! ^# @坐标系偏移过程处理及交互过程处理% X0 M6 k2 j" t9 X4 j" l
( |" N9 m8 x6 K+ Z' R, m+ r: P9 C/ h8 m/ z7 O: z
- pwcs_Shift4 k6 V* }& \8 G- e+ ]. f( U) U, t2 M
- ! e+ a+ \- S" k5 @( z
- tox_g = vmap(tox$,rmtx1)4 g6 O* I( o) T
! \5 F. e/ k7 R) }; W- if use_wcs_shif = 1,$ Q/ ?+ L8 J2 r$ s: O7 L n) O4 r
- [1 P% d. ?' f$ V; J3 }, s
- while axis_def < 1 | axis_def > 2,q23, y4 }) \# E, ~9 m/ {
- if axis_def = 1,
# s- d" O, ?% @# ? - [
' G/ n g7 X+ j- e8 A9 y - while wcs_shift < 1 | wcs_shift > 3, q27& W. e; k& d# Z6 r- d
- if wcs_shift = 1, q24, tox_shift = tox_shift_x, C' A ?% M9 C. m# c- V$ X" \$ i# h0 }
- if wcs_shift = 2, q25, toy_shift = tox_shift_y2 N! s# Z: M7 z* @
- if wcs_shift = 3, q26, toz_shift = tox_shift_z
# C0 N, c9 K) d* c - ]3 S1 P: H4 c! v5 l
- else,
) k( a& C! H" c, Z0 C; i; W. j6 Z0 X - [: t X( e" ?) h) @
- q24, tox_shift = tox_shift_x8 n: e. _6 M# i3 ]& }0 P
- q25, toy_shift = tox_shift_y
5 j$ M" T* A' A4 ~+ G - q26, toz_shift = tox_shift_z: K' C6 v$ p6 O q& t ^
- ]5 A7 X* Q) I7 K/ j, f0 |6 F
- tox_g = vequ(tox_shift)
5 H" f r" C3 D# M/ V1 i6 z1 u: ] - ]
复制代码 . A' U6 n4 h/ o& J! h* n
在XYZ的计算过程中把偏移量添加进去,位置如下
& V& l6 Y. f" O. @2 x4 U2 z: [0 o
4 A1 G2 E( j4 r( j* S7 e/ q
! A9 L: z& ?! f- N+ R1 U$ {- pxyzout04 B5 y' R% V8 r/ {- }
3 G1 ? h* j# x. D/ l- pxyzout1
# v5 C" m) [2 M% L# b" n4 s4 R) ?
7 M! }+ Q2 B: Q( l8 T1 f; [7 {4 p/ h- pxyzout22 c& S/ o8 [% z8 d. t4 ^% |
) ~3 ?9 L- h/ ~/ f/ v" D3 J. g- pxyzout3
复制代码
) L4 M/ k0 r/ L7 X/ P! |( W偏移量的增加函数:vadd
- i' ~1 g5 G% I9 ~! t/ d0 a) n9 K7 I* Q, [# }4 O2 R! v
: R2 g' C0 o' C( s8 J4 j+ P/ [
( i- E1 \" U$ X
增加2个3D向量,即相当于2个3D向量进行加法运算。$ V) g6 P. k/ X" x: k+ i1 Y2 ]
; ? J1 W& ]0 w# ?; Z# a# e9 Z, n8 _6 } t) ~% |1 ?
% C: F- ?' O- R# O7 z7 X
实例:
) ?8 s4 u @4 v, p5 o- pxyzcout0 #Toolplane Positioning
5 m# W: q1 k: ]3 m' d8 Q5 t$ p- W- _ - xabs = vequ(x$)
2 a" R" B# c6 W$ o( J7 O - xabs = vadd(xabs,tox_g)6 K+ {6 G( k% Z- i6 F) x
- iout = vequ(i$)
, c7 @: [. K, V6 s* Y6 X/ A - if rot_on_x = two, csav = -c$
/ n+ W! v5 u, T7 f" v- q& U - else, csav = c$
复制代码
1 B* e. ~$ C7 m6 k( `5 t# r( ~无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化
3 y( o$ G' z" c) O9 t2 s' c0 l) b* L; q9 |
) a: M% n% ]$ O [2 _1 H- F- pxyzcout3
* t1 B& T8 e' n7 s3 |7 ^7 s1 L - xabs = vadd(xabs,tox_g)
' Z! p" q6 e* M O; s9 T( I - ua = vadd(ua,tox_g)
复制代码
- U8 l1 H4 E, J" p% b至此,坐标系偏移以增加到相应的点上。
- ]- i5 E! a4 U8 E" s* X& o6 l9 W8 ^& b
( p! d0 A' b- x2 n( m4 k2 i. P; n, Q, O" H, n6 I1 d
9 U2 o- ?, {! f' P6 J3 m: m" H9 ]$ H: q3 U% }7 L% d! X5 K1 ]4 o, `
5 I* D' g9 A+ P0 x- A* T/ _, B3 b7 Y; y/ y$ J
以上及部分代码可能存在错误,自行修正。( [: C6 j* E% [6 v5 h3 k
" ^) c; z" |8 ?* B2 U6 w- O' J& f9 @- a
5 Y. Y7 A! e5 T1 T8 u i
* M, }9 C2 @+ G. w2 G J. {7 ?# s/ k
7 o1 p: T: S5 M( a# W# f1 }
- O5 _6 x6 _. Z8 i M$ A n4 `
' C& v# Y; f5 w4 G+ N
) u9 X! g" p! z s
! s6 y: k$ M8 [
+ S, l: A/ m$ P4 j
4 ^ o5 z+ A: M! o
) {# ]7 Y) Y2 H' U5 f
! f$ d( C( F) I6 O' m- o
3 `. S2 {. h0 j1 b2 H |
|