|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。
+ [/ @2 Z q4 m8 i9 U! p+ Q2 `( d, g
, R7 l) x2 ?( }- J
; |( S, ?: w- ~3 y$ Y
7 c( N+ V* z' l1 t" o7 ~) ]+ s1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。* [( ~" |& a; S# v8 [* J
$ S* Z4 f0 o0 T3 U9 A& q
9 L" O5 |8 J6 N6 L0 e/ I
9 D, z/ k3 F8 C. \
4 {' w- x- y) i4 k! q1 p2 h$ W7 s9 p2 e- M( {
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
' J3 x: y3 E7 J0 k+ f; v$ D
( O# S; L# G i, c; d: n: s) P* T9 N5 X4 l: q3 i8 p [6 D& T
0 A* \9 k9 \9 l# A5 [0 k* \1 E那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
) r, `4 r' B+ M) D; ~, ^9 [" d/ }6 Y8 j/ H
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
g$ V" Y) U& N. u' x3 P l. u Q$ `! V; g3 ~
' ^* F3 ~9 D% ?$ q
$ P S; k+ o1 g8 X8 K( W: ^# m( H( i' Q& g1 k
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
& D) ~% r b/ O! z6 C
( g2 [7 w/ x9 _( j( s$ j; r+ H矢量复制函数的用法如下:- B& r p% U) q4 V+ S5 c
% R3 F8 u% |( e' s2 L, s
4 K- K- i2 Y; I; U8 B: R
: k9 i( H( G7 b3 W* V4 b G# R8 i, \- d' Z: E
' {4 D. ~9 ]# A" s6 ]5 Z这句话的意思是return的结果值等于当前x$的矢量值。$ D$ [7 v0 t* y$ F7 E
) l3 F6 X* p0 w F/ f4 W3 f. U0 T
/ W# D0 W% |3 O8 j C& b& w
' ]9 c+ a1 c1 c. O$ @3 c7 T
% R- W" q8 [/ ], O J4 j同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
: V D4 O& ^9 j: Q0 f) \5 Y
, G+ Y* n+ E: b$ c& |定义数据格式:
3 w4 B# K- G7 v' [7 I( T4 O. |( D: D; o$ L
. }( V& c. [& M/ [4 U2 u
- fmt 2 tox_shift7 y, o; R- ^( ]- G3 ^% p* f
- * [" h' z# K8 |$ {
- fmt 2 toy_shift" I; L i' k! y+ i. K
% V3 q9 K8 k2 J* R2 r- fmt 2 toz_shift
8 ], ?. x$ B% [9 G: e - , w' c0 i* [: Z* G Y
- fmt 2 tox_g4 `; l1 b# B* A
/ y6 }. C4 e/ u2 M0 d. c9 m4 I' g; t- fmt 2 toy_g' z% `8 Y- V' W0 H; g5 g
, Z" L O8 |# n9 w" r- fmt 2 toz_g
. X+ V9 T6 ]% w0 n, k9 B - % }* |7 _, `! q
- fmt 2 wcs_shift
/ \3 C* ^6 ]7 G! ~: f3 V - ' C2 F5 O! K8 D5 q0 W2 s* g
- fmt 4 axis_def
复制代码 3 F! p2 x' k* R/ k. h: U3 c
开关及初始数据定义
' X2 @6 S2 l8 {* T' a# F& _- ]0 O" `# X( m9 R: c
7 L M0 ?: ]3 m) F3 I3 f/ g F. s6 K- use_wcs_shift : 1 #坐标偏移开关: a6 i5 ]. A/ J: J
- / b) M$ Q' k/ S8 R. t( i [
- wcs_shift : 0 #偏移轴, J# d8 N: n" f( w9 H& M
- 4 a" E; P9 G( x6 K% V* a( `/ u
- axis_def :0 #偏移类型7 A- E5 X. p% f( d w9 Z" @
+ s8 `4 ^# m! @- tox_shift_x : 0 #X轴偏移量
( ?& e: B3 H" V - ' h; T& V, D! C9 P1 L' D8 H
- tox_shift_y : 0 #Y轴偏移量
& E$ M1 K* G& H# x; O
3 ?6 M* f1 x0 f9 g7 @- tox_shift_z : 0 #Z轴偏移量
复制代码
0 k1 P7 C& r! I& E4 h% R, e0 O定义交互提示语句
. \6 Q3 y) J4 X; R
! c8 x7 A: F) r3 z* o- j/ Z2 V6 _4 F. r. A$ Q2 |, B: Z" D
- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"8 s: A3 E' G( x
- 0 [+ L9 q9 T, y. s
- fq 24 tox_shift_x "输入X轴偏移量"
4 T& s' c5 ?8 j; g7 i0 W8 p* a
8 t& ?+ i- H4 t Q- fq 25 tox_shift_y "输入Y轴偏移量"5 e4 x) [; e R, {5 {
, T; G/ k& A$ X S5 _; e9 u/ x- fq 26 tox_shift_z "输入Z轴偏移量". ?- N8 P/ N7 z$ ~/ Z
- / U3 c1 K3 H q0 w- y' Z
- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码
% Z: V T* @+ b+ ?$ E4 Q% g( ~坐标系偏移过程处理及交互过程处理' y- q; f1 e+ i) G8 _9 m
' Q+ {. s9 }, x' f& k
# ^$ o' H6 [: u- pwcs_Shift
" A2 z/ w: j' N7 n - : m) h4 j' { ?. X
- tox_g = vmap(tox$,rmtx1)
7 u0 \( i- w P5 q+ W Y1 w3 E6 r - 4 R n% t) D: C1 V
- if use_wcs_shif = 1,# |9 [( ]6 R" e/ M( X
- [) u4 r [" d) P: U) `/ g( V" \
- while axis_def < 1 | axis_def > 2,q23
4 m6 A; s E: ^ k - if axis_def = 1,+ o S& K# C$ d( @4 d/ t8 l
- [
7 P$ x8 v2 X1 F/ ]. B - while wcs_shift < 1 | wcs_shift > 3, q27
2 U+ r* k: M# E \5 X( r - if wcs_shift = 1, q24, tox_shift = tox_shift_x; V: ]; I+ m0 z
- if wcs_shift = 2, q25, toy_shift = tox_shift_y
0 a4 s0 T7 I4 p! X2 S- l - if wcs_shift = 3, q26, toz_shift = tox_shift_z8 p5 [7 [# L% j4 @# p
- ]) h6 j% X1 E/ @4 o
- else,! k, p l& V& R' I1 A& @3 }. V; {
- [1 k" A( T) x( r; G' l1 }9 d" a
- q24, tox_shift = tox_shift_x S) K/ F# ^, D
- q25, toy_shift = tox_shift_y4 a# L8 J- v" _: j) R5 l& M
- q26, toz_shift = tox_shift_z, I+ W9 F' P% i0 M3 q
- ]+ R' z: e. [9 M0 i# X% a0 T7 l
- tox_g = vequ(tox_shift)
+ ?. P1 E, R- v- {! B5 m3 T - ]
复制代码
9 Q+ d8 F) o& E) Y. n2 b, {在XYZ的计算过程中把偏移量添加进去,位置如下, Q5 Q/ R* |# K/ _4 O9 ~: X
- F5 [# ?9 T. d" X- G
9 Y1 M( R2 a8 r0 K1 D" S- pxyzout00 r( I6 K, M V6 T* G9 r. i
- 5 e- U/ b: ]6 w3 L1 d7 n
- pxyzout1
# T1 i, H9 U. E
) b8 S4 _& R" v( P( y5 S9 G* D- pxyzout2
, k0 x4 r, j$ g. s$ |
0 |, r. w) _$ o1 B# w' @# h- pxyzout3
复制代码
1 `& p/ @, x4 f- y2 E- B偏移量的增加函数:vadd6 }% [ A, L# J5 q/ ^$ v: i
4 E5 R* j0 c6 d/ q4 Y5 G4 Z Q" i
+ z8 h8 u( d/ U; D. r8 D
# f! ^$ o; L0 q3 ~' l1 P7 n$ n. A增加2个3D向量,即相当于2个3D向量进行加法运算。. g# Y! m9 T9 j1 q# ^
D( H1 W: \& x' }. A0 ^3 C: H9 b& l+ ?- O9 @6 k. T. }- M
: ~5 A. \4 i, n9 P8 a* s4 b9 g
实例:8 j! C* |/ R% W" H3 E$ E
- pxyzcout0 #Toolplane Positioning, Z- N; [7 O; b# Y2 J! s- p0 v
- xabs = vequ(x$)
8 N! Z& t6 |* h+ k% u W* N - xabs = vadd(xabs,tox_g)
$ L! s2 F. t1 B, ~, M$ z2 ` - iout = vequ(i$) 4 H7 S( s4 v& u" Q
- if rot_on_x = two, csav = -c$
* x8 G4 b R' \+ m - else, csav = c$
复制代码 " Y2 k/ A* o8 w; [
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化: H! T; x" h" l4 `6 g
4 f$ e7 a( h* s1 s' l& q# [" g
! D0 D) `( ]& t- pxyzcout3! I. Y) X$ m0 W+ w, l' |
- xabs = vadd(xabs,tox_g)
; }- C. E! d% r# I6 T - ua = vadd(ua,tox_g)
复制代码 , q( e Y; \) H% @
至此,坐标系偏移以增加到相应的点上。
* P, X2 Z7 }9 Y0 r* V, m& n1 v( X. e0 `2 q0 m
3 j4 b0 D# d$ t' S3 P+ |, T q
2 ^7 Z4 p5 T6 m! q
L: e7 `% {) _/ F7 O7 `) `4 B% C0 _$ f! {
: g( x# b" `+ E9 |; V
( x" i: L) L! z1 ]/ }" @: K以上及部分代码可能存在错误,自行修正。 x! E) U) \( r' R/ r
% z) O$ U2 U% P8 }2 P, t
& a2 X- I! g. L0 Q- O% x+ k
2 d* S5 C. e$ v9 d* |) i3 ?' c. O1 R2 y" D r
( L: [4 M' s+ n1 ~/ [
6 _: u( b4 U. A5 p9 \9 Y* [+ d% `# x4 D1 C" i; F
0 I. a3 B3 V! S, T" I) g1 w# J
P' z9 N a: y2 o* E5 i4 @" H1 |4 b- x# H
7 z0 b7 u8 [+ N- U
2 I& {# ^0 e. E% m% t7 O
- l' W5 i/ S! J; v( }2 [# d4 Y6 U, _* F H( q
|
|