分享好友 数控技术首页 数控技术分类 切换频道

Mastercam软件的后置处理文件及其设定方法

2018-11-15 00:001240
Mastercam系统配置的是适应单一类型控制系统的通用后置处理,该后置处理提供了一种功能数据库模型,用户根据数控机床和数控系统的具体情况,可以对其数据库进行修改和编译,定制出适应某一数控机床的专用后置处理程序。 
Mastercam系统后置处理文件的扩展名为PST,称为PST文件,它定义了切削加工参数、NC程序格式、辅助工艺指令,设置了接口功能参数等,其结构由八个部分组成: 
1. 注解 
程序每一列前有“#”符号表示该列为不影响程序执行的文字注解。如: 
# mi2-Absolute, or Incremental positioning 
0=absolute 
1=incremental 
表示mi2定义编程时数值给定方式,若mi=0为绝对值编程,mi=1为增量值编程。 
在这一部分里,定义了数控系统编程的所有准备功能G代码格式和辅助功能M代码格式。 
2. 程序纠错 
程序中可以插入文字提示来帮助纠错,并显示在屏幕上。如: 
# Error messages (错误信息) 
psuberror # Arc output not allowed 
"ERROR-WRONG AXIS USED IN AXIS SUBSTITUTION", e 
如果展开图形卷成旋转轴时,轴替换出错,则在程序中会出现上面引号中的错误提示。 
3. 定义变量的数据类型、使用格式和常量赋值 
如规定G代码和M代码是不带小数点的两位整数,多轴加工中心的旋转轴的地址代码是A、B和C,圆弧长度允许误差为0.002,系统允许误差为0.00005,进给速度最大值为10m/min等。 
4. 定义问题 
可以根据机床加工需要,插入一个问题给后置处理程序执行。 
如定义NC程序的目录,定义启动和退出后置处理程序时的C-Hook程序名。 
5. 字符串列表 
字符串起始字母为s,可以依照数值选取字符串,字符串可以由两个或更多的字符来组成。 
字符串sg17,表示指定XY加工平面,NC程序中出现的是G17,scc1表示刀具半径左补偿,NC程序中出现的是G41,字符串sccomp代表刀具半径补偿建立或取消。 
6. 自定义单节 
可以让使用者将一个或多个NC码作有组织的排列。 
自定义单可以是公式、变量、特殊字符串等: 
pwcs # G54+ coordinate setting at toolchange 
if mil >1, pwcs_g54 
表示用pwcs单节指代#G54+在换刀时坐标设定值,mil定义为工件坐标系(G54~G59) 
7. 预先定义的单节 
使用者可按照数控程序规定的格式将一个或多个NC代码作有组织的排列,编排成一条程序段。 
8. 系统问答 
后置处理软件提出了五组问题,供使用者回答,可按照注解文字、赋值变量、字符串等内容,根据使用的机床、数控系统进行回答。 

设计后置处理文件,一般是按照NC程序的结构模块来进行。根据NC程序的功能,后置处理文件分成六个模块如下: 

1. 文件头 
文件头部分设定程序名称和编号,此外,SINUMERIK 810D系统还必须指定NC程序存放路径,并按照以下格式输出: 
“%_N_(程序名及编号)_(路径)”。 
NC程序可存放在主程序、子程序和工作程序目录下,扩展名分别为:MPF、SPF、WPD,一般放在工作程序目录下。因此经修改的Pst文件格式为: 
Pheader # Start of file 
" %_N_", progname, "_WPD" (程序名、存放目录) 
2. 程序起始 
在程序开始,要完成安全设定、刀具交换、工件坐标系的设定、刀具长度补偿、主轴转速控制、冷却液控制等,并可显示编程者、编程日期、时间等注解。 
修改后的有刀具号Pst文件开头格式如下: 
# Start of file for non-zero tool number 
...... 
pspindle (主轴转速计算) 
pcom_movbtl (移动设备) 
ptoolcomment (刀具参数注解) 
...... 
pbld, n, *sgcode, *sgplane, "G40", "G80", *sgabsinc 
(快进、XY加工平面、取消刀补、取消固定循环、绝对方式编程) 
if mil <=one, pg92_rtrnz, pg92_rtrn, pg92_g92 (返回参考点) 
...... 
pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1 
(快进至某位置、坐标系编置、主轴转速等) 
pbld, n, pfzout, *tlngno, scoolant, [ if stagetool=one, *next_tool] 
(安全高度、刀长补偿、开冷却液) 
pcom_movea (加工过程) 
3. 刀具交换 
刀具交换执行前,须完成返回参考点、主轴停止动作,然后换刀,接着完成刀具长度补偿、安全设定、主轴转速控制。 
Pst文件中用自定义单节ptlchg指代换刀过程,编辑修改后的程序如下: 
Ptlchg # Tool change 
...... 
ptoolcomment (新刀参数注解) 
comment (插入注解) 
if stagetool <> two, pbld, n, *t, e (判断、选刀) 
n, "M6" (换刀) 
pindex (输出地址) 
pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1 
(快进至某位置、坐标系偏置、主轴转速等) 
pbld, n, pfzout, *tlngno, "M7", [if stagetool=one, *next_tool] 
(安全高度、刀长补偿号、开冷却液) 
pcom_movea (加工过程) 
4. 加工过程 
这一过程是快速移动、直线插补、圆弧插补、刀具半径补偿等基本加工动作。 
对于几乎所有系统,这些加工动作的程序指令基本相同。只是注意SINUMERIK 810D系统的刀具长度补偿值由字母D后加两位数字调用,不需要G43/G44指令;而半径补偿值则由G41/G42调用,不需要再接地址代码。用G40取消刀具长度和刀具半径补偿。 
5. 切削循环 
Mastercam软件提供了6种内定的孔加工固定循环方式:一般钻削(Drill/Cbore)、深孔啄钻(Peck Drill)、断屑钻(Chip Break)、右攻丝(Tap)、精镗孔(Bore#1)、粗镗孔(Bore #2),通过杂项选项(Misc #1/Misc #2)可设定左攻丝、背镗孔、盲孔镗孔、盲孔铰孔等循环,并采用G73~G89代码来表示。 
如对于深孔钻削固定循环,Mastercam采用的格式为:G83 X_Y_Z_R_Q_F;而SINUMERIK 810D系统用CYCLE83指代深孔钻削循环,其NC程序要求给出循环加工所有参数,输出格式为: 
CYCLE83(RTP,RFP,SDIS,DP,DPR,FDEP,FDPR,DAM,DTB,DTS,FRF,VARI) 
在pst文件中需按SINUMERIK 810D系统格式进行定义、修改和编写。 
6. 程序结尾 
程序结尾一般情况下是取消刀补、关冷却液、主轴停止、执行回参考点,程序停止等动作。下面是修改后的pst程序结尾: 
Ptoolend_t #End of tool path, toolchange 
...... 
pbld, n, sccomp, "M5", *scoolant, e (取消刀补、主轴停止、关冷却液) 
pbld, n, *sg74, "Z1=0. X1=0. Y1=0.", e (返回参考点) 
if mi2=one, pbld, n, *sg74, "X1=0.", "Y1=0.", protretinc, e 
else, protretabs (程序结束)

例子中文说明:[转贴] 

# POST 名称 : wgkG54 
# 类型 : MILL 
# 机床名称 : GENERIC FANUC 
# 控制器名称 : GENERIC FANUC 
# 描述 : GENERIC FANUC 3 AXIS MILL POST 
# Associated Post : NONE 
# 车/铣复合 : NO 
# 4-axis/Axis subs. : NO 
# 五轴 : NO 
# 子程序支持 : NO 
# 自动换刀 : NO 
# 工作坐标系 : G54 
# Executable : MP 8.00 



# 这个POST支持FANUC控制器普通三轴铣床的的G 代码输出, 
# 不支持自动换刀,有最大圆弧报警 
# 它来源于MP-EZ.PST 
# 是针对Mastercam Mill V8的特征而设计的 



# -------------------------------------------------------------------------- 
# 修改日志: 
# -------------------------------------------------------------------------- 
# Programmers Note: 
# CNC 05/01/00 - Initial post setup, jce 
# 2002-10-11 - 去掉自动换刀,xxx 
# 2002-10-12 - 增加中文注释,xxx 
# 2002-10-21 - 增加最大圆弧警告,xxx 
# 2002-11-05 - 修改坐标系为G54,xxx 
# -------------------------------------------------------------------------- 
# 特征: 
# -------------------------------------------------------------------------- 


# 下列 Misc.(杂项) 必须使用整数: 

# mi2 - 绝对或增量坐标 at top level 
# 0 = 绝对 
# 1 = 增量 

# mi3 - 选择G28或G30来执行参考点回归. 
# 0 = G28, 1 = G30 

# Canned text: 
# 在轮廓点里插入"cantext".以允许/禁止 下列Mastercam里许可的功能, 
# Entering cantext on a contour point from within Mastercam allows the 
# following functions to enable/disable. 

# Cantext 值: 
# 1 = Stop = 输出 "M00" 停止码 
# 2 = Ostop = 输出 "M01" 选择停止码 
# 3 = Bld on = 在 NC 单节打开 单节删除码() 
# 4 = bLd off = 在 NC 单节关闭 单节删除码() 


# 钻孔: 
# 在这个 POST 里支持所有的钻孔方法. 

# 附加注意事项: 
# 1) G54 calls are generated wher the work offset entry of 0 = G54, 
# 1 = G55, etc. 
# 2) 由NCI变量"met_tool"决定是否使用米制 

# 3) 以增量方式从换刀起始位置计算运动量. 
# 起始位置通常定义为所有换刀时刀具所处的最后位置 
# Incremental mode calculates motion from home position at toolchanges. 
# The home position is used to define the last position of the tool 
# for all toolchanges. 
# 4) 变量 'absinc' 现已被预先定义, 设定 mi2 (杂项整数)以定义 
# 绝对/增量程序输出. 

# -------------------------------------------------------------------------- 
# Debugging and Factory Set Program Switches 调试和加工设置程序切换 
# -------------------------------------------------------------------------- 
m_one : -1 #定义常数 
zero : 0 #定义常数 
one : 1 #定义常数 
two : 2 #定义常数 
three : 3 #定义常数 
four : 4 #定义常数 
five : 5 #定义常数 
c9k : 9999 #定义常数 

fastmode : 1 #Posting 速度最佳化 
bug1 : 2 #0=不显示, 1=普通列表框, 2=编辑器 
bug2 : -30 #Append postline labels, non-zero is column position? 
bug3 : 0 #Append whatline no. to each NC line? 
bug4 : 1 #Append NCI line no. to each NC line? 
whatno : yes #不执行 whatline branches(分枝)? (leave as yes) 

get_1004 : 1 #Find gcode 1004 with getnextop? 
rpd_typ_v7 : 0 #Use Version 7 style contour flags/processing? 
strtool_v7 : 2 #Use Version 7+ toolname? 
tlchng_aft : 2 #Delay call to toolchange until move line 
cant_tlchng : 1 #忽视 cantext 入口 on move with tlchng_aft 
newglobal : 1 #全局变量错误检测 
getnextop : 0 #建立下一个变量表 

# -------------------------------------------------------------------------- 
# 一般输出设置 
# -------------------------------------------------------------------------- 
sub_level : 1 #允许自动子程序支持 
breakarcs : no #在各象限分割圆弧 
arcoutput : 0 #0= IJK,1= R不带符号,2= R (超过180度时带负号) 
arctype : 2 #圆弧中心 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc. 
arccheck : 1 #检测小圆弧,转化为直线 
atol : .01 #arccheck=2时的角度公差 
ltol : .002 #arccheck=1时的长度公差 
vtol : .0001 #系统公差 
maxfeedpm : 500 #进给速度极限 (英寸/分钟) 
ltol_m : .05 #arccheck=1时的长度公差,米制 
vtol_m : .0025 #系统公差,米制 
maxfeedpm_m : 10000 #进给速度极限 毫米/分钟 
force_wcs : yes #每次换刀时强制输出WCS 
spaces : 1 #各指令之间插入的空格数 
omitseq : no #省略序号 
seqmax : 9999 #最大序号 
stagetool : 0 #0 = 无预先备刀, 1 = 预备刀具 
use_gear : 0 #输出齿轮交换代码,0=no,1=yes 
max_speed : 6000 #最大主轴转速 
min_speed : 1 #最小主轴转速 
nobrk : no #Omit breakup of x, y & z rapid moves 
progname : 1 #使用大写字母表示程序名 
max_arc : 50000 #机床允许的最大圆弧半径 

# -------------------------------------------------------------------------- 
# 旋转轴设定 
# -------------------------------------------------------------------------- 
vmc : 1 # 0 = 卧式 , 1 = 立式 

# -------------------------------------------------------------------------- 
# 允许钻孔固定循环功能 
# -------------------------------------------------------------------------- 
usecandrill : yes #使用普通钻孔固定循环 
usecanpeck : yes #使用啄式钻孔固定循环 
usecanchip : yes #使用断屑钻孔固定循环 
usecantap : yes #使用攻螺纹固定循环 
usecanbore1 : yes #使用镗孔固定循环1 
usecanbore2 : yes #使用镗孔固定循环2 
usecanmisc1 : yes #使用杂项固定循环1 
usecanmisc2 : yes #使用杂项固定循环2 

# -------------------------------------------------------------------------- 
# 通用自定义变量初始化(不能改变!) 
# -------------------------------------------------------------------------- 
xia : 0 #Formated absolute value for X incremental calculations 
yia : 0 #Formated absolute value for Y incremental calculations 
zia : 0 #Formated absolute value for Z incremental calculations 

bld : 0 #单节删除激活 
result : 0 #Return value for functions 
sav_spc : 0 #Save spaces 
sav_gcode : 0 #Gcode saved 
sav_absinc : 0 #Absolute/Incremental Saved Value 
sav_coolant : 0 #Coolant saved 
toolchng : 1 #On a toolchange flag 
spdir2 : 1 #Copy for safe spindle direction calculation 

#Drill variables 
drlgsel : -1 #Drill selec Initialize 
drillref : 0 #Select drill reference 
peckacel : 0 #Fractional percent to reduce peck2 when usecan.. : no 
drlgcode : 0 #Save Gcode in drill 
sav_dgcode : 0 #Drill gcode saved 

# -------------------------------------------------------------------------- 
# 格式列表 - n=nonmodal, l=leading, t=trailing, i=inc, d=delta 

# -------------------------------------------------------------------------- 

#定义 英制/米制 坐标格式列表 
fs2 1 0.7 0.6 #小数, absolute, 7 place, default for initialize ( 
fs2 2 0.4 l1.3 #小数, absolute, 4/3 place (x,y,z) 
fs2 3 0.4 l1.3d #小数, delta, 4/3 place (i,j,k) 

#Common format statements 
fs2 4 1 0 1 0 #整数, 无前缀 
fs2 5 2 0 2 0l #整数, 强制两位前缀 
fs2 6 3 0 3 0l #整数, 强制三位前缀 
fs2 7 4 0 4 0l #整数, 强制四位前缀 
fs2 9 0.1 0.1 #小数, absolute, 1 place 
fs2 10 0.2 0.2 #小数, absolute, 2 place 
fs2 11 0.3 0.3 #小数, absolute, 3 place 
fs2 12 0.4 0.4 #小数, absolute, 4 place 
fs2 13 0.5 0.5 #小数, absolute, 5 place 
fs2 14 0.3 0.3d #小数, delta, 3 place 
fs2 15 0.2 0.1 #小数, absolute, 2/1 place 
fs2 16 1 0 1 0n #整数, 强制输出 

# 输出加工类型字符串定义 
# -------------------------------------------------------------------------- 
# 字符串 - 字符串标签必须由 's' 开头,它们没有预先指派 
# -------------------------------------------------------------------------- 
#Select operation note 
sop00 "NULL" # String definition 
sop01 "CONTOUR" # " " 
sop02 "CONTOUR" # " " 
sop03 "DRILL CYCLE" # " " 
sop04 "POCKET...." # " " 
sop05 "RULED....." # " " 
sop06 "2D-SWEPT.." # " " 
sop07 "3D-SWEPT.." # " " 
sop08 "REVOLVED.." # " " 
sop09 "LOFT......" # " " 
sop10 "COONS....." # " " 
sop11 "TRIM ....." # " " 
sop12 "FLOWLINE.." # " " 
sop13 "SURFACE_FINISH" # " " 
sop14 "SURFACE_ROUGH" # " " 
sop15 "POINT....." # " " 
sop16 "DRILL-5AX." 
sop17 "CURVE-5AX." 
sop18 "SWARF-5AX." 
sop19 "flat MILL" 
sop20 "op20?....." 

sopnote # Target string 

fstrsel sop00 opcode sopnote 
   
# -------------------------------------------------------------------------- 
# NC 输出的字符串和字符串选择定义 
# -------------------------------------------------------------------------- 

#Address string definitions 位址串定义 
strm "M" 
strn "N" 
stro "O" 
strp "P" 
srad "R" 
srminus "R-" 
sblank 

#Cantext 字符串定义 (spaces must be padded here) 
sm00 "M00" 
sm01 "M01" 
strtextno 
strcantext 

# -------------------------------------------------------------------------- 
# 错误信息 
# -------------------------------------------------------------------------- 
saxiswarn " WARNING-THE RAD OF ARC IS TOO LARGE" 

# -------------------------------------------------------------------------- 
# 一般的 G 和 M 代码串选择表 General G and M Code String select tables 
# -------------------------------------------------------------------------- 
# 运动 G 代码选择 
sg00 G00 #快速定位 
sg01 G01 #直线进给 
sg02 G02 #圆弧插补 CW 
sg03 G03 #圆弧插补 CCW 
sg04 G04 #暂停 
sgcode #Target for string 

fstrsel sg00 gcode sgcode 
# -------------------------------------------------------------------------- 
# 选择工作平面 G 字串 
sg17 G17 #XY 平面代码 
sg19 G19 #YZ 平面代码 
sg18 G18 #XZ 平面代码 
sgplane #Target string 

fstrsel sg17 plane sgplane 
# -------------------------------------------------------------------------- 
#选择 英制/米制 字串 
sg20 G20 #英制代码 
sg21 G21 #米制代码 
smetric #Target string 

fstrsel sg20 met_tool smetric 
# -------------------------------------------------------------------------- 
#选择参考点回归字串 
sg28 G28 #第一参考点回归 
sg30 G30 #第二参考点回归 
sg28ref #Target string 

fstrsel sg28 mi3 sg28ref 
# -------------------------------------------------------------------------- 
# 切削补偿 G 字串选择 
scc0 G40 #切削补偿取消 
scc1 G41 #切削左补偿 
scc2 G42 #切削右补偿 
sccomp #Target for string 

fstrsel scc0 cc_pos sccomp 
# -------------------------------------------------------------------------- 
# 钻孔固定循环字符串选择 
sg81 G81 #钻孔 - 无暂停 
sg81d G82 #钻孔 - 有暂停 
sg83 G83 #啄式钻孔 - 无暂停 
sg83d G83 #啄式钻孔 - 有暂停 
sg73 G73 #断屑 - 无暂停 
sg73d G73 #断屑 - 有暂停 
sg84 G84 #攻螺纹 - 右手 
sg84d G74 #攻螺纹 - 左手 
sg85 G85 #镗孔 #1 - 无暂停 
sg85d G89 #镗孔 #1 - 有暂停 
sg86 G86 #镗孔 #2 - 无暂停 
sg86d G86 #镗孔 #2 - 有暂停 
sgm1 G76 #misc #1 - 无暂停 
sgm1d G76 #misc #1 - 有暂停 
sgm2 G81 #misc #2 - 无暂停 
sgm2d G82 #misc #2 - 有暂停 
sgdrill #Target for string 
                   
fstrsel sg81 drlgsel sgdrill 
# -------------------------------------------------------------------------- 
# 选择增量或绝对 G字符串 
sg90 G90 #绝对代码 
sg91 G91 #增量代码 
sgabsinc #Target string 

fstrsel sg90 absinc sgabsinc 
# -------------------------------------------------------------------------- 
#钻孔固定循环参考高度 
sg98 G98 #Z轴回到起始高度 
sg99 G99 #Z轴回到参考高度 
sgdrlref #Target for string 
                   
fstrsel sg98 drillref sgdrlref # Drill cycle G string select 
# -------------------------------------------------------------------------- 
# Generate string for spindle 
sm04 M04 #主轴反转 
sm05 M05 #主轴停止 
sm03 M03 #主轴正转 
spindle #Target for string 

fstrsel sm04 spdir2 spindle 
# -------------------------------------------------------------------------- 
# 冷却 M 字符串选择 
sm09 M09 #冷却液 Off 
sm08 M08 #冷却液 喷射 
sm08_1 M08 #冷却液 喷雾 
sm08_2 M08 #Coolant Tool 
scoolant #Target for string 

fstrsel sm09 coolant scoolant 
# -------------------------------------------------------------------------- 
# 定义齿轮选择代码 
flktbl 1 3 #Lookup table definition - table no. - no. entries 
        40 0 #底速齿轮档 
        41 400 #中速齿轮档 
        42 2250 #高速齿轮档 

# -------------------------------------------------------------------------- 
# 刀具交换 / NC输出变量格式 
# -------------------------------------------------------------------------- 
fmt T 4 t #刀具号 
fmt T 4 first_tool #第一把使用的刀具 
fmt T 4 next_tool #下一把使用的刀具 
fmt D 4 tloffno #直径偏移号 
fmt H 4 tlngno #长度偏移号 
fmt G 4 g_wcs #WCS G address 
fmt P 4 p_wcs #WCS P address 
fmt S 4 speed #主轴转速 
fmt M 4 gear #Gear range 
# -------------------------------------------------------------------------- 
fmt N 4 n #序号 
fmt X 2 xabs #X 坐标输出 
fmt Y 2 yabs #Y 坐标输出 
fmt Z 2 zabs #Z 坐标输出 
fmt X 3 xinc #X 坐标输出 
fmt Y 3 yinc #Y 坐标输出 
fmt Z 3 zinc #Z 坐标输出 
fmt I 3 i #x 轴方向上的圆弧中心描述 
fmt J 3 j #y 轴方向上的圆弧中心描述 
fmt K 3 k #z 轴方向上的圆弧中心描述 
fmt R 2 arcrad #圆弧半径 
fmt F 15 feed #进给率 
fmt P 11 dwell #暂停 
fmt M 5 cantext #Canned text 
# -------------------------------------------------------------------------- 
#Move comment (pound) to output colon with program numbers 
fmt O 7 progno #Program number 
#fmt ":" 7 progno #Program number 
# -------------------------------------------------------------------------- 
fmt Q 2 peck1 #First peck increment (positive) 
fmt Q 2 shftdrl #Fine bore tool shift 
fmt R 2 refht_a #Reference height 
fmt R 2 refht_i #Reference height 
# -------------------------------------------------------------------------- 
fmt "TOOL:" 4 tnote # 注释格式 
fmt " DIA. OFF:" 4 toffnote # 注释格式 
fmt " LEN.:" 4 tlngnote # 注释格式 
fmt " DIA.:" 1 tldia # 注释格式 

# -------------------------------------------------------------------------- 
# Tool Comment / Manual Entry Section 刀具注释/手工输入部分 
# -------------------------------------------------------------------------- 
ptoolcomment #Comment for tool 
      tnote = t 
      toffnote = tloffno 
      tlngnote = tlngno 
      "(", *tnote, *tldia, *sopnote, ")", e 
pstrtool #Comment for tool 
      if strtool <> sblank, 
        [ 
        strtool = ucase(strtool) 
        *strtool, " " 
        ] 

pcomment #Comment from manual entry (must call pcomment2 if booleans) 
      pcomment2 

pcomment2 #Comment from manual entry 
      scomm = ucase (scomm) 
      if gcode = 1007, "(", scomm, ")" 
      else, "(", scomm, ")", e 

# -------------------------------------------------------------------------- 
# 文件起始和刀具交换设置 
# -------------------------------------------------------------------------- 
psof0 #Start of file for tool zero 
      psof 

psof #Start of file for non-zero tool number 
      toolchng = one 
      if ntools = one, 
        [ 
        #skip single tool outputs, stagetool must be on 
        stagetool = m_one 
        !next_tool 
        ] 
      "%", e 
      *progno, e 
      "(PROGRAM NAME - ", progname, ")", e 
      "(DATE=Day-Month-Year - ", date, " TIME=Hr:Min - ", time, ")", e 
      ptoolcomment 
      pbld, n, *sgcode, *sgplane, "G40", "G49", "G80", "G54", *sgabsinc, *smetric, e 
      sav_absinc = absinc 

       pcom_moveb 

      absinc = zero 
      pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, *zr, 
        *speed, *spindle, pgear, strcantext, e 
      pe_inc_calc 
      ps_inc_calc 
      absinc = sav_absinc 
      pbld, n, sgabsinc, e 

               

pretract #刀具路径末尾,换刀 
      sav_absinc = absinc 
      absinc = one 
      sav_coolant = coolant 
      coolant = zero 
      #cc_pos is reset in the toolchange here 
      cc_pos = zero 
      gcode = zero 
      pbld, n, sccomp, *sm05, e 

      absinc = sav_absinc 
      coolant = sav_coolant 
         
peof0 #End of file for tool zero 
      peof 

peof #End of file for non-zero tool 
      pretract 
      comment 
      #Remove pound character to output first tool with staged tools 
# #if stagetool = one, pbld, n, *first_tool, e 
      n, "M30", e 
      "%", e 

pwcs #G54+ coordinate setting at toolchange 
       
        if workofs <> prv_workofs | (force_wcs & toolchng), 
          [ 
          if workofs < 6, 
            [ 
            g_wcs = workofs + 54 
            *g_wcs 
            ] 
          else, 
            [ 
            p_wcs = workofs - five 
            "G54.1", *p_wcs 
            ] 
          ] 
        !workofs 

         
pgear #Find spindle gear from lookup table 
      if use_gear = one, 
        [ 
        gear = frange (one, speed) 
        *gear 
        ] 

#换刀设置 
pspindle #主轴转速计算 for RPM 
      speed = abs(ss) 
      if maxss = zero | maxss > max_speed, maxss = max_speed 
      if speed > max_speed, speed = maxss 
      if speed < min_speed, speed = min_speed 
      spdir2 = fsg3(spdir) 

pq #Setup post based on switch settings 
      if stagetool = one, bldnxtool = one 
      if arctype = one | arctype = four, 
        [ 
        result = newfs(two, i) 
        result = newfs(two, j) 
        result = newfs(two, k) 
        ] 
      else, 
        [ 
        result = newfs(three, i) 
        result = newfs(three, j) 
        result = newfs(three, k) 
        ] 

pheader #文件开始前调用 
      if met_tool = one, #米制常量和变量调整 
        [ 
        ltol = ltol_m 
        vtol = vtol_m 
        maxfeedpm = maxfeedpm_m 
        ] 

ptoolend #刀具路径末尾,读取新刀具资料之前 
      !speed, !spdir2 

ptlchg1002 #Call at actual toolchange, end last path here 
      pspindle 
      if gcode = 1000, 
        [ 
        #Null toolchange 
        ] 
      else, 
        [ 
        #Toolchange and Start of file 
        if gcode = 1002, 
          [ 
          #Actual toolchange 
          pretract 
          ] 
        if stagetool = one, prv_next_tool = m_one 
        prv_xia = vequ(xh) 
        prv_feed = c9k 
        ] 

# -------------------------------------------------------------------------- 
# Motion NC output 运动 NC 输出 
# -------------------------------------------------------------------------- 
#绝对方式输出的变量为 xabs, yabs, zabs. 
#增量方式输出的变量为 xinc, yinc, zinc. 
# -------------------------------------------------------------------------- 
prapidout #输出直线运动的NC指令 - 快速 
      pcan1, pbld, n, sgplane, `sgcode, sgabsinc, pccdia, 
        pxout, pyout, pzout, strcantext, scoolant, e 

plinout #输出直线运动的NC指令 - 进给 
      pcan1, pbld, n, sgplane, `sgcode, sgabsinc, pccdia, 
        pxout, pyout, pzout, feed, strcantext, scoolant, e 

pcirout #输出圆弧插补的NC指令 
      if arcrad >= max_arc, result = mprint(saxiswarn) 
      pcan1, pbld, n, sgplane, sgcode, sgabsinc, pccdia, 
        pxout, pyout, pzout, parc, feed, strcantext, scoolant, e 

pcom_moveb #Common motion preparation routines, before 
      pxyzcout 
      ps_inc_calc 
       
pncoutput #Movement output 
      pcom_moveb 
      comment 
      pcan 
      if gcode = zero, prapidout 
      if gcode = one, plinout 
      if gcode > one & gcode < four, pcirout 
      pcom_movea 
             
pcom_movea #Common motion preparation routines, after 
      pcan2 
      pe_inc_calc 

pdwl_spd #Call from NCI gcode 4 
      pspindle 
      comment 
      if prv_spdir2 <> spdir2, pbld, n, *sm05, e 
      if prv_speed <> speed | prv_spdir2 <> spdir2, 
        pbld, n, *speed, *spindle, pgear, e 
      pcan 
      if fmtrnd(dwell), pcan1, pbld, n, *sgcode, *dwell, strcantext, e 
      else, pcan1, pbld, n, strcantext, e 
      pcan2 

prapid #输出直线运动的NC指令 - 快速 
      pncoutput 
               
pzrapid #输出直线运动的NC指令 - 快速 Z only 
      pncoutput 
               
plin #输出直线运动的NC指令 - 进给 
      pncoutput 

pz #输出直线运动的NC指令 - 进给 Z only 
      pncoutput 

pmx #输出NCI向量的NC指令 
      pncoutput 
         
pcir #输出圆弧插补的NC指令 
      pncoutput 

           
# -------------------------------------------------------------------------- 
# Motion output components 运动输出组成 
# -------------------------------------------------------------------------- 
pbld #Canned text - 单节删除 
      if bld, '/' 
               
pfbld #强制 - 单节删除 
      "/" 

pccdia #切削补偿 
      #Force Dxx# 
      if prv_cc_pos <> cc_pos & cc_pos, prv_tloffno = c9k 
      sccomp 
      if cc_pos, tloffno 
         
pfxout #Force X axis output 
      if absinc = zero, *xabs, !xinc 
      else, *xinc, !xabs 
         
pxout #X output 
      if absinc = zero, xabs, !xinc 
      else, xinc, !xabs 

pfyout #Force Y axis output 
      if absinc = zero, *yabs, !yinc 
      else, *yinc, !yabs 
               
pyout #Y output 
      if absinc = zero, yabs, !yinc 
      else, yinc, !yabs 

pfzout #Force Z axis output 
      if absinc = zero, *zabs, !zinc 
      else, *zinc, !zabs 
               
pzout #Z output 
      if absinc = zero, zabs, !zinc 
      else, zinc, !zabs 

parc #选择圆弧输出格式 
      if arcoutput = zero, 
        [ 
        #圆弧输出为 IJK 
        i, j, k 
        ] 
      else, 
        [ 
        #圆弧输出为 R 
        if abs(sweep)<=180 | arcoutput=one, result = nwadrs(srad, arcrad) 
        else, result = nwadrs(srminus, arcrad) 
        *arcrad 
        ] 

         
# -------------------------------------------------------------------------- 
# Drilling 钻孔 
# -------------------------------------------------------------------------- 
pdrlcommonb #Canned Drill Cycle common call, before 
      if gcode = 81, 
   [ 
        result = newfs (two, zinc) 
        if drillcyc = three, drlgsel = fsg1(-ss) + drillcyc * two 
        else, drlgsel = fsg2(dwell) + drillcyc * two 
        if initht <> refht, drillref = zero 
        else, drillref = one 
        prv_refht_a = c9k 
        prv_refht_i = c9k 
   ] 
      z = depth 
      prv_zia = initht 
      feed = fr_pos 
      prv_dwell = zero 
      @dwell 
      pcom_moveb 
      comment 
      pcan 

prdrlout #R drill position 
      refht_a = refht 
      refht_i = refht - initht 
      if absinc = zero, refht_a, !refht_i 
      else, refht_i, !refht_a 

pdrill #钻孔固定循环 
      pdrlcommonb 
      pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, 
        prdrlout, dwell, *feed, strcantext, e 
      pcom_movea 

ppeck #啄式钻孔固定循环 
      pdrlcommonb 
      pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, 
        prdrlout, *peck1, *feed, strcantext, e 
      pcom_movea 

pchpbrk #断屑固定循环 
      pdrlcommonb 
      pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, 
        prdrlout, *peck1, *feed, strcantext, e 
      pcom_movea 

ptap #攻螺纹固定循环 
      pdrlcommonb 
      pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, 
        prdrlout, *feed, strcantext, e 
      pcom_movea 

pbore1 #镗孔固定循环 #1 
      pdrlcommonb 
      pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, 
        prdrlout, dwell, *feed, strcantext, e 
      pcom_movea 

pbore2 #镗孔固定循环 #2 
      pdrlcommonb 
      pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, 
        prdrlout, *feed, strcantext, e 
      pcom_movea 

pmisc1 #Canned Misc #1 Cycle 
      pdrlcommonb 
      pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, 
        prdrlout, shftdrl, dwell, *feed, strcantext, e 
      pcom_movea 

pmisc2 #Canned Misc #2 Cycle (User Option) 
      pdrill 

pdrill_2 #Canned Drill Cycle, additional points 
      pdrlcommonb 
      pcan1, pbld, n, pxout, pyout, pzout, prdrlout, dwell, 
        feed, strcantext, e 
      pcom_movea 

ppeck_2 #Canned Peck Drill Cycle 
      pdrill_2 

pchpbrk_2 #Canned Chip Break Cycle 
      pdrill_2 

ptap_2 #Canned Tap Cycle 
      pdrill_2 

pbore1_2 #Canned Bore #1 Cycle 
      pdrill_2 
        
pbore2_2 #Canned Bore #2 Cycle 
      pdrill_2 

pmisc1_2 #Canned Misc #1 Cycle 
      pdrill_2 

pmisc2_2 #Canned Misc #2 Cycle 
      pdrill_2 

pdrlcst #自定义钻孔循环 8 - 19 (user option) 
      #Use this postblock to customize drilling cycles 8 - 19 
      pdrlcommonb 
      "CUSTOMIZABLE DRILL CYCLE ", pfxout, pfyout, pfzout, e 
      pcom_movea 

pdrlcst_2 #自定义钻孔循环 8 - 19, additional points (user option) 
      #Use this postblock to customize drilling cycles 8 - 19 
      pdrlcommonb 
      "CUSTOMIZABLE DRILL CYCLE ", pfxout, pfyout, pfzout, e 
      pcom_movea 

pcanceldc #Cancel canned drill cycle 
      result = newfs (three, zinc) 
      z = initht 
      prv_zia = initht 
      pxyzcout 
      !zabs, !zinc 
      prv_gcode = zero 
      pbld, n, "G80", e 

# -------------------------------------------------------------------------- 
# Canned Text 
# -------------------------------------------------------------------------- 
pcan #Canned text - before output call 
      strcantext = sblank 
      if cant_no > zero, 
        [ 
        if cant_pos1 = zero, pcant_1 
        if cant_pos2 = zero, pcant_2 
        if cant_pos3 = zero, pcant_3 
        if cant_pos4 = zero, pcant_4 
        if cant_pos5 = zero, pcant_5 
        if cant_pos6 = zero, pcant_6 
        if cant_pos7 = zero, pcant_7 
        if cant_pos8 = zero, pcant_8 
        if cant_pos9 = zero, pcant_9 
        if cant_pos10 = zero, pcant_10 
        pbld, n, strcantext, e 
        strcantext = sblank 
        ] 

pcan1 #Canned text - with move 
      strcantext = sblank 
      if cant_no > zero, 
        [ 
        if cant_pos1 = one, pcant_1 
        if cant_pos2 = one, pcant_2 
        if cant_pos3 = one, pcant_3 
        if cant_pos4 = one, pcant_4 
        if cant_pos5 = one, pcant_5 
        if cant_pos6 = one, pcant_6 
        if cant_pos7 = one, pcant_7 
        if cant_pos8 = one, pcant_8 
        if cant_pos9 = one, pcant_9 
        if cant_pos10 = one, pcant_10 
        ] 
      if cstop, strcantext = strcantext + sm00 
      if cgstop, strcantext = strcantext + sm01 
      #Output of strcantext occurs at the end of the output line 

pcan2 #Canned text - after output call 
      strcantext = sblank 
      if cant_no > zero, 
        [ 
        if cant_pos1 = two, pcant_1 
        if cant_pos2 = two, pcant_2 
        if cant_pos3 = two, pcant_3 
        if cant_pos4 = two, pcant_4 
        if cant_pos5 = two, pcant_5 
        if cant_pos6 = two, pcant_6 
        if cant_pos7 = two, pcant_7 
        if cant_pos8 = two, pcant_8 
        if cant_pos9 = two, pcant_9 
        if cant_pos10 = two, pcant_10 
        pbld, n, strcantext, e 
        strcantext = sblank 
        ] 

pcant_1 #Canned text - output call 
      cantext = cant_val1 
      pcant_out 

pcant_2 #Canned text - output call 
      cantext = cant_val2 
      pcant_out 

pcant_3 #Canned text - output call 
      cantext = cant_val3 
      pcant_out 

pcant_4 #Canned text - output call 
      cantext = cant_val4 
      pcant_out 

pcant_5 #Canned text - output call 
      cantext = cant_val5 
      pcant_out 

pcant_6 #Canned text - output call 
      cantext = cant_val6 
      pcant_out 

pcant_7 #Canned text - output call 
      cantext = cant_val7 
      pcant_out 

pcant_8 #Canned text - output call 
      cantext = cant_val8 
      pcant_out 

pcant_9 #Canned text - output call 
      cantext = cant_val9 
      pcant_out 

pcant_10 #Canned text - output call 
      cantext = cant_val10 
      pcant_out 

pcant_out #Canned text - build the string for output 
      #Assign string selec type outputs 
      if cantext = three, bld = one 
      if cantext = four, bld = zero 
      #Build the cantext string 
      if cantext = one, strcantext = strcantext + sm00 
      if cantext = two, strcantext = strcantext + sm01 
      if cantext > four, 
        [ 
        strtextno = no2str(cantext) 
        strcantext = strcantext + strm + strtextno 
        ] 

# -------------------------------------------------------------------------- 
# 坐标计算,通常不需要修改 
# -------------------------------------------------------------------------- 
pxyzcout #Map coordinates 
        xabs = vequ (x) 
        feed = fr_pos 
        if feed > maxfeedpm, feed = maxfeedpm 

#Incremental calculations 
ps_inc_calc #Incremental calculations, start 
      xia = fmtrnd(xabs) 
      yia = fmtrnd(yabs) 
      zia = fmtrnd(zabs) 
      xinc = vsub (xia, prv_xia) 
       
pe_inc_calc #Incremental calculations, end 
      !xia, !yia, !zia 
      !x, !y, !z 
     
# -------------------------------------------------------------------------- 
# Numbered questions for Mastercam Version 8 
# -------------------------------------------------------------------------- 
38. 快速进给率? 300.0 
#76. 配置文件名? 
80. 接收和发送的通信端口号 (1 or 2) ? 2 
81. 传输速率 (110,150,300,600,1200,2400,4800,9600,14400,19200,38400)? 9600 
82. 奇偶校验 (E/O/N)? E 
83. 数据位 (7 or 8)? 7 
84. 停止位 (1 or 2)? 2 
85. Strip line feeds? N 
86. 每行末延迟(秒)? 0 
87. Ascii, Eia, or Binary (A/E/? A 
88. Echo keyboard to screen in terminal emulation? n 
89. Strip carriage returns? N 
90. NC和材料文件所处的磁盘和目录? 
91. 执行的后置处理器名? MP 
92. 反向处理器名(nic->nc)? RP 
93. 反向处理 PST 文件名? RPFAN 
100. 序号之小数点前的位数? 3 
101. 序号之小数点后的位数? 0 
103. 最大的主轴转数? 6000 
107. 换刀平均时间(seconds)? 2.0 
#110. 默认的刀具库? TOOLS.TL8 
158. 挖槽精加工时使用磨损补偿? n 
159. Compensate the first and last point in cutter comp. in control simulation? y 
160. Display first and last entity in toolpath when simulating cutter compensation in control? y 
161. 打开机械原点按钮? y 
162. 打开参考点按钮? y 
163. 打开杂项变数按钮? y 
164. 打开旋转轴按钮? n 
165. 打开刀具平面按钮? y 
166. 打开构图平面按钮? y 
167. 打开刀具显示按钮? y 
168. Check tplane during automatic work origin creation? y 
       #在自动工作原点建立时检查刀具平面 

# -------------------------------------------------------------------------- 
# 定义杂项实数值 
# -------------------------------------------------------------------------- 
201. Default miscellaneous real variable 1 (mr1)? 0.0 
202. Default miscellaneous real variable 2 (mr2)? 0.0 
203. Default miscellaneous real variable 3 (mr3)? 0.0 
204. Default miscellaneous real variable 4 (mr4)? 0.0 
205. Default miscellaneous real variable 5 (mr5)? 0.0 
206. Default miscellaneous real variable 6 (mr6)? 0.0 
207. Default miscellaneous real variable 7 (mr7)? 0.0 
208. Default miscellaneous real variable 8 (mr8)? 0.0 
209. Default miscellaneous real variable 9 (mr9)? 0.0 
210. Default miscellaneous real variable 10 (mr10)? 0.0 

# -------------------------------------------------------------------------- 
# 定义杂项整数值 
# -------------------------------------------------------------------------- 
301. 工作坐标系 [0-1=G92, 2=G54's] (mi1)? 2 
302. 绝对或增量 [0=ABS, 1=INC] (mi2)? 0 
303. 参考点回归 [0=G28, 1=G30] (mi3)? 0 
304. 杂项整数变量 4 (mi4)? 0 
305. 杂项整数变量 5 (mi5)? 0 
306. 杂项整数变量 6 (mi6)? 0 
307. 杂项整数变量 7 (mi7)? 0 
308. 杂项整数变量 8 (mi8)? 0 
309. 杂项整数变量 9 (mi9)? 0 
310. 杂项整数变量 10 (mi10)? 0 

# -------------------------------------------------------------------------- 
# 配置文件关联参数 (缺省为 "y") 
# -------------------------------------------------------------------------- 
#400. 关联的配置文件名? 
401. 读取系统颜色部分? y 
402. 读取配置部分地区? y 
403. 读取公差部分? y 
404. 读取资料路径部分? y 
405. 读取通信部分? y 
406. 读取绘图设置部分? y 
407. 读取杂项部分? y 
408. 读取 NC-设置部分? y 
409. 读取 DIALOG scriptS 部分? y 
410. 读取DESIGN设置部分? y 
411. 读取打印设置部分? y 
412. 读取 ALT-KEY 分配部分? y 
413. 读取CAD部分? y 
414. 读取 载入/离开 部分? y 
415. 读取 荧屏 部分? y 
416. 读取文件名部分? y 

1500. Chook to execute from 'Misc. values' button? y 
1501. 插入参数信息到 ascii NCI? n 
1502. 写入操作信息到二进制文件 (.ops)? n

举报
收藏 0
打赏 0
轻松提高数控机床精度
随着我国经济的飞速发展,数控机床作为新一代工作母机,在机械制造中已得到广泛的应用,精密加工技术的迅速发展和零件加工精度的

0评论2025-01-04313

加工中心刀具长度补偿怎么用?
在数控加工中,刀具长度补偿是一种重要的措施,用于消除机床变形、热变形等因素引起的误差,保证加工精度,从而提高培训效率,减

0评论2024-12-18400

加工中心主轴定位角度怎么调?
  在数控加工领域,加工中心主轴的定位角度是影响加工精度和效率的重要因素之一。正确调整主轴的定位角度可以提高加工质量,减

0评论2024-12-11496

简述机器人加装电主轴就选Kasite 4060ER-S的理由
  近年来,随着科技的不断发展,机器人作业已经渗透到各个领域,尤其在工业制造领域,更加随处可见。高精密切割、铣削、雕刻、

0评论2024-05-20707

机器人主轴怎么选?Kasite高速电主轴满足你的需求
  机器人发展到现在越来越受到人们的欢迎和重视,现在很多传统行业都在生产作业中引入了工业机器人,随着机器人的改进和优化,

0评论2023-10-231208

机械臂加装2.2KW大力矩电主轴,就选MSIY-80电主轴
机械臂想加装大力矩电主轴,用于铸钢等硬质材料去毛刺,铣削等加工,可以考虑MSIY-80电主轴,外径80mm,重量4.8公斤,可搭配轴向或径向浮动刀柄配套使用。

0评论2023-08-261203

每天早上打开数控机床时有没有必要热机?
工厂使用精密数控机床(加工中心、电火花、慢走丝等机床)进行高精密加工,你是否有这样的经验:每天早上开机进行加工,首件的加

0评论2023-08-151093