|
后处理修改帮助
1 u) c- Q' V# U$ S4 l6 Z+ k7 R, g8 x 一、PM 自带的后处理中有适合自己机床要求的,不过要修改、增删些代码。 ; N6 ^. | q! A$ \
二、没有适合的,需要改写后处理。 0 d8 U$ `6 {* F+ a
三、机床的代码格式完全与普通 G 代码格式不同,需建全新的后处理。 $ t. ?& {: \: n; A; |. q
- \5 g& ]1 o0 u( B
现在开始准备工作: ; p! j3 H2 N9 N0 y
3 H" r( Z- Y% I. h* K+ D; E( ? 1、以不同的控制器试着处理几个G代码文件出来,然后和自己机床的代码进行比较,选一个最接近自己的。
6 \/ r; o2 z# e; `0 Z" s 2、打开ductpost\dp-index.html,准备有问题就看帮助。 . a6 T5 j; `* |
3、运行:ductpost -w [控制器类型] > [控制器类型].opt ,从而生成OPT文件,这个选最接近你机床的控制器。如:ductpost -w hurco > hurco.opt 。 这时就可以用文本编辑器来打开这个opt文件了: ) @/ U9 U: M. D3 N, Q7 ?
5 ^; p3 t. L; H1 S( U1、程序头、程序尾的改写:
' y/ {8 f: q* e6 J+ U- Y这个在以下的定义里面:
1 U/ x" D( U( ~2 ] define block tape start ( E; b4 F3 \% x. Y
******************** 3 d- ~8 U6 ]# ]% r$ w
end define
8 g2 Q+ v" c4 r* _ define block tape end - u2 x: e0 t0 i) D/ i# C
******************* : ~& b) ^5 L' t6 ~* T/ P
end define : j' b+ K/ U- s/ T- L3 b5 R: N' s4 x8 L3 q
" Q: L, Z" u& m: Z' a2 J. h/ T4 ]
你可以根据自己的需要添加,如: ! c% G$ p% F0 x0 a, b" P$ v+ a
; H' J" n. u e6 D& B& J define block tape start / v+ }# r1 f! P% M2 c/ }
"%"
( ^* k0 y6 c0 `" B N ; "G17G90G80G40G49"
! W2 Y3 _6 X% I* p/ d8 _ end define + T) A4 M( H5 r( {4 k! F
1 u1 z+ J# ~$ a2 N: m define block tape end
: b. b% d; r1 O: Q5 K* E& S N ; "M05"
$ w- Z( c* L/ A# v N ; "M30" 0 [- J6 n! s- u
end define ! z9 V# }) b3 O1 e& h" E c
6 a0 w u# N2 b: K# m3 |/ @+ f
不过注意这种引号方法优点是简单明了,但控制器只是把它当字符处理,而不能以模态存在,具体可参见其它说明。
9 \! U" B2 a$ M; V
/ a @% M! k0 R/ ?8 v2、是否需要N行号? $ P/ k4 `/ R4 d- H" _( c( A
% / u Z! i$ M1 S
:0001
0 u1 a9 B/ O7 p* o N10G28G91X0Y0Z0
7 [5 F1 }/ w+ R& v* X, }5 m N30T1M6
& J/ a0 m$ \7 X, Z7 k' V N40G0G90X-25.Y-40.S800 M3
! e _! P/ s3 S4 S7 q ; }# o( t( i7 G4 T+ W/ \
如这上面的N10、N30、N40,另外行号的起始、增量、最大都可以定义。如果不想要行号,可修改为以下值: 2 b* C6 c6 t+ X6 w- W; z. l
define format ( N ) 7 m6 i1 k; A$ b1 K8 {2 |0 e( q
not permanent
- ~5 g% }/ N8 \) R; i1 I, W end define
7 @0 e# `2 g M* M+ c
9 f+ g: q+ _- I# y c( D% Q3、是否需要Message?
" s' B; y0 b4 a1 X6 H# {3 x! ~2 @4 x5 {0 k& y: J
N60( MSG, Toolpath Name: ET)
z* V8 R& U7 ?# f" ? N70( MSG, xyzxyz_cut_1 ET)
# p. e8 v+ e3 S y8 { Y N80( MSG, Output: ET) t3 k O5 K! G/ p% j8 D
N90( MSG, UNITS: MILLIMETRES ET) 0 ^2 c% m( q0 r6 X8 D8 T6 V3 o
N100( MSG, TOOL COORDINATES: TIP ET)
7 |, \5 I+ ^. ?3 t# T N110( MSG, LOAD TOOL ET) ( E, A8 |: u( F
/ `0 q6 Y0 x9 Q% \& w, u$ y7 {
上面的信息,可修改为你需要的,具体参见帮助。也可选择不输出,如:
, r' X! A1 q4 H; n
& }1 M* V9 Q9 m: T) p, T9 |$ U" a6 q message output = false 7 j3 g: N8 ^& g( J
2 m4 z! E n8 P$ z" f- [; R4 b4、圆弧的输出格式:
5 E# X: W4 P' s* d" G" M6 S8 A$ x ' D0 j2 E$ O) @. P! R% S+ S
这个需要讲一下,输出R的就不讲了,专讲I、J、K的输出。大致有三大类: # O% i9 N9 D) L' n7 v
7 o" n8 `' z' |+ d
a、I、J输出为圆心的绝对坐标值。
/ C6 g" X ^2 e5 U6 J } | b、I、J输出为相对坐标值,具体值为:圆心坐标值-圆弧始点坐标(常用) & d1 d H4 N' r7 ~, m
c、I、J输出为相对坐标值,具体值为:圆弧始点坐标-圆心坐标值 8 i$ A) c: c( W4 d5 O, q0 k
4 a9 ]/ {( D3 a5 I: z
define format (I J K) :定义I J K的矢量
5 K, P, f# ~2 ~* @" M: P scale factor = -1
5 i8 g! U( s8 c9 C, U; a4 ? end define
; R# `8 t% t8 z2 I0 V; ]/ R5.定义左右刀具补偿5 b3 q3 p) N& c% v
define codes ) u7 t9 m5 R( \. h: `: t- w6 m# z
comp on left = G2 41
, b2 J! o4 q* O! v comp on right = G2 42
4 T9 W: V7 E6 Q) i( k: U' k T comp off = G2 40 / E1 I& n) s' P% W& Z0 `
end define2 ^7 s, V/ x0 O& Y
- k. l, _# j0 T- Z) O
#14 :从#14~#41为定义旋转轴的写法,如小数点的位数,+/-的输出等等" n' R9 s# l/ Q7 `( h3 ~
, l! O# M" X- T) P! N9 \0 \8 r
define format ( A )9 h# {4 R% W1 W0 g
address letter = "A"
. A' w1 l' T* B" V0 I, K6 s address width = 1
7 w+ z( J1 U6 @0 o- Y2 \ field width = 8" i _3 Z8 _) z4 Q7 l8 P
metric formats
# i+ A! R% C0 p$ y4 n; @5 P decimal places = 3, B6 t0 i8 W8 h+ r
decimal point = true
3 `9 O3 L* {, W: m; O$ d sign = if negative& G- Z- {9 h. `3 q8 f7 m0 C
leading zeros = false
4 E* U1 ]! u3 J5 f2 O) d- x trailing zeros = true
9 ^% P1 E- E6 p+ cend define( p4 |9 F; ]8 Q5 D' l" V' |
#26
% [! \! C* [1 r7 T- g# u9 ` word order = (+ A ) % [" |# S) U7 D2 a
#28& Z c f$ z; ]+ P- r2 _ a
units = metric( N0 ^! c- E2 k! q. C5 u Q
message output = false8 }$ R! e! c4 c
spindle output = (2 0 0 0 )
/ e: P3 y/ d7 r, a+ ] coolant output = ( 1 2 )$ ]5 h8 a) X* @0 Z% j4 r. E1 Y3 I5 Q+ S
#32
5 K6 _; `: R& A9 [define format ( C )8 z! S8 B# H8 D" W$ M! u/ u
address letter = "C") c$ z v1 n0 i+ |) C3 R
address width = 1
# t6 T6 c' s: o) J7 O1 r4 [2 V6 Y field width = 88 C! w$ e! I: ?/ M2 I- `- d
metric formats
+ i( A. d2 u4 N2 p3 G' N decimal places = 3
, o: z M0 K, [4 Z( Z% ~1 L9 _! y decimal point = true8 p0 E( |8 @4 j) r b' x9 }
sign = if negative
8 k1 ^$ a; ]! j+ R leading zeros = false
?/ ?5 j7 s" E# N- u8 Y9 @1 ] trailing zeros = true
" X/ W7 x) v( o6 a5 i0 Rend define8 b8 s& q- m4 r/ E
#39
: c! G6 d1 b2 Y word order = (+ C ) . p5 t9 @0 _. f) z F
#41' s% L2 \# _: E6 D9 Y# g
units = metric1 K8 d% m. i; j% a U. d; I
message output = false
1 z+ M+ u; m/ U. v- n F2 ` spindle output = (2 0 0 0 )5 _/ o6 ^; c2 q' A% U8 ~
coolant output = ( 1 2 )1 z3 {* @+ C. _" T7 q+ ?
3 j. f6 X7 C8 { M3 d#33
7 V' F" @. A p define keys :定义旋转轴名称9 R9 ]3 N9 L& g9 g0 D* o6 z4 o
azimuth axis = C
- l+ Q- i" V9 Z4 g: E elevation axis = A1 r3 k# \) }+ R
end define
# f' d( [6 S/ u+ m8 W#38
5 ~# f: }# k0 @. F azimuth axis parameters = (0. 0. 0. 0. 0. 1. )4 L* |# v! {, o( W( t
elevation axis parameters = (0. 0. 0. 1. 0. 0. )
0 N6 d7 g' q. M' F2 B#41
9 B6 }/ e6 J9 k3 V3 L1 } spindle azimuth rotation = true :定义方位轴方式,true为主轴头式false为工作台式0 R, b* x% P2 Z6 @! |% H- |
spindle elevation rotation = true :定义俯仰轴方式,true为主轴头式false为工作台式; b9 Y0 Y4 j9 s$ B
#44
v U2 F& X4 y azimuth axis direction = positive :定义方位轴用法,相对还是绝对
8 V$ H/ P) |1 U% u& o elevation axis direction = positive :定义俯仰轴用法,相对还是绝对5 k. R% l T8 J
#47; a8 T6 u+ G( O4 i' C! s8 T
azimuth axis units = degrees :定义方位轴单位0 \" H9 R* {" I6 U- A
elevation axis units = degrees :定义俯仰轴单位2 W9 d; e9 ]' B l# ?, D, A/ z
#50$ O* h6 @6 s, L; t$ [* Y
azimuth axis parameters = ( 0 0 0 0 0 1 ) :定义方位轴参数7 A( Q1 S1 u+ v7 K6 a% w' L- p5 ~
azimuth centre = ( 0 0 0 ) :定义方位轴圆心参数# r2 G2 r$ a( ~; y6 ~
elevation axis parameters = ( 0 0 0 1 0 0 ) :定义俯仰轴参数$ X6 x0 Q9 G* h# E
elevation centre = ( 0 0 0 ) :定义俯仰轴圆心参数
6 V+ w5 U6 [$ @9 x$ u, y3 N pcs origin = ( 0 0 0 0 0 0 ) :定义旋转轴圆心 k* ?& |. |/ c$ J7 G
linear axis limits = ( -99999 999999 -99999 999999 -99999 999999 ) :定义线性轴范围
5 g# L% a k( r6 [% w0 L rotary axis limits = ( -99999 999999 -99999 999999 999 1 ) :定义旋转轴范围; W4 }: E& C. H# d
move safe angles = ( 0 0 0 0 0 0 ) :定义起始角度
7 w; U( x0 {$ `7 N/ a7 P& z1 k; G linearise multiaxis moves = false :定义机床是否支持线性多轴联动,false为支持true为不支持" Q" E; Q8 R$ O( ]- o/ |: g
multiaxis coordinate transform = false :定义机床是否支持多轴联动,false为支持true为不支持
7 y4 B% a% c( @4 _* ~' i integer 3 = 1 :定义是否进行多轴处理
$ g% o5 I6 S5 c! ]- s e# y, ~/ P integer 9 = 5
$ _6 N! B6 j% P- H integer 22 = 1
9 T: V' t7 Z" J& ~$ V integer 23 = 1
; f9 p" J: |5 y& b, C+ l integer 24 = 0
3 |+ a- Y) s7 c9 W, L integer 25 = 0/ ^, Q% S% m. j" M9 Z. D/ `
integer 28 = 1 - M' E+ A! g& `: s, ]8 s( \
integer 38 = 0
3 Z* |3 y6 B% q0 |/ S9 a: K- u0 r integer 40 = 10
" Y7 w4 ?: r# W+ ~! l& y block start = 1
@# U: k; u, H block increment = 1
: @* O* x0 Y& k/ {maximum feedrate = 16000.0 :定义最大进给量6 {+ {* R$ h: F/ J( k# k8 K) q
comp output = (1 1 1 2). m1 n$ g% Y, h8 c* S2 O
message output = false :定义是否输出信息,false为不输出true为输出
s0 e5 s: \+ X% V9 dblock order = true# v$ s/ e/ W! Z* i$ {4 o7 c; }
define block tape start
1 ? q1 s" t7 z% Kend define
/ d) i$ h. n n! Q5 N. Mdefine block tool change first clear :定义程序头和换刀及换刀后的第一个动作
& w$ Y; C/ b4 E, v4 W8 C' Z- G' T"T1 M6 D1"
( [* O# a# B; I- p5 b, G2 B6 v"TRAORI(1)"" a* ?# o3 Z7 i8 _0 p0 ~
"HSM"
6 \2 R& E) G% s Z5 pS ToolSpeed ; M1 3. c5 M; i j: B9 c# S( Y7 \: c
G6 54
q6 A+ g0 H6 @G5 90 ; G1 0 ; Z FromZ
2 T" F6 w4 N) r" v$ pG5 90 ; G1 0 ; X FromX ; Y FromY4 f; t: i* J2 j" D
end define* e/ @' R. i; O! w1 V
define block move rapid :定义快速移动& P/ @2 v( U" o1 `# j- v
G1 ; X ; Y ; Z ; A ; C4 ]5 |: S" O1 o5 D) ]
end define
2 C/ {+ [2 M$ l( C# Fdefine block move circle
9 _' f, F3 ~, F! `- s- kG1 ; G2 ; X ; Y ; Z ; I ; J ; K ; D ; A ; C ; F ; M2 :定义线圆弧移动
4 K0 D) y7 G0 ]: T' Gend define6 @. ~& p0 V( [: L9 q# _
define block move linear9 i4 M9 C$ N9 U; Z6 v1 X- q' q
G1 ; G2 ; X ; Y ; Z ; D ; A ; C ; F ; M2 :定义线性移动方式 - A+ R% L- A# |1 U
end define! l; g6 M4 f. `( J7 V- z. P
define block tape end :定义程序尾
5 Z- } P+ d, L+ Y"M5 M9"( }- T& Y% P6 H, ^
"M30"- ^" _% H$ I/ w& X2 S$ z& v+ N/ F
end define3 X2 ]( X# Y w/ x& ?0 j
end
5 n( ~4 W5 H6 d
3 I. Z6 x# B2 b' s! ~8 `+ b0 o所以这个就要看你机床格式来具体设置了,修改以下值为你所需:
p5 Q! A* }, \ incremental centre = true (相对,反之false绝对) ( ^* u0 U! q* y0 Y
相对有两种,所以: ; P0 ^( e- b& i- G" c; h g
scale factor = 1 或 -1
+ C( v$ U1 _: X1 Y/ ^/ k( p7 \另外有些机床不能输出360度的圆弧,这时需要将其分为几段输出: 4 {# r; m. x* M6 b( c
full circle = false
& \$ Q% p/ _* ?9 x3 ~- F5、换刀的格式:
1 y& `2 i. ?) S$ v, V, B如: . C: W8 X7 J4 b1 T4 B) L! k
define block tool change first
" B6 @5 V& u6 O6 c* D% f+ A, v N ; OP ; change tool ; T ToolNum : f# ^8 @9 u4 f( y2 l
N ; "G48"
3 x: b, @+ K( e3 n7 V5 u N ; G1 0 ; Z FromZ
$ L9 c- k3 } V. m7 f# X' E2 T end define
' T& i5 a0 Z. D6 W/ G8 t' K! ^4 O) d0 q [: H5 d+ H$ B$ n
里面可自己添加你的机床换刀时所需的代码,如打开刀具长度补偿。
% a) {/ i* N; d2 q
+ a: h7 f+ x0 ^) @$ M. h1 |6、快速运动、直线运动、圆弧运动的代码: $ o' G& ]7 G# M3 A& J% G9 _2 u9 n
% b) U g* R/ z8 Y 参见: 9 C9 @7 c [/ p1 n
define block move circle % Q$ M# j) x% m* J6 Q1 G
N ; G1 ; G2 ; G3 ; X ; Y ; Z ; I ; J ; K ; F ; D , P7 k. {* {* V% G" r5 m2 b0 g+ H
end define
0 \+ _. _/ K' y# ^. O/ j1 [
# W0 S, `: \ q$ u! h define block move linear
# n) Y7 i# G" L+ p/ n) M N ; G1 ; G2 ; G3 ; G5 ; G6 ; X ; Y ; Z ; ; T ; S ;
+ ~( E6 u1 S* _% N' c0 C5 C M1 ; M2
. \7 j: F8 Q- {) R end define
. R$ U9 }7 y* ?- v( Z0 g, r( i
9 q) s( ~7 A! E0 t3 z define block move rapid
- m$ l$ w; R, K7 w& ~5 ?# [; }/ y N ; G1 ; G2 ; G3 ; G5 ; G6 ; X ; Y ; Z ; T ; S ; 1 ]$ H# s" Z# X, j4 a
M1 ; M2 ; k7 N8 [3 i* P' k; |7 O
end define
" O! Y4 F& {8 F3 H) k9 U0 `
7 X+ S3 f! U+ } [4 z 你也可在帮助文件的指引下,修改上面的代码,如:不想要每次输出G17之类,可以删掉G3。。。当然修改前要了解清楚该代码是做什么的,另外注意备份,随时恢复。 + |* B8 t1 j, M' u, M' l/ [& P+ p
( P& `, U1 B: G# X$ u* H* \* K7、多轴: * i, S% K+ S% q5 x
2 F$ k) |% v% F! `4 D
PM 这点做的非常好,如4轴的几种方式、5轴的几种方式都有代码可参考。如:在X轴加一个圆盘A,只需添加、修改以下几行:
6 V( N* L: z: e' ^9 A6 M
$ F% v- m* L. K3 S: f, F8 D5 @ Fourth rotary table axis :- ( A. rotating about X. ) + F5 P1 L1 u. N; k: {" P5 }
9 G* v. v$ b- L3 R( ~' S$ C
define format ( A ) ) u2 S4 W. w( h3 n1 s4 A
decimal point = true
$ w J% G- o& l5 Q& i; M; w+ E, _! a, Q decimal places = 3 # m! A+ `) p+ q* V' I8 E8 I0 J
end define 1 C6 a( ?) S( @5 J" p7 n# U
! P9 n& @* r2 n8 L6 v
word order = ( + A ) 0 [/ `$ ~# L8 h0 k+ e# q+ z
2 q, a( ^: ^" D. u define keys + a+ C; G$ c7 \ w0 \3 w& a
azimuth axis not used / ?9 F8 q6 m( N0 J( d+ p
elevation axis = A ' x+ L! M$ s, v0 }0 Z0 U
end define ( }, E" j1 I- k* O
2 |$ O; k% I: j% J spindle elevation rotation = false ## Default
& _8 c/ s( p5 F, ~( } elevation units = degrees
( j/ O8 \. N6 P" R! F* } elevation axis direction = positive
: }" c3 q8 ]4 M/ K' v- W" q- ~& s; l. D
azimuth axis parameters = ( 0. 0. 0. 0. 0. 0. )
# X, K0 B3 g6 S2 h& f0 q1 ` E9 ` elevation axis parameters = ( 0. 0. 0. 1. 0. 0. )
. c! T+ ]; `* K& i! \1 P ?
& ?. h4 }6 W7 `" C) F! b define block move rapid
% c* [& O. ?( l! ~# n* }& i N ; G1 ; G2 ; G3 ; G6 ; X ; Y ; Z ; A ; H ; M1 ; M2 ' S' O. e4 D: D% ]
end define
! ~2 X+ U4 R" J8 T. N, P* C, Q5 `8 T4 c1 U' H! {
define block move linear 7 @2 @/ q- U$ @4 o a3 d6 C
N ; G1 ; G2 ; X ; Y ; Z ; A ; F ; M1 ; M2 + l( X: {! E+ h" m
end define
9 }4 X' W2 x, W/ Q* R& |9 S, Z2 b' H/ ^/ H
具体可参见ductpost/multex4.html页及5 轴的帮助页。。。) e) d6 X" l+ H' i+ M$ o* t
2 Y: M( c5 q- Y2 q; [6 ^注:总结,多轴后处理的写法,如有错误遗漏处欢迎批评指教。
/ a& l% M. y! P* O% ]
+ u, O+ \7 s5 x9 i' e我还要强调一下五轴的后处理改写一定要小心再小心。希望大家多多交流,共同学习进步。3 V% A7 X0 f+ v
|
|