看板 Mechanical 關於我們 聯絡資訊
※ 引述《redapple34 (apple)》之銘言: : 最近在學macro編成,使用新代控制器,使用上跟發那科大同小異,語法也都相同, : 我目前想編寫一個簡易面銑加工,以工作臺面為程式Z軸0點,目標是把工件高度 : 銑到成品尺寸,我想編寫到向人機介面一樣輸入我要的數值完成加工,免除繁雜 : 的計算,使用機台是小龍門,macro語法邏輯我還不是很清楚是如何運作,希望各 : 位高手指導指導 : 以下為我目前寫的程式(有很多錯誤請見諒,因未完成不知道如何寫): : //(面銑加工單向進刀) : #1=230. //(粗銑轉速) : #2=300. //[粗銑進給速度F(mm/min)] : #3=320. //(精銑轉速) : #4=180. //[精銑進給速度F(mm/min)] : #5=25.4 //(成品高度) : #6=2. //(粗銑切削深度) : #7=0.3 //(精銑切削深度) : #8=300. //(X軸正向進給行程) : #9=-300. //(X軸反向進給行程) : #10=100. //(面銑刀具直徑) : #11=#10*0.8 //(切削總面積百分比) : #12=80. //(成品切削總寬,Y軸) : #13=#5+#7 //(粗銑最終高度) : #14=10. //(提刀安全高度) : G43 H1 : N010 G00 G90 G92 X0. Y0. Z0. S#1 M03; //(將刀具移動至起始點,粗銑) : N012 G91 G01 Z-#6 F#2 : N013 X#8; : N014 G90 G00 Z#14; : N015 G91 G00 X#9 Y#11; : N016 G91 G01 Z-#6 : N017 X#8; : N018 G90 G00 Z#14; : N019 IF (Z#5+#7>=Z#13) AND (#12<#11) THEN GOTO N020; : END IF; : N020 G91 G01 Z-#7 S#3 F#4 //(精銑) : N021 X#8; : N022 G90 G00 Z#14; : N023 G91 G00 X#9 Y#11; : N024 G91 G01 Z-#7 : N025 X#8; : N026 G90 G00 Z#14; : N027 IF (#12<#11) THEN END IF; : N028 G28 Z#14 : N029 G28 X0. : N030 M30 : 以上為程式 : 目前先寫一個看看 由於原po的macro都是存成固定數值 因此並不會隨著加工程序或次數變化 也因此原po的IF並不會等於 TRUE 由於原po在執行IF的前一行已經把刀子提到Z#14的工件座標位置 因此用座標來當判斷依據也沒用 所以在不變動目前macro設定的前提下 得新增兩個macro做暫存區之用 一個儲存粗胚高度 #15 一個為計數用#16=0 一個儲存銑削後高度 #17=#15-#6*#16 目前建議用WHILE 當執行過一次粗銑 #16就+1 WHILE(#17>#13) { //執行粗銑 把整個面都銑掉 G91 G01 Z-#6*#16 F#2 X#8; G90 G00 Z#14; G91 G00 X#9 Y#11; G91 G01 Z-#6*#16 X#8; G90 G00 Z#14; //上述指令執行完成後 #16+1 #16=#16+1 } 同時#17的數字也會改變 從#17=#15-#16*0=#15 變成#17=#15-#16*1=#15-#16 只要WHILE的啟動條件不被滿足 也就是 #17<=#13時(粗銑後的高度<=精銑預留的高度) 程式就會忽略WHILE 往下一行讀 接著就把精銑的指令接著寫就好 由於原po的圖 精銑應該只執行一次 所以就不用任何的loop了 大致上是這樣 有錯誤煩請板友指正 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.219.122 ※ 文章網址: https://www.ptt.cc/bbs/Mechanical/M.1467020065.A.BF6.html
redapple34: 感恩 我在寫看看 06/27 20:21
honoYang: 應該有個功能 插入循環 可以用對話教導式生出Macro 07/01 21:11
honoYang: 在F2(程式編輯)裡 07/01 21:11