數控宏程序有兩大主要語句:
一,IF…..GOTO語句
二,WHILE…..DO語句
1,IF…..GOTO語句:
直觀意思是:如果...就跳轉到哪(或者是做什麼事)。
我們不妨用這個格式來造句,如果福布斯有我的名字,那麼 我就不上班了;
如果 我看過清風的宏教程,那麼我還會看他的其他教程!
這類語句都有一個共同點:“如果”的後面會跟著一個條件!
根據這個條件,決定我做什麼事!
所以很多書中都這麼介紹此語句:IF[條件成立]GOTO
那麼我們用一個小程序來詳細的解釋下這語句。
%
O0001
#1 = 10
N10 #2 = 20
IF[#2 EQ 20] GOTO10
G0 X100.
Z100.
.......
M30
%
上面這個IF語句是什麼意思呢? 它表示:如果#2這個變量的值等於20的話,就跳轉到第10號程序段。可能有人會問“GOTO10”後面的10表示什麼意思。
其實這個10表示行號。數控的程序一般都有行號的,如果沒有,那是系統參數設定的事,不過你只要知道有行號就行。
還有人會問 EQ 是什麼意思,這個是英文EQUAL的簡寫,含義是等於的意思。
對於新手,建議掌握以下幾個常用的符號(如下表):
所以都這裡我們不難理解上面判斷語句的意思了:如果#2等於20,就跳轉到第10號段。由於#2是等於20的(因為在賦值的時候,#2=20),所以條件成立,就跳到了第10號段執行。
我們都知道數控程序一般是從上往下執行的,那麼我們這跳到了第10行,接著往下執行時又遇到了IF判斷語句,於是有開始判斷#2是不是等於20,結果等於!於是又成立了,繼續跳到第10行。所以,這個程序是死循環,永遠不會結束。
說到這,細心人會發現一個問題:條件成立了,會執行GOTO語句,那要是不成立,程序會怎麼辦? 其實很簡單,不成立就往下面走。也就是說如果不成立,就執行G0X100. 的程序段,直到程序運行至M30結束!
總結:如果條件成立,就執行GOTO語句,你寫的行號是多少,它就跳到那個行;要是條件不成立,那麼就執行IF下面的語句,不執行GOTO語句!
另外再說一個與教程不相關的問題。
數學不好,能不能學。
首先這個問題,我的答案是:能學!
宏,說的直白點是靠邏輯思維能力。不是懂了微積分才能學好它,這是兩碼事。但有些程序確實需要點數學知識,比如三角函數,勾股定理。其實宏用到的數學知識真的不多。很多人看到什麼橢圓,或者拋物線的方程覺得很可怕,這個不懂那個不懂。這裡我要說一句,你懂不懂它的方程,不重要,重要的是你怎麼去理解它的加工過程。(曲線類的加工會在我的提高教程中講解,這裡不贅述,而且曲線類的宏,是非常簡單、小兒科的。只要記住:數學不好,照樣玩轉宏。)
2,WHILE…..DO語句:
看到這個語句,還是老樣子,先直觀翻譯下:當.....就執行某某代碼段。
和IF語句差不多,這個語句也是用來做條件判斷的,但WHILE.....DO自身沒有跳轉的功能。
那麼這個語句該怎麼用?我們是造句說明吧,“當年薪達到100W的時候,我就可以買跑車”。這裡“年薪達到100W”是條件,如果條件達到了100W,我就執行買跑車這個想法。就這麼簡單的邏輯!
下面我們用一個程序來解釋它
%
O0002
#1 = 20
#2 = 20
WHILE[#1 EQ #2] DO1
GO X50. Y50.
G0 X0.Y0.
END1
G0X100.
Z100.
.......
M30
%
上面這個程序段的意思是:當#1和#2的值相等,那麼就執行DO1與END1之間的程序。有人會問一個問題:END1是什麼東西。DO後面的 1 又是什麼東西?這裡呢要說明一下,WHILE語句一定要和 END 結合使用。因為END是它的目標地址。就像IF語句裡的行號一樣,是個目的地!那麼END和DO 後面各有一個1,我們就白話的理解為第一層循環的意思。
如果這裡DO後面跟的是2,而END後面跟的是1,那麼程序將報警,因為DO2找不到與之匹配的END2!所以DO和END後面的數字,一定要匹配!前面說到第一層循環,因為宏是支持循環嵌套的,這個知識點系統教程會著重的講解,這裡不贅述。
現在我們分析下上面的程序段。
由於#1和#2在初始賦值的時候都是20,所以#1和#2是相等的。程序在執行WHILE語句時,它會判斷中括號裡的#1和#2是不是相等,如果相等,就執行DO1與END1之間的程序;
反之如果#1和#2不相等,那麼就不執行 DO1 與 END1 之間的程序,而是往END1下面的程序走,執行G0X100. 直到程序運行至M30結束!
講到這,很多朋友會發現WHILE和IF其實一樣的,只不過格式不同、目的地的表示方法不同而已。
宏語句先分享到這裡,分享的越多收穫的越多,歡迎轉載分享給你的好友。
閱讀更多 鄒軍愛數控 的文章