SRF_NORY Y component of the surfaces' normal 1 LINEAR MOTION: SRF_NORZ Z component of the surfaces' normal 1 LINEAR MOTION: ST_ANG Start angle 2 CIRCULAR MOTION:
STARTS_NUM Total number of lathe/thread starts 7 BEGINNING OF PROC: STEP_INCR Step increment 1 THREAD STEP:
STEP_TYPE Thread step code (1 to 6) 7 THREAD STEP: STEP_VALUE Pitch or lead size 1 THREAD STEP:
SUB_NUMBER Number of current subroutine 6 SUBROUTINE CALL: TEETH_NUM Number of teeth in tool 7 TOOL CHANGE: THRD_DEPTH Total thread machining depth 1 THREAD CYCLE: TIME_SHH The current hour of starting postpr. 6 BEGINNING OF TAPE: TIME_SMM The current min. of starting postpr. 6 BEGINNING OF TAPE: TIME_SSS The current sec. of starting postpr. 6 BEGINNING OF TAPE: TOOL_ANGLE Angle of the tool 2 TOOL CHANGE: TOOL_RAD Tool radius 1 TOOL CHANGE: TOOL_TYPE Punch tool type code 7 TOOL CHANGE: TP_NAME Toolpath name 0 BEGINNING OF TOOLPATH: TRANS_MATXTRANS_MATYTRANS_MATZ Translation
from
current
UCS
to
the
original
MACSYS 6 BEGINNING OF PROC: /TOOL CHANGE: /ORIGIN CHANGE: / BEGINNING OF TAPE: TRANSF_NUM Number of transformations 6 BEGINNING OF PROC: TRF_MAT1...9 Transformation rotation matrix 1 TRANSFORMATION: TRF_VECX Transformation matrix 1 TRANSFORMATION: TRF_VECY Transformation matrix 1 TRANSFORMATION: TRF_VECZ Transformation matrix 1 TRANSFORMATION:
USER_NAME Give the user name as an output 0 BEGINNING OF TAPE: WINT_1 Charmilles G27 6 TOOL CHANGE: WINT_2 Charmilles G28 6 TOOL CHANGE: WINT_3 Charmilles G29 6 TOOL CHANGE: WINT_4 Charmilles G30 6 TOOL CHANGE: WINT_5 Charmilles G28G29 6 TOOL CHANGE: WINT_6 Charmilles G29G30 6 TOOL CHANGE: WINT_7 Charmilles G32 6 TOOL CHANGE: WINT_8 Charmilles G38 6 TOOL CHANGE: WINT_9 Charmilles G39 6 TOOL CHANGE: WINT_10 Charmilles G45 6 TOOL CHANGE: WINT_11 Charmilles G46 6 TOOL CHANGE: WINT_12 Charmilles G60 6 TOOL CHANGE: WINT_13 Charmilles G61 6 TOOL CHANGE: WINT_14 Charmilles G62 6 TOOL CHANGE: WINT_15 Charmilles G63 6 TOOL CHANGE: WREAL_1 Charmilles C for G32 1 TOOL CHANGE: WREAL_2 Charmilles K for G32 1 TOOL CHANGE: WREAL_3 Charmilles X for G32 1 TOOL CHANGE: WREAL_4 Charmilles Y for G32 1 TOOL CHANGE:
WREAL_5 Charmilles R for G32 1 TOOL CHANGE: WREAL_6 Charmilles A for G38 & G39 1 TOOL CHANGE: X_CENTER X coordinate of center 1 CIRCULAR MOTION:
X_CURPOS X coordinate of current position 1 BEGINNING OF TAPE: LINEAR MOTION:CIRCULAR MOTION: CYCLE:
X_ENDPT X coordinate of endpoint 1 CIRCULAR MOTION:THREAD CYCLE:THREAD CANNED CYCLE: GROOVE CYCLE:
X_HOME X coordinate of home 1 BEGINNING OF TAPE: X_INTER X intermediate point 1 BEGINNING OF PROC: X_MACH X coordinate of machine zero 1 BEGINNING OF TAPE: X_ORIGIN Origin, X coordinate 1 BEGINNING OF TAPE:
X_START X coordinate of start position 1 BEGINNING OF PROC: THREAD CYCLE: THREAD CANNED CYCLE: GROOVE CYCLE:
Y_CENTER Y coordinate of center 1 CIRCULAR MOTION:
Y_CURPOS Y coordinate of current position 1 BEGINNING OF TAPE: LINEAR MOTION: CIRCULAR MOTION: CYCLE:
Y_ENDPT Y coordinate of endpoint 1 CIRCULAR MOTION: THREAD CYCLE: THREAD CANNED CYCLE: GROOVE CYCLE:
Y_HOME Y coordinate of home 1 BEGINNING OF TAPE: Y_INTER Y intermediate point 1 BEGINNING OF PROC: Y_MACH Y coordinate of machine zero 1 BEGINNING OF TAPE:
Y_ORIGIN Origin, Y coordinate 1 BEGINNING OF TAPE: ORIGIN CHANGE:
Y_START Y coordinate of start position 1 BEGINNING OF PROC: THREAD CYCLE: THREAD CANNED CYCLE: GROOVE CYCLE:
Z_CENTER Z coordinate of circle center 1 CIRCULAR MOTION:
Z_CURPOS Z coordinate of current position 1 BEGINNING OF TAPE: LINEAR MOTION: CIRCULAR MOTION: CYCLE: Z SURFACE:
Z_DOWN The procedure Z DOWN value 1 BEGINNING OF PROC: Z_ENDPT Z of circle endpoint 1 CIRCULAR MOTION: Z_HOME Z coordinate of home 1 BEGINNING OF TAPE: Z_INTER Z intermediate point 1 BEGINNING OF PROC: Z_MACH Z coordinate of machine zero 1 BEGINNING OF TAPE:
Z_ORIGIN Origin, Z coordinate 1 BEGINNING OF TAPE:ORIGIN CHANGE: Z_START Z coordinate of start position 1 BEGINNING OF PROC: Z_UP The procedure Z UP value 1 BEGINNING OF PROC:
贺山中岁月兄新任版主,特将DEMO.EXF这个POST作一个讲解。
* DEMO 3 axes Post Processor for FANUC * CIMATRON90 VER 9.0 * Last update : 23-FEB-1998
程序行前面起头字符为*表示此行为注释行。
******************************************************** * define private variables:
FORMAT (SEQUENCING) Seq SubSeq CNTRL_NUM NURBS_DEG count first deg ; FORMAT (TOOL) CutterComp FirstTool LastTool ;
FORMAT (COORDINATES) Xold Yold Zold DXcenter DYcenter DZcenter ;
FORMAT (COORDINATES) Zinit Clear Depth CNTRL_X CNTRL_Y CNTRL_Z KNOT_ ; FORMAT (COORDINATES) Xhome Yhome Zhome ;
FORMAT (COORDINATES) XfirstOrigin YfirstOrigin ZfirstOrigin ; FORMAT (USER_1) CurrSubNum ;
FORMAT (coordinates) ORIGOLDI ORIGOLDJ ORIGOLDK ;
* define private flags:
FORMAT (USER_2) FlagSub FlagSeq FlagSpin;
FORMAT (USER_2) FirstOriginChange FlagError Flagrotmac ;
* define private constants: FORMAT (USER_2) YES NO ;
* change the format of existing variables: FORMAT (USER_1) SUB_NUMBER ;
FORMAT里面定义了后处理中需要用到的变量的类型,这些当然都不是我们需要修改的内容,但是你如果新定义了一个变量如圆弧插补的半径radius,这个变量当然需要可以是小数,它就需要被定义为REAL或COORDINATES这种类型。添加一行程序: FORMAT (COORDINATES) radius;
INTERACTION指的是执行后处理时的一些交互的内容:
INTERACTION (USER_1) \主程序号 INTERACTION (TOOL) \刀补号
INTERACTION (USER_1) \换刀子程序号 INTERACTION (CHARACTER) \程序行前面是否需要行号 INTERACTION (SEQUENCING) \起始行号 INTERACTION (SEQUENCING) \行号增量
INTERACTION (CHARACTER) \是否输出子程序,WCUT是没有子程序的,但是POCKET和PROFILE会产生子程序
INTERACTION (USER_1) \第一个子程序号
如果需要添加新的交互内容,只需要添加一个交互行就可以了,当然需要注意被交互的内容是整型还是实型,否则不能输入数字和小数
NON_MODAL ALL_VAR;
MODAL X_CURPOS Y_CURPOS Z_CURPOS ;
MODAL LIN_MOV CIRC_MOV MCH_FEED SPIN_SPEED SPIN_DIR MCH_COOL MCH_DWELL; MODAL CUTCOM_ON CUTCOM_OFF ;
MODAL CYC_DEPTH CYC_PECK CYC_DWELL CYC_RETR CYC_CLEAR Depth Clear NURBS_MOV;
MODAL 定义变量是否为模态,象X_CURPOS这种坐标位置当然是随时都在变化的。另外我们可以认为指的是在同一行程序内变量的值能否重复输入多次。
IDENTICAL X_CURPOS X_ENDPT ; IDENTICAL Y_CURPOS Y_ENDPT ;
每输出一行程序之前,调用一个新的值,即保持侦测状态。
前面都是准备工作,下面的内容才是和输出加工程序有关的。 NEW_LINE_IS $ ; $为换行指令,这一段内容制定程序是如何换行的 IF_SET (FlagSeq _EQ_ NO) 如果制定不输出行号 OUTPUT \\J ; \\J表示换行但不输出行号 ELSE
IF_SET (FlagSub _EQ_ NO) OUTPUT \\J \ Seq = Seq + SeqIncr ; ELSE
OUTPUT \\J \
SubSeq = SubSeq + SeqIncr ; 这一段指定子程序号如何递增 END_IF ; END_IF ;
BEGINNING OF TAPE: 程序头的指定 YES = 1 ; NO = 0 ; Seq = SeqStart ;
FlagSeq = NO ; FlagSub = NO ;
IF_SET (NumYN _EQ_ \
IF_SET (NumYN _EQ_ \连交互里的大小写都想到了,防呆。
IF_SET (Sub _EQ_ \ IF_SET (Sub _EQ_ \ SET_OFF NO_SUBROUT ; ELSE
SET_ON NO_SUBROUT ; END_IF ;
*-----Unit matrix (MUST be input in this order !!!) 指定XYZ轴的方向,千万不要改啊! ROT_MAT1 = 1.0 ; ROT_MAT2 = 0.0 ; ROT_MAT3 = 0.0 ; ROT_MAT4 = 0.0 ; ROT_MAT5 = 1.0 ; ROT_MAT6 = 0.0 ; ROT_MAT7 = 0.0 ; ROT_MAT8 = 0.0 ; ROT_MAT9 = 1.0 ;
*-----shift all data according to the MCHINE ZERO indicated by the
* user in the POSTPR interaction 如果在后处理时指定了对刀点相对于编程原点的偏移量,指定坐标值如何转换。
TRANS_MATX = 0 - X_MACH ; TRANS_MATY = 0 - Y_MACH ; TRANS_MATZ = 0 - Z_MACH ;
*-----shift the HOME according to the MCHINE ZERO indicated by the
* user in the POSTPR interaction 如果在后处理时指定了对刀点相对于编程原点的偏移量,机床原点位置如何转换。
Xhome = X_HOME - X_MACH ; Yhome = Y_HOME - Y_MACH ; Zhome = Z_HOME - Z_MACH ;
*-----tool location is HOME 刀具原点 Xold = X_HOME ; Yold = Y_HOME ; Zold = Z_HOME ;
*-----For 1st ORIGIN CHANGE FirstOriginChange = YES ;
MCH_FEED = 9999 ;
*-----output
IF_SET (FlagSeq _EQ_ YES )
OUTPUT \换行后输出子程序号,这里有ELSE只是为了修改者方便。 ELSE
OUTPUT \ END_IF ;
*--For the first origin change
ORIGOLDI=0 ; ORIGOLDJ=0 ; ORIGOLDK=1 ; flagrotmac = no ;
FILE指一个输出的加工代码文件 TAPE指使用同一把刀具的一段加工程序 PROCEDURE 指的是一个WCUT等
BEGINNING OF PROC: KEEP PROC_NAME ; SET_ON MCH_COOL ; FlagSub = NO ; SubSeq = SeqStart ;