|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。
+ z3 D. U4 W# q+ Q
2 R9 Z* @" Y* M0 D( M+ s 9 u B6 I6 O) v0 ]+ P) h+ b' `
5 Z8 O0 b7 r) r4 u' K% ^8 Z4 D
6 t" L/ d! V0 d; b" a Y) n1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
, P$ `5 h" S' N, h7 Q8 R: f
$ }3 w, o- x7 a9 c V6 E* G3 c3 k8 n" k y+ `1 P7 N
0 ]) U4 @1 Q( E: P
& \0 S9 Q. ?3 @4 f/ o' ~# g* g: r5 [
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
) T2 x1 U" ?1 ^4 m. K" y& N; a. P2 |- v
; Q8 |( w, ~! i3 I, Y2 o# J C
: @% [ A. B, Q) A那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
" T% y$ j% T2 F2 [. r& |* o" b7 S% m& G: e( G
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。+ R# Y7 ?. k9 k4 b
2 |+ y: F! J7 G* c* R2 ~8 t7 z9 r
" @6 s2 f# G+ j% D8 i, {
( g3 B, M6 X' l0 S z4 \. [% F/ b. T$ q0 y6 Q
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
9 v- }. q# G) \) j0 I' t8 v
$ \" N( X7 P& V( N4 a' J) S3 ^矢量复制函数的用法如下:
' K( }+ s7 m& j4 @) Z! L& g' b8 r) H5 v2 A. A
s9 \7 }" H+ c0 N& t
6 E$ P; X$ {4 Y2 X# P4 ?! u6 J
6 @2 {" D) I6 X' D7 _% ^8 ?7 S! _( k6 n" }% s5 |4 p: Q$ |
这句话的意思是return的结果值等于当前x$的矢量值。
$ V9 ~ T( Y( \2 B- [ F
/ {/ ?. a& ?3 I1 C) }" @: ]8 X9 @" h" W+ E3 C/ T
1 F+ d' ~* d5 i
* X1 ? g3 P8 J( x
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
* I# X: ?5 a9 r) o
, s7 n! a, v% q, ~定义数据格式:
) f' c3 w4 g% Z+ l4 x( \
+ Q7 M* a' y( ^( {: J
, C; v% L- S; [# i, ?, ~- fmt 2 tox_shift2 E3 U9 @, S. L4 s* M8 f1 D! s( U
- 3 D" R/ d: u% B$ g( I+ k8 r! y
- fmt 2 toy_shift( o- v, S% T6 Y2 D+ v3 ^
$ g8 [8 U, S, G4 a% T: T7 Z- fmt 2 toz_shift
' \2 E" z4 G, @6 ?
* r$ y# Q& c* X1 W# j$ T3 i/ ^- fmt 2 tox_g e% s0 [% }- o0 |$ p
: G ?7 P) H& _& Y( z+ F- fmt 2 toy_g
/ a6 P; T- N3 L5 r - . t3 d9 _0 ?$ t* U1 O* _
- fmt 2 toz_g2 h) r* h# O) B; p4 I% d1 u1 i
3 |0 U w6 k2 P2 S6 }: O- f" C3 p- fmt 2 wcs_shift5 X& @3 o3 {+ K7 ^. O: n5 ^6 {* L
0 C. D( P- i, B0 z- fmt 4 axis_def
复制代码
. M0 f7 y; L) K$ n开关及初始数据定义
, S. e5 _& A" H2 `( F2 g
8 S7 C2 L, y8 Y$ v
2 {6 N0 L& f6 }3 a0 y! ]+ z- use_wcs_shift : 1 #坐标偏移开关7 _/ m! P. g: Q7 q+ F# X* x
6 I6 H' O& N0 A3 N( G- wcs_shift : 0 #偏移轴3 }1 P) l$ ]3 c$ P) y' @1 \% R
- 7 q1 @$ I# T: G
- axis_def :0 #偏移类型
1 o5 t; G) \# R, z* Y+ R ~7 H3 T2 @
7 y3 ~6 a u) ^; C3 H( I- tox_shift_x : 0 #X轴偏移量
& d. [3 G- C0 C/ b - * F. t! }9 h! X' W, {: x4 `" i
- tox_shift_y : 0 #Y轴偏移量9 z" D3 A( X, Z) U
5 R4 n& S1 J0 N3 w- |+ T4 X- tox_shift_z : 0 #Z轴偏移量
复制代码
, P; c# B/ q6 S! H/ {6 X4 n, V+ t8 _定义交互提示语句
: M1 j: i6 O8 {0 D- {1 e& w2 d2 d4 t% L# W
" n( n1 I3 d( H, }0 v# U' `% P- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移": t$ ~5 U; n: M/ D& I- \) J" r
+ E4 n$ P8 r/ U7 k* Q/ q4 e: l- fq 24 tox_shift_x "输入X轴偏移量"
; w+ e* `/ X% C) O - 2 O. t" {; r% f' N
- fq 25 tox_shift_y "输入Y轴偏移量", R# u8 y+ J u$ B$ R
- / b5 D2 Q: Z4 q/ O. Z7 {$ p1 U
- fq 26 tox_shift_z "输入Z轴偏移量"+ P+ h) i: U$ F1 p
1 N" ]# ]& O+ ~- {0 |- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码 2 p% Q1 E) v. l4 B2 K6 L& y# F! z
坐标系偏移过程处理及交互过程处理2 z, T4 j$ o4 t8 `
: c& ` @' v; L/ x2 X! O
f: D3 T) N0 S
- pwcs_Shift
8 U- V; W' q/ T" @
& N: g5 a: \& ?2 |+ G; T- tox_g = vmap(tox$,rmtx1)8 s( ]8 u4 u0 R/ l. V) g, ?0 D4 P; m
- " H: F0 @! b, r3 u; p
- if use_wcs_shif = 1,8 V: ?" T! ]" n& M* S
- [
9 a7 l6 e* W6 i! ^; z( @ - while axis_def < 1 | axis_def > 2,q23
. f1 V4 i# F0 }1 P7 k1 l - if axis_def = 1,+ @1 M/ l- v/ C& O: p
- [. k$ s; O3 U! _/ r
- while wcs_shift < 1 | wcs_shift > 3, q27
. F! Y* T* K3 B" j5 T - if wcs_shift = 1, q24, tox_shift = tox_shift_x5 r# }( X' N; j* x% ]' t8 v4 N
- if wcs_shift = 2, q25, toy_shift = tox_shift_y1 N/ V2 a4 p3 p' i
- if wcs_shift = 3, q26, toz_shift = tox_shift_z# _) a% [; q2 F3 j- N" c( \" t
- ]
7 \8 @" |7 a& n; G6 x1 ?+ P - else,
5 ~& G; ~, m( N+ p O/ e* f - [
# l# ]$ I+ E0 E5 ~" P# t6 N - q24, tox_shift = tox_shift_x
6 a1 [0 S' g2 c% G3 Y - q25, toy_shift = tox_shift_y7 |" k7 i& ?5 G
- q26, toz_shift = tox_shift_z$ T \- l& B- K9 o- b+ r
- ]
4 F0 H4 B) o+ @% A! B) G+ d# \ - tox_g = vequ(tox_shift) 2 f; U; N& o- Y3 A( g/ Z1 K2 S! U
- ]
复制代码
7 k2 ^. Y' K0 ^在XYZ的计算过程中把偏移量添加进去,位置如下
7 e! P7 _$ O8 f" Z9 a l1 ?0 C- N/ f. w
3 T! M0 i+ W4 U# n: E" t- pxyzout01 U/ c( N' w0 d+ E# D" Q" M; E
- . @7 V" h* t) Q7 j4 d: f, J3 q
- pxyzout1
% l Z: r/ Q) [9 Q
( \) ~4 w7 F, t! `0 g6 Z- pxyzout2
O* h0 d4 C( I3 d1 S - # Q" M# p8 ?+ K' `
- pxyzout3
复制代码
6 Q' q3 z! M( L4 T偏移量的增加函数:vadd
, N3 e$ ~ N0 e0 N. K
& ^0 W6 O7 T* Z I% o/ H6 h1 Y1 v+ e* |7 o+ G& @+ F# y; v4 |
2 q) Z( V; N0 H+ F. d
增加2个3D向量,即相当于2个3D向量进行加法运算。' _6 j3 ^$ I1 x' X8 q E
) \1 z7 r8 b) Q0 J3 e/ C6 ]4 l1 ^2 M
& y" V* B, [1 c% p3 z @ x7 n; ?; w o' D' k0 {! A
实例:, N& n7 [" T3 H% o
- pxyzcout0 #Toolplane Positioning
' {% F! g8 S, R( t4 O4 k. D - xabs = vequ(x$)
2 u- M' V: _0 o y; B7 E - xabs = vadd(xabs,tox_g)
' L: h$ V9 X* Z - iout = vequ(i$)
( H! n6 Q' _8 O6 ] - if rot_on_x = two, csav = -c$1 `6 i2 e" H6 k8 F! j
- else, csav = c$
复制代码
+ y; x9 O0 y& y5 W& D' P6 ~无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化% P; D4 q- R9 c, q$ B- E
" i# S. L+ n, T+ _. [/ d+ N% r# k, H% V
4 s+ b4 g3 P! y8 A; U) S( A1 M- pxyzcout3
/ h9 M( k- E9 K* g% L- ` - xabs = vadd(xabs,tox_g)
$ w# M& K5 m) R; p8 w2 r$ e# c - ua = vadd(ua,tox_g)
复制代码 % R j) r8 m% i. p Y( ^
至此,坐标系偏移以增加到相应的点上。
3 E! N4 \7 D; L3 ~, ^! P. y7 Q3 J! A- _6 n, v. }
9 c3 s! A, a5 u" r8 {8 R0 |+ M: d1 r) ]( `' Z; E5 g3 Z7 d
6 L$ r! G) i* R' Y% m% G X) S `, t
4 k7 b) R- E l. X/ `2 S" | M4 \) V# F2 ]
以上及部分代码可能存在错误,自行修正。
4 F6 \5 y7 r2 u* i% p2 Z" [" g
1 e# |+ k& g9 `" k4 ^' r" Y' S+ ?* _' ]7 z! M) [) X: S. y
7 e9 u- j( G, B5 J& @0 |" I
k/ r$ Y0 {2 m% k) \" @- D( n" t) A
; q* g$ J7 l+ P/ I
$ [' v3 j- _$ j3 X. A6 w- a) B5 }
+ X8 i6 Y O- x0 |) n& ^0 @
" l* j$ v1 f2 f: q% l4 y3 c/ _& {# X, E l4 ]
* x+ ?9 }6 C$ M+ Q
2 u, P3 j% e* f+ B" ?, v+ g6 D2 y) }% N i
/ J$ X6 u {( ^6 q8 v
% N, z: S" z8 v& f9 h7 T) ]% {
|
|