1、PowerMILL 后处理修改教程本教程是偶在实际使用中的 PowerMILL 后处理文件修改知识的积累,其中有部分修改案例来源于帮助文件,在此仅以文字和图片的形式把他记录下来与初学者共同分享。By mymould(风影爱人)一、完整的后处理文件介绍一个完整的后处理文件通常有:定义字符段、定义字符格式段、定义键值段、定义指令值段、变量定义、程序格式段等部分组成。下面我们先来看一个比较完整的后处理文件,并把它分为数段,把需要修改的地方做个必要的解释:machine fanucom 后处理文件头= 第一部分是定义字符段 =define word TN address letter = “TOOL
2、TYPE:- “ address width = 13 field width = 25end define具体解释:define word TN 定义字段;address letter = “TOOL TYPE:- “ 定义字段的返回值,比如在后处理文件里有“MS =C ; TN ToolType ; EM =C”,而在写程式的时候选用的是端铣刀,那么在 CNC 程式里就会有(TOOL TYPE :- ENDMILL) ;address width = 13 定义字符宽度,如上“TOOL TYPE:- “,从 T 开始算起一共 13 位,包括空格;field width = 25 定义返回字
3、的宽度,如上 “ENDMILL“,如果field width = 2,那“TOOL TYPE:- “就返回EN;如果 field width = 25,那“TOOL TYPE:- “就返回 ENDMILL。end define = 第二段是定义字符的格式 =define format ( / G6 S T M1 M2 L P D E H O )address width = 1field width = 2exponent width = 0scale factor = 1scale divisor = 1tape position = 0print position = 1sign = no
4、nenot permanentnot modalmetric formatsleading zeros = falsetrailing zeros = truedecimal point = false 控制公制尺寸的前导零、后导零,小数点decimal places = 0imperial formatsleading zeros = falsetrailing zeros = truedecimal point = false 控制英制尺寸的前导零、后导零,小数点decimal places = 0end defineword order = ( OP N G1 G2 G3 G4 G5 )
5、word order = ( + G6 G7 X Y Z B C )word order = ( + I J K R D S T )word order = ( + H M1 M2 MS msg EM Q ) 注册字符word order = ( + Q1 Z2 R2 ID F )word order = ( + TN TD TR DY MT YR PM )= 第三段是定义键值 =define keysblocknumber = N 定义程序段号preparatory function = G1 定义准备功能指令aux function = M1 定义辅助功能指令x feedrate not
6、used 定义 X 进给率指令y feedrate not used 定义 Y 进给率指令z feedrate not used 定义 Z 进给率指令circle angle not used 圆周角度x coordinate = X 定义 X 坐标轴y coordinate = Y 定义 Y 坐标轴z coordinate = Z 定义 Z 坐标轴key i = I 定义 X 轴矢量 I 键key j = J 定义 Y 轴矢量 J 键key k = K 定义 Z 轴矢量 K 键feedrate = F 定义进给率指令feedrate per revolution = F 定义每转进给率指令s
7、pindle = S 定义主轴指令tool number = T 定义刀具指令cycle dwell not useddwell = X 定义暂停时间键值tool length = H 定义刀具长度补偿指令tool radius = D 定义刀具半径补偿指令drill peck depth = Q1 钻孔的啄钻深度drill hole depth = Z2 定义钻孔深度clearplane = R2 定义安全平面高度message start = MS 定义注释的开始符message end = EM 定义注释的结束符opskip = OP 定义跳段符号radius = R 定义半径 R 键p
8、rogram id = ID 定义程序号azimuth axis = B 在多轴加工中,定义方位轴elevation axis = C 在多轴加工中,定义仰角轴3rd rotation axis = null 在多轴加工中,定义第三旋转轴leader not usedx vector not usedy vector not usedz vector not usederror not usedend define= 定义指令值 =define codesrapid = G1 0 = 快速点定位linear = G1 1 = 直线插补circle cw = G1 2 = 顺圆插补circle
9、ccw = G1 3 = 逆圆插补dwell = G6 4 = 暂停、准确停止xy plane = G3 17 = XY 平面zy plane = G3 19 = YZ 平面xz plane = G3 18 = ZX 平面compensation off = G2 40 = 取消刀具半径补偿compensation on left = G2 41 = 刀具半径左补偿compensation on right = G2 42 = 刀具半径右补偿imperial data = G4 20 = 英寸输入metric data = G4 21 = 毫米输入absolute data = G5 90 =
10、 指定绝对坐标编程incremental data = G5 91 = 指定增量坐标编程from = G3 54 = 制定工作坐标系feedrate per minute not used = 每分钟进给feedrate per revolution not used = 每转进给spindle rpm not usedconstant surface speed not useddrill = G4 81 = 钻孔循环锪镗循环break chip = G4 82 = 钻孔循环或反镗循环deep drill = G4 83 = 深孔钻循环tap = G4 84 = 攻丝循环bore 1 = G
11、4 85 = 镗孔循环bore 2 = G4 86 = 镗孔循环bore 3 = G4 87 = 背镗循环bore 4 = G4 88 = 镗孔循环bore 5 = G4 89 = 镗孔循环end of drill = G4 80 = 固定循环取消macro start not used = 宏程序模态调用macro end not used = 宏程序模态调用取消macro call not used = 宏程序调用cycle retract = G6 99 = 固定循环返回到R点tool length offset = G3 43 = 正向刀具长度补偿spline not used = s
12、pline 插补方式stop = M1 0 = 程序停止opt stop = M1 1 = 选择停止spindle on cw = M1 3 = 主轴正转spindle on ccw = M1 4 = 主轴逆转spindle off = M1 5 = 主轴停止spin coolant on cw = M1 13spin coolant on ccw = M1 14spin coolant off = M1 5 = 冷却液关change tool = M1 6 = 自动换刀coolant on mist = M1 7 = 雾状冷却液coolant on = M1 8 = 冷却液开coolant
13、on flood = M1 8 = 冷却液开(喷出)coolant off = M1 9 = 冷却液关clamp on not usedclamp off not usedend of tape = M1 2 = 程序结束end of prog = M1 30 = 程序结束gear range 1 not usedgear range 2 not usedgear range 3 not usedconstant contour speed not usedconstant contour speed 2 not usedword drill not usedword break chip n
14、ot usedword deep not usedword tap not usedword bore 1 not usedword bore 2 not usedword bore 3 not usedword bore 4 not usedword bore 5 not usedcoolant on tap not usedrigid tap not used = 刚性攻丝helical drill not usedhelical retract drill not usedend define= 定义变量 =print header = “Delcam Postprocessor“ =
15、定义打印标题machine name = “Fanuc6m version 1.2“ = 机器名point = “.“ = 小数点zero = “0“ = 零tape headers = 1 = 纸带标题( integer 6 、 integer 7):定义 coolant output(冷却液输出)integer 6 = 2 = 定义冷却液开(M07、M08)的输出方式,此变量共有三个选项0:在后处理时遇到相关指令时输出;1:在下一段中单独输出;2、在下一段中和坐标移动一起输出。integer 7 = 1 = 定义冷却液关(M09)的输出方式,此变量共有三个选项0:在后处理时遇到相关指令时输
16、出; 1:在下一段中单独输出;2、在下一段中和坐标移动一起输出。( integer 10、 integer 11、 integer 12、 integer 13):定义 spindle output(主轴输出)integer 10 = 2 = 定义主轴开(M03、M04)的输出方式,此变量共有三个选项0:在后处理时遇到主轴开指令时输出;1:在下一段中单独输出;2、在下一段中和坐标移动一起输出。integer 11 = 1 = 定义主轴关(M05)的输出方式,此变量共有二个选项0:在遇到主轴关指令时不输出 S;1:在遇到主轴关指令时输出 S0。integer 12 = 1 = 定义 M 代码的输
17、出方式,此变量共有二个选项0:在遇到主轴相关指令时不输出 M;1:在遇到主轴相关指令时输出 M。tool reset coordinates = 2 = 定义刀具复位后(M06 后)的坐标处理方式,有 1、2、3、4 四个选项,请注意这四个选项的刀具补偿的区别:1、 2、3、 4、cycle output = 1 = 定义循环指令(G80G89)的输出方式,此变量共有两个选项0:不输出循环移动指令;1、输出循环指令(默认值为 G81) 。( integer 20、 integer 26、 full circle):定义 circle output(圆弧输出)integer 20 = 1 = 定
18、义圆弧(M02、M03)的输出坐标,此变量共有两个选项0:不输出圆弧的 X、Y 坐标;1:输出圆弧的 X、Y 坐标。block start = 1 = 定义程序段的开始段号block increment = 1 = 定义程序段号的增量split move = 0integer 26 = 1 = 定义圆弧(M02、M03)的输出,此变量共有两个选项0:不输出圆弧指令;1、输出圆弧指令,如果选择 0,那么在后处理时遇到有圆弧的地方,系统将这个圆弧打断成若干条直线段输出。program id start = 100 = 定义程序起始号integer 34 = 3integer 35 = 1integ
19、er 36 = 1integer 37 = 2rapid feed code = 0 = 共有两个选项0:在快速移动时不输出进给率;1:在快速移动时输出进给率(需要在快速移动中定义 F)。maximum block number = 0maximum tape blocks = 0minimum tape blocks = 0segment type = 0counter start = 0counter increment = 0tape split retract distance = -999multiaxis coordinate transform = true = 定义机床是否支持
20、多轴联动, true:支持;false:不支持message output = falseblock order = truetlo output = true = 是否正常输出刀具长度(半径)补偿,true:输出;false:不输出。tape split on tool change = falsefull circle = true = true:整圆输出;false :不做整圆输出。incremental centre = truego home output = falseuse partid = true = 是否使用自定义 partid,true:使用;false :不使用use
21、progid = true = 是否使用自定义 progid,true:使用;false:不使用spindle x motion = false = 定义主轴运动方向,true:X 方向;false:NOX 方向。spindle y motion = false = 定义主轴运动方向,true:Y 方向;false:NOY 方向。spindle z motion = true = 定义主轴运动方向,true:Z 方向;false :NOZ 方向。spindle w motion = false = 定义主轴运动方向,true :W 方向;false:NOW方向。spindle azimuth
22、rotation = false = 定义方位轴方式, true:为主轴头式;false:为工作台式。spindle elevation rotation = false = 定义仰角轴方式,true:为主轴头式;false :为工作台式。linearise multiaxis moves = true = 定义机床是否支持线性多轴联动, true:支持;false:不支持。use hole top in cycles = falseretract at angular limit = falseunwind at tool change = falsesuppress xy arc = fa
23、lsesuppress xz arc = falsesuppress yz arc = falsetransform workplane origin = falseprevious multax rapid style = falseknot vector type = noneunits = input = 定义单位,input=ouput;metric;imperialcoordinates = absolute = 定义坐标单位,absolute ;incrementalazimuth axis units = degrees = 定义方位轴单位azimuth axis directi
24、on = positive = 定义方位轴用法,相对还是绝对elevation axis units = degrees = 定义仰角轴单位elevation axis direction = positive = 定义仰角轴用法,相对还是绝对spline type = noneworkplane angles = noneoption file units = nonemaximum feedrate = 9999.0000minimum feedrate = 1.0000rapid feedrate = 9999.0000maximum tape length = 0.0000plunge
25、 threshold angle = 0.0000maximum segment = 0.0000diameter = 1.0000withdrawal amount = 50.0000arc radius limit = 10000.0000retraction threshhold angle = 360.0000arc minimum radius = 0.0000azimuth axis parameters = ( 0 0 0 0 0 0 ) = 定义方位轴参数,前三个零为分别定义每个轴的旋转中心;后三个零为定义方位轴的坐标,依次为X、Y、Z 。azimuth centre = (
26、0 0 0 ) = 定义方位轴圆心参数elevation axis parameters = ( 0 0 0 0 0 0 ) = 定义仰角轴参数,前三个零为分别定义每个轴的旋转中心;后三个零为定义仰角轴的坐标,依次为X、Y、Z 。elevation centre = ( 0 0 0 ) = 定义仰角轴圆心参数pcs origin = ( 0 0 0 0 0 0 ) = 定义旋转轴圆心linear axis limits = ( -99999 999999 -99999 999999 -99999 999999 ) = 定义线性轴范围rotary axis limits = ( -99999 9
27、99999 -99999 999999 999 1 ) = 定义旋转轴范围,前两个零为定义方位轴的旋转范围;中间两个零为定义仰角轴的旋转范围;第五个零定义公差;第六个零定义分辨率。move safe angles = ( 0 0 0 0 ) = 定义起始角度define block tape start“%“#ID ProgIDN ; G2 91 ; G6 28 ; Z 0 ; Z =CN ; MS =C ; PM JobName ; EM =CN ; MS =C ; MT Month ; DY Day ; YR Year ; EM =CN ; MS =C ; TN ToolType ; EM
28、 =CN ; MS =C ; TD ToolRadiusToolNum ; EM =CN ; MS =C ; TR ToolRadiusToolNum ; EM =C N ; compensation off ; G6 49 ; xy plane ; G4 80 ; G3 54#N ; G2 91 ; G6 28 ; X 0 ; Y 0 ; X =C ; Y =Cend definedefine block tape endN ; G5 91 ; G6 28 ; Z Zcoord ; Z =CN ; H 0 ; G6 49#N ; G6 28 ; X 0 ; Y 0 ; X =C ; Y =C
29、N ; M1 30end definedefine block go home preambleend definedefine block tool change first#N ; OP ; change tool ; T ToolNumG3 54 ; G5 90 ; G3 =C ; G5 =C ; #T NextTool ;end definedefine block tool changeN ; G5 91 ; G6 28 ; Z 0 ; Z =CN ; H 0 ; G6 49N ; G6 28 ; X 0 ; Y 0 ; X =C ; Y =CN ; T ToolNumber ; c
30、hange toolG5 90 ; G3 54 ; G5 =C ; G3 =C ; #T NextTool ;end definedefine block tool change clearend definedefine block go home z moveend definedefine block go home xy moveend definedefine block move fromend definedefine block move circleN ; G1 ; G2 ; G3 ; X ; Y ; Z ; I ; J ; K ; F ; Dend definedefine
31、 block move linearend definedefine block move rapidN ; G1 ; G2 ; G3 ; G5 ; G6 ; X ; Y ; Z ; T ; H ; S ;M1 ; M2end definedefine block move cycleN ; G4 ; G6 ; X ; Y ; Z2 ; R2 ; Q ; Q1 ; F ; M2end definedefine block move tapN ; G6 ; G4 ; X ; Y ; Z2 ; R2 ; F ; M1 ; M2end definedefine block tape segmente
32、nd definedefine block tape split start“%“ID ProgIDend definedefine block tape split endN ; G1 28 ; G6 91 ; Z 0 ; Z =CN ; H 0 ; G6 49#N ; G6 28 ; X 0 ; Y 0 ; X =C ; Y =CN ; M1 30end definedefine block cycle startN ; S ; M1N ; G3 ; G5 ; M2F =C ; G4 =C ; Z2 ; R2 ; Q ; Q1 ; G6 ;end definedefine block cy
33、cle endN ; G4 80end definedefine block tape split moveend definedefine block move splineend defineEnd下了,有个屁用,说了等于没说,让人家菜鸟怎么看得懂.还不如这个,对于后处理格式,一般的用户有三个层次的需求: 一、powermill 自带的后处理中有适合自己机床要求的,不过要修改、增删些代码。 二、没有适合的,需要改写后处理。 三、机床的代码格式完全与普通 G 代码格式不同,需建全新的后处理。 本文只针对 1、2 种需求来进行讲解,至于第三种则是高级篇的范畴了(哈哈,其实我也不知道,还没做过呢
34、) 现在开始准备工作: 1、以不同的控制器试着处理几个 G 代码文件出来,然后和自己机床的代码进行比较,选一个最接近自己的。 2、打开 ductpostdp-index.html,准备有问题就看帮助。 3、运行: ductpost -w 控制器类型 控制器类型.opt ,从而生成 OPT 文件,这个选最接近你机床的控制器。如:ductpost -w hurco hurco.opt 。 这时就可以用文本编辑器来打开这个 opt 文件了: 1、程序头、程序尾的改写: 这个在以下的定义里面: define block tape start * end define define block tape
35、 end * end define 你可以根据自己的需要添加,如: define block tape start “%“ N ; “G17G90G80G40G49“ end define define block tape end N ; “M05“ N ; “M30“ end define 不过注意这种引号方法优点是简单明了,但控制器只是把它当字符处理,而不能以模态存在,具体可参见其它说明。 2、是否需要 N 行号? % :0001 N10G28G91X0Y0Z0 N30T1M6 N40G0G90X-25.Y-40.S800 M3 如这上面的 N10、N30、N40,另外行号的起始、增量、
36、最大都可以定义。如果不想要行号,可修改为以下值: define format ( N ) not permanent end define 3、是否需要 Message? N60( MSG, Toolpath Name: ET) N70( MSG, xyzxyz_cut_1 ET) N80( MSG, Output: ET) N90( MSG, UNITS: MILLIMETRES ET) N100( MSG, TOOL COORDINATES: TIP ET) N110( MSG, LOAD TOOL ET) 上面的信息,可修改为你需要的,具体参见帮助。也可选择不输出,如: message
37、output = false 4、圆弧的输出格式: 这个需要讲一下,输出 R 的就不讲了,专讲 I、J 、K 的输出。大致有三大类: a、I、J 输出为圆心的绝对坐标值。 b、I 、J 输出为相对坐标值,具体值为:圆心坐标值-圆弧始点坐标(常用) c、I 、J 输出为相对坐标值,具体值为:圆弧始点坐标-圆心坐标值 所以这个就要看你机床格式来具体设置了,修改以下值为你所需: incremental centre = true (相对,反之 false 绝对) 相对有两种,所以: scale factor = 1 或 -1 另外有些机床不能输出 360 度的圆弧,这时需要将其分为几段输出: full circle = false 5、换刀的格式: 如: define block tool change first N ; OP ; change tool ; T ToolNum N ; “G48“ N ; G1 0 ; Z FromZ end define 里面可自己添加你的机床换刀时所需的代码,如打开刀具长度补偿。 6、快速运动、直线运动、圆弧运动的代码: 参见: define block move circle N ; G1 ; G2 ; G3 ; X ; Y ; Z ; I ; J ; K ; F ; D en