找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 23594|回复: 5
打印 上一主题 下一主题

Mastercam后置处理文件及其设定方法详细说明

[复制链接]
跳转到指定楼层
1
发表于 2003-5-2 23:13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
(转载)
  MasterCAM后置处理文件及其设定方法详细说明

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的特征而设计的  
#  
#  
# 欢迎各位试用此后处理程序,提供意见反馈,  
# 地址: 福建漳州新华北路56号 力佳股份有限公司 吴桂凯  
# 电话: 0596-2931417 (19:00-23:30)  
# E-MAIL: wwggkk@21cn.com  
# wwggkk@sina.com   
# --------------------------------------------------------------------------  
# 修改日志:  
# --------------------------------------------------------------------------  
# Programmers Note:  
# CNC 05/01/00 - Initial post setup, jce  
# 2002-10-11 - 去掉自动换刀,吴桂凯  
# 2002-10-12 - 增加中文注释,吴桂凯  
# 2002-10-21 - 增加最大圆弧警告,吴桂凯  
# 2002-11-05 - 修改坐标系为G54,吴桂凯  
# --------------------------------------------------------------------------  
# 特征:  
# --------------------------------------------------------------------------  
#  
#  
# 下列 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 where 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 Select 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 "OCKET...." # " "  
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 "OINT....." # " "  
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 ""  
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 select 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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2006-8-27 00:42:42 | 只看该作者
我顶,这是我需要的
3
发表于 2006-8-27 11:56:11 | 只看该作者
,这是我需要的
4
发表于 2006-8-28 13:44:02 | 只看该作者
謝謝啦這是好東西阿
5
发表于 2011-10-8 16:49:04 | 只看该作者
写这么多不容易
6
发表于 2011-10-24 21:18:47 | 只看该作者
很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-2-23 10:30 , Processed in 0.039847 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表