找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 114|回复: 0

Mastercam后处理坐标偏移方法

[复制链接]

433

主题

5759

回帖

901万

积分

管理员

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

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

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

×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。
  ]1 o' Z7 S( b1 A  Q/ F/ B) F
' P- [9 F& N$ O0 t. d) t2 {: G


5 K2 f2 J; ~4 N8 ~' N

+ O$ ]. F5 O" N% I* F- [* p* Q. r3 m/ {  s! D$ S9 P
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。: ]6 m; V( ^2 @/ b3 ^
: k: X! L" i9 o: M- ~
5 l. \: H" t7 g7 y- A" x2 {% x& h

$ C' t3 {9 u4 l% {& U3 h" Z
5 }) T7 Q) \, l' ~
1 D. _' ~) j( z5 n& C, q  W
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
" Y4 H5 L! k" b" A/ U7 p
1 Q* _8 T( r: I4 ?" S1 ^) M

& B: j) k- V0 p7 z5 ?: c
% J0 _+ u7 W9 A! d! G/ r& Q那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?2 I% z5 D! \9 J8 w6 X
& M& _9 ^4 f. ^  e0 `
下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。& p! U3 S; m5 ?% I2 C7 u

& R$ P" h1 Z4 b% S4 f- M. p

: D9 ?1 L, |9 k! L, }
2 ?) |& u1 i' O: |1 W. q
* y  @' O8 ]+ z9 D- U
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
/ Z: S  B6 W3 O- {/ e% c) I
( r: P4 M3 I: [- O1 d% M矢量复制函数的用法如下:  }7 @( ]/ o8 E1 u

) l1 u) U" B0 S' @0 U0 C3 [
% Q+ M% I, U% q# L2 Z$ Z

3 m- m# p& P2 r! C7 _* U
6 U- H$ g. }4 E$ ]
  1. return = vequ(x$)
复制代码

* B8 C0 E' {, B这句话的意思是return的结果值等于当前x$的矢量值。
0 ], f$ y  Z: j" _6 C/ R, a9 X' g7 i* U
: \' v8 G- N( Z
" l$ {( _& ?- R4 J

  @5 E- z5 \" o1 C. O2 R2 C
5 a% n: x/ _; @; y% z& k# E同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。# g1 u% E9 S7 B; R+ D% Z% i4 l/ h% F, W
+ R2 e0 I# G7 S9 u, w0 }3 x
定义数据格式:
9 [' u+ d) Q' o  t) v+ Y
4 I- \4 y  t" ]+ E* N

' ~7 S0 ?$ S: U
  1. fmt 2 tox_shift
    & l% n- P3 o9 }! M

  2. 3 l: r# E1 V0 s
  3. fmt 2 toy_shift: b- L; o6 P8 N* Q9 N# ~
  4. * Z7 b: o0 Z6 J4 H' W. B# d
  5. fmt 2 toz_shift
    # V; t4 S, J0 a. ]3 ?' b
  6. 4 O& B  ^- W6 f. @. B9 R7 ~
  7. fmt 2 tox_g
    7 R: e* F$ }+ ~8 g+ J. G

  8. % }) m# n( V$ j  h8 N+ n* p
  9. fmt 2 toy_g
    9 u0 b4 O( \4 k0 w  W. M' W! n
  10. * X% _( }* g. H2 v) |
  11. fmt 2 toz_g. {$ f4 q: O% K- r, Z% r

  12. ' [+ K5 f& `; R' R' ?7 `
  13. fmt 2 wcs_shift
    : S, m8 c& m- g- H

  14. # a1 f  w; L: n5 G( B- a
  15. fmt 4 axis_def
复制代码
+ k0 {3 y# _! f6 E# ?; R1 A
开关及初始数据定义' u  }$ H) w7 O5 c

! ^* H+ Q) `) _# y" J, ^9 H

) [. [. m% d% X/ C
  1. use_wcs_shift   :  1 #坐标偏移开关
    " @- R+ i3 X* M* m+ V
  2. $ t. n$ U5 k; Z. y. J) _+ {
  3. wcs_shift : 0   #偏移轴2 x" z8 ~* n; p% `  n- r
  4. 7 u; S# H8 X# A/ r/ }  X! _; U
  5. axis_def  :0 #偏移类型
    % e4 Q9 a  P7 P8 u: G! D3 O1 q
  6. / C: J$ a/ o7 a- }6 a+ M
  7. tox_shift_x : 0 #X轴偏移量
    ; l' K* O& f( ]1 l9 m

  8. 3 }. W: l  l- N! J
  9. tox_shift_y : 0 #Y轴偏移量
    ! d( H1 Z9 |1 ~5 C* [! ?
  10. 9 ?1 C9 K3 }6 I1 q( L  D$ L+ B0 X( D' F8 X
  11. tox_shift_z : 0 #Z轴偏移量
复制代码
  y2 q' E$ r% G0 O9 W7 k7 T
定义交互提示语句& r% l* g& n1 C# E, k% m: B0 V! j

* t7 M1 _8 D3 ?' o

4 L9 t. q/ b- h/ F$ u$ Q% e
  1. fq 23 axis_def      "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"
    : l% n( y. s* C* B# z5 n; M
  2. / D/ {1 r) c4 o! o- d0 J
  3. fq 24 tox_shift_x  "输入X轴偏移量"
    2 k0 q0 m1 k, G

  4. 1 M  V! X2 C4 v/ Z
  5. fq 25 tox_shift_y  "输入Y轴偏移量"
      Q8 P6 K; g0 a

  6. + H: M" N3 m  A! h+ A
  7. fq 26 tox_shift_z  "输入Z轴偏移量"
    4 C( E  M. m" {; J- S# q0 N: D1 L
  8. 7 q& i4 u6 k$ x$ J; }
  9. fq 27 wcs_shift   "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码

6 m# k9 Y" o' v3 ^坐标系偏移过程处理及交互过程处理7 _9 V7 }  \  Y1 \7 U

% S5 P* J( f+ F$ v

" e! F# ]) U/ n( A5 h7 A9 H  h8 t
  1. pwcs_Shift  \  n. ^+ O, F; Q, R6 X
  2. " j- o8 k, o9 V% ^0 s
  3.    tox_g = vmap(tox$,rmtx1)
    . N& B) v) N- C. P$ ?9 q

  4. 6 O. Z  A2 Q) y; H. l8 \
  5.    if use_wcs_shif = 1,; S% Z  t2 Y# i9 L6 a
  6.    [# `* \/ p. U. i2 x0 g+ n
  7.    while axis_def < 1 | axis_def > 2,q23) v  \# V; T& E
  8.    if axis_def = 1,7 P: v8 u) x0 W3 t
  9.     [
    $ L( E7 _0 `3 S
  10.     while wcs_shift < 1 | wcs_shift > 3, q27
    / }! Q' T' `+ A. O0 ]$ |! A* ^
  11.     if wcs_shift = 1, q24, tox_shift = tox_shift_x+ u( B6 P* L) X' }  \; |* [
  12.     if wcs_shift = 2, q25, toy_shift = tox_shift_y
    3 d. Z# }8 \9 s
  13.     if wcs_shift = 3, q26, toz_shift = tox_shift_z
    ' t; Z  G* C# J. A
  14.     ]
    1 M- h2 B* R- b6 Y, `0 f
  15.     else,
    6 u% `6 g+ R5 ^6 _) r
  16.     [
    6 u$ Z( ^7 u  ^6 b# r
  17.       q24, tox_shift = tox_shift_x9 f+ s2 B$ S! c6 ?+ A7 p
  18.       q25, toy_shift = tox_shift_y
    # W3 Q* y% d6 x- a4 B
  19.       q26, toz_shift = tox_shift_z& g" v8 N, g  n
  20.     ]6 r5 ^# }. d( k- }9 c7 ^
  21.    tox_g = vequ(tox_shift)   
    ( w  `' ?: [% f. y% E# \  Y: P
  22.    ]
复制代码
6 {- a- ^1 ^! b3 r2 B; u
在XYZ的计算过程中把偏移量添加进去,位置如下
" S2 Y4 ]# C5 H" a" e8 E  T# v
! w* n1 N! h0 }/ H! c
2 f& a: l- a  o% Z+ M
  1. pxyzout0
    3 I. W+ t; Q3 i
  2. 3 w! p/ ~6 I& J
  3. pxyzout1
    , ^7 T/ X6 U: A" r4 T! b

  4. * y! |7 J% }0 [: q  R
  5. pxyzout28 i: M# _6 }( b" }6 e" r! `9 j4 @; _
  6. ( L& p% I2 U0 ~* o- X
  7. pxyzout3
复制代码

+ N! K/ b7 k! w0 G3 L  `: ~偏移量的增加函数:vadd, j( H8 h; O; e9 J4 R% b( ?" X" A' ]
$ b2 @1 U8 A2 h

. v) \; R! |! _5 {5 c3 s' \9 z
  1. return = vadd(v1, v2)
复制代码
' P; C6 Q7 t6 N: ~) ^% M# q! p
增加2个3D向量,即相当于2个3D向量进行加法运算。
; v- q0 p3 Q' \( `& U

6 y( i% L- ?1 t3 H% l8 C0 a3 S. v, r1 `9 v

8 E0 ]; ~7 n- d实例:
/ v6 Z7 s4 d. G* e0 n
  1. pxyzcout0       #Toolplane Positioning
    : I* J2 ]6 F; Y/ R9 i3 m' V0 f  K
  2.       xabs = vequ(x$), T. T: [' t! @+ G2 H& z9 `
  3.       xabs = vadd(xabs,tox_g)9 m8 m( o+ H" J. N5 z  }& a, ]5 o" A* S
  4.       iout = vequ(i$)     
    / i- I3 g3 k% B
  5. if rot_on_x = two, csav = -c$+ s& A7 t1 i8 b6 B
  6. else, csav = c$
复制代码
7 Z  m) e9 n( i5 i' b0 z) I5 z; c5 F8 N
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v,  w也会发生了变化
3 b8 r! {7 Q; E2 w, p+ R% ?: [' m6 S, @7 i+ {+ ?' K% p
" J1 }" r: m9 O7 N! S
  1. pxyzcout3. Z: m- g  M9 ]: W4 Y+ Z  l
  2.   xabs = vadd(xabs,tox_g)! {6 T* Y7 s6 {
  3.   ua = vadd(ua,tox_g)
复制代码

" d( [9 ~( A* X$ l0 f至此,坐标系偏移以增加到相应的点上。0 N" V( Y, _; Q

- a2 r: Q- h. Y4 @
: W3 F$ p) r2 t; o3 R
1 Z6 p" W9 }: G+ I+ f

; }' z% _1 P5 ]8 L3 ?# y9 @
6 O" A1 I7 M; K' S
& g( p( u" Q7 R+ h: L- E; W) s

7 }$ P/ b6 m* L以上及部分代码可能存在错误,自行修正。; j9 j, }, c6 G
' }) w8 Q4 d/ |, U: I0 U. K- a! {

/ b2 ?+ o( M" Z  e
+ [( z5 ~( W& h4 J6 g: w; s6 T8 G  ?9 F, l: g
* @* Q4 C1 F) a( V! S9 [3 I" J

# Y, X- K7 r. C1 c
# r0 o1 P8 O6 N0 Q1 Z! w8 D3 z, ?" d  L3 f; Q/ Z& Q
1 E$ w8 F* _- q* w* B4 e3 h9 t
5 H3 Y7 b2 q5 i. o3 ]
% ?9 S- o, C7 E; J5 j- O

. F0 E2 A$ p2 U# C; o* U" p# N, V" M( t  n* O) o' e8 w, V
& u, _/ n. q  i: m& v5 t
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-8-23 01:54 , Processed in 0.173143 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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