當乙個主程式內,有一些固定的程式指令組(如:開槽,銑圓等),某段程式須來回重複執行,這時可將它們編成子程式,而在主程式中可對這段程式進行呼叫,如此在程式設計時可簡化程式,不用重複編寫一段一樣的程式,使主程式的結構更簡潔、清楚,減少工具機記憶體的使用,提高程式設計效率。乙個子程式也可呼叫另一子程式,這種情況稱之謂子程式套子程式。
1.子程式的結構
子程式的組成,依下列格式程式設計:
o0006…………… 子程式編號
n1………………程式內容
n2………………程式內容
nn m99…………子程式結束
即子程式以字母o(注意不是數字零0)為開始,其後跟數字,為子程式名編號。在上例中即為06。子程式的結束以m99為結束符。
2.子程式的執行
子程式必須在主程式呼叫時才能被執行。子程式的呼叫格式如下:
m98 p_________l_________
字母p後所跟的數字就是需呼叫子程式的程式號,l後的數字是子程式呼叫次數,如l沒有被指定時,子程式僅執行一次。
例:m98 p0006……… 執行0006子程式一次。(在呼叫子程式時,p---後面直接 輸需呼叫子程式的程式號,不用加字母o)
m98 p0006 l12……執行0006子程式12次。
3.子程式的位置
在編加工程式時,如果需要用子程式呼叫功能,則子程式一般寫在主程式之後,兩者在乙個加工程式裡。如下所示:
o0001(主程式,程式號)
m6t1 (主程式)
g90g55 (主程式)
m03s2000 (主程式)
g43g00x0y0z100.h1(主程式)
g00z1 (主程式)
m98p0006l9 (呼叫子程式並迴圈9次)
g00z100. (主程式)
m30 (主程式)
如在乙個加工程式中有多個子程式,子程式必須都在主程式之內,而子程式之間的呼叫順序可以是任意的。
4.子程式程式設計時的注意事項
(1)在子程式中可以繼續呼叫其它子程式,既子程式可以套呼叫。有些
系統規定子程式套用最多為十層。
(2)子程式不能遞迴呼叫。所謂遞迴呼叫就是在子程式中有自己呼叫自己的
語句,或者是子程式1呼叫子程式2,在子程式2中又呼叫子程式1,當出
現 這種情況時也是間接的遞迴呼叫。
例:如下圖所示需要加工三道寬20mm深26mm的槽,每刀切深1mm,銑槽程式需要重複編寫26次。三道槽需要重複編寫78次。如果使用子程式則只需要1編寫次就可以了,使用φ20銑刀。程式如下(圖畫的有點簡易見諒)
主程式:
g90g55
m03s800
g43g00x-50.y-86.z50.h1(快速定位到第乙個槽安全下刀位置)
g00z0.
m8m98p0006l13(第乙個槽,呼叫子程式,並迴圈13次)
g00z5.
x0.y-96.(第二槽的下刀位置)
z0.m98p0006l13(第2個槽,呼叫子程式)
g00z5.
x50.y-96.(第三槽的下刀位置)
z0.m98p0006l13(第3個槽,呼叫子程式)
g00z100.
m30(程式結束)
子程式:
o0006(子程式號)
g91g01z-1.f1000(每次下刀1mm)
g90g01y86.f200
g91g01z-1.f1000
g90y-86.f200
m99(程式迴圈)
注:子程式編寫每迴圈一次銑深2mm,圖紙要求銑深26mm所以迴圈l13次。
如果銑深是單數比如25mm,可以把程式z0.改為z1.來解決。
(如有錯誤的地方歡迎指正,謝謝)
子程式呼叫與巨集定義的異同 巨集與子程式的區別
巨集和子程式都是為了簡化源程式的編寫,提高程式的可維護性,但是它們二者之間存在著以下本質的區別 1 在源程式中,通過書寫巨集名來引用巨集,而子程式是通過 call 指令來呼叫 2 匯程式設計序對巨集通過巨集擴充套件來加入其定義體,巨集引用多少次,就相應擴充套件多少次,所以,引用巨集不會縮短目標程式 ...
MySQL C API的一次呼叫體驗
mysql提供了標準的c api,rpm import rpm gpg key centos 5 執行後,果然非常ok了,安裝完mysql devel後,在 usr include mysql下可發現mysql的標頭檔案,usr lib mysql下可以發現mysql的庫檔案 這是我們編譯和連線所需...
解決js定時呼叫ajax只請求一次的問題
1 在使用 ajax get方法定時請求資料實時檢測結果的時候,發現取出的資料沒變化,經常反覆測試確認發現,該問題只在 ie 瀏覽器下會發生。沒錯,又是 ie!1 原來是 get 請求在ie瀏覽器中會被快取,從第二次請求開始,一直都是請求快取。2 參考資料 get 對比 post1 變更請求方式為p...