Cimatron后置处理修改宝典.docx
《Cimatron后置处理修改宝典.docx》由会员分享,可在线阅读,更多相关《Cimatron后置处理修改宝典.docx(11页珍藏版)》请在冰豆网上搜索。
Cimatron后置处理修改宝典
Cimatron后置处理修改[宝典]
Cimatron的后置处理技术研究
摘要:
本文分析Cimatron中一般后处理程序器的组成结构,利用Cimatron提供的后置处理
工具(GPP和IMSPOST)来修改后置处理文件,并讨论如何将一般的后置处理器修改成适
合于特定数控系统要求的后置处理器的思路与方法。
关键词:
自动编程刀位文件后置处理数控NC代码
StudyonthePostProcessingofCimatron
The36thResearchInstituteofCETC(314001)Yuhonghua,Lvqiang,Chenweifeng
Abstract:
ThispaperanalysesthestructureofgeneralpostprocessorsinCimatron,modifiesapostprocessingfilebyusingpostprocessingtools(GPPandIMSPOST)suppliedbyCimatron,anddiscussesthewaysandmethodsofhowtomodifyanormalpostprocessingfiletoaspecifiedpostprocessingfileforspecialNCsystem.
KeyWords:
automaticprogramming;tool-locationfiles;postprocessing;NC;NCCode
1(前言
数控机床是按数控程序进行加工的。
在应用CAM软件生成数控程序时,首先要产生刀位
文件,然后再通过后处理文件,将刀位文件编译成数控程序,这一点与手工编程是不同的。
刀位文件是反映刀具运动轨迹的文件,它是CAM软件按照编程员的加工工艺,在假定工件固
定不动,而刀具运动的情况下,由软件自动计算产生的。
之所以要这样做,是因为不同的数
控机床采用的控制系统的指令是不同的,CAM软件的供应商,为使软件能够通用化,就先产
生刀位文件,然后再根据具体的控制系统,用后置处理工具,产生专用的后处理文件,并通
过它将刀位文件编译成数控程序。
不同的CAM软件,后置处理工具也不尽相同,本文主要介
绍了Cimatron(IT和E)软件的两种后置处理工具的使用方法,并给出了定制Heidenhain控
制系统专用后置处理文件的实例。
2(Cimatron两种后置处理工具GPP和IMSPOST的功能特点
eneralPostProcessor)是Cimatron公司自己开发的后置处理工具,通过对GPP(G
demo.def,demo.exf模板后处理文件作适当的修改,可以生成符合用户需要的后处理文件,
主要特点是修改完成后使用方便,该方法目前主要用在3轴以下机床的后处理。
IMSPOST是IMS公司为广大用户提供的基于宏汇编的后处理程序编辑器,可支持各种
CAD/CAM软件生成的刀位文件的后置处理,并提供了多种后置处理文件库,可支持更广泛的
数控机床。
同时也提供了非常丰富的定制功能,可生成任意形式的后置处理文件,从而可更
好地提供支持高速加工、多轴加工的后置处理。
所有用户需要的后处理程序都可以通过执行
IMSPOST后生成。
在大多数情况下,用户只需在IMSPOST软件的对话窗口和菜单项中编辑和定
义宏参数,不必进行任何宏程序的编制就可以得到为自己机床定制的后处理文件。
3(使用GPP和IMSPOST定制Heidenhain专用后置处理文件的实例3.1用GPP定制Heidenhain数控系统后处理文件
图1Cimatron中与Nc有关的软件工具界面
GPP在后置处理中主要起作用的文件的后缀名为*.def、*.dex和*.exf,如demo.def、demo.dex和demo.exf。
demo.def文件主要用于数控系统的相关定义,如主轴开启、停止、冷却液开、关等对应的控制指令等,可用图1所示的DFPost软件工具打开进行修改,内容比较易懂,修改也不多,修改成满足Heidenhain和机床系统要求即可,可以改名为hnc.def。
用编辑程序如记事本,打开demo.exf文件,根据需要修改后,然后改名为hnc.exf,用图1中的Dfexf编译后生成hnc.dex即可,如何修改hnc.exf文件,是本文要介绍的一个主要内容,先介绍几个GPP系统变量如当前刀具名称CURR_TOOL,刀具直径DIAMETER_,当前X坐标值X_CURPOS,圆弧中心的X坐标值X_CENTER等。
下面为demo.exf文件部分内容的说明:
*DEMO3axesPostProcessorforFANUC*号后面对程序的说明
********************************************************
*defineprivatevariables:
FORMAT(COORDINATES)XoldYoldZoldDXcenterDYcenterDZcenter;FORMAT为变量类型
********************************************************
INTERACTION(USER_1)"MAIN-PROGRAM-NUMBER"MainNum=100;
INTERACTION为交互内容,可以输入。
********************************************************
NON_MODALALL_VAR;NON_MODAL为非模态
MODALX_CURPOSY_CURPOSZ_CURPOS;MODAL为模态
********************************************************
NEW_LINE_IS$;
IF_SET(FlagSeq_EQ_NO)IF_SET为判断语句
OUTPUT\J;OUTPUT为输出内容
********************************************************
LINEARMOTION:
直线运动代码转换
OUTPUT$;
IF_SET(LIN_MOV)OUTPUT""LIN_MOV;END_IF;
IF_SET(CUTCOM_ON)OUTPUT""CUTCOM_ON"D"CutterComp;END_IF;
IF_SET(CUTCOM_OFF)OUTPUT""CUTCOM_OFF;END_IF;
IF_SET(X_CURPOS)OUTPUT"X"X_CURPOS;END_IF;
如果我们要在NC程序中加输出刀具半径说明的话,我们可以定义一个FORMAT(COORDINATES)变量TOOLR,然后在TOOLCHANGE:
的地方加上
TOOLR=0.5*DIAMETER_;DIAMETER_为系统变量
OUTPUT$"TOOLDEF"CURR_TOOL"L+0""R"TOOLR;
如果我们要在NC程序中输出符合Heidenhain数控系统的圆弧,可以在CIRCULARMOTION:
中改为:
SET_ONX_CENTERY_CENTER;
OUTPUT$"CC";CC为Heidenhain中的圆弧中心符号
OUTPUT"X"X_CENTER;
OUTPUT"Y"Y_CENTER;
END_IF;
FlagWC=YES;
OUTPUT$;
IF_SET(CIRC_MOV)OUTPUT"C"
将修改和编译后的hnc.def、hnc.dex两个文件,放到Cimatron安装目录\var\post中,在生成输出数控程序时,就会出现hnc后置处理文件的选项,选择该文件就会生成Heidenhain控制系统的数控程序。
下面为用该后处理生产的NC代码,其它系统也可以按需要修改,一般修改OUTPUT后面的部分即可。
0BEGINPGMNCNAMEMM
1BLKFORM0.1ZX+0Y+0Z-50
2BLKFORM0.2X+70Y+160Z+0
3TOOLDEF1L+0R3.
4TOOLCALL1ZS1000
5M6
6M03
7M09
8LX-5Y+76.59Z+50F5000
9LZ+1F5000
………
13CCX+0Y+125.241
14CX-2.121Y+127.362DR-
15LX+22.879Y+152.362
……
38CYCLDEF1.4DWELL
39CYCLDEF1.5F350
40LX+10Y+20F5000
41LZ+3F5000
42CYCLCALL
43LX+40F5000M99
……
47M30
5000ENDPGMNCNAMEMM
3.2用IMSPOST定制Heidenhain数控系统后处理
利用IMSPOST后处理可以非常方便地对相应的数控系统进行设置,IMSPOST提供了如Funuc、Siemens、Heidenhain和Mazak等数控系统的后处理程序,提供了宏程序功能,能处理绝大多数其他CAM软件的刀位文件。
定制Heidenhain数控系统后处理,可以新建一个库文件,也可以在已有的库文件上进行修改。
根据我们使用的机床类型,选择了对Heidenhain407.lib库文件进行修改。
打开Heidenhain407.lib文件,将Endofprogram的代码设为M30,如图2所示,同样地,再将DRILLCYCLES中的DepthFormat设为invertedsign(+/-)。
然后在主菜单上选择USERMULTI
图2Heidenhain数控系统后处理功能设置
HOME,输入G54,将加工坐标系的原点由机床原点改为工件原点,保存后形成新的后处理文件。
在IMSPOST中不但可以定制后处理文件,也能用定制后的后处理文件把刀位文件转换成数控程序。
如我们首先在Cimatron中将刀具轨迹生成apt文件(需要把apt.def、apt.dex两个文件放到Cimatron安装目录\var\post中),然后在IMSPOST主菜单中选择executepostprocess,在图3所示的弹出窗口的Input栏中选择要转换apt文件,默认Output栏中的文件名,在Inputtype栏中选择CIMATRON类型,然后点击Go,窗口就会显示转换进度。
利用这个软件工具,还可以转换如CATIA、DELCAM、EUCLID、PTC、UNIGRAPHICS等其他CAM软件产生的刀位文件,注意需要在Inputtype栏中选择对应的类型。
虽然IMSPOST是IMS公司的通用后处理软件,但Cimatron软件与它有较好的集成,在Cimatron中输出数控程序时可以直接进入到IMSPOST环境中,而不需要先生产一个刀位文件,再进行转换,限于篇幅关系,本文不再展开论述。
利用IMSPOST的宏功能可以开发出用户需要的其它要求,如要求增加输出刀具信息,我们可以用主菜单GeneralMacrooperation选项建立一新的宏,如图4所示,添加内容后
图3刀位文件转换成数控程序的窗口
图4IMSPOST宏功能定义窗口
点Apply。
其中CLDATAN.1为apt文件中TOOLINF/"DR2",2,4.0,0.0,30.0,15.0的"DR2",CALLSEQNO/ON为输出序号等。
利用该宏可以输出如下NC代码:
……
;DRILL
;(TOOL_NAMEISDR2TOOL_DIAIS4.0000)利用宏产生的注释
20TOOLCALL2ZS1000
21LX+20.Y+9.862F5000M06
22CYCLDEF1.0PECKING
……
4(结束语
Cimatron软件为用户提供了功能强大的通用CAD/CAM系统,但目前用户对其后置处理程序的使用比较陌生,用户在使用软件时由于不了解情况,没有对后处理文件进行适当修改,导致不能生成符合特定数控系统要求的NC程序,在进行手工修改时,如果没有全部更正,很可能造成事故。
用本文介绍的两种方法生成的NC数控加工程序,经实际操作使用验证,完全符合要求,希望对有关人员有所启发。
参考文献
1王卫兵.Cimatron数控编程实用教程.清华大学出版社.2003.2HeidenhainTNC430编程手册.
3Cimatron公司帮助文件.
--------------------------------------------------------------------------------
后置处理程序修改:
--------------------------------------------------------------------------------
修改(程序尾)
OUTPUT$"G00G40G80G90Z100.M09";
OUTPUT$"M5";
OUTPUT$"G91G30Z0.";
OUTPUT$"G91G28X0.Y0.";
OUTPUT$"M1";
OUTPUT$"M30";
刀具序号-名称
OUTPUT$"G90G40G80";
OUTPUT$"G10L2P1X0.0Y0.0Z-100.0";
OUTPUT$"M1";
OUTPUT$"(T"CURR_TOOL"-"CURR_NAME")"修改(程序头)
OUTPUT$"G91G30Z0.";
OUTPUT$"G91G28X0.Y0.";
OUTPUT$"T"CURR_TOOL;
OUTPUT$"M6";
OUTPUT$"M1";
OUTPUT$"G90G80G00G17G40G54M23";
OUTPUT$"G43H"CURR_TOOL"Z"Zhome"S"SPIN_SPEED""SPIN_DIR;
用记事本打开你所使用的后处理文件*.EXF,找到以下内容,绿色部分为编辑修改的内容(可
根据个人喜好修改)
ENDOFTAPE:
IF_SET(FirstTool_NE_LastTool)
OUTPUT$"T"NEXT_TOOL"M98P"ChangeTool;
END_IF;
OUTPUT$"M30";---------(修改程序尾)
ENDOFFILE:
IF_SET(FlagSeq_EQ_YES)
OUTPUT\J"%";
ELSE
OUTPUT\J"%";
END_IF;
OUTPUT$"("MESS_STR")";
OUTPUT$"(Z_DOWN="Z_DOWN"Z_UP="Z_UP")";
OUTPUT$"(TOOL="CURR_NAME";D="DIAMETER_"R="TOOL_RAD")";
OUTPUT$"(DOWNSTEP="DOWN_STEP"SIDESTEP="SIDE_STEP")";
OUTPUT$"(CONT.OFFSET="CONT_OFST"CONT.TOL.="CONT_TOL")";
OUTPUT$"(SRF.OFFSET="PART_OFST"SRF.TOL.="PART_TOL")";
OUTPUT$"(GEN.OFFSET="CONT_OFST")";
OUTPUT$"(TIMEEST="TIME_SHH":
"TIME_SMM":
"TIME_SSS")";
OUTPUT$"(DATE="DATE_SYY"/"DATE_SMM"/"DATE_SDD"TIME="TIME_SHH
";"TIME_SMM";"TIME_SSS")";
********************************************************
FEED:
KEEPMCH_FEED;
SPIN:
KEEPSPIN_SPEED;
COOLANT:
KEEPMCH_COOL;
DWELL:
KEEPMCH_DWELL;
CUTTERCOMPENSATION:
KEEPCUTCOM_ON;
CUTTERCOMPENSATION:
COFF:
KEEPCUTCOM_OFF;
********************************************************TOOLCHANGE:
FIRST:
SET_ONSPIN_SPEEDSPIN_DIR;
*-----savefirsttoolnumber
FirstTool=CURR_TOOL;
LastTool=CURR_TOOL;
*-----toolcuttercompensationregisternumber
CutterComp=CURR_TOOL+DiaComp;
*-----assuming1sttoolisinthespindle,thereisnoneed*fortoolchange)
OUTPUT$"T"CURR_TOOL;改"(T"CURR_TOOL"-"CURR_NAME")";
*-----morethenonetoolinthisrunofthePostProcessor
IF_SET(NEXT_TOOL_NE_CURR_TOOL)
OUTPUT$"T"NEXT_TOOL;
END_IF;
*-----standardtoolchangecommands.(assuming1sttoolisin
OUTPUT$"G90G80G00G17G40G54";
OUTPUT$"Z"Zhome"S"SPIN_SPEED""SPIN_DIR;
OUTPUT$"(刀具名称---"CURR_NAME"×"CLEAR_LENG")";
OUTPUT$"(曲面偏移="PART_OFST"曲面公差="PART_TOL"轮廓偏移="CONT_OFST
")";
OUTPUT$"(程式名称="TP_NAME"本程式由"USER_NAME"编制)";
------------------------修改(程序头)
TOOLCHANGE:
SET_ONSPIN_SPEEDSPIN_DIR;
*-----toolcuttercompensationregisternumber
CutterComp=CURR_TOOL+DiaComp;
*-----toolchangecommand(byusinganinternaltoolchange*subroutine)
OUTPUT$"T"CURR_TOOL"M98P"ChangeTool;
OUTPUT$"T"NEXT_TOOL;
*-----standardtoolchangecommands.(assuming1sttoolisin
OUTPUT$"G90G80G00G17G40G54";
OUTPUT$"Z"Zhome"S"SPIN_SPEED""SPIN_DIR;
OUTPUT$"(刀具名称---"CURR_NAME"×"CLEAR_LENG")";
OUTPUT$"(曲面偏移="PART_OFST"曲面公差="PART_TOL"轮廓偏移="CONT_OFST")";
OUTPUT$"(程式名称="TP_NAME"本程式由"USER_NAME"编制)";
TOOLCHANGE:
LAST:
SET_ONSPIN_SPEEDSPIN_DIR;
*-----savelasttoolnumber
LastTool=CURR_TOOL;
*-----toolcuttercompensationregisternumber
CutterComp=CURR_TOOL+DiaComp;
OUTPUT$"T"CURR_TOOL"M98P"ChangeTool;*-----thelasttoolisthesameasthefirsttool
IF_SET(NEXT_TOOL_NE_CURR_TOOL)
OUTPUT$"T"NEXT_TOOL;
END_IF;
*-----standardtoolchangecommands.(assuming1sttoolisin
OUTPUT$"G90G80G00G17G40G54";
OUTPUT$"Z"Zhome"S"SPIN_SPEED""SPIN_DIR;
OUTPUT$"(刀具名称---"CURR_NAME"×"CLEAR_LENG")";
OUTPUT$"(曲面偏移="PART_OFST"曲面公差="PART_TOL"轮廓偏移="CONT_OFST")";
OUTPUT$"(程式名称="TP_NAME"本程式由"USER_NAME"编制)";
说明:
1、*注释或代表不执行此内容;
2、引号里内容则按实输出;
3、修改保存完毕执行主菜单--NC--DFEXF--输入后处理名--回车即可。
4((复制到Cimatron根目录下面的var/post目录下面即可,
然后在后处理的时候按右键,找到想要的即可后处理了。
)
--------------------------------------------------------------------------------
后处理结果
%
0100
G90G8