|
后处理修改帮助# [( w- _. W" H3 w# N) d
一、PM 自带的后处理中有适合自己机床要求的,不过要修改、增删些代码。
0 Z4 @' b) ?9 o! c* s' {- ?1 M: u: I# P 二、没有适合的,需要改写后处理。 . l" |# F1 V. G) k7 R
三、机床的代码格式完全与普通 G 代码格式不同,需建全新的后处理。 " H; ^8 e+ }+ t% N; O- `0 F% m6 s
( F0 P) @: H8 ~; [, B E8 D现在开始准备工作:
" v* N& [$ q3 P5 z& [; w4 b $ b; z7 }! U) n+ N' T: g: `; `6 x, ]
1、以不同的控制器试着处理几个G代码文件出来,然后和自己机床的代码进行比较,选一个最接近自己的。 - ~3 f3 |$ x8 U7 {; i* Q- W, X
2、打开ductpost\dp-index.html,准备有问题就看帮助。 6 w/ R: M( ^! y3 }
3、运行:ductpost -w [控制器类型] > [控制器类型].opt ,从而生成OPT文件,这个选最接近你机床的控制器。如:ductpost -w hurco > hurco.opt 。 这时就可以用文本编辑器来打开这个opt文件了: + v* P' j5 r2 S+ u& L" N
5 ^; y5 ~7 d3 o" X4 h `. A! C1、程序头、程序尾的改写:
: Y) ~, C$ |% U- ]6 m2 e2 J这个在以下的定义里面:
" B; M4 ]; E; x1 X; I define block tape start
# a! e( [" J; x7 V0 K$ ]; { ********************
- X: i' C, a' {# i, D end define
$ f; \$ d1 v- Y1 @1 h9 G1 ? define block tape end
! o# T8 ~; ?9 l+ I) P ******************* 9 U0 O% f' O" ]& v
end define ) W3 m# I0 M+ |, _" q
& O; r! K2 i K! t8 L- _3 Z你可以根据自己的需要添加,如: 4 N0 i/ Q1 o. |# T1 }" o
9 |- P1 U9 d1 O& k% `3 C! Z" a
define block tape start w% N+ |9 j% k# [
"%" ! K3 E q* \; U& L
N ; "G17G90G80G40G49"
+ O: B+ c ?* |# E3 b; ]0 z- o: ?- J! B end define
2 p6 ?3 L7 E! U& }7 i; w8 E @
& M# j- U1 p- Y define block tape end 4 q& m; |3 H9 Q# k* x* [, M
N ; "M05"
3 x" |: f# _+ K, C N ; "M30" 6 M' q" U; ]3 m# }" R7 Z/ P0 v
end define 2 O p( U2 K/ m) r) k: q: Z
3 C0 W/ X5 K( G8 R5 w& E% C* k
不过注意这种引号方法优点是简单明了,但控制器只是把它当字符处理,而不能以模态存在,具体可参见其它说明。
% v- U. k$ q* T5 ?
. M& b& Q, x* H: C2、是否需要N行号?
3 h, l( R, N3 P0 ^: Y! r2 R' ` %
5 r: ^" m. W9 B4 Z- A9 d) _* G :0001 ) I& F4 w0 p6 s ]4 u/ u) X9 r
N10G28G91X0Y0Z0 q. x h1 @3 C8 y; e" P$ l
N30T1M6 1 r9 B; `% h! |& Z( Z
N40G0G90X-25.Y-40.S800 M3 6 M7 I' x3 Q6 u8 r- x/ }4 z
2 p- o. K% L+ L7 P- p$ U如这上面的N10、N30、N40,另外行号的起始、增量、最大都可以定义。如果不想要行号,可修改为以下值: 7 v: W1 g/ \8 [
define format ( N )
4 J! ]& F- }0 I' J- X+ ` not permanent ) N, B2 h4 }+ ~& P9 _
end define
9 K! k3 F* q" X, O( h9 W% u0 U
. Y" g/ k% _/ I. t' K; O3、是否需要Message?
1 O, q9 I u7 \, F( |0 q2 K3 |, P) R% j) T$ }6 k! U' `& U
N60( MSG, Toolpath Name: ET)
6 K% K: C; ^2 Q! z' _0 ^; P6 q6 }" Q N70( MSG, xyzxyz_cut_1 ET)
, l$ X. O; v6 M( [. Y$ u+ n. f N80( MSG, Output: ET)
; ~4 ?( J7 H }" P# w. | N90( MSG, UNITS: MILLIMETRES ET) " x2 e8 d. ]2 b+ [; d* q6 [. C7 \
N100( MSG, TOOL COORDINATES: TIP ET) 1 b* L. }' M1 i' [) S
N110( MSG, LOAD TOOL ET)
! }3 O- Q: p, J/ v
2 O4 Z- f4 S0 ]+ u上面的信息,可修改为你需要的,具体参见帮助。也可选择不输出,如: 6 v5 d8 \8 N: A( y* C N5 P
& M2 L. L! T" u Q* {
message output = false 7 T* V- _6 t3 B9 F5 W
# E' P/ M1 h/ W8 d
4、圆弧的输出格式:
- a( ^% m. @) U, r
# z3 \6 W% N+ b2 ]0 R这个需要讲一下,输出R的就不讲了,专讲I、J、K的输出。大致有三大类: * w2 a5 o8 Q ]& h# R6 @
" Q5 f% _9 J E/ Y! q a、I、J输出为圆心的绝对坐标值。 $ S c3 P" A' q9 _- O8 B
b、I、J输出为相对坐标值,具体值为:圆心坐标值-圆弧始点坐标(常用) 8 a: ^7 W3 ?, T2 B1 x3 n& C
c、I、J输出为相对坐标值,具体值为:圆弧始点坐标-圆心坐标值
7 |2 Q% P( Z- S8 E4 T
8 |1 L6 D7 y7 A% ^$ z- _ define format (I J K) :定义I J K的矢量0 H I, |% y! x7 s2 D, h! w( E
scale factor = -1- i) t7 o& D4 f, J$ A
end define
; b7 b1 b8 F$ U: G4 t3 H5.定义左右刀具补偿" s7 Z& |0 R6 O* X1 E
define codes - C4 ]% {2 X) ^% Q% D1 v
comp on left = G2 41- ?" B7 A9 a" I3 U+ i
comp on right = G2 427 u9 h, V# x1 t8 z
comp off = G2 40 & n: {9 ]* P( `9 ~
end define$ E0 p' i5 o7 R( Y. N1 m I3 Q
1 s- j* x" p3 o7 r& H, t& H
#14 :从#14~#41为定义旋转轴的写法,如小数点的位数,+/-的输出等等: T1 @, u# @1 t
3 _; c# I/ l7 ^7 }( E% N
define format ( A )
+ @ j t4 Q2 t; ~ address letter = "A" A5 k4 l! K( |- c9 G# n7 t
address width = 1$ M4 w+ u' G" e( }
field width = 8
" T7 W; f+ G0 g; K0 a" y metric formats* ? r+ w7 Q2 p! S5 i1 o
decimal places = 3
% y' ]% x0 c& [4 a. B& { decimal point = true
' A k6 d% T x$ A6 z sign = if negative
2 R* s7 u# Z1 q4 e$ l" D6 F: z7 ]2 ^ leading zeros = false 5 k) a9 u) `# M+ c( X5 v
trailing zeros = true$ {" u0 J% T- v2 Y$ a8 X
end define ?7 u. W+ @0 f# O# z9 o
#26
9 B: }$ ]5 M/ v+ r+ ` word order = (+ A )
) T) T. X8 ?; Z5 z j1 b, C#284 s* {* m9 J2 h& C$ H
units = metric
* G% G9 }4 X4 x# Y1 w/ i0 u message output = false6 c# @2 r' k4 L/ z$ V i, ]3 I5 T
spindle output = (2 0 0 0 )
5 w5 M+ Y) u- `3 w" U& r, @ coolant output = ( 1 2 )/ | _- i6 R: {- v$ a. U- h7 K
#32
# @9 x. b( c0 B6 }8 k' _define format ( C )
P# w5 a& Z, X' z address letter = "C"
: N$ O. | L8 F% b) @$ @ address width = 1
: w; z2 S' r1 S$ G field width = 8% B1 g% g2 I" Y9 K9 R1 o2 ~
metric formats" N0 f+ v" v# t* O& p' H
decimal places = 3
4 E+ P7 k) u% U% Y/ \$ N decimal point = true' }$ u! A$ C/ k& ^
sign = if negative
1 O/ D" w" K- j- A leading zeros = false 0 O& r0 _. q* S9 C6 ~' p
trailing zeros = true
6 d+ w' x% ^4 E' \" A) fend define/ P6 s, c8 o8 }7 y/ q
#394 F7 ~, M Y2 O! C
word order = (+ C ) ' A: m+ A) ?. i+ J3 C6 p
#415 K. t# j2 y; I. @+ J3 s- c
units = metric2 V) W% O9 Y; m$ M" ?
message output = false- J, W2 x" g" ^( k
spindle output = (2 0 0 0 )
& _7 P$ _& F2 `1 R" H/ @, V coolant output = ( 1 2 )
+ B9 Z. ]( l) ~7 e$ Q; P' L* v1 V/ w2 J3 g9 Z; w4 C
#33
" V4 J! {' c% z define keys :定义旋转轴名称
! Z1 I+ p( X* D8 U azimuth axis = C
# ~8 I2 C, l8 e# d4 N elevation axis = A7 R. X& j8 H n& W4 N7 R Z( X
end define
- a0 Y) v# q$ M+ T6 c2 `) s" ~( A#38 $ I7 b9 g, v8 t2 U& [
azimuth axis parameters = (0. 0. 0. 0. 0. 1. )+ r- G) h) r2 q0 w$ @
elevation axis parameters = (0. 0. 0. 1. 0. 0. )( D. r# G: X5 v1 b6 D& g
#41 ' n3 H: _; C9 N% k: X0 K; L
spindle azimuth rotation = true :定义方位轴方式,true为主轴头式false为工作台式: R% w) N5 i$ m% q
spindle elevation rotation = true :定义俯仰轴方式,true为主轴头式false为工作台式
" c: g0 Q' c3 ~$ d1 ^) b#44
2 V$ [2 y7 j4 W5 v azimuth axis direction = positive :定义方位轴用法,相对还是绝对
J/ f" S$ }) g9 Z" D# p8 I8 w1 _ elevation axis direction = positive :定义俯仰轴用法,相对还是绝对
2 G1 L* e, K; ^' W6 Q+ _8 Z#477 w/ B. q; V7 i
azimuth axis units = degrees :定义方位轴单位" y, A( a/ t# Q4 n0 d
elevation axis units = degrees :定义俯仰轴单位
, g9 y( Z/ f' V1 K o' W4 T#506 A, z7 D3 w% o: D. {
azimuth axis parameters = ( 0 0 0 0 0 1 ) :定义方位轴参数0 O, ^3 B3 D' E5 u6 U
azimuth centre = ( 0 0 0 ) :定义方位轴圆心参数1 ?$ i$ o1 }: l# o* H( r0 [/ g
elevation axis parameters = ( 0 0 0 1 0 0 ) :定义俯仰轴参数4 G( X) N4 z, `7 ^
elevation centre = ( 0 0 0 ) :定义俯仰轴圆心参数( X" h L- I# M, f2 U5 B9 F
pcs origin = ( 0 0 0 0 0 0 ) :定义旋转轴圆心/ a) l! L. l' _( \2 j: F8 C6 I
linear axis limits = ( -99999 999999 -99999 999999 -99999 999999 ) :定义线性轴范围 P- m7 h: t$ P$ h T u) W
rotary axis limits = ( -99999 999999 -99999 999999 999 1 ) :定义旋转轴范围# j- F) u# `$ a8 n# e
move safe angles = ( 0 0 0 0 0 0 ) :定义起始角度* [: o6 B$ {7 @$ H! [
linearise multiaxis moves = false :定义机床是否支持线性多轴联动,false为支持true为不支持
1 ]8 l- {2 H R+ N# j multiaxis coordinate transform = false :定义机床是否支持多轴联动,false为支持true为不支持 l' p3 f/ q& ?2 j& g
integer 3 = 1 :定义是否进行多轴处理
* Q* A; r, M: N1 j3 c# o% n# b" C integer 9 = 50 S" m8 a7 ] O2 q' J0 S+ `
integer 22 = 1" n0 G1 s6 N- n2 ~4 [+ r
integer 23 = 1
/ E5 ], [, c' ~: U7 l2 s4 z1 P integer 24 = 0. Q9 m5 |% v. Y
integer 25 = 0
6 ~) {( n, e6 p2 f" G* m1 y integer 28 = 1 2 N, D }( k, x6 U6 `
integer 38 = 01 S" A& r0 X$ u' H7 l/ L+ f
integer 40 = 10 . c( W+ ~& K- i' f+ x+ X
block start = 1
- \/ y! b1 q7 I/ e! c block increment = 1
- [7 _! \; O ?. [maximum feedrate = 16000.0 :定义最大进给量
8 v8 F* o# @! t* T1 xcomp output = (1 1 1 2)$ N9 K. ]3 Y. s! y$ ]
message output = false :定义是否输出信息,false为不输出true为输出
5 R N4 W0 K3 `! cblock order = true/ B; T0 g' x h+ K B: k
define block tape start
( B$ g+ D& a8 v/ nend define1 ?0 f7 V! s& x9 O
define block tool change first clear :定义程序头和换刀及换刀后的第一个动作
4 W7 e6 m9 }7 P8 C3 M! D"T1 M6 D1"
9 C r; V" x9 d* |( s"TRAORI(1)"
& G0 ~/ I, J) [5 e"HSM"
) Z- f4 B) e4 E' i& x! k& fS ToolSpeed ; M1 3! E( t0 D K% n1 j. O, v/ e9 n
G6 54
% o1 l! \( b6 A @G5 90 ; G1 0 ; Z FromZ- u J2 B9 U8 ^$ ]5 ~, l
G5 90 ; G1 0 ; X FromX ; Y FromY/ J- s3 i$ F* v& T, W
end define
: v9 ^1 w: x9 x$ q5 @6 E( ^4 wdefine block move rapid :定义快速移动
& ?1 R5 J4 e6 Q. i8 FG1 ; X ; Y ; Z ; A ; C0 I2 X' i' T4 A
end define& O* k$ P. U6 @3 }+ S6 t; z
define block move circle, m& v2 r$ C* j ]
G1 ; G2 ; X ; Y ; Z ; I ; J ; K ; D ; A ; C ; F ; M2 :定义线圆弧移动
1 g: @9 M! s5 }" [3 Vend define5 g8 L" @- K: v1 p
define block move linear7 D7 L% Z+ V$ g( j! Z3 N+ u7 Y/ ^2 W
G1 ; G2 ; X ; Y ; Z ; D ; A ; C ; F ; M2 :定义线性移动方式 9 F9 z; S6 c; y/ L- K* A
end define! O, ]% G' b" @' m
define block tape end :定义程序尾
$ b& n, s# w- D" X$ S, G6 J"M5 M9"
6 p+ \7 P+ V/ V* G7 x2 h"M30"
' i0 |2 i _3 Cend define2 f) z" Z' X w$ r2 e. R' v
end ( v0 Y, x5 T: l2 p
. G$ {2 @+ Y- h" E* k }所以这个就要看你机床格式来具体设置了,修改以下值为你所需:
# {" _$ |* D. Q- X8 a7 L$ t incremental centre = true (相对,反之false绝对)
1 C3 W7 V5 u0 F5 p, S/ b( M' Y相对有两种,所以:
; h! F/ K4 g. a' v) ~ scale factor = 1 或 -1 . b3 G: |; T! l3 `) v* {: v
另外有些机床不能输出360度的圆弧,这时需要将其分为几段输出: 8 J: Y- e" G7 N! d- {$ m
full circle = false
2 W) G; { i1 S2 a5、换刀的格式:
& a" T; E, t/ X6 q" d如:
/ N F) g- \% {0 ~: u$ U T define block tool change first
: J9 k9 v" D, D' s N ; OP ; change tool ; T ToolNum
( W/ C$ m6 p" u5 B6 A; D N ; "G48" 5 H/ Y# E u8 f+ e5 G x
N ; G1 0 ; Z FromZ
0 I" [9 x- E: T6 q3 R( l end define
5 L* y5 U. H1 g; `
2 ]% q! P# m5 d; d! O 里面可自己添加你的机床换刀时所需的代码,如打开刀具长度补偿。
$ n9 S" r; h0 F1 T
9 _/ ^. B& ~! _! a6、快速运动、直线运动、圆弧运动的代码:
& z0 [. [' K7 `$ H6 B2 U! I8 I$ L1 i9 \6 E- s- H- W4 i
参见:
+ S/ V4 Q) T$ z3 C" Q define block move circle
3 H% G5 x5 j0 c( f" c N ; G1 ; G2 ; G3 ; X ; Y ; Z ; I ; J ; K ; F ; D
) _2 s* H: h: d1 J6 _ end define
`4 p0 `# t) P- v* J* {+ u- ?4 p! m% G0 G: ]
define block move linear
: G$ @* `. U4 Z8 c' C( [& V& h" ] N ; G1 ; G2 ; G3 ; G5 ; G6 ; X ; Y ; Z ; ; T ; S ;
E: `+ L/ O$ e- M& ^8 j' X7 h M1 ; M2 3 k8 i9 U6 Y8 R6 t
end define o- p, s" u, G0 K) a5 j3 J
1 m+ P' x; [/ Z z& {5 t/ c
define block move rapid
; K _+ V4 X- D. |7 V- R, w N ; G1 ; G2 ; G3 ; G5 ; G6 ; X ; Y ; Z ; T ; S ;
" w5 ?0 x5 A$ o7 s! g* A3 [; G0 y3 x M1 ; M2 9 Q& _: i S3 j: i7 C
end define 5 @. y3 t* g7 y3 g% h- x
3 d B5 D4 D% S% q/ h/ N
你也可在帮助文件的指引下,修改上面的代码,如:不想要每次输出G17之类,可以删掉G3。。。当然修改前要了解清楚该代码是做什么的,另外注意备份,随时恢复。 ; {8 D/ A- m0 m( h
; W: p5 t3 x/ t$ U2 i! n
7、多轴: % C* s6 J3 j( ~
3 m1 C7 Q& V# M PM 这点做的非常好,如4轴的几种方式、5轴的几种方式都有代码可参考。如:在X轴加一个圆盘A,只需添加、修改以下几行:
; e9 y, Q; w1 c' M$ D
0 r$ Q* {5 O6 p8 m, \ o; C Fourth rotary table axis :- ( A. rotating about X. )
' l; I; e# f3 ^- E. H# a! g% E7 T2 S; d9 ?8 F
define format ( A )
" }* f" a: E5 J9 O3 z- E decimal point = true
& s9 x5 ]; S) g Z decimal places = 3
) q O" Z! i% F0 R end define : `% J$ v4 K4 O8 }* e0 ]# p9 B$ J$ p
& N* A$ X/ i% ~9 i& @" @3 Q word order = ( + A )
2 l. v+ Z1 R, N# l8 A: T9 e1 c+ I, D0 B. C7 Z9 @
define keys
' s( _2 H3 s1 c# g" u$ S' e0 M6 G azimuth axis not used 0 K/ z/ `: x- C
elevation axis = A
; ^8 c Q" v9 M: R* L8 w( D end define 1 u$ R! T4 P9 f- g9 `$ _; w
2 C% T6 |& `" F9 G" h
spindle elevation rotation = false ## Default
) Y9 ]! l3 G: h" } elevation units = degrees 4 A h$ W, l9 o% O j2 \, e
elevation axis direction = positive $ |! L5 v( Y8 W: m* t" g+ B
/ P: j% c5 D" x4 ~ m! [/ W# n9 X azimuth axis parameters = ( 0. 0. 0. 0. 0. 0. ) 7 n# A4 l/ v) _2 L8 P3 H( C: V
elevation axis parameters = ( 0. 0. 0. 1. 0. 0. )
k7 i& }% r, C% o
) X0 C- Z; s7 J/ M3 ]) x% { define block move rapid 5 _3 K# c- u' U4 w0 J
N ; G1 ; G2 ; G3 ; G6 ; X ; Y ; Z ; A ; H ; M1 ; M2
4 E2 h8 h' P: U! v$ M7 m end define # K. |0 Q C K; d* e8 l0 |9 v% k
' Y7 F4 I) F# S. N1 U- a s+ W
define block move linear
% b4 ~+ t& V/ k( u4 S& w" L. `9 u N ; G1 ; G2 ; X ; Y ; Z ; A ; F ; M1 ; M2
3 u+ F$ w8 w$ L5 u end define + W% N- b4 x+ U
- Q% o& y7 i8 Q W' o/ T4 j2 l5 y( |具体可参见ductpost/multex4.html页及5 轴的帮助页。。。
) L& d! Z; I" `( Z9 f( g/ d2 R " T( g2 V' P* c, m% p" }
注:总结,多轴后处理的写法,如有错误遗漏处欢迎批评指教。/ L6 _( q- P* f7 b: A( D- B8 s- Y
7 Q' V: [; u+ n( X' h我还要强调一下五轴的后处理改写一定要小心再小心。希望大家多多交流,共同学习进步。1 {, h* m, I* N0 n' _8 z
|
|