m1738264 发表于 2016-8-14 09:13:10

G83鑽孔用G1方式

IF (G01 == 3) //G83方式用G01鑽孔
      IF (CJ == 1)//正常
      
               Xin = CYC_PECK * I_CURPOS ;
               Yin = CYC_PECK * J_CURPOS ;
               Zin = CYC_PECK * K_CURPOS ;
               // calculate final depth 計算最終深度
               XDepth = X_CURPOS - CYC_DEPTH * I_CURPOS;
               YDepth = Y_CURPOS - CYC_DEPTH * J_CURPOS;
               ZDepth = Z_CURPOS - CYC_DEPTH * K_CURPOS;
               // calculate first clear height! 計算第一個清除高度
               XClear = X_CURPOS + CYC_CLEAR * I_CURPOS;
               YClear = Y_CURPOS + CYC_CLEAR * J_CURPOS;
               ZClear = Z_CURPOS + CYC_CLEAR * K_CURPOS;      
                        
                PeckNumber = INT_(CYC_DEPTH/CYC_PECK) + 1 ;
                RestPeck = FRAC_(CYC_DEPTH/CYC_PECK) ;      
                Counter = 1 ;
                        
       REPEAT
      
       OUTPUT $ ;
                IF_SET (CODE_LIN_FAST) OUTPUT CODE_LIN_FAST ; END_IF ;
                IF (Counter == 1)
                                                
                      OUTPUT "X" XClear "Y" YClear; // first clear height 第一個清除高度
                        OUTPUT \J "Z" ZClear ; // 鑽孔開始安全高度
                ELSE
*                        OUTPUT " X" XdClear " Y" YdClear " Z" ZdClear ; // next clear height 下一個清除高度
                         OUTPUT "Z" ZdClear ;
                        END_IF;
                        // calc next drill depth 計算下一個鑽孔深度
            XTemp = X_CURPOS - Counter * Xin ; YTemp = Y_CURPOS - Counter * Yin ; ZTemp = Z_CURPOS - Counter * Zin ;
            OUTPUT $ CODE_LIN_FEED "X" XTemp "Y" YTemp "Z" ZTemp "F" MCH_FEED; // drill current peck 目前啄鑽
*            OUTPUT $ " " CODE_LIN_FAST " X" XClear " Y" YClear " Z" ZClear ; // retract to first clear point
            OUTPUT $ CODE_LIN_FAST "Z" ZClear ; //每次提刀到鑽孔開始位置
                        // calculate next clear height CODE_LIN_FAST=G00 計算下一個清除高度
            XdClear = XTemp + CYC_CLEAR * I_CURPOS;
            YdClear = YTemp + CYC_CLEAR * J_CURPOS;
            ZdClear = ZTemp + CYC_CLEAR * K_CURPOS;
            Counter = Counter + 1 ;
            UNTIL (Counter == PeckNumber);
            IF (RestPeck > 0) // last peck in case of uneven distribution
            OUTPUT $ "X" XdClear "Y" YdClear "Z" ZdClear ; // last clear hieght 最後清除高度
            OUTPUT $ CODE_LIN_FEED "X" XDepth "Y" YDepth "Z" ZDepth "F" MCH_FEED; // drill last peck3
            END_IF ;
            OUTPUT $ CODE_LIN_FAST "X" X_CYC_DZINIT "Y" Y_CYC_DZINIT "Z" Z_CYC_DZINIT; // retract to init point
         END_IF ; //CJ=1

這是分享給大家的~~如果要整合~~要定義一些東西喔~~我目前已經寫出上下左右的後處理了~~但是目前只有針對發那科~並且把g81跟g83用g01的方法寫入90度頭裡面~~歡迎大家研究看看

zzzz1989527 发表于 2016-8-16 09:47:39

哥,弄好了没。等着呢

710279284 发表于 2016-8-16 12:21:41

看不明白!大师能解释下每句话的意思莫?

710279284 发表于 2016-8-16 12:25:33

按这个可以用,自己改下就可以了!孔深的话程序太长,用段宏程序好像也可以实现G1钻孔

710279284 发表于 2016-8-16 12:27:10

大师傅,四轴坐标系怎么初始化?怎么定义机床?

m1738264 发表于 2016-8-17 06:36:10

無須定義~~程式都寫在Z+的方向~~側機頭在選擇手動你要後處理的方向

710279284 发表于 2016-8-17 10:50:28

m1738264 发表于 2016-8-17 06:36
無須定義~~程式都寫在Z+的方向~~側機頭在選擇手動你要後處理的方向

不是侧铣,改成四轴后处理,怎么定义机床,还有坐标输出怎么初始化

710279284 发表于 2016-8-17 22:08:54

m1738264 发表于 2016-8-17 06:36
無須定義~~程式都寫在Z+的方向~~側機頭在選擇手動你要後處理的方向

G84侧铣可以实现吗?

m1738264 发表于 2016-8-18 22:55:56

可以的~~你要了解原理就可以了

710279284 发表于 2016-8-18 23:19:15

m1738264 发表于 2016-8-18 22:55
可以的~~你要了解原理就可以了

哦,攻牙的宏程序应该怎么写?
页: [1] 2
查看完整版本: G83鑽孔用G1方式