找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 90|回复: 0

Mastercam后处理坐标偏移方法

[复制链接]

433

主题

5759

回帖

901万

积分

管理员

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

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

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

×
很多的时候,很多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 o
6 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
  1. return = vequ(x$)
复制代码

: U$ ]0 _4 o! t# P' B+ V9 A这句话的意思是return的结果值等于当前x$的矢量值。, b. I8 B% G! m' l& s* u9 S

. }6 s! u# ~$ e
3 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
  1. fmt 2 tox_shift
    " L9 Y7 n$ a! I% s
  2. + r* k( y" d9 n* P& W
  3. fmt 2 toy_shift
    * h# ^/ Y* L# i$ @9 L' Z

  4. ) }/ ?/ f. y/ S
  5. fmt 2 toz_shift. F- s. m& k- m, r. M

  6. - i3 V# H3 G+ B
  7. fmt 2 tox_g
    " |) W8 J& M. ]2 J: n* M( Y" F0 C+ B% c
  8. " ~# I% r3 A& F" s2 C4 I
  9. fmt 2 toy_g, A  q; S* h0 D* j. w

  10. 8 _% [# b" B$ g6 R% ~+ K9 F# {" X
  11. fmt 2 toz_g
    ! X; I* n0 C0 K) \  P9 X1 b" Y" l
  12. ' G9 o; K0 x9 u7 Z# j! H. h
  13. fmt 2 wcs_shift
    8 j) x* Z* `. ?/ v* t+ }0 S! ^
  14. ( D2 K# H' }- B' P; p6 B0 x
  15. 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
  1. use_wcs_shift   :  1 #坐标偏移开关) w0 t7 u( S: [
  2. / u+ B$ m; M, O! w/ U' W
  3. wcs_shift : 0   #偏移轴! i' A+ S! Y# x5 a

  4. : I$ V6 u( k. l7 w
  5. axis_def  :0 #偏移类型% s2 J8 {4 ~# U& C

  6. . n' V) T/ ^6 ?* m: p: f: Q4 f' R
  7. tox_shift_x : 0 #X轴偏移量8 N$ ]/ O/ {$ R$ m
  8. ' v) d0 |7 a4 `5 K! O! z" n! M
  9. tox_shift_y : 0 #Y轴偏移量0 K- m* ?+ F) u3 g6 p0 i  c
  10. 7 f- j) U1 F9 r9 H
  11. 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; ~/ ^
  1. fq 23 axis_def      "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"/ {5 U4 c0 h% ^1 c

  2. $ J( h+ T1 Z) Y# r1 D
  3. fq 24 tox_shift_x  "输入X轴偏移量"
    ) }+ y2 t/ q$ W4 E
  4. 7 J4 ~; d& X7 w3 ~6 [, K9 u( J
  5. fq 25 tox_shift_y  "输入Y轴偏移量"
    6 f8 q+ f, U# }0 b

  6. ; d: s$ R& q& g' ^6 g: z) ^1 J
  7. fq 26 tox_shift_z  "输入Z轴偏移量"
    - o; _2 M5 m1 e3 ]9 D5 X

  8. 4 A. H% I3 u5 i4 q$ d
  9. 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
  1. pwcs_Shift- L+ h" y2 t% H1 H( [

  2. - P, W/ }( p8 x$ G3 ^) X
  3.    tox_g = vmap(tox$,rmtx1); L, U: ^/ o. D! P' j3 v( y
  4. * u9 W) _+ o% i9 J7 W* s2 `
  5.    if use_wcs_shif = 1,
    . x( z. T# B* T# x- y  X
  6.    [
    ! B1 D' e; B$ E# M
  7.    while axis_def < 1 | axis_def > 2,q23! x1 Q, h5 A/ V. a4 Q3 I
  8.    if axis_def = 1,  O# M8 _' l. l' Z6 e/ V% u
  9.     [8 C/ A6 @9 I6 t* L. A! h; v3 B6 e
  10.     while wcs_shift < 1 | wcs_shift > 3, q275 U% \2 Q3 q( a, g# ~
  11.     if wcs_shift = 1, q24, tox_shift = tox_shift_x4 V. E/ R) p5 D. A: ]
  12.     if wcs_shift = 2, q25, toy_shift = tox_shift_y* t6 C5 d5 u: w8 @0 R3 W. V8 X2 J
  13.     if wcs_shift = 3, q26, toz_shift = tox_shift_z$ S) d* v7 x, P' d4 [
  14.     ]
    / H" Z. D; ~  j# ^
  15.     else,5 h7 _. Q0 r: j6 {3 t: b% \1 ?
  16.     [
    6 B+ M5 K7 X7 Y7 S9 o
  17.       q24, tox_shift = tox_shift_x* c5 `+ z3 i" e
  18.       q25, toy_shift = tox_shift_y1 K+ Z+ X5 |( t8 V! O5 M" g
  19.       q26, toz_shift = tox_shift_z
    % ^0 ]- K& c- O6 _) D# q# B
  20.     ]! e0 _( X7 f  h
  21.    tox_g = vequ(tox_shift)   
    $ W7 i1 _6 A; I& J/ V3 R1 H' g; `. Q* p
  22.    ]
复制代码
, d2 e/ X% P4 W0 ?
在XYZ的计算过程中把偏移量添加进去,位置如下
  `2 y4 S8 g8 w9 ]  ^& I
# g8 X7 Q7 C) ^0 J
" u' m3 |+ O0 Y8 {6 {) b
  1. pxyzout0
    + s1 d" W; C4 H% o
  2. % R/ Y, v& Y" W& n1 B7 r' W" i
  3. pxyzout1
    ' _. p5 b- i  U

  4. 6 r9 I7 v0 B9 F, P8 o
  5. pxyzout2% A) P& N' Q7 |6 G) ^4 k5 b: W) z7 c
  6. & {, R7 b# T- X) a
  7. pxyzout3
复制代码

: W* t- ]/ `+ c# F偏移量的增加函数:vadd
+ @' C3 G& D; D) H9 w+ Y5 j9 T  P/ t
* R- M$ U& O, N; ^
  1. return = vadd(v1, v2)
复制代码
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
  1. pxyzcout0       #Toolplane Positioning8 X! }* i; H3 K, q( Z; _) i
  2.       xabs = vequ(x$)3 W1 _& L2 G) v3 [# ?: A7 |( M( @
  3.       xabs = vadd(xabs,tox_g)
    2 o  \  x( f# e
  4.       iout = vequ(i$)     8 I* s. q# g8 s& }+ }
  5. if rot_on_x = two, csav = -c$! Q3 P4 |! V' I" m1 G
  6. 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
  1. pxyzcout3
    5 {; N" b7 O+ ?) k
  2.   xabs = vadd(xabs,tox_g)( b, N, u/ k# X# R
  3.   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/ i
5 [+ 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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-8-14 14:39 , Processed in 0.142659 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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