|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。7 ?# z# [1 j3 W% _1 _) Q2 x
: R+ y7 X2 {' }% Y. v
5 w W# n9 V; @% u& y" F5 E0 \
2 E/ g ~0 ~# B* [& b- W& \" a1 |
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。. Z4 ?' I$ e( G% j- |+ d0 s
6 a$ T1 l/ D2 W3 Y7 G
# o2 |! r! @# |& m; t$ W) s) @" [% x: T4 G# l* h6 u3 |& w
" u0 x1 D0 `% D% v6 O: b
" [4 r0 g0 g- g. F7 [2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。) |! a8 [7 Q$ L
6 ]! c8 k1 d4 q3 W
' E2 F" M0 s7 Y8 R/ w
& c& j: [0 K" m% j7 S那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?0 R) M1 x1 ]" Z# G* t. F
: X" v* v2 r$ R
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。9 x' S7 e0 k- t0 T. ?1 p( w
" n9 W9 q+ M. p: c- U! ]1 o6 o3 R" ]* U7 }8 J
1 q1 T- M% [; j' X# O
- S5 W- n% `- v6 t5 @1 X5 G* v
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
$ k0 B0 L* t! ^* I& X5 x, R
3 t H# e$ W! ]' j; o矢量复制函数的用法如下:: |& g! \( r# M* T/ Y
/ O2 S/ A# Q+ {6 ^- ^1 D
* K6 e% w' J3 R. P* f5 |3 z/ m9 |5 R
) W! x! B D% Q# w' p3 m
: U$ ]0 _4 o! t# P' B+ V9 A这句话的意思是return的结果值等于当前x$的矢量值。, b. I8 B% G! m' l& s* u9 S
. }6 s! u# ~$ e3 S: v) R8 [8 a7 F/ H
2 ^$ k0 D/ x/ f) Y
: r5 z& N2 X+ I: z
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。8 H- Y6 J2 G( S; ]
" n o; ~$ b) N2 \$ c定义数据格式:
5 C& s( E+ v- \6 ~, J% s- {( U @& g
+ g, G6 J5 x5 E
- fmt 2 tox_shift
" L9 Y7 n$ a! I% s - + r* k( y" d9 n* P& W
- fmt 2 toy_shift
* h# ^/ Y* L# i$ @9 L' Z
) }/ ?/ f. y/ S- fmt 2 toz_shift. F- s. m& k- m, r. M
- i3 V# H3 G+ B- fmt 2 tox_g
" |) W8 J& M. ]2 J: n* M( Y" F0 C+ B% c - " ~# I% r3 A& F" s2 C4 I
- fmt 2 toy_g, A q; S* h0 D* j. w
8 _% [# b" B$ g6 R% ~+ K9 F# {" X- fmt 2 toz_g
! X; I* n0 C0 K) \ P9 X1 b" Y" l - ' G9 o; K0 x9 u7 Z# j! H. h
- fmt 2 wcs_shift
8 j) x* Z* `. ?/ v* t+ }0 S! ^ - ( D2 K# H' }- B' P; p6 B0 x
- fmt 4 axis_def
复制代码 , J1 o3 b! Q2 `5 ^, j) ]7 v+ _
开关及初始数据定义- H' w$ n3 T) @1 \
. c- T3 m8 X, N2 I' s* x
% u/ ?) m3 R( D% S7 _. V; O+ c- use_wcs_shift : 1 #坐标偏移开关) w0 t7 u( S: [
- / u+ B$ m; M, O! w/ U' W
- wcs_shift : 0 #偏移轴! i' A+ S! Y# x5 a
: I$ V6 u( k. l7 w- axis_def :0 #偏移类型% s2 J8 {4 ~# U& C
. n' V) T/ ^6 ?* m: p: f: Q4 f' R- tox_shift_x : 0 #X轴偏移量8 N$ ]/ O/ {$ R$ m
- ' v) d0 |7 a4 `5 K! O! z" n! M
- tox_shift_y : 0 #Y轴偏移量0 K- m* ?+ F) u3 g6 p0 i c
- 7 f- j) U1 F9 r9 H
- tox_shift_z : 0 #Z轴偏移量
复制代码 ) ]2 |( H0 n3 o/ e) v# V
定义交互提示语句
1 f# I' w+ o/ {+ a
- I# j* w4 B3 c' R. |# D Y
- O+ |0 _/ z& t; ~/ ^- fq 23 axis_def "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"/ {5 U4 c0 h% ^1 c
$ J( h+ T1 Z) Y# r1 D- fq 24 tox_shift_x "输入X轴偏移量"
) }+ y2 t/ q$ W4 E - 7 J4 ~; d& X7 w3 ~6 [, K9 u( J
- fq 25 tox_shift_y "输入Y轴偏移量"
6 f8 q+ f, U# }0 b
; d: s$ R& q& g' ^6 g: z) ^1 J- fq 26 tox_shift_z "输入Z轴偏移量"
- o; _2 M5 m1 e3 ]9 D5 X
4 A. H% I3 u5 i4 q$ d- fq 27 wcs_shift "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码 & H; b6 f* Y7 ~ r! }8 n
坐标系偏移过程处理及交互过程处理
5 P. q+ X v$ R' d, \0 v7 q% X8 j. A; ?7 t
' N( p) z1 N1 {9 e: l$ P- pwcs_Shift- L+ h" y2 t% H1 H( [
- P, W/ }( p8 x$ G3 ^) X- tox_g = vmap(tox$,rmtx1); L, U: ^/ o. D! P' j3 v( y
- * u9 W) _+ o% i9 J7 W* s2 `
- if use_wcs_shif = 1,
. x( z. T# B* T# x- y X - [
! B1 D' e; B$ E# M - while axis_def < 1 | axis_def > 2,q23! x1 Q, h5 A/ V. a4 Q3 I
- if axis_def = 1, O# M8 _' l. l' Z6 e/ V% u
- [8 C/ A6 @9 I6 t* L. A! h; v3 B6 e
- while wcs_shift < 1 | wcs_shift > 3, q275 U% \2 Q3 q( a, g# ~
- if wcs_shift = 1, q24, tox_shift = tox_shift_x4 V. E/ R) p5 D. A: ]
- if wcs_shift = 2, q25, toy_shift = tox_shift_y* t6 C5 d5 u: w8 @0 R3 W. V8 X2 J
- if wcs_shift = 3, q26, toz_shift = tox_shift_z$ S) d* v7 x, P' d4 [
- ]
/ H" Z. D; ~ j# ^ - else,5 h7 _. Q0 r: j6 {3 t: b% \1 ?
- [
6 B+ M5 K7 X7 Y7 S9 o - q24, tox_shift = tox_shift_x* c5 `+ z3 i" e
- q25, toy_shift = tox_shift_y1 K+ Z+ X5 |( t8 V! O5 M" g
- q26, toz_shift = tox_shift_z
% ^0 ]- K& c- O6 _) D# q# B - ]! e0 _( X7 f h
- tox_g = vequ(tox_shift)
$ W7 i1 _6 A; I& J/ V3 R1 H' g; `. Q* p - ]
复制代码 , d2 e/ X% P4 W0 ?
在XYZ的计算过程中把偏移量添加进去,位置如下
`2 y4 S8 g8 w9 ] ^& I
# g8 X7 Q7 C) ^0 J" u' m3 |+ O0 Y8 {6 {) b
- pxyzout0
+ s1 d" W; C4 H% o - % R/ Y, v& Y" W& n1 B7 r' W" i
- pxyzout1
' _. p5 b- i U
6 r9 I7 v0 B9 F, P8 o- pxyzout2% A) P& N' Q7 |6 G) ^4 k5 b: W) z7 c
- & {, R7 b# T- X) a
- pxyzout3
复制代码
: W* t- ]/ `+ c# F偏移量的增加函数:vadd
+ @' C3 G& D; D) H9 w+ Y5 j9 T P/ t
* R- M$ U& O, N; ^
2 k- V# Q% y" H* L5 U) X7 D4 p
增加2个3D向量,即相当于2个3D向量进行加法运算。. B' i J# n& n' |6 N
5 y8 I$ m4 T2 }" k" W! I( k/ b0 K
" K }$ \/ ]6 }1 L$ `, Q
- V+ l& X" F4 [0 X9 O实例:+ m0 Z9 l; N2 @6 u7 ]) E
- pxyzcout0 #Toolplane Positioning8 X! }* i; H3 K, q( Z; _) i
- xabs = vequ(x$)3 W1 _& L2 G) v3 [# ?: A7 |( M( @
- xabs = vadd(xabs,tox_g)
2 o \ x( f# e - iout = vequ(i$) 8 I* s. q# g8 s& }+ }
- if rot_on_x = two, csav = -c$! Q3 P4 |! V' I" m1 G
- else, csav = c$
复制代码
# P' G8 H6 R& n无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v, w也会发生了变化
8 |( C% [2 g1 Y! T! ]& H
* z0 {+ m8 J, l! J
8 _0 [4 g+ y( H* @2 I: U- pxyzcout3
5 {; N" b7 O+ ?) k - xabs = vadd(xabs,tox_g)( b, N, u/ k# X# R
- ua = vadd(ua,tox_g)
复制代码
" o D! j' R9 Z1 }4 Q: s至此,坐标系偏移以增加到相应的点上。
" I. @$ \- a( u5 T
0 j; V- B- d, B" r- p& Z6 e+ W4 O5 U
3 C0 R2 ^9 W; y2 e
+ G9 Q! |* X' s) y& a, P5 U* H h+ \5 a8 @& {
6 g( J0 L- e. ?, z: R% a' l
9 w* e' [' p4 H+ p9 R, h" E/ i5 [+ o) J# q4 K1 b5 I4 ^4 A* _
以上及部分代码可能存在错误,自行修正。
# t7 L$ V1 e- ^" C( S" x9 X h6 a3 e6 Z/ e
4 f8 D/ U( {/ h. N
+ B: O2 i1 c6 k* i
5 k% h9 s3 d4 W; B+ t2 }6 b' M u1 s, R& r/ W, C
' `7 U O6 n2 A
5 Q* z3 r$ [8 T. h: \- o9 t. E! k1 M* F* ~8 U/ ~+ B& t
2 O9 s0 q% @% s+ l+ c2 ^5 H; S0 v2 D7 j u% ^
$ @, ?7 B% S- W6 i, y* k; w9 Z
: ~" }( u# `2 }. j" J- I( E
! M0 h4 E N! T4 x8 z& |; j
" }6 t" Z: A7 C |
|