找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 183|回复: 0

Mastercam后处理坐标偏移方法

[复制链接]

433

主题

5759

回帖

901万

积分

管理员

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

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

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

×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。) W; r* B' M3 O7 a5 g7 G
; }0 c& d4 F, n2 J4 R- e: h5 w& O

( U, S! M# i+ m- U" Z' ]4 _

3 |) G$ d. w4 `) ^$ O
1 O1 t6 K' }: \  ^) Q
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
3 S! u0 Q: ~& s9 u. ]( ~8 U) G1 Q, R, z) {7 N) M
& u$ [' e4 z0 d  {% f
* L. j. E3 |6 x# ^1 W9 h  n
& M4 n7 i8 w2 A0 N" O/ M0 P" E" }% E
% n2 K- ?7 K' W: {, n* B3 \' b
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。7 |3 F& \1 k3 c& z6 ?

7 ^3 O3 n# f! J5 r4 I; k
% P8 U: v9 _3 B3 D, ?0 U
/ r' M5 J' d# Z, \2 \1 y
那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?2 w" S4 l1 q. b! Q4 q. L
  E# ~' Y/ O+ r0 d' g
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
3 u7 q- K2 V9 s( s7 `( F% ~8 R
& ^; E' P* P" c" d, v4 g

. q1 X% m" ]8 C/ |" j0 r5 a+ L
/ ]# q1 `7 |7 w' i

% z1 W3 q( I. X1 ]) m首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
! @5 n5 |' H) v2 y
, T" v- z& J# n( F! W# M矢量复制函数的用法如下:
8 B: b0 L4 N6 i5 f) l% A  M) P* t: H9 K

" Z- t( j% _3 X8 j. f6 _. G
& ?( p* {6 n5 F3 a1 v

) b, S( N# ?7 H9 N
  1. return = vequ(x$)
复制代码

3 X& b2 e8 u! L, d: E8 Z2 z+ _这句话的意思是return的结果值等于当前x$的矢量值。
: `4 q3 r+ z# [1 V5 {# t, h: o3 k5 u

" Z% n6 G9 a$ l1 o3 Z0 B5 F" L) T' a4 |  b6 e
6 y  i8 u: N/ _& N
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。% P7 u7 T" q, m9 W, @

+ F& ~: {, g9 U/ x) r7 [4 n定义数据格式:
( s- O5 \& m: C: C
4 t  \' c* L8 E  U

* V0 N! k, H3 u
  1. fmt 2 tox_shift
    ' h6 G, m" E1 o# j
  2. + f4 G- g3 Y: t- @  I9 A+ S" ?5 y
  3. fmt 2 toy_shift
    & b. i5 ?; R) ?9 ]2 l- F, I
  4. 2 c7 S# [; S% q8 y0 q
  5. fmt 2 toz_shift
    4 S6 n4 g) @* X; V' w

  6. ! U& k* \" e# x$ G: @
  7. fmt 2 tox_g
    / b# s: k. _( n9 a  M

  8. - L: R9 ]; [: |& `3 r$ e: J9 a2 T
  9. fmt 2 toy_g9 T3 {; V% c' e9 O" w3 @+ A
  10. ) K, a* o9 z3 {4 I' u, J/ b0 ]1 k
  11. fmt 2 toz_g" f( h. {5 D% O6 P- f/ w5 T* ^/ T  r

  12. & C0 w) Z7 u9 p9 y1 j- C
  13. fmt 2 wcs_shift) S; R4 r2 D  ~
  14. - x  t/ y0 W) h; k- f
  15. fmt 4 axis_def
复制代码
. U9 B  }( E! ^& U( y- {
开关及初始数据定义
# R% q1 A0 A7 o  w! q. B
9 J" i& K. o. s

6 g2 A) `, |) k# M
  1. use_wcs_shift   :  1 #坐标偏移开关
      ?! Y" Q9 E) A

  2. + I/ _' s+ }& D/ R, _- f
  3. wcs_shift : 0   #偏移轴5 I9 |9 y- V* c
  4. + U( K" Q. h# w$ f& P3 ]
  5. axis_def  :0 #偏移类型& Q9 s: J1 [  I
  6. 4 o: P. \3 w2 D. x( Q# D% E
  7. tox_shift_x : 0 #X轴偏移量
    : V" M& ?) O2 E+ H: d* v' O/ O5 S

  8. ) t. C" N& p' `$ {
  9. tox_shift_y : 0 #Y轴偏移量
    : ^; }( l& }+ y# q9 M
  10. ' [$ B* c( b8 H+ o0 Q
  11. tox_shift_z : 0 #Z轴偏移量
复制代码

0 l7 d0 I( [' T# \) ?% v) D/ ^/ W5 n定义交互提示语句, ?* H2 f% w4 |* R2 [$ d5 T

. ~: O: u  i+ e/ L: k5 W1 t

4 D: p1 \% }6 O7 p8 b( M* i
  1. fq 23 axis_def      "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"8 T# v6 q, D. N& c/ k. C

  2. ; Q8 |- B3 m0 q" b( H- l/ [9 f+ T
  3. fq 24 tox_shift_x  "输入X轴偏移量"! ]3 X& K1 r  T/ ]8 r' S+ G! x3 {
  4. " l+ |8 I% f( {' G
  5. fq 25 tox_shift_y  "输入Y轴偏移量"
    8 @/ ]- Z5 Q& T* U

  6. # f: S# j) ~4 l
  7. fq 26 tox_shift_z  "输入Z轴偏移量"( K5 |! l1 M( A. V: V5 @

  8. % D2 v, S, k& o3 G8 r! B# q
  9. fq 27 wcs_shift   "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码

7 }1 i: a6 N  o1 K# F) v, m坐标系偏移过程处理及交互过程处理  q3 S. |% \1 ^# |
* z5 d0 m  a( i; d/ l' h
, j2 y, r5 U) X+ [* B
  1. pwcs_Shift
    + K  K6 `, e9 V* s9 g" q4 ^! z1 Z) l
  2. / @( I: u- Z( @
  3.    tox_g = vmap(tox$,rmtx1)
    6 s: i/ L. s# u5 d6 j8 ?) b  P

  4. + x* A4 }; }& _1 f
  5.    if use_wcs_shif = 1,) j6 a" {/ F, O, _# E. _
  6.    [
    2 R  d; W+ \0 G5 G0 ?
  7.    while axis_def < 1 | axis_def > 2,q23) ~! D/ x6 f: u6 y9 l
  8.    if axis_def = 1,
    9 c+ h! O2 j) W1 ~
  9.     [+ B. @4 y0 o5 S' F3 Z
  10.     while wcs_shift < 1 | wcs_shift > 3, q27
    - X+ m1 d. b/ f" E9 ^9 i
  11.     if wcs_shift = 1, q24, tox_shift = tox_shift_x
    4 ^4 u( Q. @4 u% ?4 H7 U
  12.     if wcs_shift = 2, q25, toy_shift = tox_shift_y+ s1 o' s# T4 i; V
  13.     if wcs_shift = 3, q26, toz_shift = tox_shift_z
    0 r# |4 Q; f( D& M6 k. f' N
  14.     ]
    / ?4 A3 q7 h7 N0 r; @; c" X
  15.     else,
    5 l* K; s9 m8 ~8 ]( O
  16.     [  C. V* n$ |0 B- _
  17.       q24, tox_shift = tox_shift_x
    4 x6 i5 I) |9 B  e& v$ _* V3 u) c
  18.       q25, toy_shift = tox_shift_y" U, G0 |3 [" Q/ Y8 e/ u( t: X5 d
  19.       q26, toz_shift = tox_shift_z
      A: V' [, s5 ~1 [
  20.     ]
    ( {8 ]0 }1 v/ [. m' S
  21.    tox_g = vequ(tox_shift)   
    ) Y$ j* I. j6 R$ ?% U. H" G/ A
  22.    ]
复制代码
. c; `0 H9 p* V' C- p: q; S
在XYZ的计算过程中把偏移量添加进去,位置如下
* j( S- d+ j" I# l7 ?! C" n8 r3 k9 s& H: Y& a

/ p! q! x# \4 }4 i7 K
  1. pxyzout0/ g( l" m! f3 D& U

  2. 0 d, M$ Q6 A7 O
  3. pxyzout10 y$ H2 v5 r; E' m3 w, T# w; \

  4. " g- }" S8 }& k5 l, k$ K
  5. pxyzout2
    # q% K9 L- M/ T) x
  6. 2 Y5 X" ~' k, ?0 o% X* A% S6 c
  7. pxyzout3
复制代码

5 }& L6 H5 Z  B+ V! U偏移量的增加函数:vadd9 W& b8 k  r) Z* j: U" w$ A

6 x4 P6 C/ ^5 E

" B0 N% V0 ]+ P! y% p9 c) L
  1. return = vadd(v1, v2)
复制代码
/ m- a: U: n( K# [' w- s
增加2个3D向量,即相当于2个3D向量进行加法运算。
7 F5 h! h0 l  @1 [* u3 b+ _
/ h0 x3 Y2 k% S% }/ N

3 N% M; t% U2 k' X6 L, A

4 c/ t2 x8 k. ]* s实例:. i7 x: k1 K3 o* {3 @) q' M" {
  1. pxyzcout0       #Toolplane Positioning9 ]- Q3 C* Q, n7 h% {% E; q+ P1 k
  2.       xabs = vequ(x$)) E0 s7 }* n6 e+ _! M! V8 |: B: p
  3.       xabs = vadd(xabs,tox_g)
    ! n. D5 c3 |7 J2 x+ Q
  4.       iout = vequ(i$)     
    $ p- |8 l/ T% q3 G
  5. if rot_on_x = two, csav = -c$
    & y3 c  m2 Y  Y/ x$ C
  6. else, csav = c$
复制代码
1 _! e6 E! Y% L/ c# D0 N$ o
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v,  w也会发生了变化9 Z/ k3 L6 d( b) ^) C: n! o
# G- \4 H+ z- Z- ]8 D+ d
; C* }2 r2 d0 F6 d) H9 a
  1. pxyzcout31 f0 Q2 N- Z% x
  2.   xabs = vadd(xabs,tox_g)
    4 z, @( z6 w, J! i, D7 i
  3.   ua = vadd(ua,tox_g)
复制代码

4 o% x* h6 W3 d; Y至此,坐标系偏移以增加到相应的点上。* L( O* R6 [, H, m
, y; f! q' t, ?2 t! Z/ s
' w" J( J, {6 s  _

- b2 X/ k0 n; F& O" J* b- ]" b4 o- y( W5 `

4 G' |" l, g% B. g' q, ^1 H  B6 x" K1 s. W2 d
4 l$ v$ |- _  |# l; }9 E
以上及部分代码可能存在错误,自行修正。) `( V8 ?, @  \6 Q8 F; n

, c3 [9 ?! B6 ~- a8 E5 [4 S& J6 |4 m6 k0 d7 S7 x
5 @1 h9 G9 t7 O6 S& s

6 B% K/ Z$ L& R5 C* v7 j) R3 j8 S  b/ r
/ }7 S: `; p9 N+ ~, |* `

+ i6 n/ K8 U/ r2 [
, w9 }" L; |% F- c/ s$ O& s# ]
; H. m" i! l0 A# a4 G, j
1 `! P6 Z) K; K# `6 c6 N& g, H5 O; d$ H( a$ ?( U

4 Z; W6 @6 l# z' E7 A
) u$ M9 X- b5 n
% t) D& R* i$ n/ C- n; r
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-9-28 22:28 , Processed in 0.144141 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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