|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。) W; r* B' M3 O7 a5 g7 G
; }0 c& d4 F, n2 J4 R- e: h5 w& O
( U, S! M# i+ m- U" Z' ]4 _
3 |) G$ d. w4 `) ^$ O
1 O1 t6 K' }: \ ^) Q
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
3 S! u0 Q: ~& s9 u. ]( ~8 U) G1 Q, R, z) {7 N) M
& u$ [' e4 z0 d {% f
* L. j. E3 |6 x# ^1 W9 h n
& M4 n7 i8 w2 A0 N" O/ M0 P" E" }% E
% n2 K- ?7 K' W: {, n* B3 \' b
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。7 |3 F& \1 k3 c& z6 ?
7 ^3 O3 n# f! J5 r4 I; k% P8 U: v9 _3 B3 D, ?0 U
/ r' M5 J' d# Z, \2 \1 y
那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?2 w" S4 l1 q. b! Q4 q. L
E# ~' Y/ O+ r0 d' g
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
3 u7 q- K2 V9 s( s7 `( F% ~8 R
& ^; E' P* P" c" d, v4 g
. q1 X% m" ]8 C/ |" j0 r5 a+ L
/ ]# q1 `7 |7 w' i
% z1 W3 q( I. X1 ]) m首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
! @5 n5 |' H) v2 y
, T" v- z& J# n( F! W# M矢量复制函数的用法如下:
8 B: b0 L4 N6 i5 f) l% A M) P* t: H9 K
" Z- t( j% _3 X8 j. f6 _. G
& ?( p* {6 n5 F3 a1 v
) b, S( N# ?7 H9 N
3 X& b2 e8 u! L, d: E8 Z2 z+ _这句话的意思是return的结果值等于当前x$的矢量值。
: `4 q3 r+ z# [1 V5 {# t, h: o3 k5 u
" Z% n6 G9 a$ l1 o3 Z0 B5 F" L) T' a4 | b6 e
6 y i8 u: N/ _& N
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。% P7 u7 T" q, m9 W, @
+ F& ~: {, g9 U/ x) r7 [4 n定义数据格式:
( s- O5 \& m: C: C
4 t \' c* L8 E U
* V0 N! k, H3 u- fmt 2 tox_shift
' h6 G, m" E1 o# j - + f4 G- g3 Y: t- @ I9 A+ S" ?5 y
- fmt 2 toy_shift
& b. i5 ?; R) ?9 ]2 l- F, I - 2 c7 S# [; S% q8 y0 q
- fmt 2 toz_shift
4 S6 n4 g) @* X; V' w
! U& k* \" e# x$ G: @- fmt 2 tox_g
/ b# s: k. _( n9 a M
- L: R9 ]; [: |& `3 r$ e: J9 a2 T- fmt 2 toy_g9 T3 {; V% c' e9 O" w3 @+ A
- ) K, a* o9 z3 {4 I' u, J/ b0 ]1 k
- fmt 2 toz_g" f( h. {5 D% O6 P- f/ w5 T* ^/ T r
& C0 w) Z7 u9 p9 y1 j- C- fmt 2 wcs_shift) S; R4 r2 D ~
- - x t/ y0 W) h; k- f
- fmt 4 axis_def
复制代码 . U9 B }( E! ^& U( y- {
开关及初始数据定义
# R% q1 A0 A7 o w! q. B
9 J" i& K. o. s
6 g2 A) `, |) k# M- use_wcs_shift : 1 #坐标偏移开关
?! Y" Q9 E) A
+ I/ _' s+ }& D/ R, _- f- wcs_shift : 0 #偏移轴5 I9 |9 y- V* c
- + U( K" Q. h# w$ f& P3 ]
- axis_def :0 #偏移类型& Q9 s: J1 [ I
- 4 o: P. \3 w2 D. x( Q# D% E
- tox_shift_x : 0 #X轴偏移量
: V" M& ?) O2 E+ H: d* v' O/ O5 S
) t. C" N& p' `$ {- tox_shift_y : 0 #Y轴偏移量
: ^; }( l& }+ y# q9 M - ' [$ B* c( b8 H+ o0 Q
- tox_shift_z : 0 #Z轴偏移量
复制代码
0 l7 d0 I( [' T# \) ?% v) D/ ^/ W5 n定义交互提示语句, ?* H2 f% w4 |* R2 [$ d5 T
. ~: O: u i+ e/ L: k5 W1 t
4 D: p1 \% }6 O7 p8 b( M* i- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"8 T# v6 q, D. N& c/ k. C
; Q8 |- B3 m0 q" b( H- l/ [9 f+ T- fq 24 tox_shift_x "输入X轴偏移量"! ]3 X& K1 r T/ ]8 r' S+ G! x3 {
- " l+ |8 I% f( {' G
- fq 25 tox_shift_y "输入Y轴偏移量"
8 @/ ]- Z5 Q& T* U
# f: S# j) ~4 l- fq 26 tox_shift_z "输入Z轴偏移量"( K5 |! l1 M( A. V: V5 @
% D2 v, S, k& o3 G8 r! B# q- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码
7 }1 i: a6 N o1 K# F) v, m坐标系偏移过程处理及交互过程处理 q3 S. |% \1 ^# |
* z5 d0 m a( i; d/ l' h
, j2 y, r5 U) X+ [* B
- pwcs_Shift
+ K K6 `, e9 V* s9 g" q4 ^! z1 Z) l - / @( I: u- Z( @
- tox_g = vmap(tox$,rmtx1)
6 s: i/ L. s# u5 d6 j8 ?) b P
+ x* A4 }; }& _1 f- if use_wcs_shif = 1,) j6 a" {/ F, O, _# E. _
- [
2 R d; W+ \0 G5 G0 ? - while axis_def < 1 | axis_def > 2,q23) ~! D/ x6 f: u6 y9 l
- if axis_def = 1,
9 c+ h! O2 j) W1 ~ - [+ B. @4 y0 o5 S' F3 Z
- while wcs_shift < 1 | wcs_shift > 3, q27
- X+ m1 d. b/ f" E9 ^9 i - if wcs_shift = 1, q24, tox_shift = tox_shift_x
4 ^4 u( Q. @4 u% ?4 H7 U - if wcs_shift = 2, q25, toy_shift = tox_shift_y+ s1 o' s# T4 i; V
- if wcs_shift = 3, q26, toz_shift = tox_shift_z
0 r# |4 Q; f( D& M6 k. f' N - ]
/ ?4 A3 q7 h7 N0 r; @; c" X - else,
5 l* K; s9 m8 ~8 ]( O - [ C. V* n$ |0 B- _
- q24, tox_shift = tox_shift_x
4 x6 i5 I) |9 B e& v$ _* V3 u) c - q25, toy_shift = tox_shift_y" U, G0 |3 [" Q/ Y8 e/ u( t: X5 d
- q26, toz_shift = tox_shift_z
A: V' [, s5 ~1 [ - ]
( {8 ]0 }1 v/ [. m' S - tox_g = vequ(tox_shift)
) Y$ j* I. j6 R$ ?% U. H" G/ A - ]
复制代码 . c; `0 H9 p* V' C- p: q; S
在XYZ的计算过程中把偏移量添加进去,位置如下
* j( S- d+ j" I# l7 ?! C" n8 r3 k9 s& H: Y& a
/ p! q! x# \4 }4 i7 K- pxyzout0/ g( l" m! f3 D& U
0 d, M$ Q6 A7 O- pxyzout10 y$ H2 v5 r; E' m3 w, T# w; \
" g- }" S8 }& k5 l, k$ K- pxyzout2
# q% K9 L- M/ T) x - 2 Y5 X" ~' k, ?0 o% X* A% S6 c
- pxyzout3
复制代码
5 }& L6 H5 Z B+ V! U偏移量的增加函数:vadd9 W& b8 k r) Z* j: U" w$ A
6 x4 P6 C/ ^5 E
" B0 N% V0 ]+ P! y% p9 c) L/ m- a: U: n( K# [' w- s
增加2个3D向量,即相当于2个3D向量进行加法运算。
7 F5 h! h0 l @1 [* u3 b+ _/ h0 x3 Y2 k% S% }/ N
3 N% M; t% U2 k' X6 L, A
4 c/ t2 x8 k. ]* s实例:. i7 x: k1 K3 o* {3 @) q' M" {
- pxyzcout0 #Toolplane Positioning9 ]- Q3 C* Q, n7 h% {% E; q+ P1 k
- xabs = vequ(x$)) E0 s7 }* n6 e+ _! M! V8 |: B: p
- xabs = vadd(xabs,tox_g)
! n. D5 c3 |7 J2 x+ Q - iout = vequ(i$)
$ p- |8 l/ T% q3 G - if rot_on_x = two, csav = -c$
& y3 c m2 Y Y/ x$ C - else, csav = c$
复制代码 1 _! e6 E! Y% L/ c# D0 N$ o
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化9 Z/ k3 L6 d( b) ^) C: n! o
# G- \4 H+ z- Z- ]8 D+ d
; C* }2 r2 d0 F6 d) H9 a
- pxyzcout31 f0 Q2 N- Z% x
- xabs = vadd(xabs,tox_g)
4 z, @( z6 w, J! i, D7 i - ua = vadd(ua,tox_g)
复制代码
4 o% x* h6 W3 d; Y至此,坐标系偏移以增加到相应的点上。* L( O* R6 [, H, m
, y; f! q' t, ?2 t! Z/ s
' w" J( J, {6 s _
- b2 X/ k0 n; F& O" J* b- ]" b4 o- y( W5 `
4 G' |" l, g% B. g' q, ^1 H B6 x" K1 s. W2 d
4 l$ v$ |- _ |# l; }9 E
以上及部分代码可能存在错误,自行修正。) `( V8 ?, @ \6 Q8 F; n
, c3 [9 ?! B6 ~- a8 E5 [4 S& J6 |4 m6 k0 d7 S7 x
5 @1 h9 G9 t7 O6 S& s
6 B% K/ Z$ L& R5 C* v7 j) R3 j8 S b/ r
/ }7 S: `; p9 N+ ~, |* `
+ i6 n/ K8 U/ r2 [
, w9 }" L; |% F- c/ s$ O& s# ]
; H. m" i! l0 A# a4 G, j
1 `! P6 Z) K; K# `6 c6 N& g, H5 O; d$ H( a$ ?( U
4 Z; W6 @6 l# z' E7 A
) u$ M9 X- b5 n
% t) D& R* i$ n/ C- n; r |
|