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

iCAx开思网

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

[讨论] 初学GPP,请懂得大侠帮我检查下我改的代码是否有问题

[复制链接]
跳转到指定楼层
1
发表于 2009-10-13 14:29:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我把这个处理出来的G代码和正在用的处理出来的G代码对比了下,是一样的。不知道还存在什么问题??请指教
代码如下:
********************************************************
* 3 axes Post Processor for FANUC
********************************************************
FORMAT (COORDINATES) Xold Yold Zold DXcenter DYcenter ;
FORMAT (COORDINATES) Clear Depth ;
FORMAT (USER_2)      FlagSpin ;
FORMAT (USER_2)      YES NO ;
********************************************************
NON_MODAL  ALL_VAR ;
MODAL      X_CURPOS Y_CURPOS Z_CURPOS ;
MODAL      LIN_MOV CIRC_MOV MCH_FEED SPIN_SPEED SPIN_DIR ;
MODAL      CYC_DEPTH CYC_PECK CYC_DWELL CYC_RETR CYC_CLEAR Depth Clear ;
IDENTICAL  X_CURPOS X_ENDPT ;
IDENTICAL  Y_CURPOS Y_ENDPT ;
********************************************************
NEW_LINE_IS $ ;
      OUTPUT \J ;   
********************************************************
BEGINNING OF TAPE:
      YES              = 1 ;
      NO               = 0 ;
      Xold = X_HOME ;
      Yold = Y_HOME ;
      Zold = Z_HOME ;
      MCH_FEED = 9999 ;
      OUTPUT "%" \J ;
END OF TAPE:
      OUTPUT $ " M05" ;
      OUTPUT $ " M30" ;
      OUTPUT \J "%" ;
      IF_SET (PROC_CMNT _NE_ "No Text")
    PRINT0 \J "REN " PART_NAME "." TP_NAME "." POST_NAME " " PROC_CMNT "." POST_NAME ;
      END_IF ;
********************************************************
TOOL CHANGE:
      SET_ON  SPIN_SPEED SPIN_DIR ;
      OUTPUT $ "( " "D" DIAMETER_ " " "R" TOOL_RAD " )" ;
      OUTPUT $ " G90 G54 G17 G80 G40 G49 " ;
      OUTPUT $ " S" SPIN_SPEED " " SPIN_DIR  ;
********************************************************
LINEAR MOTION: FAST:
      FlagSpin = NO ;
      IF_SET (SPIN_SPEED) FlagSpin = YES ; END_IF ;
      IF_SET (SPIN_DIR)   FlagSpin = YES ; END_IF ;
      IF_SET (FlagSpin _EQ_ YES)
      SET_ON SPIN_SPEED SPIN_DIR ;
      OUTPUT $ " S" SPIN_SPEED " " SPIN_DIR ;
      END_IF ;
      OUTPUT $ ;
      IF_SET (LIN_MOV)  OUTPUT " "  LIN_MOV  ; END_IF ;
      IF_SET (X_CURPOS) OUTPUT " X" X_CURPOS ; END_IF ;
      IF_SET (Y_CURPOS) OUTPUT " Y" Y_CURPOS ; END_IF ;
      IF_SET (Z_CURPOS) OUTPUT " Z" Z_CURPOS ; END_IF ;
      SET_ON CIRC_MOV ;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;
LINEAR MOTION:
      FlagSpin = NO ;
      IF_SET (SPIN_SPEED) FlagSpin = YES ; END_IF ;
      IF_SET (SPIN_DIR)   FlagSpin = YES ; END_IF ;
      IF_SET (FlagSpin _EQ_ YES)
      SET_ON SPIN_SPEED SPIN_DIR ;
      OUTPUT $ " S" SPIN_SPEED " " SPIN_DIR ;
      END_IF ;
      OUTPUT $ ;
      IF_SET (LIN_MOV)    OUTPUT " "  LIN_MOV    ; END_IF ;
      IF_SET (X_CURPOS)   OUTPUT " X" X_CURPOS   ; END_IF ;
      IF_SET (Y_CURPOS)   OUTPUT " Y" Y_CURPOS   ; END_IF ;
      IF_SET (Z_CURPOS)   OUTPUT " Z" Z_CURPOS   ; END_IF ;
      IF_SET (MCH_FEED)   OUTPUT " F" MCH_FEED   ; END_IF ;
      SET_ON CIRC_MOV ;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;
********************************************************
CIRCULAR MOTION:
      FlagSpin = NO ;
      IF_SET (SPIN_SPEED) FlagSpin = YES ; END_IF ;
      IF_SET (SPIN_DIR)   FlagSpin = YES ; END_IF ;
      IF_SET (FlagSpin _EQ_ YES)
      SET_ON SPIN_SPEED SPIN_DIR ;
      OUTPUT $ " S" SPIN_SPEED " " SPIN_DIR ;
      END_IF ;
      DXcenter = X_CENTER - Xold ;
      DYcenter = Y_CENTER - Yold ;
      OUTPUT $ ;
      IF_SET (CIRC_MOV)          OUTPUT " "  CIRC_MOV ; END_IF ;
      IF_SET (X_CURPOS)          OUTPUT " X" X_ENDPT  ; END_IF ;
      IF_SET (Y_CURPOS)          OUTPUT " Y" Y_ENDPT  ; END_IF ;
      IF_SET (Z_CURPOS)          OUTPUT " Z" Z_ENDPT  ; END_IF ;
                                                  OUTPUT " I" DXcenter ;   
                                                  OUTPUT " J"
DYcenter ;
      IF_SET (MCH_FEED)          OUTPUT " F" MCH_FEED ; END_IF ;
      SET_ON LIN_MOV ;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;
********************************************************
CYCLE: ON:
      FlagSpin = NO ;
      IF_SET (SPIN_SPEED) FlagSpin = YES ; END_IF ;
      IF_SET (SPIN_DIR)   FlagSpin = YES ; END_IF ;
      IF_SET (FlagSpin _EQ_ YES)
      SET_ON SPIN_SPEED SPIN_DIR ;
      OUTPUT $ " S" SPIN_SPEED " " SPIN_DIR ;
      END_IF ;
      SET_ON X_CURPOS Y_CURPOS Z_CURPOS   ;
      SET_ON CYC_DEPTH CYC_RETR CYC_CLEAR MCH_FEED ;
      SET_ON Depth Clear ;
      Depth    =  Z_CURPOS - CYC_DEPTH ;
      Clear    =  Z_CURPOS + CYC_CLEAR ;
          OUTPUT $ " Z" Z_HOME  ;
          OUTPUT $ ;
          OUTPUT " "  CYC_RETR  ;
          OUTPUT " "  CYC_CODE  ;
          OUTPUT " X" X_CURPOS  ;
          OUTPUT " Y" Y_CURPOS  ;
          OUTPUT " Z" Depth     ;
          OUTPUT " R" Clear     ;
      IF_SET (CYC_PECK)        OUTPUT " Q" CYC_PECK  ; END_IF ;
      IF_SET (CYC_DWELL)       OUTPUT " P" CYC_DWELL ; END_IF ;
      IF_SET (CYC_XSHFT)       OUTPUT " I" CYC_XSHFT ; END_IF ;
      IF_SET (CYC_YSHFT)       OUTPUT " J" CYC_YSHFT ; END_IF ;
          OUTPUT " F" MCH_FEED  ;
      SET_ON  LIN_MOV CIRC_MOV ;
      SET_OFF CYC_DEPTH CYC_CLEAR;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;
CYCLE:
      Depth = Z_CURPOS - CYC_DEPTH ;
      Clear = Z_CURPOS + CYC_CLEAR ;
      OUTPUT $ ;
      IF_SET (CYC_RETR)   OUTPUT " "  CYC_RETR   ; END_IF ;
      IF_SET (X_CURPOS)   OUTPUT " X" X_CURPOS   ; END_IF ;
      IF_SET (Y_CURPOS)   OUTPUT " Y" Y_CURPOS   ; END_IF ;
      IF_SET (Depth)      OUTPUT " Z" Depth      ; END_IF ;
      IF_SET (Clear)      OUTPUT " R" Clear      ; END_IF ;
      IF_SET (CYC_PECK)   OUTPUT " Q" CYC_PECK   ; END_IF ;
      IF_SET (CYC_DWELL)  OUTPUT " P" CYC_DWELL  ; END_IF ;
      IF_SET (CYC_XSHFT)  OUTPUT " I" CYC_XSHFT  ; END_IF ;
      IF_SET (CYC_YSHFT)  OUTPUT " J" CYC_YSHFT  ; END_IF ;
      IF_SET (SPIN_SPEED) OUTPUT " S" SPIN_SPEED ; END_IF ;
      IF_SET (SPIN_DIR)   OUTPUT " "  SPIN_DIR   ; END_IF ;
      IF_SET (MCH_FEED)   OUTPUT " F" MCH_FEED   ; END_IF ;
      SET_ON  LIN_MOV CIRC_MOV ;
      SET_OFF CYC_DEPTH CYC_CLEAR;
      Xold = X_CURPOS ;
      Yold = Y_CURPOS ;
      Zold = Z_CURPOS ;
CYCLE: OFF:
      OUTPUT $ " G80 Z" Z_HOME  ;
      SET_ON  LIN_MOV CIRC_MOV ;
********************************************************

本帖最后由 xiagq 于 2009-10-28 17:25 编辑
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2009-10-13 18:37:51 | 只看该作者
圆弧那里的IJK输出有问题。

有的机床少一项就不认了,所以最好是不要判断了,让他直出。不管是多少都输出一个值。这样通用性会强一些,而且熊族在圆弧的处理上也有问题。
3
发表于 2009-10-14 09:23:37 | 只看该作者
改成红色那部分后,处理出来的G代码里的I J K 会有好多0.0,不输出0.0貌似我的机床也能走
下面是用darkit的后处理出来的,圆弧处理时为什么要一直输出Z??
G01 Z-0.04  F750
G03 X25.156 Y46.551 Z-0.04 J0.444 F2500
G01 X25.155 Y58.119
G03 X16.354 Y62.04 Z-0.04 I-24.512 J-43.182
G02 X15.288 Y62.951 Z-0.04 I0.414 J1.565
4
发表于 2009-10-14 18:29:51 | 只看该作者
K你不用输出的,你前面也没有让他输出G18,G19平面,所以K输出了就会报警的。
5
发表于 2009-10-15 09:48:04 | 只看该作者
我把代码里的DZcenter全删除了。
貌似没在cimatron处理出来的G代码里看到过圆弧的螺旋插补
6
发表于 2009-10-15 09:51:04 | 只看该作者
完全可以。
7
发表于 2009-10-15 16:05:16 | 只看该作者
什么东东完全可以??老大打字不要偷懒撒 。看老大的发言总要琢磨半天

本帖最后由 xiagq 于 2009-10-15 16:07 编辑
8
发表于 2009-10-15 16:10:49 | 只看该作者
DZcenter全删除了完全可以
9
发表于 2009-10-15 20:41:28 | 只看该作者
那关于螺旋插补呢,这样的代码可以处理螺旋插补的吧
10
发表于 2009-10-15 20:58:04 | 只看该作者
cimatron里哪有螺旋??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-2-21 03:32 , Processed in 0.024485 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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