今天針對宏程序進行第三講,分1.循環語句while、2調用子程序、3案例講解共三個部分進行講解!
一、while語句
在講解IF 和GOTO 語句後,還有一個控制語句while(當什麼的時候)
l 循環(WHILE 語句)
格式:WHILE [條件表達式]DO m;(m=1,2,3)
∶
∶
END m;
∶
說明:當指定的條件滿足時,執行WHILE 從DO到END之間的程序。否則,轉而執行END之後的程序段。這種指令格式適用於IF 語句。DO後的號和END後的號是指定程序執行範圍的標號,標號值為1,2,3。若用1,2,3 以外的值會產生報警。
注意:
① DO m必須在END m之間指定;
② DO最多可以嵌套三次;
③ DO m和END m在一個程序中必須彼此對應;
④ 從DO內部可以轉移到其外部,不能從DO範圍外部向內部轉移;
⑤ 從DO範圍內部可以調宏程序或子程序。
我們以一個拋物線為例
拋物線的標準方程,見圖
拋物線輪廓的編程方法與橢圓輪廓的編程方法一樣,我們可以用折線1-2-3-4-5-…逼近,我們只要計算出在不同的z1 z2,z3,z4…值下,利用公式:x= SQRT[ Z / K],計算出x1 x2,x3,x4…值,這樣也就得到了點1-2-3-4-5-…的座標值了,只要用G01直線插補指令就可以完成拋物線輪廓。
拋物線宏程序如下:
#1=;Z值起點
#2=;Z值終點
WHILE[#1GE#2] DO1;循環語句,控制拋物線的範圍
#3= SQRT[ #1 / K];計算X座標值
G01X[2*#3]] Z[#1]F ;切削加工
#1=#1-1;Z值遞減
END1;
二、宏程序調用方法
上一講中,我們是把宏程序指令直接放在了程序裡,所以叫做用戶宏程序,除了有上述方法外,我們也可以用G65,G66,G67或其它G代碼,M代碼調用宏程序,這裡以G65,G66,G67代碼為例。
l 非模態調用(G65)
當指定G65 時,以地址P 指定的用戶宏程序被調用。數據(自變量)能傳遞到用戶宏程序體中。
格式:G65 P p L l ;
說明:
①p:要調用的程序
l:重複的次數(默認值為1)
自變量:數據傳遞到宏程序
②自變量指定
可用兩種形式的自變量指定,見表12-1。自變量指定I使用除了G,L,O,N 和P 以外的字母,每個字母指定一次。自變量指定Ⅱ使用A,B,C 和Ii,Ji 和Ki(i 為1~10)。根據使用的字母,自動地決定自變量指定的類型。CNC 內部自動識別自變量指定Ⅰ和自變量指定Ⅱ。如果自變量指定Ⅰ和自變量指定Ⅱ混合指定的話,後指定的自變量類型有效。
③沒有小數點的自變量數據的單位為各地址的最小設定單位。傳遞的沒有小數點的自變量的值根據機床實際的系統配置變化。在宏程序調用中使用小數點可使程序兼容性好。
④被調用的程序結束用M99指令。
l 模態調用(G66)
一旦發出G66 則指定模態調用,即指定沿移動軸移動的程序段後調用宏程序。G67 取消模態調用。
格式:G66 P p L l ;
說明:
①p:要調用的程序
l:重複的次數(默認值為1)
自變量:數據傳遞到宏程序
②指定G67代碼時,其後面的程序段不再執行模態宏程序調用。
③在模態調用期間,指定另一個G66 代碼,可以嵌套模態調用。
④在G66 程序段中,不能調用多個宏程序。
⑤G66必須在自變量之前指定。
⑥在只有諸如輔助功能但無移動指令的程序段中不能調用宏程序。
⑦局部變量(自變量)只能在G66 程序段中指定。注意,每次執行模態調用時,不再設定局部變量。
三、案例講解
以拋物線和橢圓加工為例!
先就這樣吧!
閱讀更多 數控張老師 的文章