|  | 
 
| 
MasterCAM10.0三轴机床 三菱 富士通控制器后处理完美版
x
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册  
 
 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 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
 
 
 
 
 | 
 |