若枫后处理论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 50|回复: 1

[原创] Mastercam后处理片段代码使用说明

[复制链接]
发表于 2022-11-18 13:33:35 | 显示全部楼层 |阅读模式

马上注册,学习更多后处理知识,享用更多功能,让你轻松玩转社区。

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

x
很多时候,在下载的后处理中看到不错的功能(假设能看到相关功能的源代码),或者购买的源代码想要移植添加到自己的后处理中,这个时候,对于这部分片段代码,如何添加是最大的问题,针对这样的问题,肯能会想到想要提供者写个修改说明,其实这些都是不好操作的,首先后处理不同,有些后处理删除了部分代码,还有部分后处理则增加了更多其他的代码,或是部分代码重复,导致无法很好的些修改说明,针对此类问题,下面将会讲解片段代码如何增加。
Mastercam后处理基于钻孔开发测头(探针)源代码
首先了解后处理预定义命令块是非常有必要的,何为后处理预定义命令块,如下图所有该类型的命令块为后处理预定义命令块(以下仅展示部分代码)可不使用,但不可重命名。
6 u6 U4 Y4 l+ S
  1. pcomment$
    1 C' c8 [& d2 Z( J( d1 ]  X
  2. pheader$; }: {# C  h$ i0 E
  3. psof0$ ( U5 g7 E7 [6 [
  4. psof$
    ; J& U0 ?7 c) e( [2 D  T7 A* V
  5. ptlchg0$
    " Z3 w" Y5 F4 \/ h1 J6 A3 y* m; u
  6. ptlchg$          #Tool change9 `2 d$ _2 @  o1 g; W
  7. peof0$           #End of file for tool zero6 O6 N, `. G8 f9 Y
  8. peof$            #End of file for non-zero tool
    - J, w7 v8 @2 M7 h+ O5 O
  9. ppost$ # This posblock is call AFTER all the files from the PST run are closed!pq$              #Setup post based on switch settings
    9 b" b! c( M! ~7 ]' {
  10. ptoolend$        #End of tool path, before reading new tool data/ y8 |: I$ Y/ d, n$ u( {
  11. ptlchg1002$      #Call at actual toolchange, end last path here
    $ l6 l; g1 b$ @/ m0 q
  12. pdwl_spd$        #Call from NCI gcode 4
    . s5 V/ K/ h. w7 Z* p5 m* c9 j
  13. prapid$          #Output to NC of linear movement - rapid. k7 d1 C( |$ n" g7 L( [
  14. pzrapid$         #Output to NC of linear movement - rapid Z only
    ! B" k' s! q/ U" w+ T! `' R
  15. plin$            #Output to NC of linear movement - feed
    3 ~! t6 D( p1 ]4 f: K$ g3 |- s% W% h/ f
  16. pz$              #Output to NC of linear movement - feed Z only5 r% t' P* f# r" n
  17. pmx$             #Output to NC of vector NCI, |: o) a  W0 w, _
  18. pcir$            #Output to NC of circular interpolation
    2 X2 K* f, `8 o/ ?: B
  19. pmx0$            #5 axis gcode setup: ~" ~/ n/ L! t3 z: g
  20. plin0$           #Linear movement, mill motion test
    9 a" y. z& B7 [8 p( X5 m
  21. pcir0$           #Circular interpolation, mill arc motion test  H, {  I) W' V5 d' \7 e
  22. pdrill0$         #Pre-process before drill call; J: x, F8 k6 `, t* V; ?
  23. pdrill$          #Canned Drill Cycle
    5 E, G* Q9 ^3 d6 R
  24. ppeck$           #Canned Peck Drill Cycle
    + M# l$ \# `1 z! s: ~  o2 e5 L5 S
  25. pchpbrk$         #Canned Chip Break Cycle
    8 C4 H, {: C3 Y: Y( _$ a& ^
  26. ptap$            #Canned Tap Cycle. ^( ^* x. e/ z
  27. pbore1$          #Canned Bore #1 Cycle- l- e$ H8 I/ ~9 Y  T: l! y1 j2 ~
  28. pbore2$          #Canned Bore #2 Cycle
    & s2 s1 F, \5 i* E3 b5 h
  29. pmisc1$          #Canned Fine Bore (shift) Cycle
    & }  Q1 E0 i/ i) _, ?) h! M) v: {* [
  30. pmisc2$          #Canned Rigid Tapping Cycle
    6 y) _6 ]6 o; R& ~. Z" g' l$ c
  31. pdrlcst$         #Custom drill cycles 8 - 19 (user option)8 l& n; o, D& d& V( a, ?
  32. pdrill_2$        #Canned Drill Cycle, additional points
    & m. j) a9 U- L2 o& C$ k
  33. ppeck_2$         #Canned Peck Drill Cycle& ~2 u. X7 m3 D5 p1 I
  34. pchpbrk_2$       #Canned Chip Break Cycle
    " T# Y/ r6 C. h0 Y, {
  35. ptap_2$          #Canned Tap Cycle
    % F2 G/ t9 H1 o: @* N- z' A
  36. pbore1_2$        #Canned Bore #1 Cycle
    5 ~2 {/ J3 J* s) k! D
  37. pbore2_2$        #Canned Bore #2 Cycle5 j7 y6 q, C% w$ v( E9 x' r
  38. pmisc1_2$        #Canned Fine Bore (shift) Cycle
    ! Y, a( j+ ^1 `: s
  39. pmisc2_2$        #Canned Rigid Tapping Cycle& V' P; X; w6 _( R
  40. pdrlcst_2$       #Custom drill cycles 8 - 19, additional points (user option)! _2 J# s; ~4 y# Q; G2 [9 i
  41. pcanceldc$       #Cancel canned drill cycle5 \6 ^1 {% f7 p3 j0 K
  42. psub_call_m$     #Call to main level, single tool/ `3 s- G% F8 v
  43. psub_call_mm$    #Call to main level, multiple tools6 d5 Y5 p# \% q% P1 C' M
  44. psub_st_m$       #Header in main level# r) S; z5 l3 `% q% A
  45. psub_end_m$      #End in main level! E6 Q1 g* h# n2 |( e4 h
  46. psub_call_s$     #Call to sub levelp
    * Y: B) p6 ?5 k5 b
  47. sub_st_s$       #Header in sub leveln
    : Z. n5 Y; o$ f, H0 T
  48. psub_end_s$      #End in sub level
    , I% _( _2 `& K8 N4 o
  49. pmiscint$        #Capture the top level absinc for subprograms3 h6 j; n5 R+ Y4 q( ?
  50. pprep$          #Pre-process postblock - Allows post instructions after the post is parsed but before the NC and NCI file are opened.
    * A7 F3 x% I. f5 Y1 ]
  51. psynclath$      #Read NCI Axis-Combination (950) line! e; m, }1 d! e+ ?; Y: O
  52. pwrtt$          #Pre-read NCI file
      I7 Q9 C! t7 Q4 ]
  53. pwrttparam$     #Pre-read parameter data
    6 }6 \4 G+ k7 K. C2 G3 |
  54. pparameter$     #Read operation parameters* H( W0 Z% U. Q
  55. pmachineinfo$   #Machine information parameters postblock
复制代码

2 [+ b6 d- w, G; D
3 y6 x% J7 f; D: b9 v  L& m
以下为后处理流程:
7 y6 B* Q2 \/ `  I( T# o
                               
登录/注册后可看大图
+ C8 G5 M; y2 D; ~
9 Q" c* I! L( X
- s; N$ I' C! O5 z( e9 ~2 V) F
                               
登录/注册后可看大图

4 e8 b. ?; Z6 i/ c
; v, l- i% J- ]* B* u3 @; _
以上代码块命令块根据功能,可以划分为:
1:预处理命令块

1 ~4 O# V+ [9 {, ?( g
  1. pmiscint$        #Capture the top level absinc for subprograms5 i3 ?4 B( D9 J+ p
  2. pprep$          #Pre-process postblock - Allows post instructions after the post is parsed but before the NC and NCI file are opened./ i, p1 V3 Q% U# B- \
  3. psynclath$      #Read NCI Axis-Combination (950) line
    4 Z. ~1 G8 L0 {. T3 x3 t' |
  4. pwrtt$          #Pre-read NCI file3 b* A4 n8 y8 M; _" M6 j% o
  5. pwrttparam$     #Pre-read parameter data
    ( e9 m! n% h4 Q0 E0 x$ v% B, t: [
  6. pparameter$     #Read operation parameters( D. C5 N  [! b1 K! d9 k+ D
  7. pmachineinfo$   #Machine information parameters postblock
复制代码
- `8 A6 Y+ V! d& n4 G1 o3 Z7 ?

3 Q0 \5 u% y) O: d/ [
2:开始处理命令块
7 x( v/ [, M1 L7 }" m: y0 k
  1. pcomment$       #Comment from manual entry (must call pcomment2)
    $ ~4 }2 ~$ J' D! |- B) j5 }9 X
  2. pheader$         #Call before start of file3 m4 m1 o7 m0 q! Q) }& e7 |
  3. psof0$           #Start of file for tool zero4 s$ |; P5 N6 K
  4. psof$            #Start of file for non-zero tool number
复制代码

. r9 b' v' l7 j. o' t! r/ x6 p9 ^% O! @! b/ c$ _' D1 M, z: M* `
3:中间过程命令块
+ \2 ^) i# m! K4 I7 A6 [- H; z3 z
  1. pcomment$9 @( u7 A. b( W& R& T2 g
  2. ptlchg0$
    9 J/ [" j! H7 x% V
  3. ptlchg$ #Tool change
    + [# t2 a0 B9 y" W3 a
  4. the files from the PST run are closed!pq$ #Setup post based on switch settings
    # H0 X( t# k2 W8 H. M
  5. ptoolend$ #End of tool path, before reading new tool data! k5 c8 J' [- c) C
  6. ptlchg1002$ #Call at actual toolchange, end last path here
    ! G5 d) ?6 B8 c
  7. pdwl_spd$ #Call from NCI gcode 4+ E6 {( X  t1 Q% ~" Y7 H: h/ M
  8. prapid$ #Output to NC of linear movement - rapid& u0 j# E. f& i+ G
  9. pzrapid$ #Output to NC of linear movement - rapid Z only
    1 a. O: R5 G8 f2 z& s" x
  10. plin$ #Output to NC of linear movement - feed1 X% G& \; G8 w
  11. pz$ #Output to NC of linear movement - feed Z only
    6 X1 d8 i' L2 R1 u3 k+ a
  12. pmx$ #Output to NC of vector NCI+ @# @; S/ p+ ^2 q, T
  13. pcir$ #Output to NC of circular interpolation6 E9 Y/ _; s- Y
  14. pmx0$ #5 axis gcode setup
    * V3 {! I$ v2 ^5 d
  15. plin0$ #Linear movement, mill motion test
    - ^. B# Q0 F8 F* i9 H$ ]0 C$ X
  16. pcir0$ #Circular interpolation, mill arc motion test
    + Q' `( _; Q2 n2 {& ]
  17. pdrill0$ #Pre-process before drill call
    2 G  h, ]7 }' a3 M  X! v& m  A7 z5 C
  18. pdrill$ #Canned Drill Cycle
    5 Z/ X/ u2 P: c+ P( L
  19. ppeck$ #Canned Peck Drill Cycle
    6 I2 ?6 y0 r, X4 P3 Q
  20. pchpbrk$ #Canned Chip Break Cycle+ B7 p; L' b& Z2 C2 M- O1 c. H, d
  21. ptap$ #Canned Tap Cycle8 T: f- Y# W( x/ S$ s: D
  22. pbore1$ #Canned Bore #1 Cycle
    / Y* r  X% @4 `" L
  23. pbore2$ #Canned Bore #2 Cycle3 M2 v/ w+ v( j9 ^3 ~$ N$ W
  24. pmisc1$ #Canned Fine Bore (shift) Cycle
    * r2 [, D2 i1 U+ V( i4 x5 ?, j5 o
  25. pmisc2$ #Canned Rigid Tapping Cycle
    9 F# E) t6 s& S2 M
  26. pdrlcst$ #Custom drill cycles 8 - 19 (user option)) W( E: S3 Z8 e/ j  V0 ~
  27. pdrill_2$ #Canned Drill Cycle, additional points4 K. A6 G1 L% P. O# A2 P! k3 H
  28. ppeck_2$ #Canned Peck Drill Cycle: m8 c* M" _% H: y! g5 u
  29. pchpbrk_2$ #Canned Chip Break Cycle
    9 K6 \* s0 m: U' R+ [" N
  30. ptap_2$ #Canned Tap Cycle
    9 D5 K+ z% x' f9 M
  31. pbore1_2$ #Canned Bore #1 Cycle% B/ u' I  f9 Y& H- }
  32. pbore2_2$ #Canned Bore #2 Cycle) {& c7 s* w5 \6 ~
  33. pmisc1_2$ #Canned Fine Bore (shift) Cycle
      D& y2 O3 e! g& \+ x' B
  34. pmisc2_2$ #Canned Rigid Tapping Cycle
    * u2 j/ t3 s- Y6 j7 S$ C; L
  35. pdrlcst_2$ #Custom drill cycles 8 - 19, additional points (user option)
    7 u- d. [; E/ L/ f
  36. pcanceldc$ #Cancel canned drill cycle! w  M9 F( v( p4 `& K
  37. psub_call_m$ #Call to main level, single tool
    5 q9 B: }! s: W
  38. psub_call_mm$ #Call to main level, multiple tools
    - c2 z5 w' m$ I4 o5 N. |$ K
  39. psub_st_m$ #Header in main level: \+ m# Y: }" l
  40. psub_end_m$ #End in main level
    $ J* z- Z( Z: G, C/ @' q8 s
  41. psub_call_s$ #Call to sub levelp
    : B# Y* j( D: u% `8 ]: g4 h9 q9 a
  42. sub_st_s$ #Header in sub leveln: `0 Z3 }4 N5 w  k7 I# n
  43. psub_end_s$ #End in sub level9 f7 B$ A- G8 m; n# R5 F
  44. pmiscint$ #Capture the top level absinc for subprograms' E: j/ |: D0 o
复制代码
3 X  J* z" ^6 \7 K

! K  V4 e( X4 h( e% |4 ^6 r
4:结尾命令块

: d" \  b( j" `/ K& g, P& b/ u% E
  1. peof0$           #End of file for tool zeropeof$            #End of file for non-zero tool
复制代码
' O3 S9 ^! B9 n. D/ ]) X: l
" |  t0 W# m7 L* b, Z: U
5:结束后处理命令块
8 _* q+ x" ^! n* f/ z
  1. ppost$ # This posblock is call AFTER all the files from the PST run are closed!
复制代码

0 }5 v! A) _# O0 z$ ?" ~( g3 k1 x9 t
其次需要了解后处理函数,对于高版本(X版之后)后处理,凡是函数尾带有$符号的均为后处理预定义函数/后处理预定义命令块。
如下为2017之后的版本系统级的函数,凡是所有大写函数及函数尾部带有@符号的函数。

7 E7 _$ H% ^. W1 a3 O/ O) Q* m
  1. N_TWO@
    4 F- s* a7 j# n/ z
  2. N_ONE@8 E" z/ K& V# g- [
  3. ZERO@
    / s1 w" p% P+ q3 u% u7 W/ A$ {/ n/ ?
  4. ONE@
    / b7 h4 a& G: f' m' s) W1 K
  5. TWO@
    0 N5 ]" j' a* `) k
  6. THREE@  G6 _% ?7 H, `, e; u- j
  7. FOUR@
    # e/ z5 Q4 o3 P- b( d
  8. FIVE@6 E7 N8 s2 w6 j+ S
  9. SIX@
    2 C* _/ E) m9 [/ K: ~/ B6 S
  10. SEVEN@! X) e1 o2 }; i
  11. EIGHT@+ ?4 J# V' V: T/ e2 Z% g
  12. NINE@
    1 a" e# _1 C: d* z
  13. TEN@
复制代码
, E( B8 r5 j1 ?% i" U- B4 z
! @" w5 G% o& D, i1 S
针对片段代码如何添加,根据作者的经验可以遵循以下几种方式。
根据片段代码的功能划分:
1:涉及到刀具清单,加工范围,预读数据方面的功能代码,一般代码块调用位置大多数在pwrtt$下面完成预读,预处理工作。
2:涉及到操作开始,操作过程中,换刀,操作结束等这类功能代码主要调用位置大多在过程中。
3:凡是涉及到成立完成后还需要再次对程序进行处理的此类调用主要集中在ppost$下完成处理工作。
4:还有一些片段代码提供了主要后处理预定义代码块,这就说明在相应的命令块下增加即可,如下所示:

& w" v+ d+ G/ b4 S
  1. psof$            #Start of file for non-zero tool number
    ! a+ i2 I" i: ~8 U& x
  2. #-----------------------------------------------------------
    1 O( c# S) V) D" a3 l* a9 T6 t
  3.           ptool_header7 F( w6 v! _5 {1 p' A0 @  q4 r1 ?
  4.          probe_head$
复制代码

8 r2 }/ o  j0 ?; e/ |& m$ d. L. {4 b5 U5 n6 [
Ps:
片断代码增加到后处理首先不要调用输出功能,生成一个程序,利用后处理排错的方法,看看还有哪些代码缺失或者语法错误,或者逻辑错误,根据错误提示进行排错,修正后再调用并测试其功能的完整性,这样会大大节省时间,还可以因为错误的定义导致后处理长时间卡死或者软件卡死崩溃导致重启软件。

; |6 I0 H0 V$ k& K3 t  L: Z2 x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2022-11-28 23:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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