版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第页MasterCAM9后处理的修改2019年10月25日星期四11:42
MasterCAM9后处理的修改
MasterCAM系统缺省的后处理文件为MPFAN.PST,适用于FANUC(发那科)数控代码的控制器。其它类型的控制器需选择对应的后处理文件。
由于实际使用需要,用缺省的后处理文件时,输出的NC文件不能直接用于加工。原因是:
⑴进行模具加工时,需从G54~G59的工件坐标系指令中指定一个,最常用的是G54。部分控制器使用G92指令确定工件坐标系。对刀时需定义工件坐标原点,原点的机械坐标值保存在CNC控制器的G54~G59指令参数中。CNC控制器执行G54~G59指令时,调出相应的参数用于工件加工。采用系统缺省的后处理文件时,相关参数设置正确的情况下可输出G55~G59指令,但无法实现G54指令的自动输出。
⑵FANUC.PST后处理文件针对的是4轴加工中心,而目前使用量最大的是3轴加工中心,多出了第4轴数据“A0.”。
⑶不带刀库的数控铣使用时要去掉刀具号、换刀指令、回参考点动作。
⑷部分控制器不接受NC文件中的注释行。
⑸删除行号使NC文件进一步缩小。
⑹调整下刀点坐标值位置,以便于在断刀时对NC文件进行修改。
⑺普通及啄式钻孔的循环指令在缺省后处理文件中不能输出。使用循环指令时可大幅提高计算速度,缩小NC文件长度。
如果要实现以上全部要求,需对NC文件进行大量重复修改,易于出现差错,效率低下,因此必须对PST(后处理)文件进行修改。修改方法如下:
1、增加G54指令(方法一):
采用其他后处理文件(如MP_EZ.PST)可正常输出G54指令。由于FANUC.PST后处理文件广泛采用,这里仍以此文件为例进行所有修改。其他后处理文件内容有所不同,修改时根据实际情况调整。
用MC9自带的编辑软件(路径:C:Mcam9CommonEditorsPfe
PFE32.EXE)打开FANUC.PST文件(路径:C:Mcam9MillPostsMPFAN.PST)
选择【File】>【Edit】>【PST】命令,系统弹出读文件窗口,选择Mpfan.PST文件,系统弹出如下图所示编辑器。
单击按钮,系统弹出查找对话框,输入“G49”,如下图所示:
单击按钮,查找结果所在行为:
pbld,n,*sgcode,*sgplane,"G40","G49","G80",*sgabsinc,e
插入G54指令到当前行,将其修改为:
pbld,n,*sgcode,*sgplane,"G40","G49","G80",*sgabsinc,"G54",e
输出的NC文件修改前对应位置指令为:
N102G0G17G40G49G80G90
修改后变为:
N102G0G17G40G49G80G90G54
查找当前行的上一行:
pbld,n,*smetric,e
将其整行删除,或加上“#”成为注释行:
#pbld,n,*smetric,e
修改后G21指令不再出现,某些控制器可不用此指令。注意修改时保持格式一致。G21指令为选择公制单位输入,对应的英制单位输入指令为G20。
2、增加G54指令(方法二):
单击按钮,系统弹出查找对话框,输入“force_wcs”,单击按钮,查找结果所在行为:
force_wcs:no#ForceWCSoutputateverytoolchange?
将no改为yes,修改结果为:
force_wcs:yes#ForceWCSoutputateverytoolchange?
输出的NC文件修改前对应位置指令为:
N106G0G90X16.Y-14.5A0.S2200M3
修改后变为:
N106G0G90G54X16.Y-14.5A0.S2200M3
前一方法为强制输出固定指令代码,如需使用G55~G59指令时,有所不便。多刀路同时输出时,只在整个程序中出现一次G54指令。后一方法同其他后处理文件产生G54指令的原理相同,多刀路同时输出时,每次换刀都会出现G54指令,也可根据参数自动转换成G55~G59指令。
输出三轴加工中心程序的FANUC后处理文件为MP_EZ.PST,输出4轴加工中心程序的三菱控制器后处理文件为MP520AM.PST。
3、删除第四轴数据“A0.”,以适应三轴加工中心:
单击按钮,系统弹出查找对话框,输入“RotaryAxis”,单击按钮,查找结果所在行为:
164.EnableRotaryAxisbutton?y
将其修改为:
164.EnableRotaryAxisbutton?n
修改后第四轴数据不再出现。
4、删除刀具号、换刀指令、回参考点指令,适应无刀库的数控铣机床:
单击按钮,系统弹出查找对话框,输入“M6”,单击按钮,查找结果所在行为:
ifstagetool>=zero,pbld,n,*t,"M6",e
将其修改为:
ifstagetool>=zero,e#pbld,n,*t,"M6",
另一个换刀的位置所在行为:
pbld,n,*t,"M6",e
将其删除或改为注释行:
#pbld,n,*t,"M6",e
修改后换刀指令行不再出现,通常修改第一个出现“M6”指令的位置即可。
单击按钮,系统弹出查找对话框,输入“*sg28ref”,单击按钮,查找结果所在行为:
pbld,n,sgabsinc,sgcode,*sg28ref,"Z0.",scoolant,e
pbld,n,*sg28ref,"X0.","Y0.",protretinc,e
将其修改为:
pbld,n,scoolant,e
#pbld,n,*sg28ref,"X0.","Y0.",protretinc,e
输出的NC文件修改前对应位置指令为:
N116G91G28Z0.M9
修改后变为:
N116M9
PST文件中另有两个类似位置,如使用G92指令确定工件坐标,可对其适当修改。加工结束后,机床各轴不回参考点,便于手动换刀时节省时间。
5、删除NC文件的程序名、注释行:
单击按钮,系统弹出查找对话框,输入“%”,单击按钮,查找结果所在行为:
"%",e
*progno,e
"(PROGRAMNAME-",progname,")",e
"(DATE=DD-MM-YY-",date,"TIME=HH:MM-",time,")",e
将其删除或改为注释行:
"%",e
#*progno,e
#"(PROGRAMNAME-",progname,")",e
#"(DATE=DD-MM-YY-",date,"TIME=HH:MM-",time,")",
输出的NC文件修改前对应位置指令为:
O0010
(PROGRAMNAME-A2)
(DATE=DD-MM-YY-25-12-04TIME=HH:MM-10:45)
修改后以上指令行不再出现。
单击按钮,系统弹出查找对话框,输入“pstrtool”,单击按钮,查找结果所在行为:
"(",pstrtool,*tnote,*toffnote,*tlngnote,*tldia,")",e
将其删除或改为注释行:
#"(",pstrtool,*tnote,*toffnote,*tlngnote,*tldia,")",e
输出的NC文件修改前对应位置指令为:
(D16R8.0TOOL-2DIA.OFF.-0LEN.-0DIA.-16.)
修改后以上指令行不再出现。此注释行指明当前刀路所使用的刀具参数,可用于加工前核对加工单,建议保留。法兰克及三菱控制器可以接受注释内容。
6、取消行号:
单击按钮,系统弹出查找对话框,输入“omitseq”,单击按钮,查找结果所在行为:
omitseq:no#Omitsequenceno.
将其修改为:
omitseq:yes#Omitsequenceno.
修改后行号不再出现。
7、调整下刀点坐标值位置:
单击按钮,系统弹出查找对话框,输入“g43”,单击按钮,查找结果所在行为:
pcan1,pbld,n,*sgcode,*sgabsinc,pwcs,pfxout,pfyout,
pfcout,*speed,*spindle,pgear,strcantext,e
pbld,n,"G43",*tlngno,pfzout,scoolant,next_tool,e
将其修改为:
pcan1,pbld,n,*sgcode,*sgabsinc,pwcs,pfxout,pfyout,pfcout,e
pbld,n,*sgcode,pfzout,e
pbld,n,*speed,*spindle,pgear,strcantext,e
pbld,n,"G43",*tlngno,scoolant,next_tool,e
输出的NC文件修改前对应位置指令为:
G0G90G54X16.Y-14.5S2200M3
G43H0Z20.M8
修改后变为:
G0G90G54X16.Y-14.5
G0Z20.
S2200M3
G43H0M8
新的指令顺序使下刀点(安全高度)x、y、z坐标值同其他指令分开,易于在断刀时修改。G43指令在PST文件中有两个位置,如仅使用G54指令时,修改第一个出现“G43”的位置即可。
8、输出普通及啄式钻孔循环指令:
单击按钮,系统弹出查找对话框,输入“usecandrill”,单击按钮,查找结果相关行为:
usecandrill:no#Usecannedcyclefordrill
usecanpeck:no#UsecannedcycleforPeck
将其修改为:
usecandrill:yes#Usecannedcyclefordrill
usecanpeck:yes#UsecannedcycleforPeckMastercam系统配置的是适应单一类型控制系统的通用后置处理,该后置处理提供了一种功能数据库模型,用户根据数控机床和数控系统的具体情况,可以对其数据库进行修改和编译,定制出适应某一数控机床的专用后置处理程序。
Mastercam系统后置处理文件的扩展名为PST,称为PST文件,它定义了切削加工参数、NC程序格式、辅助工艺指令,设置了接口功能参数等,其结构由八个部分组成:
1.注解
程序每一列前有“#”符号表示该列为不影响程序执行的文字注解。如:
#mi2-Absolute,orIncrementalpositioning
0=absolute
1=incremental
表示mi2定义编程时数值给定方式,若mi=0为绝对值编程,mi=1为增量值编程。
在这一部分里,定义了数控系统编程的所有准备功能G代码格式和辅助功能M代码格式。
2.程序纠错
程序中可以插入文字提示来帮助纠错,并显示在屏幕上。如:
#Errormessages(错误信息)
psuberror#Arcoutputnotallowed
"ERROR-WRONGAXISUSEDINAXISSUBSTITUTION",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+coordinatesettingattoolchange
ifmil>1,pwcs_g54
表示用pwcs单节指代#G54+在换刀时坐标设定值,mil定义为工件坐标系(G54~G59)
7.预先定义的单节
使用者可按照数控程序规定的格式将一个或多个NC代码作有组织的排列,编排成一条程序段。
8.系统问答
后置处理软件提出了五组问题,供使用者回答,可按照注解文字、赋值变量、字符串等内容,根据使用的机床、数控系统进行回答。设计后置处理文件,一般是按照NC程序的结构模块来进行。根据NC程序的功能,后置处理文件分成六个模块如下:
1.文件头
文件头部分设定程序名称和编号,此外,SINUMERIK810D系统还必须指定NC程序存放路径,并按照以下格式输出:
“%_N_(程序名及编号)_(路径)”。
NC程序可存放在主程序、子程序和工作程序目录下,扩展名分别为:MPF、SPF、WPD,一般放在工作程序目录下。因此经修改的Pst文件格式为:
Pheader#Startoffile
"%_N_",progname,"_WPD"(程序名、存放目录)
2.程序起始
在程序开始,要完成安全设定、刀具交换、工件坐标系的设定、刀具长度补偿、主轴转速控制、冷却液控制等,并可显示编程者、编程日期、时间等注解。
修改后的有刀具号Pst文件开头格式如下:
#Startofnon-zerotoolnumber
pspindle(主轴转速计算)
pcom_movbtl(移动设备)
ptoolcomment(刀具参数注解)
pbld,n,*sgcode,*sgplane,"G40","G80",*sgabsinc
(快进、XY加工平面、取消刀补、取消固定循环、绝对方式编程)
ifmil<=one,pg92_rtrnz,pg92_rtrn,pg92_g92(返回参考点)
pbld,n,*sgcode,*sgabsinc,pwcs,pfxout,pfyout,pfcout,*speed,*spindle,pgear,pcan1
(快进至某位置、坐标系编置、主轴转速等)
pbld,n,pfzout,*tlngno,scoolant,[ifstagetool=one,*next_tool]
(安全高度、刀长补偿、开冷却液)
pcom_movea(加工过程)
3.刀具交换
刀具交换执行前,须完成返回参考点、主轴停止动作,然后换刀,接着完成刀具长度补偿、安全设定、主轴转速控制。
Pst文件中用自定义单节ptlchg指代换刀过程,编辑修改后的程序如下:
Ptlchg#Toolchange
ptoolcomment(新刀参数注解)
comment(插入注解)
ifstagetool<>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",[ifstagetool=one,*next_tool]
(安全高度、刀长补偿号、开冷却液)
pcom_movea(加工过程)
4.加工过程
这一过程是快速移动、直线插补、圆弧插补、刀具半径补偿等基本加工动作。
对于几乎所有系统,这些加工动作的程序指令基本相同。只是注意SINUMERIK810D系统的刀具长度补偿值由字母D后加两位数字调用,不需要G43/G44指令;而半径补偿值则由G41/G42调用,不需要再接地址代码。用G40取消刀具长度和刀具半径补偿。
5.切削循环
Mastercam软件提供了6种内定的孔加工固定循环方式:一般钻削(Drill/Cbore)、深孔啄钻(PeckDrill)、断屑钻(ChipBreak)、右攻丝(Tap)、精镗孔(Bore#1)、粗镗孔(Bore#2),通过杂项选项(Misc#1/Misc#2)可设定左攻丝、背镗孔、盲孔镗孔、盲孔铰孔等循环,并采用G73~G89代码来表示。
如对于深孔钻削固定循环,Mastercam采用的格式为:G83X_Y_Z_R_Q_F;而SINUMERIK810D系统用CYCLE83指代深孔钻削循环,其NC程序要求给出循环加工所有参数,输出格式为:
CYCLE83(RTP,RFP,SDIS,DP,DPR,FDEP,FDPR,DAM,DTB,DTS,FRF,VARI)
在pst文件中需按SINUMERIK810D系统格式进行定义、修改和编写。
6.程序结尾
程序结尾一般情况下是取消刀补、关冷却液、主轴停止、执行回参考点,程序停止等动作。下面是修改后的pst程序结尾:
Ptoolend_t#Endoftoolpath,toolchange
pbld,n,sccomp,"M5",*scoolant,e(取消刀补、主轴停止、关冷却液)
pbld,n,*sg74,"Z1=0.X1=0.Y1=0.",e(返回参考点)
ifmi2=one,pbld,n,*sg74,"X1=0.","Y1=0.",protretinc,e
else,protretabs(程序结束)
#POST名称
:wgkG54
#类型
:MILL
#机床名称
:GENERICFANUC
#控制器名称
:GENERICFANUC
#描述
:GENERICFANUC3AXISMILLPOST
#AssociatedPost
:NONE
#车/铣复合
:NO
#4-axis/Axissubs.
:NO
#五轴
:NO
#子程序支持
:NO
#自动换刀
:NO
#工作坐标系
:G54
#Executable
:MP8.00
#
#
#
#这个POST支持FANUC控制器普通三轴铣床的的G代码输出,
#不支持自动换刀,有最大圆弧报警
#它来源于MP-EZ.PST
#是针对MastercamMillV8的特征而设计的
#
##
#修改日志:
#
#ProgrammersNote:
#CNC05/01/00
-
Initialpostsetup,jce
#
2019-10-11
-
去掉自动换刀,xxx
#
2019-10-12
-
增加中文注释,xxx
#
2019-10-21
-
增加最大圆弧警告,xxx
#
2019-11-05
-
修改坐标系为G54,xxx
#
#特征:
#
#
#
#下列Misc.(杂项)必须使用整数:
#
#mi2-绝对或增量坐标attoplevel
#
0=绝对
#
1=增量
#
#mi3-选择G28或G30来执行参考点回归.
#
0=G28,1=G30
#
#Cannedtext:
#
在轮廓点里插入"cantext".以允许/禁止下列Mastercam里许可的功能,
#
EnteringcantextonacontourpointfromwithinMastercamallowsthe
#
followingfunctionstoenable/disable.
#
Cantext值:
#
1=Stop=输出"M00"停止码
#
2=Ostop=
输出"M01"选择停止码
#
3=Bldon=在NC单节打开单节删除码(\)
#
4=bLdoff=在NC单节关闭单节删除码(\)
#
#
#钻孔:
#在这个POST里支持所有的钻孔方法.
#
#附加注意事项:
#1)G54callsaregeneratedwheretheworkoffsetentryof0=G54,
#
1=G55,etc.
#2)由NCI变量"met_tool"决定是否使用米制
#
#3)以增量方式从换刀起始位置计算运动量.
#
起始位置通常定义为所有换刀时刀具所处的最后位置
#
Incrementalmodecalculatesmotionfromhomepositionattoolchanges.
#
Thehomepositionisusedtodefinethelastpositionofthetool
#
foralltoolchanges.
#4)变量'absinc'现已被预先定义,设定mi2(杂项整数)以定义
#
绝对/增量程序输出.
#
#
#DebuggingandFactorySetProgramSwitches
调试和加工设置程序切换
#
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
#Appendpostlinelabels,non-zeroiscolumnposition?
bug3
:0
#Appendwhatlineno.toeachNCline?
bug4
:1
#AppendNCIlineno.toeachNCline?
whatno
:yes
#不执行whatlinebranches(分枝)?(leaveasyes)
get_1004
:1
#Findgcode1004withgetnextop?
rpd_typ_v7
:0
#UseVersion7stylecontourflags/processing?
strtool_v7
:2
#UseVersion7+toolname?
tlchng_aft
:2
#Delaycalltotoolchangeuntilmoveline
cant_tlchng:1
#忽视cantext入口onmovewithtlchng_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=unsignedinc.
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
#Omitbreakupofx,y&zrapidmoves
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
#FormatedabsolutevalueforXincrementalcalculations
yia
:0
#FormatedabsolutevalueforYincrementalcalculations
zia
:0
#FormatedabsolutevalueforZincrementalcalculations
bld
:0
#单节删除激活
result
:0
#Returnvalueforfunctions
sav_spc
:0
#Savespaces
sav_gcode
:0
#Gcodesaved
sav_absinc
:0
#Absolute/IncrementalSavedValue
sav_coolant:0
#Coolantsaved
toolchng
:1
#Onatoolchangeflag
spdir2
:1
#Copyforsafespindledirectioncalculation
#Drillvariables
drlgsel
:-1
#DrillSelectInitialize
drillref
:0
#Selectdrillreference
peckacel
:0
#Fractionalpercenttoreducepeck2whenusecan..:no
drlgcode
:0
#SaveGcodeindrill
sav_dgcode
:0
#Drillgcodesaved
#
#格式列表-n=nonmodal,l=leading,t=trailing,i=inc,d=delta
#
#
#定义英制/米制坐标格式列表
fs21
0.70.6
#小数,absolute,7place,defaultforinitialize(
fs22
0.4l1.3
#小数,absolute,4/3place(x,y,z)
fs23
0.4l1.3d
#小数,delta,4/3place
(i,j,k)
#Commonformatstatements
fs24
1010
#整数,无前缀
fs25
2020l
#整数,强制两位前缀
fs26
3030l
#整数,强制三位前缀
fs27
4040l
#整数,强制四位前缀
fs29
0.10.1
#小数,absolute,1place
fs210
0.20.2
#小数,absolute,2place
fs211
0.30.3
#小数,absolute,3place
fs212
0.40.4
#小数,absolute,4place
fs213
0.50.5
#小数,absolute,5place
fs214
0.30.3d
#小数,delta,3place
fs215
0.20.1
#小数,absolute,2/1place
fs216
1010n
#整数,强制输出
#输出加工类型字符串定义
#
#字符串-字符串标签必须由's'开头,它们没有预先指派
#
#Selectoperationnote
sop00
"NULL"
#Stringdefinition
sop01
"CONTOUR"
#
"
"
sop02
"CONTOUR"
#
"
"
sop03
"DRILLCYCLE"
#
"
"
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
"flatMILL"
sop20
"op20?"
sopnote
#Targetstring
fstrsel
sop00opcodesopnote
#
#
NC输出的字符串和字符串选择定义
##Addressstringdefinitions
位址串定义
strm
"M"
strn
"N"
stro
"O"
strp
""
srad
"R"
srminus
"R-"
sblank
#Cantext字符串定义(spacesmustbepaddedhere)
sm00
"M00"
sm01
"M01"
strtextno
strcantext
#
#
错误信息
#
saxiswarn
"
WARNING-THERADOFARCISTOOLARGE"
#
#一般的G和M代码串选择表
GeneralGandMCodeStringselecttables
#
#运动G代码选择
sg00
G00
#快速定位
sg01
G01
#直线进给
sg02
G02
#圆弧插补CW
sg03
G03
#圆弧插补CCW
sg04
G04
#暂停
sgcode
#Targetforstring
fstrselsg00gcodesgcode
#
#选择工作平面G字串
sg17
G17
#XY平面代码
sg19
G19
#YZ平面代码
sg18
G18
#XZ平面代码
sgplane
#Targetstring
fstrselsg17planesgplane
#
#选择英制/米制字串
sg20
G20
#英制代码
sg21
G21
#米制代码
smetric
#Targetstring
fstrselsg20met_toolsmetric
#
#选择参考点回归字串
sg28
G28
#第一参考点回归
sg30
G30
#第二参考点回归
sg28ref
#Targetstring
fstrselsg28mi3sg28ref
#
#切削补偿G字串选择
scc0
G40
#切削补偿取消
scc1
G41
#切削左补偿
scc2
G42
#切削右补偿
sccomp
#Targetforstring
fstrselscc0cc_possccomp
#
#钻孔固定循环字符串选择
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
#Targetforstring
fstrselsg81drlgselsgdrill
#
#选择增量或绝对G字符串
sg90
G90
#绝对代码
sg91
G91
#增量代码
sgabsinc
#Targetstring
fstrselsg90absincsgabsinc
#
#钻孔固定循环参考高度
sg98
G98
#Z轴回到起始高度
sg99
G99
#Z轴回到参考高度
sgdrlref
#Targetforstring
fstrselsg98drillrefsgdrlref
#DrillcycleGstringselect
#
#Generatestringforspindle
sm04
M04
#主轴反转
sm05
M05
#主轴停止
sm03
M03
#主轴正转
spindle
#Targetforstring
fstrselsm04spdir2spindle
#
#冷却M字符串选择
sm09
M09
#冷却液Off
sm08
M08
#冷却液喷射
sm08_1
M08
#冷却液喷雾
sm08_2
M08
#CoolantTool
scoolant
#Targetforstring
fstrselsm09coolantscoolant
#
#定义齿轮选择代码
flktbl
1
3
#Lookuptabledefinition-tableno.-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
#WCSGaddress
fmt
P
4
p_wcs
#WCSPaddress
fmt
S
4
speed
#主轴转速
fmt
M
4
gear
#Gearrange
#
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
#Cannedtext
#
#Movecomment(pound)tooutputcolonwithprogramnumbers
fmt
O
7
progno
#Programnumber
#fmt":"7
progno
#Programnumber
#
fmt
Q
2
peck1
#Firstpeckincrement(positive)
fmt
Q
2
shftdrl
#Fineboretoolshift
fmt
R
2
refht_a
#Referenceheight
fmt
R
2
refht_i
#Referenceheight
#
fmt"TOOL:"
4
tnote
#注释格式
fmt"DIA.OFF:"4
toffnote
#注释格式
fmt"LEN.:"
4
tlngnote
#注释格式
fmt"DIA.:"
1
tldia
#注释格式
#
#ToolComment/ManualEntrySection
刀具注释/手工输入部分
#
ptoolcomment
#Commentfortool
tnote=t
toffnote=tloffno
tlngnote=tlngno
"(",*tnote,*tldia,
*sopnote,")",e
pstrtool
#Commentfortool
ifstrtool<>sblank,
[
strtool=ucase(strtool)
*strtool,""
]
pcomment
#Commentfrommanualentry(mustcallpcomment2ifbooleans)
pcomment2
pcomment2
#Commentfrommanualentry
scomm=ucase(scomm)
ifgcode=1007,"(",scomm,")"
else,"(",scomm,")",e
#
#文件起始和刀具交换设置
#
psof0
#Startoftoolzero
psof
psof
#Startofnon-zerotoolnumber
toolchng=one
ifntools=one,
[
#skipsingletooloutputs,stagetoolmustbeon
stagetool=m_one
!next_tool
]
"%",e
*progno,e
"(PROGRAMNAME-",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,epretract
#刀具路径末尾,换刀
sav_absinc=absinc
absinc=one
sav_coolant=coolant
coolant=zero
#cc_posisresetinthetoolchangehere
cc_pos=zero
gcode=zero
pbld,n,sccomp,*sm05,e
absinc=sav_absinc
coolant=sav_coolant
peof0
#Endoftoolzero
peof
peof
#Endofnon-zerotool
pretract
comment
#Removepoundcharactertooutputfirsttoolwithstagedtools
#
#ifstagetool=one,pbld,n,*first_tool,e
n,"M30",e
"%",e
pwcs
#G54+coordinatesettingattoolchange
ifworkofs<>prv_workofs|(force_wcs&toolchng),
[
ifworkofs<6,
[
g_wcs=workofs+54
*g_wcs
]
else,
[
p_wcs=workofs-five
"G54.1",*p_wcs
]
]
!workofs
pgear
#Findspindlegearfromlookuptable
ifuse_gear=one,
[
gear=frange(one,speed)
*gear
]
#换刀设置
pspindle
#主轴转速计算forRPM
speed=abs(ss)
ifmaxss=zero|maxss>max_speed,maxss=max_speed
ifspeed>max_speed,speed=maxss
ifspeed<min_speed,speed=min_speed
spdir2=fsg3(spdir)
pq
#Setuppostbasedonswitchsettings
ifstagetool=one,bldnxtool=one
ifarctype=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
#文件开始前调用
ifmet_tool=one,#米制常量和变量调整
[
ltol=ltol_m
vtol=vtol_m
maxfeedpm=maxfeedpm_m
]
ptoolend
#刀具路径末尾,读取新刀具资料之前
!speed,!spdir2
ptlchg1002
#Callatactualtoolchange,endlastpathhere
pspindle
ifgcode=1000,
[
#Nulltoolchange
]
else,
[
#ToolchangeandStartoffile
ifgcode=1002,
[
#Actualtoolchange
pretract
]
ifstagetool=one,prv_next_tool=m_one
prv_xia=vequ(xh)
prv_feed=c9k
]
#
#MotionNCoutput
运动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指令
ifarcrad>=max_arc,result=mprint(saxiswarn)
pcan1,pbld,n,sgplane,sgcode,sgabsinc,pccdia,
pxout,pyout,pzout,parc,feed,strcantext,scoolant,e
pcom_moveb
#Commonmotionpreparationroutines,before
pxyzcout
ps_inc_calc
pncoutput
#Movementoutput
pcom_moveb
comment
pcan
ifgcode=zero,prapidout
ifgcode=one,plinout
ifgcode>one&gcode<four,pcirout
pcom_movea
pcom_movea
#Commonmotionpreparationroutines,after
pcan2
pe_inc_calc
pdwl_spd
#CallfromNCIgcode4
pspindle
comment
ifprv_spdir2<>spdir2,pbld,n,*sm05,e
ifprv_speed<>speed|prv_spdir2<>spdir2,
pbld,n,*speed,*spindle,pgear,e
pcan
iffmtrnd(dwell),pcan1,pbld,n,*sgcode,*dwell,strcantext,e
else,pcan1,pbld,n,strcantext,e
pcan2
prapid
#输出直线运动的NC指令-快速
pncoutput
pzrapid
#输出直线运动的NC指令-快速Zonly
pncoutput
plin
#输出直线运动的NC指令-进给
pncoutput
pz
#输出直线运动的NC指令-进给Zonly
pncoutput
pmx
#输出NCI向量的NC指令
pncoutput
pcir
#输出圆弧插补的NC指令
pncoutput
#
#Motionoutputcomponents
运动输出组成
#
pbld
#Cannedtext-单节删除
ifbld,'/'
pfbld
#强制-单节删除
"/"
pccdia
#切削补偿
#ForceDxx#
ifprv_cc_pos<>cc_pos&cc_pos,prv_tloffno=c9k
sccomp
ifcc_pos,tloffno
pfxout
#ForceXaxisoutput
ifabsinc=zero,*xabs,!xinc
else,*xinc,!xabs
pxout
#Xoutput
ifabsinc=zero,xabs,!xinc
else,xinc,!xabs
pfyout
#ForceYaxisoutput
ifabsinc=zero,*yabs,!yinc
else,*yinc,!yabs
pyout
#Youtput
ifabsinc=zero,yabs,!yinc
else,yinc,!yabs
pfzout
#ForceZaxisoutput
ifabsinc=zero,*zabs,!zinc
else,*zinc,!zabs
pzout
#Zoutput
ifabsinc=zero,zabs,!zinc
else,zinc,!zabs
parc
#选择圆弧输出格式
ifarcoutput=zero,
[
#圆弧输出为IJK
i,j,k
]
else,
[
#圆弧输出为R
ifabs(sweep)<=180|arcoutput=one,result=nwadrs(srad,arcrad)
else,result=nwadrs(srminus,arcrad)
*arcrad
]
#
#Drilling
钻孔
#
pdrlcommonb
#CannedDrillCyclecommoncall,before
ifgcode=81,
[
result=newfs(two,zinc)
ifdrillcyc=three,drlgsel=fsg1(-ss)+drillcyc*two
else,drlgsel=fsg2(dwell)+drillcyc*two
ifinitht<>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_m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《肾移植术后的护理》课件
- 养老院老人生活设施维修人员激励制度
- 养老院老人关爱服务规范制度
- 《用餐的经验过程》课件
- 2024年泥工装修项目合作合同样本版B版
- 施工成本控制的合同(2篇)
- 健美操基本步伐课件
- 2024年甲乙双方关于城市轨道交通信号系统建设与维护合同
- 刑法学课程课件教案绪论
- 2025年廊坊货运从业资格模拟考
- 九年级上册人教版数学期末综合知识模拟试卷(含答案)
- 商标出租合同范例
- 重大版小英小学六年级上期期末测试
- 会计助理个人年终工作总结
- 钢铁厂电工知识安全培训
- 2024年山东省菏泽市中考历史试卷
- 电解加工课件教学课件
- 说明文方法和作用说明文语言准确性中国石拱桥公开课获奖课件省赛课一等奖课件
- 酒店建设投标书
- 2024秋期国家开放大学专科《民法学(2)》一平台在线形考(形考任务1至4)试题及答案
- 《基于javaweb的网上书店系统设计与实现》
评论
0/150
提交评论