|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。
+ ~; D+ e1 W( b4 ^
! c& }5 Q4 W; ?; f% X" V" q' J
" ?- v4 |9 y. q 6 Q* _: x+ s& U1 c; h. P& |
( h" q7 A$ V4 o* D6 O/ M
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。, F% a B' R) j% O
8 V5 W& X: |, B. a* q
0 G5 x( q4 r- X$ E6 m* ~7 N- }, y& v0 Q8 }
4 R9 ~! L" n8 K/ m! z8 H" v5 ]# x0 t4 F- B9 t
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。4 R9 v' x5 \! S. f
- @$ Z: \# @' V0 ?- g4 s1 {
# Y) T. r1 v6 B, B0 V7 k
5 k1 w% [' X7 j N
那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
7 U$ R& `$ v! W' f# I1 R0 o* F. o7 k. X% m; X
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
7 N1 X6 S- {. t. g2 O3 s. O e! w8 E6 m8 K3 Q6 Y1 ]6 [2 E
' J! T, f3 o( o& t
; [ N$ s9 l3 c7 T2 ] d* v2 d- ~* H
, |% a5 y/ F1 p- X. b
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
5 A7 C! X3 U' `
7 o# i* I; Z( \9 _1 l矢量复制函数的用法如下:* P- i7 k# e8 Z0 M, V+ }
) i! v9 h, d4 k$ m# a1 v( z+ K# ?: g4 ?9 L) ~ ~
+ j* j( g; c$ m# K3 A* @) e1 u# Q* t, U
$ I7 [6 |9 N% L C6 b" I1 i& N, V
这句话的意思是return的结果值等于当前x$的矢量值。
1 Z$ M: j# M# }6 W/ ]& H6 x( \# Q1 J, `1 e% z
0 r8 X2 y! B; `8 g
2 e& P5 |) g: {, y: Z7 c& z5 m! F; b9 X; v7 D! Q
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。1 g( I; K2 x2 C5 t2 h& S
8 v5 O) F: X/ t2 Y定义数据格式: T3 `1 j! R6 N+ `! {+ }
4 S m+ h/ C. o" W3 E
9 m. l3 \- W: f6 w4 o9 R* B/ [- fmt 2 tox_shift _. s) v/ ` b3 F2 @) ?9 k+ h: r
- & ^4 C- J0 ^7 g
- fmt 2 toy_shift
5 [; _0 n' S3 x
4 s) o4 x5 N, ]: ?- fmt 2 toz_shift/ [+ |! |) S/ m% O: U5 X# F5 d
- 5 S2 X7 a6 Q! E% ?
- fmt 2 tox_g; z" J% z8 y8 w Y4 d
! {( A7 T2 _6 B9 X- fmt 2 toy_g: O7 |1 F* b' m$ x) K
- ( i: x/ H- r) [' k: c$ _' H" j
- fmt 2 toz_g
4 O9 [( Y5 {( S3 q- E8 z
R& m8 v' h/ ^: Z- fmt 2 wcs_shift$ a2 O, j8 e+ @) B& O1 o- Z
- ^" a- V# _* g8 r* z% U- fmt 4 axis_def
复制代码 , `9 K9 ~( k. m6 ~5 C* s
开关及初始数据定义
. F2 ]& S/ Y1 D ~2 _' c6 x D. h2 i7 v! t+ K
+ q& ~8 n7 U2 m
- use_wcs_shift : 1 #坐标偏移开关! `- ?, S! _ o# P" i! |8 W
, f7 \0 x' E* C5 y) Q, W- wcs_shift : 0 #偏移轴
; V; C: `* [% w# u( Z
! Z( F2 d3 l( Z0 c- axis_def :0 #偏移类型
" @/ d% @7 {( Q( [! P- O0 V - 6 @- N$ e$ H( S/ q z7 n
- tox_shift_x : 0 #X轴偏移量, S+ ^4 s* P% S+ h4 M( V
$ x8 T/ n5 e% k- tox_shift_y : 0 #Y轴偏移量! I P" \2 ?0 {5 M* X: S# G' F) F
- - I9 y8 E+ d7 N8 g1 T! y n0 X j
- tox_shift_z : 0 #Z轴偏移量
复制代码 4 x$ i6 f9 r8 _1 i f2 `1 a
定义交互提示语句
4 w. |: D& g4 G. ? y7 w E$ A3 V. l8 v5 S% N% o! m
( y* _, K$ R+ a- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"# A$ a" V0 r9 |, i, k' M0 p
1 X2 H+ G! j8 b1 m- fq 24 tox_shift_x "输入X轴偏移量"
: b( a/ |3 ?0 m3 G2 E; l
; n9 f7 w5 N- ]- ?- fq 25 tox_shift_y "输入Y轴偏移量"
/ {1 H5 m- ]9 |6 E# ~6 v s; c2 W - 0 c* n' H4 ]! L* }
- fq 26 tox_shift_z "输入Z轴偏移量"
" L* Z. l0 V) L- P _6 \- w. E& ~, F - 2 O& W: e" F% X; l7 @
- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码 , Y' O# u/ J' @8 I& u* x
坐标系偏移过程处理及交互过程处理
: u3 z/ Y- K# k. ]2 G0 D2 p) m4 w
- l1 ]6 B8 _* e% }( t% J
, G( Z+ ^7 n; {$ j4 Z7 }- p- pwcs_Shift
7 u' v' `# D: I, I0 m* v. s - $ Y+ D; C1 K1 E6 o
- tox_g = vmap(tox$,rmtx1) h( t p: q0 k8 N+ D* b
T" f) n% ^0 x2 l- if use_wcs_shif = 1,/ G3 X4 E7 @. \+ q- O
- [& m! B0 w0 y/ I; i
- while axis_def < 1 | axis_def > 2,q23" H( s" f- R3 k" G
- if axis_def = 1,' c. I' F; \; ~3 P8 C# X8 Z
- [
o: F f% p) ^" S; q: J - while wcs_shift < 1 | wcs_shift > 3, q27- \9 ?6 S7 S) i0 [/ g
- if wcs_shift = 1, q24, tox_shift = tox_shift_x5 ]. b& q- ?! ^9 w. o7 p% E2 O h8 A
- if wcs_shift = 2, q25, toy_shift = tox_shift_y
7 L s% X- _1 t- T9 v - if wcs_shift = 3, q26, toz_shift = tox_shift_z" {7 g: [! d! p0 Y- z# K
- ]/ f3 B7 d B2 R I
- else,
8 g2 c T+ p6 }9 W s# H8 Z - [
! R, t+ a0 r1 X8 O; T% M - q24, tox_shift = tox_shift_x; V0 [1 v1 t! }0 o7 L& y2 [) p
- q25, toy_shift = tox_shift_y
7 m9 {8 N1 i% b; p' j0 E. R) Y - q26, toz_shift = tox_shift_z
$ ?) }! C( w* c2 P, O' }' Y - ]* r' c- U' b% R2 C# Y7 n1 l4 l7 M
- tox_g = vequ(tox_shift)
8 v2 p3 P) s' W5 ~8 a8 C S; _ - ]
复制代码
9 S% X8 k) C7 z: ^在XYZ的计算过程中把偏移量添加进去,位置如下
& x8 x0 }; }+ s! P4 G' y4 T8 e( l4 B4 }$ y4 I
0 u+ F3 {! x) v: V7 i, ? B$ `
- pxyzout0* z T" i8 T8 \% K2 a8 ]
0 R; ?+ H" p% l, x7 E1 R- pxyzout16 D2 T. h7 |, {" I2 J$ D" |
5 ?# G. I, L0 _- pxyzout2
% i8 j( j( ]4 M7 d, U- ^# E0 v# Z
5 j, {" B# l% q9 v+ K1 P- pxyzout3
复制代码 4 e' w1 s1 T/ b1 d# ~2 e! O
偏移量的增加函数:vadd
8 ~8 ~7 L1 v8 F. n& ^4 |+ _$ C
% V- I% _ u' g a0 _+ v7 }4 S& \5 o" d7 D; q9 C
; `9 i o& o: [2 U: z, p8 V0 ?8 z o2 c
增加2个3D向量,即相当于2个3D向量进行加法运算。 r# p, k h6 Q: C5 B
8 f4 W# v0 |/ f! J
! T2 K4 _/ p5 [) P' p4 J' a) b3 H2 n6 k3 ~/ B* V% T
实例:
$ ]: w; X9 X; s7 z- J* Z6 G' y7 Q- pxyzcout0 #Toolplane Positioning
1 s- p' Y: p% _ - xabs = vequ(x$)- |. I4 r9 u! x: }) Z" r" c0 t
- xabs = vadd(xabs,tox_g)
; L1 [4 H2 E4 a4 y9 z# @ - iout = vequ(i$) : t* z9 ^6 l5 @+ e1 h) j
- if rot_on_x = two, csav = -c$
# V7 A7 C0 r5 X7 o& `. J; f - else, csav = c$
复制代码
2 Z' q1 u+ j! v7 @无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化4 X p2 w! `% r4 K* P$ Z
7 W& @# ~- r# g1 q4 N; }. s; g7 G& y* x) Q- a
- pxyzcout3* e4 |2 X G0 I7 t5 y5 o
- xabs = vadd(xabs,tox_g)1 |$ v. S( M0 }& S' i6 T
- ua = vadd(ua,tox_g)
复制代码
/ I4 }5 H- g8 U( q9 t% `: b) \5 [& S至此,坐标系偏移以增加到相应的点上。
. k6 \* L7 K/ @* l
: m# e/ Z) v! r6 G9 ^) m1 m, ~% d
0 @& x3 J8 X; N( C; O
* Y1 |5 \" { Q2 l
& L- K# T) X! i! G3 y5 A9 ^
- V8 d' h t$ y& F& l3 J% x
" a7 ^0 ] _; W0 |: J/ k0 r% m& P+ c! D7 F* ~9 P3 K
以上及部分代码可能存在错误,自行修正。
9 P! s8 F& I2 f" _( x
# T# L* O, X8 _- d. l3 T
% h9 {& k0 ]% v! W/ o
9 a0 @! C" P$ n* u; { G' B& o* Q0 Q3 I) K" E) H1 F$ b
* i3 q& u. b5 Z: `( i3 G* \6 A* j+ f- c d- D; q: H9 \& b
. F4 \- K9 p7 ~; y) t# p o
# R& i: c. P- j) K W+ E, N- v& j0 A! j
" e, R: g5 ?3 S' Q" h
7 J0 p+ ~0 j V& J7 t$ ?+ L' y& W+ t# [4 z
1 Y- Q' A* d# W+ d5 b; N! E% I
( ?5 Z8 u1 ^3 a |
|