找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 93|回复: 0

Mastercam后处理坐标偏移方法

[复制链接]

433

主题

5759

回帖

901万

积分

管理员

积分
9014266
发表于 2022-9-6 20:25:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。/ `" d' p7 u, D* d" R% o

2 H+ B+ M) ]! b
, D4 s! l2 g' `9 S' X% H


, {/ p3 W9 Q5 E& H1 y" f! P& u! `6 V+ u1 Z2 L
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
  W+ }0 k3 `6 D: M; R! d# ~
1 C, o2 L! H; ^3 x5 w* `4 z3 F; J7 l
$ x$ G' N2 C+ ~

( G# D; E+ I4 C& B2 Q- }. S
" J" F0 g, |! [0 r
% k8 x' A5 u+ h1 Q/ t
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
9 I' _9 Y& x0 {$ Q4 h9 `2 O7 A  x( F- n9 r/ Z8 P

3 i, G" Y* u) r) Y3 T# I
/ d, `: T; |/ [那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
/ ?% g! t3 p3 k" B+ }7 H5 N& n# v
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
- I" A  A+ ^' C
8 w- r5 j0 b( Q/ H  v( V) q

& f" Y5 O0 o' G9 G/ F$ P9 B- w- A( [% p9 B0 v, ]& V7 I& [% k$ {
& Q' g1 U& [/ p8 a' \3 o2 ~
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
! x  |. ^' L3 _" S1 P: L* R
2 Q" T* j( `! D7 O9 Q矢量复制函数的用法如下:0 H' j" a8 I$ X) h0 K

3 `: a( [- F! b0 j; _5 A/ f, i4 Q
  D$ F' P1 ~+ l- Q$ [: i

* }: D* ?  r; W4 |
) i5 d$ D3 q0 u" F
  1. return = vequ(x$)
复制代码
% ]# p8 ^( I# {( R, N! O/ F* J, I
这句话的意思是return的结果值等于当前x$的矢量值。9 x7 V. ?7 R. @' o3 V2 j
4 J; B6 `+ R0 o" k9 ^  H
" `$ _' G- t6 D
" b: S' L5 h/ k$ U1 n
; E; z& ]6 h! ^' n
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
- U7 x' W2 f1 C" Q) w
2 |1 z4 D8 N  x6 v# k定义数据格式:/ Z% S: y8 @- ~+ B

+ S1 U- t2 {" ?. d; [9 ]& `, B& g
2 t# J' v  d! g6 C/ d
  1. fmt 2 tox_shift5 g1 y' s, R: Z6 B

  2. ! H) k2 W! s+ s+ U+ D: }1 D/ j
  3. fmt 2 toy_shift3 |7 s+ s  c3 G9 `0 W( H

  4. 9 O4 S# |9 A4 X0 U5 J- O  w) ]% k) y
  5. fmt 2 toz_shift
    3 o+ Z! ^' Y& j9 g
  6. + X/ M8 C/ f7 F
  7. fmt 2 tox_g5 ]2 J% w+ ^/ i* @  s

  8. - y# f( k+ w3 a0 I: d
  9. fmt 2 toy_g8 o; v4 O: f; o) O2 K0 B" ?$ N3 @

  10. 2 D; ]" X& ]8 h% z/ @
  11. fmt 2 toz_g
    ! Q: `" K# L: Q' N9 b& S# D
  12. $ X3 u$ ]* N, l8 S9 R
  13. fmt 2 wcs_shift- x0 N! r, w% g3 u$ F) D

  14. 4 q6 ^, M! O0 R0 i! t' W
  15. fmt 4 axis_def
复制代码
2 U3 v. U' m# W  Z: o
开关及初始数据定义6 H4 [& L2 z+ f. P5 Q6 m
' v+ @( p+ u* E' H5 }+ V+ r
$ J6 q, Q+ L, b- g' e* y/ X8 K
  1. use_wcs_shift   :  1 #坐标偏移开关
    - M& ]9 l% x/ V/ e- B' N% i3 J( b; Q
  2.   s! _* f( y6 T5 F8 g+ g  x
  3. wcs_shift : 0   #偏移轴2 L$ F, J8 |& J6 I' Q* p' ]0 m7 ?

  4. $ c+ |5 d+ J5 i7 X, R
  5. axis_def  :0 #偏移类型
    ' K7 f+ F) v) W3 J4 Q2 l# s
  6. 7 e! }- T7 O6 \! L6 O; `9 }4 u! p- i
  7. tox_shift_x : 0 #X轴偏移量% E) I4 f$ \( j* M; c5 {
  8. 2 n& D6 |' L3 ~* K
  9. tox_shift_y : 0 #Y轴偏移量8 X2 {/ G! \9 [2 G
  10. - J# D9 W2 K; u- p* b( t0 g# [
  11. tox_shift_z : 0 #Z轴偏移量
复制代码

+ q2 b9 [( P2 J8 r/ k定义交互提示语句% ]7 p; e5 z% {( X; K6 c$ |) K
$ H) y# z! h) a& e1 a" M; t

$ I$ c$ D4 v& K0 X3 z
  1. fq 23 axis_def      "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"
    ( B0 C2 d' i9 k7 y/ X6 ?4 J# \3 F
  2. % w- D3 ]: @$ [9 n0 Q
  3. fq 24 tox_shift_x  "输入X轴偏移量"
    8 L8 Y  i& z* L2 \$ h& s
  4. 7 D! O% e5 M" J5 f; P
  5. fq 25 tox_shift_y  "输入Y轴偏移量"+ z( C$ z: X/ Q2 f& E+ L# Y
  6. , \' U% x8 \/ L! p" D. Q
  7. fq 26 tox_shift_z  "输入Z轴偏移量"
    4 B/ C1 q. B( z% [2 i

  8. 9 P5 r6 A( \, K7 ?) ~" S
  9. fq 27 wcs_shift   "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码

  T0 F+ S; |; N; w坐标系偏移过程处理及交互过程处理" l8 R, b7 }8 g- u3 |$ t4 O

( r+ z9 Q' r) M$ T
7 g; N, k# G. [) P+ ?/ n8 D
  1. pwcs_Shift! l& t! f( \# E4 Z2 c; E  N# q" V/ u

  2. 8 G2 G4 p& V4 t1 [; `7 U8 U/ j
  3.    tox_g = vmap(tox$,rmtx1)6 M9 n7 \) Z3 c& E7 S
  4.   U3 ~3 Q6 i7 |" b9 J4 @) @& C' m/ S
  5.    if use_wcs_shif = 1,
    4 o6 `- c' W3 {* F
  6.    [
    $ P4 n: w5 d6 i
  7.    while axis_def < 1 | axis_def > 2,q23
    ; i+ u( W% Q- c5 W) H& y: e/ M
  8.    if axis_def = 1,
    - L( s6 A" R  _9 M: t
  9.     [
    5 U6 H3 \; k8 y4 `* |
  10.     while wcs_shift < 1 | wcs_shift > 3, q27$ h8 k5 u4 l8 b2 W# ]6 z- S; U
  11.     if wcs_shift = 1, q24, tox_shift = tox_shift_x
    ; d$ X  w1 Q4 q
  12.     if wcs_shift = 2, q25, toy_shift = tox_shift_y
    1 |) p) g/ r& }! G* G, U
  13.     if wcs_shift = 3, q26, toz_shift = tox_shift_z
    ( o% Q, P( T( V8 s& k
  14.     ]( S- t# m+ j! F5 R. c' I$ ~
  15.     else,9 A8 ~2 N3 J5 r6 U& s* v+ E" |7 n
  16.     [; t! j. a+ c$ p  R# K6 W2 d
  17.       q24, tox_shift = tox_shift_x  ^3 Z- }  Z3 D, K1 b5 c  [/ S2 W' h
  18.       q25, toy_shift = tox_shift_y
    " H# ?. b  W( [1 b1 @2 K
  19.       q26, toz_shift = tox_shift_z  C$ c! ^' |4 O/ D: F  Y: e. I
  20.     ]
    : @( a: _) }  C8 g$ y4 z
  21.    tox_g = vequ(tox_shift)   * m! F* A0 ]; }
  22.    ]
复制代码
! Z9 N* Y& U  @6 U0 o2 ^' ]
在XYZ的计算过程中把偏移量添加进去,位置如下
: q! O  @. U' z) I4 V2 `; x& y6 f  I: n) C* ]

* C8 p' k2 K; E1 j$ f
  1. pxyzout04 ]- \/ v1 c- \0 p; z' U5 A4 N

  2. 6 v) n8 P5 j. m: W& [, g0 x
  3. pxyzout1
    . V; ?; N! m) a9 e4 a

  4. " s, z$ u/ ~2 t* h# U1 o4 y
  5. pxyzout2
    $ |4 }" u1 n  \. B- u3 v3 Y* G

  6. 9 A' M6 R) z% P* O
  7. pxyzout3
复制代码
, W% J7 Y* U3 _3 x* X* @5 }
偏移量的增加函数:vadd# j3 U, A! ?% e7 t* V( u4 e

7 `8 U& V7 o2 _/ n3 n4 p/ z  K7 E7 R
  Y& r; U+ N& G9 {# X) Z7 f, H. V
  1. return = vadd(v1, v2)
复制代码

$ A0 j3 _7 Z( c2 v9 |8 m增加2个3D向量,即相当于2个3D向量进行加法运算。$ H% }7 n3 }6 q/ q& K" y& [3 b
3 h8 H7 U3 _* z% L

7 Q5 k! V5 i+ V* e4 U; }" B

- {$ U* G% d+ B) i实例:( N* O3 x4 D. {
  1. pxyzcout0       #Toolplane Positioning
    + }8 Z' \7 }' {8 W. \1 t2 K
  2.       xabs = vequ(x$)- m+ j# H% O# J  W
  3.       xabs = vadd(xabs,tox_g)$ S$ k9 t) |) E# \
  4.       iout = vequ(i$)     * f! G, u! j8 w- j! b7 I1 \
  5. if rot_on_x = two, csav = -c$( L7 ?* ]" y& k9 a! C, x
  6. else, csav = c$
复制代码

3 J/ @, e! r0 g7 Y! f3 s无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v,  w也会发生了变化! d2 }* L/ q  j6 m% f
' n9 F5 C' I( \: H& O1 y4 I, W

$ N+ ^6 L* \  `' s* d7 ^' v
  1. pxyzcout3
    " ]. V" \8 i- Y6 d) x
  2.   xabs = vadd(xabs,tox_g)1 C1 H0 g) I# f) [7 p
  3.   ua = vadd(ua,tox_g)
复制代码
- P9 F4 d; J: p8 c" u8 X# Y8 {0 j
至此,坐标系偏移以增加到相应的点上。
  n8 E3 O6 b  X3 E4 f
+ Y8 A* e$ f, R( m3 W& p

( ^: _+ F* U! ]

9 _' r& n) v' Y! x" `- N2 s4 T/ `& C- q/ o$ S# l
! D: a/ f; }/ z, u4 I0 P: a
0 s- P8 ^- G  ^+ H$ C
% ]  G7 q9 {4 H. e0 X
以上及部分代码可能存在错误,自行修正。( I; l+ c3 Z0 ^( r: u; N# o& ?

; ~+ t, {% z7 ^, g1 t1 c& G8 n# U" J: K, N4 E4 `' D+ S( `& G9 z
6 P6 {: `$ a0 K  h) Y

( j: m8 ]/ J) E- E; K, [9 [1 b; Q! d, o

  g! t+ c6 s% X) u  E0 F) Y2 J  o4 _/ `5 F6 e1 q, i2 V
4 Y6 T7 A8 H6 u' x

# q7 Z- V6 l% v1 m  @
, c' Z2 _7 u" A/ x
+ x1 r& p( S) s" H! b& q6 d8 E( A& U1 p
9 k) E" R1 S5 j9 n+ w
7 Y9 x. ~6 ^( x9 V" X2 e& @7 v
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|Archiver|手机版|小黑屋|若枫后处理论坛 ( 苏ICP备11015087号-1|苏公网安备32059002001368号 )

GMT+8, 2026-8-14 16:34 , Processed in 0.116090 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表