标移动一起输出。 integer 11 = 1 ============= 定义主轴关(M05)的输出方式,此变量共有二个选项——0:在遇到主轴关指令时不输出S;1:在遇到主轴关指令时输出S0。 integer 12 = 1 ============= 定义M代码的输出方式,此变量共有二个选项——0:在遇到主轴相关指令时不输出M;1:在遇到主轴相关指令时输出M。 tool reset coordinates = 2 =============== 定义刀具复位后(M06后)的坐标处理方式,有1、2、3、4四个选项。 cycle output = 1 ================ 定义循环指令(G80~G89)的输出方式,此变量共有两个选项——0:不输出循环移动指令;1、输出循环指令(默认值为G81)。 (integer 20、integer 26、full circle):定义circle output(圆弧输出) integer 20 = 1 ============= 定义圆弧(M02、M03)的输出坐标,此变量共有两个选项——0:不输出圆弧的X、Y坐标;1:输出圆弧的X、Y坐标。 block start = 1 ==== 定义程序段的开始段号 block increment = 1 ====== 定义程序段号的增量 split move = 0
integer 26 = 1 ============== 定义圆弧(M02、M03)的输出,此变量共有两个选项——0:不输出圆弧指令;1、输出圆弧指令,如果选择0,那么在后处理时遇到有圆弧的地方,系统将这个圆弧打断成若干条直线段输出。 program id start = 100 ====== 定义程序起始号 integer 34 = 3 integer 35 = 1 integer 36 = 1 integer 37 = 2 rapid feed code = 0 ==== 共有两个选项——0:在快速移动时不输出进给率;1:在快速移动时输出进给率(需要在快速移动中定义F)。 maximum block number = 0 maximum tape blocks = 0 minimum tape blocks = 0 segment type = 0 counter start = 0 counter increment = 0 tape split retract distance = -999 multiaxis coordinate transform = true ====== 定义机床是否支持多轴联动,true:支持;false:不支持 message output = false--------信息输出 block order = true tlo output = true ======== 是否正常输出刀具长度(半径)补偿,true:输出;false:不输出。 tape split on tool change = false ---刀具改变时程序是否分割
full circle = true ========= true:整圆输出;false:不做整圆输出。 incremental centre = true go home output = false -------复位输出 use partid = true ======== 是否使用自定义partid,true:使用;false:不使用 use 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 rotation = false ========== 定义方位轴方式,true:为主轴头式;false:为工作台式。 spindle elevation rotation = false ========== 定义仰角轴方式,true:为主轴头式;false:为工作台式。 linearise multiaxis moves = true ========== 定义机床是否支持线性多轴联动,true:支持;false:不支持。 use hole top in cycles = false retract at angular limit = false unwind at tool change = false suppress xy arc = false-------禁用XY圆弧 suppress xz arc = false
suppress yz arc = false transform workplane origin = false previous multax rapid style = false knot vector type =
none units = input ======= 定义单位,input=ouput;metric;imperial coordinates = absolute ====== 定义坐标单位,absolute ;incremental azimuth axis units = degrees ==== 定义方位轴单位 azimuth axis direction = positive ====定义方位轴用法,相对还是绝对 elevation axis units = degrees ====定义仰角轴单位 elevation axis direction = positive ======== 定义仰角轴用法,相对还是绝对 spline type = none workplane angles = none option file units = none maximum feedrate = 9999.0000 minimum feedrate = 1.0000 rapid feedrate = 9999.0000 maximum tape length = 0.0000 plunge threshold angle = 0.0000 maximum segment = 0.0000 diameter = 1.0000 withdrawal amount = 50.0000 arc radius limit = 10000.0000 retraction threshhold angle = 360.0000 arc minimum radius = 0.0000 azimuth axis parameters = ( 0 0 0 0 0 0 ) ========= 定义方位轴参数,前三个零为分别定义每个轴的旋转中心;后三个零为定义方位轴的坐标,依次为X、Y、Z。 azimuth centre =( 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 999999 -99999 999999 999 1 ) ============ 定义旋转轴范围,前两个零为定义方位轴的旋转范围;中间两个零为定义仰角轴的旋转范围;第五个零定义公差;第六个零定义分辨率。 move safe angles = ( 0 0 0 0 ) ==================== 定义起始角度
通过上面的具体介绍,相信大家对PM的后处理的制作已经有了一定的认识了。下面我们把在修改后处理的过程中经常遇到的问题做一个具体的介绍。
1、程序头、程序尾的改写: 这个在以下的定义里面: define block tape start ******************** end define define block tape end ******************* end define 你可以根据自己的需要添加,如: define block tape start \不过注意这种引号方法优点是简单明了,但控制器只是把它当字符处理,而不能以模态存在。 2:是否需要程序行号
a) 如果系统不需要行号,那么重新定义批号键“N” define format ( N ) not permanent end define
b) 如果系统需要行号起始行号“10”,增量行号“5”,可如下定义批号键“N” block start = 10 block increment = 5
c) 如果机床能认同的最大行号有所限制,那么可以插入下面的选项 maximum block number = 5999(or whatever value required) d) 需要特殊的行号的地方多半定义一些特殊技能
N1000 BEGIN PGM SPECIAL MM N1000 TOOL CALL 0 Z S3000 N1000 M55 N1000 M3 N1000 CYCL DEF 19.0 BEARBEITUNGSEBENE N1000 CYCL DEF 19.1 A0 B0 C0 N10 L X0.0 Y0.0 Z150.0 B0 C0 FMAX N12 L X254.345 Y146.780 B90.0 C35.250 FMAX N14 L Z-55.70 FMAX N16 L ........................... 建议采用下面的格式
define word NF address letter = \word order = ( + NF )
define block tape start NF 0 ; \
define block tool change first NF 0 ; T2 0 ; \Z \; S 3000 NF 0 ; M1 55 NF 0 ; M1 3 NF 0 ; G4 190 ; \BEARBEITUNGSEBENE \FMAX 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 output = false 4:线形移动
通常线形输出的标准格式为G01 X... Y... Z... F...
G01(G1)是直线命令,XYZ是绝对或增量坐标,F是进给速度 5:快速移动
典型的快速移动输出格式可能象这样G00 G43 X... Y... Z... S... H.... M3 6:圆弧运动
通常线形输出的标准格式为
G02(G03) X... Y... I... J... F... xy Plane ( G17 ) G02(G03) X... Z... I... K... F... zx Plane ( G18 ) G02(G03) Y... Z... J... K... F... yz Plane ( G19 )
G2/G3代表顺圆/逆圆,X,Y,Z代表圆弧终点坐标,I,J,K代表圆心,设置如下:
define codes circle cw = G1 2 circle ccw = G1 3 xy plane = G3 17 xz plane = G3 18 zy plane = G3 19 end define
I,J,K表现为绝对坐标时设置为:incremental centre = false I,J,K表现为相对坐标时设置为:incremental centre = true
假如圆心坐标I,J,K符号不对(如果更改过圆心类型,一定要注意检查),可以这样改正 define format ( I J K ) scale factor = -1 or 1 end define
有的机床不能输出整圆,需要将整个圆弧分为四个象限输出,此时需要作如下设定 single quadrant = true
圆弧可以被强制输出为直线段,可作如下设定 integer 26 = 0 更常用 或者 circle output = ( 0 1 1 1 )
在ductpost1430中圆弧可以分平面强制输出为直线段,可作如下设定
suppress xy arc = true default = false suppress zx arc = true default = false suppress yz arc = true default = false 7:信息输出
信息输出设置是个二进位选项,默认值是有信息输出,如果不需要,直接添加 message output = false 8:行程极限
轴向移动行程限制由下面的命令行控制(缺省值):
linear axis limits = ( -99999. 99999. -99999. 99999. -99999. 99999. )
第一对数据控制X的正负极限行程,第二对控制Y,第三对控制Z。如果这些行程限制被超越,警告信息将被打印出来,后置过程中将出现“X太小(太大)超越了负极限行程(正极限行程)在某某区”,然后继续输出真实值。
轴向转动行程限制由下面的命令行控制(缺省值): rotary axis limits = ( -99999 999999 -99999 999999 999 1 )
第一对数据控制方位角的正负极限行程,第二对数据控制俯仰角的正负极限行程,最后一对数据反应了执行角度变化允许移动的次数和角度公差。以4轴加工为例: rotary axis limits = ( 0.0 0.0 -360.0 360.0 0.1 4 )
如果旋转极限被超越,刀具将缩回到预先远离工作曲面的高度,然后转轴复位,增量执行旋转角度,直到在限定次数内完成所需的角度旋转。如果是5轴的案例: rotary axis limits = ( -20.0 110.0 -3600.0 3600.0 0.1 4 )
在某些环境中行程限制被超越是可能的,但只是从方位角和俯仰角中选一个进行调配却是不可能的,警告信息提示后后置过程将被终止。 9:十进制输出
加入 integer 51 = n 到opt文件 integer 51 = ( n ) 小数输出格式
=1 小于1的数字被输出为 .xxxx (例如: .871 ) 大于1的数字被输出为 xxxx. (例如: 34. ) =2 小于1的数字被输出为 0.xxxx (例如: 0.871 ) 大于1的数字被输出为 xxxx. (例如: 34. ) =3 小于1的数字被输出为 .xxxx (例如: .871 ) 大于1的数字被输出为 xxxx.0 (例如: 34.0 ) =4 小于1的数字被输出为 0.xxxx (例如: 0.871 ) 大于1的数字被输出为 xxxx.0 (例如: 34.0 ) =5 与3相同
=6 小于1的数字被输出为 .xxxx (例如: .871 ) 大于1的数字被输出为 xxxx (例如: 34 ) 注意:此设置会影响所有十进制输出格式 10:钻孔
钻孔结束后回到安全平面还是参考平面(示例炜Fanuc系统) cycle retract = G6 98 安全平面 cycle retract = G6 99 参考点
对于有自动换刀系统的机床,在程序的头部,换刀之前最好加上G90 对于钻孔循环,没必要在每个钻孔循环指令例如G81之后加上G98/G99, cycle retract not used
对于这两个模态指令只需要在程序的头部加上即可。 去掉钻孔循环结束时后面的M9和M59,只须将下面的定义 define block cycle end if ( cycledwell = 0 ) N ; G4 80 ; M2 9 ; M3 59 end if
if ( cycledwell > 0 ) N ; G4 05 =C ; \end if
end define 改为
define block cycle end if ( cycledwell = 0 ) N ; G4 80 end if
if ( cycledwell > 0 ) N ; G4 05 =C ; \end if end define
有的机床当程序结束时执行G49或者H00时(前提是不再有Z座标),机床不运动(补偿刀长),而有的机床会运动补偿刀长到上一个Z座标处,这和机床参数的设定有关;因此建议,在程序的结尾不要执行G49或者H00
11:快速运动、直线运动、圆弧运动的代码: define block move circle N ; G1 ; G2 ; G3 ; X ; Y ; Z ; I ; J ; K ; F ; D end define define block move linear N ; G1 ; G2 ; G3 ; G5 ; G6 ; X ; Y ; Z ; ; T ; S ; M1 ; M2 end define define block move rapid N ; G1 ; G2 ; G3 ; G5 ; G6 ; X ; Y ; Z ; T ; S ; M1 ; M2 end define 12:圆弧的输出格式:
大致有三大类: a、I、J输出为圆心的绝对坐标值。 b、I、J输出为相对坐标值,具体值为:圆心坐标值-圆弧始点坐标(常用) c、I、J输出为相对坐标值,具体值为:圆弧始点坐标-圆心坐标值 所以这个就要看你机床格式来具体设置了,修改以下值为你所需: incremental centre = true (相对,反之false绝对) 相对有两种,所以: scale factor = 1 或 -1 另外有些机床不能输出360度的圆弧,这时需要将其分为几段输出: full circle = false
13:换刀的格式: define block tool change first N ; OP ; change tool ; T ToolNum N ; \define 里面可自己添加你的机床换刀时所需的代码,如打开刀具长度补偿。