|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。
]1 o' Z7 S( b1 A Q/ F/ B) F' P- [9 F& N$ O0 t. d) t2 {: G
5 K2 f2 J; ~4 N8 ~' N
+ O$ ]. F5 O" N% I* F- [* p* Q. r3 m/ { s! D$ S9 P
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。: ]6 m; V( ^2 @/ b3 ^
: k: X! L" i9 o: M- ~
5 l. \: H" t7 g7 y- A" x2 {% x& h
$ C' t3 {9 u4 l% {& U3 h" Z
5 }) T7 Q) \, l' ~1 D. _' ~) j( z5 n& C, q W
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
" Y4 H5 L! k" b" A/ U7 p
1 Q* _8 T( r: I4 ?" S1 ^) M
& B: j) k- V0 p7 z5 ?: c
% J0 _+ u7 W9 A! d! G/ r& Q那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?2 I% z5 D! \9 J8 w6 X
& M& _9 ^4 f. ^ e0 `
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。& p! U3 S; m5 ?% I2 C7 u
& R$ P" h1 Z4 b% S4 f- M. p
: D9 ?1 L, |9 k! L, }
2 ?) |& u1 i' O: |1 W. q* y @' O8 ]+ z9 D- U
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
/ Z: S B6 W3 O- {/ e% c) I
( r: P4 M3 I: [- O1 d% M矢量复制函数的用法如下: }7 @( ]/ o8 E1 u
) l1 u) U" B0 S' @0 U0 C3 [% Q+ M% I, U% q# L2 Z$ Z
3 m- m# p& P2 r! C7 _* U6 U- H$ g. }4 E$ ]
* B8 C0 E' {, B这句话的意思是return的结果值等于当前x$的矢量值。
0 ], f$ y Z: j" _6 C/ R, a9 X' g7 i* U
: \' v8 G- N( Z" l$ {( _& ?- R4 J
@5 E- z5 \" o1 C. O2 R2 C
5 a% n: x/ _; @; y% z& k# E同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。# g1 u% E9 S7 B; R+ D% Z% i4 l/ h% F, W
+ R2 e0 I# G7 S9 u, w0 }3 x
定义数据格式:
9 [' u+ d) Q' o t) v+ Y
4 I- \4 y t" ]+ E* N
' ~7 S0 ?$ S: U- fmt 2 tox_shift
& l% n- P3 o9 }! M
3 l: r# E1 V0 s- fmt 2 toy_shift: b- L; o6 P8 N* Q9 N# ~
- * Z7 b: o0 Z6 J4 H' W. B# d
- fmt 2 toz_shift
# V; t4 S, J0 a. ]3 ?' b - 4 O& B ^- W6 f. @. B9 R7 ~
- fmt 2 tox_g
7 R: e* F$ }+ ~8 g+ J. G
% }) m# n( V$ j h8 N+ n* p- fmt 2 toy_g
9 u0 b4 O( \4 k0 w W. M' W! n - * X% _( }* g. H2 v) |
- fmt 2 toz_g. {$ f4 q: O% K- r, Z% r
' [+ K5 f& `; R' R' ?7 `- fmt 2 wcs_shift
: S, m8 c& m- g- H
# a1 f w; L: n5 G( B- a- fmt 4 axis_def
复制代码 + k0 {3 y# _! f6 E# ?; R1 A
开关及初始数据定义' u }$ H) w7 O5 c
! ^* H+ Q) `) _# y" J, ^9 H
) [. [. m% d% X/ C- use_wcs_shift : 1 #坐标偏移开关
" @- R+ i3 X* M* m+ V - $ t. n$ U5 k; Z. y. J) _+ {
- wcs_shift : 0 #偏移轴2 x" z8 ~* n; p% ` n- r
- 7 u; S# H8 X# A/ r/ } X! _; U
- axis_def :0 #偏移类型
% e4 Q9 a P7 P8 u: G! D3 O1 q - / C: J$ a/ o7 a- }6 a+ M
- tox_shift_x : 0 #X轴偏移量
; l' K* O& f( ]1 l9 m
3 }. W: l l- N! J- tox_shift_y : 0 #Y轴偏移量
! d( H1 Z9 |1 ~5 C* [! ? - 9 ?1 C9 K3 }6 I1 q( L D$ L+ B0 X( D' F8 X
- tox_shift_z : 0 #Z轴偏移量
复制代码 y2 q' E$ r% G0 O9 W7 k7 T
定义交互提示语句& r% l* g& n1 C# E, k% m: B0 V! j
* t7 M1 _8 D3 ?' o
4 L9 t. q/ b- h/ F$ u$ Q% e- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"
: l% n( y. s* C* B# z5 n; M - / D/ {1 r) c4 o! o- d0 J
- fq 24 tox_shift_x "输入X轴偏移量"
2 k0 q0 m1 k, G
1 M V! X2 C4 v/ Z- fq 25 tox_shift_y "输入Y轴偏移量"
Q8 P6 K; g0 a
+ H: M" N3 m A! h+ A- fq 26 tox_shift_z "输入Z轴偏移量"
4 C( E M. m" {; J- S# q0 N: D1 L - 7 q& i4 u6 k$ x$ J; }
- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码
6 m# k9 Y" o' v3 ^坐标系偏移过程处理及交互过程处理7 _9 V7 } \ Y1 \7 U
% S5 P* J( f+ F$ v
" e! F# ]) U/ n( A5 h7 A9 H h8 t- pwcs_Shift \ n. ^+ O, F; Q, R6 X
- " j- o8 k, o9 V% ^0 s
- tox_g = vmap(tox$,rmtx1)
. N& B) v) N- C. P$ ?9 q
6 O. Z A2 Q) y; H. l8 \- if use_wcs_shif = 1,; S% Z t2 Y# i9 L6 a
- [# `* \/ p. U. i2 x0 g+ n
- while axis_def < 1 | axis_def > 2,q23) v \# V; T& E
- if axis_def = 1,7 P: v8 u) x0 W3 t
- [
$ L( E7 _0 `3 S - while wcs_shift < 1 | wcs_shift > 3, q27
/ }! Q' T' `+ A. O0 ]$ |! A* ^ - if wcs_shift = 1, q24, tox_shift = tox_shift_x+ u( B6 P* L) X' } \; |* [
- if wcs_shift = 2, q25, toy_shift = tox_shift_y
3 d. Z# }8 \9 s - if wcs_shift = 3, q26, toz_shift = tox_shift_z
' t; Z G* C# J. A - ]
1 M- h2 B* R- b6 Y, `0 f - else,
6 u% `6 g+ R5 ^6 _) r - [
6 u$ Z( ^7 u ^6 b# r - q24, tox_shift = tox_shift_x9 f+ s2 B$ S! c6 ?+ A7 p
- q25, toy_shift = tox_shift_y
# W3 Q* y% d6 x- a4 B - q26, toz_shift = tox_shift_z& g" v8 N, g n
- ]6 r5 ^# }. d( k- }9 c7 ^
- tox_g = vequ(tox_shift)
( w `' ?: [% f. y% E# \ Y: P - ]
复制代码 6 {- a- ^1 ^! b3 r2 B; u
在XYZ的计算过程中把偏移量添加进去,位置如下
" S2 Y4 ]# C5 H" a" e8 E T# v
! w* n1 N! h0 }/ H! c2 f& a: l- a o% Z+ M
- pxyzout0
3 I. W+ t; Q3 i - 3 w! p/ ~6 I& J
- pxyzout1
, ^7 T/ X6 U: A" r4 T! b
* y! |7 J% }0 [: q R- pxyzout28 i: M# _6 }( b" }6 e" r! `9 j4 @; _
- ( L& p% I2 U0 ~* o- X
- pxyzout3
复制代码
+ N! K/ b7 k! w0 G3 L `: ~偏移量的增加函数:vadd, j( H8 h; O; e9 J4 R% b( ?" X" A' ]
$ b2 @1 U8 A2 h
. v) \; R! |! _5 {5 c3 s' \9 z' P; C6 Q7 t6 N: ~) ^% M# q! p
增加2个3D向量,即相当于2个3D向量进行加法运算。
; v- q0 p3 Q' \( `& U
6 y( i% L- ?1 t3 H% l8 C0 a3 S. v, r1 `9 v
8 E0 ]; ~7 n- d实例:
/ v6 Z7 s4 d. G* e0 n- pxyzcout0 #Toolplane Positioning
: I* J2 ]6 F; Y/ R9 i3 m' V0 f K - xabs = vequ(x$), T. T: [' t! @+ G2 H& z9 `
- xabs = vadd(xabs,tox_g)9 m8 m( o+ H" J. N5 z }& a, ]5 o" A* S
- iout = vequ(i$)
/ i- I3 g3 k% B - if rot_on_x = two, csav = -c$+ s& A7 t1 i8 b6 B
- else, csav = c$
复制代码 7 Z m) e9 n( i5 i' b0 z) I5 z; c5 F8 N
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化
3 b8 r! {7 Q; E2 w, p+ R% ?: [' m6 S, @7 i+ {+ ?' K% p
" J1 }" r: m9 O7 N! S
- pxyzcout3. Z: m- g M9 ]: W4 Y+ Z l
- xabs = vadd(xabs,tox_g)! {6 T* Y7 s6 {
- ua = vadd(ua,tox_g)
复制代码
" d( [9 ~( A* X$ l0 f至此,坐标系偏移以增加到相应的点上。0 N" V( Y, _; Q
- a2 r: Q- h. Y4 @
: W3 F$ p) r2 t; o3 R1 Z6 p" W9 }: G+ I+ f
; }' z% _1 P5 ]8 L3 ?# y9 @6 O" A1 I7 M; K' S
& g( p( u" Q7 R+ h: L- E; W) s
7 }$ P/ b6 m* L以上及部分代码可能存在错误,自行修正。; j9 j, }, c6 G
' }) w8 Q4 d/ |, U: I0 U. K- a! {
/ b2 ?+ o( M" Z e
+ [( z5 ~( W& h4 J6 g: w; s6 T8 G ?9 F, l: g
* @* Q4 C1 F) a( V! S9 [3 I" J
# Y, X- K7 r. C1 c
# r0 o1 P8 O6 N0 Q1 Z! w8 D3 z, ?" d L3 f; Q/ Z& Q
1 E$ w8 F* _- q* w* B4 e3 h9 t
5 H3 Y7 b2 q5 i. o3 ]
% ?9 S- o, C7 E; J5 j- O
. F0 E2 A$ p2 U# C; o* U" p# N, V" M( t n* O) o' e8 w, V
& u, _/ n. q i: m& v5 t
|
|