「數控宏程序應用」:通過實例淺析循環控制技巧

今天,有位頭條朋友從網上得個程序,結果出錯不管用,請我幫忙改一改,我就拿此例淺析下宏程序循環控制的一點小技巧。

不少人對宏程序很感興趣,但又苦於找不著入門之路覺得很難,這是因為他們長期編寫固定G代碼程序而造成的影響。宏程序事實上有點類似於計算機編程語言,雖然相較後者要簡易也簡單的多,但同樣是種以邏輯為主具有一定運算功能的語言,這有別於固定G代碼程序。

固定G代碼程序的執行順序是嚴格遵守先讀先執行,當然也可以通過巧妙的構造來實現跳轉、分支、循環與嵌套,但總體框架結構還是順序語言,即先做什麼就先寫,後做什麼就後寫,不需要複雜的邏輯考量。而宏程序則有所不同,雖然它讀程序時也是先寫先讀先執行,但全篇最終執行順序不一定是先寫的就一定先執行後寫的就一定後執行,而是由你編寫的邏輯進行控制的。所以,你學宏程序必須得先有以上的邏輯意識。好,我通過以下例子加以說明:

題目是:

要鑽一排孔,孔間距為40, 總長為360 (共10個孔)。

原程序大致如下:

「數控宏程序應用」:通過實例淺析循環控制技巧

此程序思路可以說是很清晰的,問題在於受順序語言干擾太嚴重,沒有邏輯思維方式。上述程序結果是:只鑽第一個孔,並且是反覆死循環地鑽。

我分析如下:

1、 此程序有兩層嵌套循環,最內層是控制鑽孔動作,控制參數是#1,判定條件是達到指定深度-5,即 #1=0.0 初始, 最終#1=#3 (#1=#1-1);

2、 外層循環是控制孔位,控制參數為#4,判定條件是達到指定長度360,

即 #4=0.0 初始, 最終#4=#5 (#4=#4+40);

以上兩套循環框架是沒問題的,問題出於邏輯順序。對於外層循環而言,第一次按順序執行沒問題,但當#4=#4+40後進行跳轉至N1時,#1至#4參數又重新賦值了一遍,等於又回到了初始條件。這就成了死循環而且始終在第一孔位置處。

所以,記住:

1、 控制循環的參數初始賦值語句是不能包含在本循環體內,因為在本循環體內,此參數是要進行累加運算用於邏輯判斷循環何時結束。你不斷重新賦初始值,它何時才能達到你設定的條件?

2、 循環嵌套方式可以多樣,但每層循環是不能干涉的,即內外層循環不能交叉。

3、 最重要一點是:每層循環的控制參數初始賦值語句位置是有講究的,不是按順序隨便堆砌的。(這點是很多初學者感到頭疼的事,沒法,只有不斷練習吧。)

以下是我修改的程序並加以說明初始值賦值位置說明:

「數控宏程序應用」:通過實例淺析循環控制技巧

好,本節關於循環控制的內容結束,歡迎有問題的朋友加我微信提問題,只要我會也不太費時,我就幫忙嗨。


分享到:


相關文章: