找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 185|回复: 0

Mastercam后处理坐标偏移方法

[复制链接]

433

主题

5759

回帖

901万

积分

管理员

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

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

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

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

. @9 E: g; M) a1 `+ K: {

# i& f3 U1 i$ w4 i) A5 h

. b$ N; I' f, q5 w* r9 t* a# S4 s- f0 U' Z
1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。. }6 ?  k- u9 B; h) G

) K+ G5 i7 s3 {, f* b
% p& K+ X5 x1 Z" D& n9 o

7 ~9 B4 W" ^" i1 w0 g* D0 o" M  b  K1 p" i8 O
* w- g) y8 u7 p' r
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。; x. u1 B4 Y) f" Q

! u/ \7 j6 ?" r; a. x  G
% g' E1 y% E$ W( P2 Q5 S. S
2 G/ n. Y+ }. z) M
那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?* x1 }* d# o9 A/ e% D' u! U% N

, ?5 w) N. t9 l0 w0 u: W: z' x下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
( o, B5 D+ r* a- A+ a2 p
$ w, s, p6 t( V' P) O
0 N7 c* O) s, N, W2 l" g

$ b2 i4 h0 t8 A0 H$ z9 k- t2 i) ]$ _" b
5 Q1 s2 [6 \' D/ Q9 \( `" b# S  h0 k
首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。
, V% W$ s( M- k3 Q$ n$ `8 P
  g) ?. I7 p2 T/ m  G矢量复制函数的用法如下:
+ F- f# X1 f- a. M1 r# t" T' u8 Y7 L. A0 B% ~
: Y$ @: t" y" j8 H. o9 X, w
' C7 ?! \  k1 K# J- ?
- M6 h6 S4 o& @) F2 m; t, [
  1. return = vequ(x$)
复制代码
, E" g4 N9 ^( P) H9 e2 {7 V/ M. e
这句话的意思是return的结果值等于当前x$的矢量值。* i7 o& Y+ V9 G& {# F

! l/ X/ E2 V; n# w/ m6 I3 J& W

# V8 _2 o; @7 D: t8 u6 r9 L: j( [5 ^

, N! G9 D4 T4 h同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
/ b& S6 V) u2 H7 ]' k3 C: o& L* }" F  @( i9 d9 A; R; G' \6 S
定义数据格式:
! N% z; |* w7 A7 U1 X" H7 F/ e3 C. \' C& n! ~  K4 F3 m8 M

' |7 ^' v9 L  _1 }9 a
  1. fmt 2 tox_shift/ K6 L6 b8 o0 [( H# f* a4 [
  2. % q* \/ k! t& ]5 e
  3. fmt 2 toy_shift; y; \# U2 Q% Z$ i
  4.   i1 @" z* m% J6 U* _  e. o
  5. fmt 2 toz_shift
    ' G6 w, U4 P4 ^/ g

  6. + F) D# U' i* v2 n2 c# F- g
  7. fmt 2 tox_g9 T# p9 J! x/ M
  8. 1 c* v" Z- M  Y. r$ d' ^
  9. fmt 2 toy_g5 d$ S2 ~) l+ d: v4 M$ f' `
  10. - a4 `& y# d2 [/ i: j
  11. fmt 2 toz_g' s! b) p- b! E6 s9 S

  12. 8 w* |: L+ M, E! e* X9 P3 ?
  13. fmt 2 wcs_shift
    ; H: w, M* S/ y! ]: p
  14. ; e; x8 B7 `- k. m. }$ l
  15. fmt 4 axis_def
复制代码

. \. F4 h5 H* Q7 q3 e  U" ^! Y开关及初始数据定义$ i% }1 _2 o1 n+ ~
5 h) c! Q; P4 o6 P  M( ~

7 R1 q, x- {( W8 V
  1. use_wcs_shift   :  1 #坐标偏移开关
    2 n0 d, T  X9 v
  2. $ @9 u/ V7 d& l2 O! U
  3. wcs_shift : 0   #偏移轴8 H# Q& S" [. J* J% ]
  4. + D% k# `1 A, Q% D
  5. axis_def  :0 #偏移类型% u# `, e# [% A9 v" m
  6. 1 f* s% Y# w" U( p+ J+ E, y
  7. tox_shift_x : 0 #X轴偏移量0 b4 V) _1 @+ Q

  8. " w4 E/ [3 w$ Y( `; {  ]
  9. tox_shift_y : 0 #Y轴偏移量
    7 x/ E; q' N) T/ k! N& T, a

  10. 3 _% o) O4 ?* W; @% ?
  11. tox_shift_z : 0 #Z轴偏移量
复制代码
! F+ ~% h! X! {  |0 I/ p! a2 W# M
定义交互提示语句3 C  D1 e9 {& Q5 [" R, v

9 A9 Y5 \8 |! g6 @
2 t; l* g8 u3 |
  1. fq 23 axis_def      "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"6 t! l9 E- }7 ]0 b/ [

  2. 9 Y' m9 ^+ _/ R, t
  3. fq 24 tox_shift_x  "输入X轴偏移量". W) V  n4 c0 S. ~* G, h* O
  4. 3 V7 n, N! S0 Y1 _; @$ ]% `) ?1 p
  5. fq 25 tox_shift_y  "输入Y轴偏移量"5 I; ^( G1 u+ w5 A7 ?8 W+ i- s, D. X
  6. " d; X  D9 H7 U7 w% B, A1 M
  7. fq 26 tox_shift_z  "输入Z轴偏移量"- }0 W" `# E7 _/ z! N

  8. # A& x6 {( |' P1 V$ `. H
  9. fq 27 wcs_shift   "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码

" A9 x% `8 c# U, U' C! U! ^# @坐标系偏移过程处理及交互过程处理% X0 M6 k2 j" t9 X4 j" l

( |" N9 m8 x6 K+ Z' R, m+ r: P
9 C/ h8 m/ z7 O: z
  1. pwcs_Shift4 k6 V* }& \8 G- e+ ]. f( U) U, t2 M
  2. ! e+ a+ \- S" k5 @( z
  3.    tox_g = vmap(tox$,rmtx1)4 g6 O* I( o) T

  4. ! \5 F. e/ k7 R) }; W
  5.    if use_wcs_shif = 1,$ Q/ ?+ L8 J2 r$ s: O7 L  n) O4 r
  6.    [1 P% d. ?' f$ V; J3 }, s
  7.    while axis_def < 1 | axis_def > 2,q23, y4 }) \# E, ~9 m/ {
  8.    if axis_def = 1,
    # s- d" O, ?% @# ?
  9.     [
    ' G/ n  g7 X+ j- e8 A9 y
  10.     while wcs_shift < 1 | wcs_shift > 3, q27& W. e; k& d# Z6 r- d
  11.     if wcs_shift = 1, q24, tox_shift = tox_shift_x, C' A  ?% M9 C. m# c- V$ X" \$ i# h0 }
  12.     if wcs_shift = 2, q25, toy_shift = tox_shift_y2 N! s# Z: M7 z* @
  13.     if wcs_shift = 3, q26, toz_shift = tox_shift_z
    # C0 N, c9 K) d* c
  14.     ]3 S1 P: H4 c! v5 l
  15.     else,
    ) k( a& C! H" c, Z0 C; i; W. j6 Z0 X
  16.     [: t  X( e" ?) h) @
  17.       q24, tox_shift = tox_shift_x8 n: e. _6 M# i3 ]& }0 P
  18.       q25, toy_shift = tox_shift_y
    5 j$ M" T* A' A4 ~+ G
  19.       q26, toz_shift = tox_shift_z: K' C6 v$ p6 O  q& t  ^
  20.     ]5 A7 X* Q) I7 K/ j, f0 |6 F
  21.    tox_g = vequ(tox_shift)   
    5 H" f  r" C3 D# M/ V1 i6 z1 u: ]
  22.    ]
复制代码
. A' U6 n4 h/ o& J! h* n
在XYZ的计算过程中把偏移量添加进去,位置如下
& V& l6 Y. f" O. @2 x4 U2 z: [0 o
4 A1 G2 E( j4 r( j* S7 e/ q

! A9 L: z& ?! f- N+ R1 U$ {
  1. pxyzout04 B5 y' R% V8 r/ {- }

  2. 3 G1 ?  h* j# x. D/ l
  3. pxyzout1
    # v5 C" m) [2 M% L# b" n4 s4 R) ?

  4. 7 M! }+ Q2 B: Q( l8 T1 f; [7 {4 p/ h
  5. pxyzout22 c& S/ o8 [% z8 d. t4 ^% |

  6. ) ~3 ?9 L- h/ ~/ f/ v" D3 J. g
  7. pxyzout3
复制代码

) L4 M/ k0 r/ L7 X/ P! |( W偏移量的增加函数:vadd
- i' ~1 g5 G% I9 ~! t/ d0 a) n9 K7 I* Q, [# }4 O2 R! v
: R2 g' C0 o' C( s8 J4 j+ P/ [
  1. return = vadd(v1, v2)
复制代码
( i- E1 \" U$ X
增加2个3D向量,即相当于2个3D向量进行加法运算。$ V) g6 P. k/ X" x: k+ i1 Y2 ]

; ?  J1 W& ]0 w# ?; Z# a# e9 Z, n8 _6 }  t) ~% |1 ?
% C: F- ?' O- R# O7 z7 X
实例:
) ?8 s4 u  @4 v, p5 o
  1. pxyzcout0       #Toolplane Positioning
    5 m# W: q1 k: ]3 m' d8 Q5 t$ p- W- _
  2.       xabs = vequ(x$)
    2 a" R" B# c6 W$ o( J7 O
  3.       xabs = vadd(xabs,tox_g)6 K+ {6 G( k% Z- i6 F) x
  4.       iout = vequ(i$)     
    , c7 @: [. K, V6 s* Y6 X/ A
  5. if rot_on_x = two, csav = -c$
    / n+ W! v5 u, T7 f" v- q& U
  6. else, csav = c$
复制代码

1 B* e. ~$ C7 m6 k( `5 t# r( ~无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v,  w也会发生了变化
3 y( o$ G' z" c) O9 t2 s' c0 l) b* L; q9 |

) a: M% n% ]$ O  [2 _1 H- F
  1. pxyzcout3
    * t1 B& T8 e' n7 s3 |7 ^7 s1 L
  2.   xabs = vadd(xabs,tox_g)
    ' Z! p" q6 e* M  O; s9 T( I
  3.   ua = vadd(ua,tox_g)
复制代码

- U8 l1 H4 E, J" p% b至此,坐标系偏移以增加到相应的点上。
- ]- i5 E! a4 U8 E" s* X
& o6 l9 W8 ^& b

( p! d0 A' b- x2 n( m
4 k2 i. P; n, Q, O" H, n6 I1 d

9 U2 o- ?, {! f' P6 J3 m: m" H9 ]$ H
: q3 U% }7 L% d! X5 K1 ]4 o, `

5 I* D' g9 A+ P
0 x- A* T/ _, B3 b7 Y; y/ y$ J
以上及部分代码可能存在错误,自行修正。( [: C6 j* E% [6 v5 h3 k
" ^) c; z" |8 ?* B2 U6 w- O' J& f9 @- a
5 Y. Y7 A! e5 T1 T8 u  i

* M, }9 C2 @+ G. w2 G  J. {7 ?# s/ k
7 o1 p: T: S5 M( a# W# f1 }
- O5 _6 x6 _. Z8 i  M$ A  n4 `

' C& v# Y; f5 w4 G+ N
) u9 X! g" p! z  s
! s6 y: k$ M8 [
+ S, l: A/ m$ P4 j
4 ^  o5 z+ A: M! o
) {# ]7 Y) Y2 H' U5 f
! f$ d( C( F) I6 O' m- o
3 `. S2 {. h0 j1 b2 H
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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