找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 111|回复: 0

Mastercam后处理坐标偏移方法

[复制链接]

433

主题

5759

回帖

901万

积分

管理员

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

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

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

×
很多的时候,很多4轴及5轴机器在没有任意坐标计算宏程序的情况下,由于工装夹具及安装的偏差,导致设计理论位置与实际位置不符,在这种情况下,如何快速的偏移刀路程序就会显得尤为重要,这一过程中有如下几种方法可以实现以及其优缺点。
" @" c2 [0 A2 W  m' M; p
- t/ ^4 q2 x! B, d


" N! `# d/ I1 t/ C' z/ \
) p2 Y$ Q7 }- v( \. c& t

2 G1 j( J+ x- E, b/ f9 G1:如下图,通过调整刀轴平面X,Y,Z的位置即可实现程序偏移,但其缺点是需要重新计算所有刀路,有些情况下,有部分刀路可能会计算失败,最重要的一点是,如果采用绝对深度编程,那么这些操作的起始高度,加工深度,安全高度等都有错误的,需要重新修改,及其容易引发不必要的错误,非常不可取。
! `8 v! E/ I# A5 Z; ^
, t) |8 G+ I; Y3 K& k' q

) }, m, Y1 R7 b! A4 e' h, ?0 [+ T  o

: U" J: J9 i& K2 u
* D- i  [* E1 o- K& w6 w7 {
2:如下图,通过转换刀路方式进行刀路平移操作,此方法可以达到效果,但同样存在一个绝对编程时所涉及到的深度或高度方面的问题,同样需要修改,也容易出现修改错误之内的问题发生,也不是非常的理想。
- ^- ?+ g! O5 ^0 V2 H, _9 g4 W: D
0 r1 D" i' F! D) m9 W- t$ x

4 W& K  t- O" U" [4 s7 Q' h. T; p7 ^0 S4 n; F* z4 a5 C
那么有没有什么方法可以快速移动,偏置一段距离,也不需要更改任何刀路呢?
# X( s/ T  F7 K# L5 O' C
5 j, H1 C0 |: u# e$ ]' w# `2 M下面就和大家分享一个mastercam坐标偏移的方法,不需要更改刀路文件,只需要简单的几行代码即可实现坐标偏移。
: @" n6 _% A+ h/ S# v( P6 I- V0 L4 S- t( U. M, S! q# o5 {
: g! g- i$ p4 {4 W- `
8 O6 G% e- N9 G' O

, D1 X0 X+ h) }; c: n  \首先坐标偏移涉及到3个方向的偏移量,一般在正常情况下都只是偏移X,Y等轴的偏移,而Z轴做偏移则较为少见,任何几个方向的偏移都涉及到,影响到其它一个或多个方向的位置,这就需要对偏移量进行处理,确保所有的方向都能把偏移量算进去,需要考虑刀轨的XYZIJK等值,这就涉及到刀轨的矢量,所以不是简单加上偏移量就可以了,这就需要用到矢量复制函数vequ。) q5 ]% i9 M9 C
" G) A9 \3 L* p, Y1 }3 x
矢量复制函数的用法如下:
+ p- W! X8 O  G& _& t* q; T7 _5 V$ M8 |; L& o9 |

' O* d5 H1 ~8 G( p+ o$ j2 n9 }: H+ I2 i9 B( a  b% |- ]

: u0 O3 ?8 l' z- N$ r; N' q& [
  1. return = vequ(x$)
复制代码

# H" Y& B' ?* x" @$ a" H这句话的意思是return的结果值等于当前x$的矢量值。
1 F1 A1 o" Q1 m) P& U
1 |4 ^) j% E; D4 I4 a8 w
  m4 j9 Z9 G7 I
6 [5 t$ {! h; c( X* @! h
& y7 r: @8 F. S4 j5 R) I
同样这里需要用到交互式的方式进行,即后处理提示用户偏移量,偏移方向等。
$ c- c1 v6 {! N" y' H: b) B3 w0 t$ p  i$ X3 w) x
定义数据格式:$ Z; M9 Q2 h2 b  Z& W# a

9 Q) |4 ^6 d, ]; w# l7 a3 E$ V# L; l6 D
) X5 L* p9 q7 ?' n. v
  1. fmt 2 tox_shift' W- r% A  `) S4 y( O5 w% K

  2. , w" K5 \$ ^/ X
  3. fmt 2 toy_shift" Y8 M9 S& G$ q! R: q7 {
  4. 9 M' n% E  d, T* @$ T0 d
  5. fmt 2 toz_shift
    + {$ b% `3 X" z) ?9 g1 j! @6 c

  6. 9 P' X+ B! q# ~7 _/ ~
  7. fmt 2 tox_g
    + V. d. w' J3 W

  8. + M8 Z; ?  t# ^1 D) D. d
  9. fmt 2 toy_g- q% @0 `8 Y/ b# y4 N  _
  10. ' u# t# z9 O/ ?9 U4 s1 H
  11. fmt 2 toz_g
    " I& w: l  Y0 |$ W" l) R2 U7 M

  12. 7 h& O2 I1 m+ q: v' U' F3 |
  13. fmt 2 wcs_shift
    7 e, j: `: a+ G6 G% t: d

  14. 4 V3 |, Y4 M" A! n/ [: O
  15. fmt 4 axis_def
复制代码

. j+ s+ a" C+ [开关及初始数据定义  g! L7 q% {' z* w- r; S1 b

& @$ J8 g8 B  b+ V0 f) x% G2 ]
4 U8 d4 y2 O% z/ G: w
  1. use_wcs_shift   :  1 #坐标偏移开关
    5 ]) ?) ^! D/ n# Q- s
  2. % P: x3 Y9 x- Z  u- y6 J9 N' `2 \
  3. wcs_shift : 0   #偏移轴9 L8 F8 `& D7 i" y8 F+ V+ X4 p
  4. : S4 P2 C; K+ v9 q- M
  5. axis_def  :0 #偏移类型
    / o7 W# }  @) U$ w
  6. 8 b0 m  j6 x, \( O. I. d
  7. tox_shift_x : 0 #X轴偏移量
    9 T  A) j& N4 ]  D! O
  8. $ @7 Q/ G+ o/ E% W2 w0 M
  9. tox_shift_y : 0 #Y轴偏移量
    ( C% x9 R7 Y% Z  b
  10.   ~% O- U0 p7 A  n: \
  11. tox_shift_z : 0 #Z轴偏移量
复制代码

1 u0 k% r# t( k4 A7 e定义交互提示语句
- m6 j4 ?3 T" q/ r8 o! w/ a; x9 c% l
: h: b& n3 y  ~# J' U
  1. fq 23 axis_def      "选择偏移的方式,1=单个轴偏移,2=多个轴偏移"' b* W: w3 m# O. _. b/ e
  2.   w0 e- c/ K; V2 a' N
  3. fq 24 tox_shift_x  "输入X轴偏移量"' w3 B8 y3 X$ W
  4. ! @0 t$ k+ b* x2 E4 ^7 s' ~
  5. fq 25 tox_shift_y  "输入Y轴偏移量"4 X* L. [, ?  O$ j  f8 }& ^
  6. 8 J. t* L) X5 i$ @; J6 k
  7. fq 26 tox_shift_z  "输入Z轴偏移量"0 H2 w% B! |2 ?6 {' R

  8. * p# D7 D( R0 S0 U
  9. fq 27 wcs_shift   "选择偏移轴,1=X轴,2=Y轴,3=Z轴"
复制代码
: K* q5 Z* H, R# l
坐标系偏移过程处理及交互过程处理* U- g9 C& n: N# q! Y
* l' i0 I* `+ F% d( L
0 v- U: _. t) t, T) _
  1. pwcs_Shift
    ( o. U8 [, o! i) C

  2. / _  ~! W, X. X) O$ w  V: N
  3.    tox_g = vmap(tox$,rmtx1)
    % G! W" U9 E/ @6 J: \

  4. # r- p0 [. p2 h5 Q( @# B5 C  ~" X
  5.    if use_wcs_shif = 1,+ P: {9 Z) c  L& T. b
  6.    [
    8 y! `; [5 u) F" D4 C. F
  7.    while axis_def < 1 | axis_def > 2,q23$ ]9 b- K) \; W1 v
  8.    if axis_def = 1,3 K* K+ Q; G5 H( Q- L$ K+ J1 u0 y
  9.     [. _! G1 q. x9 E
  10.     while wcs_shift < 1 | wcs_shift > 3, q27
    * q. p( Q5 W: ^, x% Y
  11.     if wcs_shift = 1, q24, tox_shift = tox_shift_x
    * g- w& I& Y. R- @! D  g5 v
  12.     if wcs_shift = 2, q25, toy_shift = tox_shift_y3 Z  ~" J0 P9 o7 M( h3 s
  13.     if wcs_shift = 3, q26, toz_shift = tox_shift_z0 s! ^3 `5 `0 l. |
  14.     ]
    ; R1 a, S  ?0 \4 t
  15.     else,
    7 @) V( H/ ~$ u$ h
  16.     [
    2 _" {" J- P/ E6 V- B
  17.       q24, tox_shift = tox_shift_x
    4 J' e/ b; H& O# Y0 T# Q
  18.       q25, toy_shift = tox_shift_y
    & y: ?6 F. j, _! @" V
  19.       q26, toz_shift = tox_shift_z8 ^! ~% K5 b# z& f
  20.     ]
    , Z( y# T* Y2 c* w5 E  @% A9 b
  21.    tox_g = vequ(tox_shift)   
    8 i  k! {6 r/ Z5 i" ^
  22.    ]
复制代码
6 t& J7 e3 t! p% O- l
在XYZ的计算过程中把偏移量添加进去,位置如下
2 ?2 @  Z% p1 g) A: Z; r8 H4 D5 Q9 N5 `: X. [6 `
9 M) |/ ~& u; i8 U0 L; X- c
  1. pxyzout0
    0 ^* k: _( F! {2 ?
  2. 4 j* B+ x' \$ o% Y7 L# O) e+ D9 c
  3. pxyzout1' w0 ?8 j% |5 T8 b
  4. & `3 h5 M0 K& Q  \' L+ |6 K
  5. pxyzout2
    & Z2 C' a: k: y! T; ~9 z4 m% Q
  6. : A* Z1 A3 U# b9 o( ], r
  7. pxyzout3
复制代码

7 o; j& Z* t( h2 r0 e9 G' `偏移量的增加函数:vadd
/ k' c- b- \( X/ K0 U9 o
3 S" n$ a: a" R; x8 b2 e5 V

* b/ W/ V2 ]% a2 y* _
  1. return = vadd(v1, v2)
复制代码
+ \$ J- k4 y* f) d
增加2个3D向量,即相当于2个3D向量进行加法运算。: `  S. e* p' G6 e
* y; x- F* U5 u2 G# g

/ ^. Z: }' o7 v" d- \& i5 c
, [3 a0 l; }+ v* C' e
实例:# h/ e9 C6 t* H" H! h) n1 M$ p
  1. pxyzcout0       #Toolplane Positioning/ E* ]# T8 N2 m. ~9 U, y
  2.       xabs = vequ(x$)0 v! N$ |- M# c
  3.       xabs = vadd(xabs,tox_g)  J: n/ x/ C( P$ z* [
  4.       iout = vequ(i$)     2 p4 Q4 ]! F1 q' h! C, P) t
  5. if rot_on_x = two, csav = -c$3 w* V; o) t) J. Y( }1 n
  6. else, csav = c$
复制代码
- [, Y  T6 `; P3 ], c( `% `8 b
无论是X,Y,Z哪个方向偏移了,其结果不仅仅只是影响相应的轴的坐标点,对于多轴的其对应的u,v,  w也会发生了变化5 K4 P0 T6 K/ {' P3 u

, I6 T) d  g9 l7 G
2 M  t4 R, x% w7 Y
  1. pxyzcout35 y7 Y, w& F1 h) j/ c) l/ T
  2.   xabs = vadd(xabs,tox_g)2 ]. D- S3 c1 h& l
  3.   ua = vadd(ua,tox_g)
复制代码

0 [4 I5 m. U+ ^* Z3 J2 A至此,坐标系偏移以增加到相应的点上。
* H' J8 d9 N' G6 ?. U

$ u/ W( H6 P/ x  s) ~+ Y
$ `3 x$ H) h2 S& |& x3 g1 w' `

' p. w2 U2 d* P& s- E  \8 _  @7 g0 k5 s, Y$ A2 M

& G' Z; t$ o! n. X
4 G, Q/ A1 V  t* J
) Q% b* y& |3 ?" T) s! ?
以上及部分代码可能存在错误,自行修正。
* k/ y) E! b7 n# g' k1 |- M$ v. J* u6 D2 _
  l7 F4 ?5 W2 Y& Y1 y4 c2 [$ e7 E. _

1 Y, U. ?# r4 s8 K
/ t/ D& ]1 t8 h) H/ _+ m4 o9 |5 D# R4 Z2 K) y$ ?
- j! N- Z# E0 K1 J0 H+ e
' o, [5 D  M3 i5 U0 e9 d4 _2 }
7 s7 W0 |9 I. D9 t4 s/ L
# L. D* `, k" d& t/ o8 ]

: r* \1 [3 }. \$ h
: _/ `. X* `, ~5 Y
+ V. u5 T+ ?( |! F1 {1 K
3 h# A3 l4 l! d3 t& W$ x0 L/ `
& y* U7 E7 b* X- \# P0 @3 D$ y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-8-22 21:57 , Processed in 0.155297 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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