找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 186|回复: 0

Mastercam后处理坐标偏移方法

[复制链接]

433

主题

5759

回帖

901万

积分

管理员

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

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

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

×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。# q  |) K5 B0 c+ v( c

* X" H+ h( U; x( U8 M- s4 p

& E3 H+ P0 ~0 O7 M: G. _  ~$ ^! j

! B" S" |) m4 o) _" m
& Q+ ~  Z4 B" j+ e) e' P* Z1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
1 {5 B/ _% n7 T! x% o! _- ]3 v% [6 @3 v6 J% j$ T

- s2 f# q) K# E3 J" s6 V4 B) p8 _2 Y7 b" f7 Y6 G# H' S
# @7 f. V1 ?0 e  m2 j

1 i8 x4 z# A  e& u2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
, W8 r1 I) e" M5 z6 v3 r
# g5 C) Z2 @9 c9 `3 w9 q2 ~/ R( [6 U. u

; @5 X+ Y# `* x$ s- @# |8 q7 u1 z3 B
, |# \6 r8 n) k& b2 `那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
& ?  k' l# q0 k6 l4 S/ J; R5 H" E, X! \" _
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
) j2 ~% x9 Y# ?  J1 _, `% O* V6 W: V/ T8 P; B, y

  v+ t5 U/ A6 f. g8 i  Y
- |% W& c+ _0 P4 _* K$ J& C; _, g

5 G6 u' s0 w, {. E6 @9 `首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
. c) l9 ^; P6 D
9 F% E0 D" `! m# v; e8 M矢量复制函数的用法如下:
2 Q, c( L( b! E, y
9 _" x8 |4 E3 F+ }. x. L
7 C# ~9 n: d$ d+ k
  q6 i  L4 y/ v
* a4 u! N6 d' A- F6 B1 g$ B8 D. V
  1. return = vequ(x$)
复制代码

$ @$ W$ k& t0 N" b# k) A* T这句话的意思是return的结果值等于当前x$的矢量值。
2 l7 T0 q' R+ K0 a: C# S* G* e/ k- H/ W. V

# c+ X) b' R2 s0 ?& x. @, N
1 \1 e1 U9 H0 Y- m% Y. m
" Z, z) d5 w8 z" g7 t同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。0 p2 h& c. q. W9 S. d! i

: I" Z* E) p) v0 e# }( D2 W9 \7 n定义数据格式:
. |* M5 E# U0 ^  T0 X8 G0 a; K9 x. d& V- c* {7 T4 v, u' N& l
4 c  v3 f# }5 S6 C0 B0 S# O2 a6 G
  1. fmt 2 tox_shift7 r& x/ ~7 v3 t/ y0 X' `+ U9 \  A8 z9 W

  2. 1 b$ ?. o2 G( `& q. O; ?
  3. fmt 2 toy_shift
    3 v; m4 ^4 r0 a  }/ r

  4. # @6 o# W6 s0 \1 U4 w# Q* C
  5. fmt 2 toz_shift/ P8 Q1 ]1 F0 i) H: w9 ~( q' y: P
  6. 4 t8 p( p' w: F2 ~* ~8 b& U
  7. fmt 2 tox_g
    + P5 q# e7 x5 ^" k' h5 d% [! x
  8. 0 J$ k. \) Q0 h. h
  9. fmt 2 toy_g) Y' m: L2 q' C! h- m0 Q$ r( y

  10. + J4 a/ F9 Q) m4 I; ~/ ?
  11. fmt 2 toz_g
    # b4 a0 n9 K6 Z& u
  12. 1 G% d" C5 K- c
  13. fmt 2 wcs_shift
    ! K$ R% z' c) D$ |# N, \

  14. * G9 Q% P2 `2 L' @4 y! S6 _0 j# ?
  15. fmt 4 axis_def
复制代码
6 p3 E3 D+ c1 B7 H: V
开关及初始数据定义
7 i2 G5 w& g6 ^) g6 e+ m' _7 S$ w5 ~6 W

5 K" b. E; t) y* t% Z0 k  `
  1. use_wcs_shift   :  1 #坐标偏移开关
    % h0 M8 }" d/ p! k, C
  2. 1 W9 O- F% I0 ]( l
  3. wcs_shift : 0   #偏移轴
    ' a% B) ?$ V, {0 k- P) }
  4. - L% u$ y3 h' \
  5. axis_def  :0 #偏移类型
    6 F9 B" E  y0 [9 c5 I9 U* M

  6. , P# z, M3 x5 R3 _, f6 r) a
  7. tox_shift_x : 0 #X轴偏移量
    % p$ b# \8 ~$ d! G7 R) ^  ?
  8. " G1 H0 `1 ^0 V
  9. tox_shift_y : 0 #Y轴偏移量. y$ N+ V# u4 i$ T
  10. ( r5 |! |, N" b2 D. Y1 X+ c  W
  11. tox_shift_z : 0 #Z轴偏移量
复制代码

2 r- e3 S% \" G, K定义交互提示语句  |( c7 @( u' z
. \6 }& x; J5 }% o+ E! Z: V( Q& s
- Y( @5 [3 A$ d1 c  w) }6 J" Q
  1. fq 23 axis_def      "选择偏移的方式,1=单个轴偏移,2=多个轴偏移", ]$ I" S5 r; J
  2. 2 X; G) B* Q* ?! H" y7 @
  3. fq 24 tox_shift_x  "输入X轴偏移量"
    . C) S9 j: @+ d8 r: B0 n
  4. 3 ~7 j- b, b/ t7 n) \" ~
  5. fq 25 tox_shift_y  "输入Y轴偏移量"
    / t4 K# F4 F; j3 N( ^
  6. 5 U* a' N* r& O& b0 C- b
  7. fq 26 tox_shift_z  "输入Z轴偏移量"* U- b8 I# o# {4 f3 A  A8 L' }
  8. - `9 q; `* p4 |) O( N
  9. fq 27 wcs_shift   "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码
/ s6 E  ~) M" d3 s# I5 P
坐标系偏移过程处理及交互过程处理! ?; |/ z6 c# W$ H& }# R9 J
6 D" p% v9 C5 W- h

* Q3 X: b+ a+ z, J' q+ O2 s
  1. pwcs_Shift7 Y, V' B3 _( `* E; N1 ~+ Y  j# K! c

  2. 9 w; h/ ^8 g! C$ t
  3.    tox_g = vmap(tox$,rmtx1)
    ; j2 l/ ^3 }- w* K1 f/ x  G

  4. 3 \5 ^' ]6 w6 Y: n1 N& b0 P
  5.    if use_wcs_shif = 1,8 S& C, U0 M: w- Q( {3 c/ ]- C$ R
  6.    [
    , Y0 A0 t0 g' }. R1 K
  7.    while axis_def < 1 | axis_def > 2,q23
    ' s; S$ t8 z& ?4 V& G
  8.    if axis_def = 1,4 @8 @$ |4 `! g: i# `2 s. s
  9.     [0 \1 r. G- H7 `2 a: d
  10.     while wcs_shift < 1 | wcs_shift > 3, q277 _; d; K# l/ l
  11.     if wcs_shift = 1, q24, tox_shift = tox_shift_x5 p% [. k& e1 ~
  12.     if wcs_shift = 2, q25, toy_shift = tox_shift_y* u5 B$ S3 i8 S1 z! M
  13.     if wcs_shift = 3, q26, toz_shift = tox_shift_z0 I: p( H7 X/ W2 p1 r5 q3 g! x$ B
  14.     ]
    5 C8 t" O( t- R- A0 _9 C: B! `
  15.     else,
    ' ~, z+ i  A& g
  16.     [1 `. Z5 i) h5 o+ v0 y; M
  17.       q24, tox_shift = tox_shift_x
    6 w5 v9 Q1 ?! P. w; x& g1 `5 J
  18.       q25, toy_shift = tox_shift_y
      V+ }6 {& ?+ Y/ N; m4 c3 ]
  19.       q26, toz_shift = tox_shift_z
    1 h. t& H) i1 K. Q
  20.     ]
    8 H% k/ w. l) l* E/ h" B) ?
  21.    tox_g = vequ(tox_shift)   1 M! f/ P3 c5 |
  22.    ]
复制代码

9 c2 o; A5 X6 _# f  |! C1 F; ^在XYZ的计算过程中把偏移量添加进去,位置如下
( K& a" h/ ^2 r  w$ g9 u7 T! s* u+ ?9 }+ }+ V* E" H

! J- [6 c4 J& {# b) {( e
  1. pxyzout0
    1 \2 J% G9 s7 Q4 q& \
  2. & k5 x  n0 ^& Z$ R
  3. pxyzout1" G6 V% ]% Y% |1 I! ~0 v

  4. 9 V0 T- S9 s. P: S! M  d
  5. pxyzout24 e3 O+ g. c8 K7 l  _8 K

  6. 3 h; T. I( u# N
  7. pxyzout3
复制代码

$ _! Z$ {' M& E偏移量的增加函数:vadd
( W* g' V: l6 j" X& G& k; ?! M; R7 |; Z; w3 n0 s, y0 d

' D5 M( A5 g% v; S& o8 ]2 V
  1. return = vadd(v1, v2)
复制代码

8 f- j" b: P4 x, k( e. Q! R增加2个3D向量,即相当于2个3D向量进行加法运算。( w6 N# G& X& N" F3 {

. W/ W% }) n+ [4 k7 }" _( c/ X+ v/ t8 v

; r% S  Z: `5 n实例:
8 [* M, G! C. _2 \1 `, c+ s) l
  1. pxyzcout0       #Toolplane Positioning
    % ?0 z  m0 S- K3 v- p5 ?& B& p
  2.       xabs = vequ(x$)" h1 ~- u/ N+ J, O8 \6 G: X
  3.       xabs = vadd(xabs,tox_g)
    ( H; ~9 R% [$ K, k( o( h8 n' R
  4.       iout = vequ(i$)     
    8 b$ M, m: h7 j7 a
  5. if rot_on_x = two, csav = -c$
    ! l$ s4 w: L: d3 ?5 |
  6. else, csav = c$
复制代码
& @5 O# M$ s$ R( @
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v,  w也会发生了变化0 E1 J  ?- Q/ ?

- Y3 i. P3 f3 E- K

5 i+ g' w# k. c0 k' d' g- u# I" F
  1. pxyzcout3% ~. k) N: Q: I% F( s6 r
  2.   xabs = vadd(xabs,tox_g)
    7 t; b0 ~5 a5 \) Y
  3.   ua = vadd(ua,tox_g)
复制代码

* d+ e5 S; r7 v9 R7 s# \至此,坐标系偏移以增加到相应的点上。
5 z) @2 i  }/ ?6 g7 a$ I

9 x& j! V' j  j: ], E$ H- ~) B; m" c" @

' @. S& y  \  Y, ]3 x3 W( p2 k& `* V# p1 [  m/ n

  y* a- b7 G8 r& |1 X/ C4 t# w+ d
  O/ V% x& s  F0 C

  T) H( b2 R' x以上及部分代码可能存在错误,自行修正。
. g: J% U/ |. ?( T' b
! O- W* W3 q% w) G8 U
# R- J7 y$ l8 l5 t# _0 m" V* A6 z

  F& g# c; R8 {/ c: ?5 T
% I6 \. F5 s: }1 S1 s5 G- X  e/ a7 j
9 M8 Q! s$ @( N* F
1 ]" W8 N! g5 k4 P1 W# V7 ]

1 Z( X: E. W" }/ x8 @+ F4 v& s* p0 R% z1 |1 u6 F
& O1 F3 b, j/ Q* j$ O. l

9 X1 s) I" K8 o* U% S' @( s! C  H7 m2 E: Y9 S
" g3 O* X+ v+ K
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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