




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、宏基礎(chǔ)知識(shí)(車工學(xué)習(xí)資料)NO1. 宏代碼相信自己看過宏書籍的人車工朋友,你們一定會(huì)見到很多的猶如#1、#2、#3.#100等宏變量。那么這些 # 和后面的1、2、3、4.數(shù)字標(biāo)識(shí)到底什么關(guān)系?讓我們用最白話的方式理解他吧。這些#號(hào),他是宏代碼,1、2、3.是區(qū)分這些宏代碼的標(biāo)記。什么意思呢,舉個(gè)最簡(jiǎn)單的例子:如果有三個(gè)人,他們的名字叫 小李、小李、小李。那么當(dāng)A呼叫小李的時(shí)候,會(huì)發(fā)生一個(gè)問題,這三個(gè)人都會(huì)回答,但A呢,其實(shí)只想喊其中的一個(gè)。這就分不清了。同理,#1 #1 #1 ,如果后面的數(shù)字都是一樣,當(dāng)系統(tǒng)使用#1的時(shí)候,它也會(huì)發(fā)生糊涂,到底讓我用哪個(gè)呢?所以為了區(qū)分它們,就把后面的數(shù)字寫
2、成不同的,比如#1,#2,#3。此時(shí)如果系統(tǒng)使用#1,就不會(huì)發(fā)生混亂了。當(dāng)然了,標(biāo)示數(shù)字的不同,宏變量的意義也不同,分局部變量、公共變量、系統(tǒng)變量等等,就目前來說,我們使用的是局部變量,能把它用好就不錯(cuò)了,基礎(chǔ)打好了再說!宏變量的目前就介紹到這,本來不該介紹,因?yàn)楹芎?jiǎn)單,但以前就遇到過這么一個(gè)人,問我#1,#2,#3,#4。這后面的1,2,3,4是什么意思- -! 所以為了掃盲,我只好再寫一次而且相對(duì)白話一點(diǎn)。知道就行,不要深究。NO2. 賦值的概念這所謂賦值,我們可以這么理解:我本來很窮,突然有一天有人給我100塊!那么此時(shí)此刻,這100塊就是我的了,因?yàn)樗o我了!這個(gè)“給我”的過程,就稱為
3、賦值。那么在宏里面怎么賦值呢?我們看一個(gè)賦值的語(yǔ)句就理解了:#1 = 100 這就稱為賦值!他的意思是把100這個(gè)值給了#1。那么#1在不發(fā)生運(yùn)算的情況下,他的結(jié)果就是100。也就是說#1此后代表100!如果有一個(gè)程序語(yǔ)句:GO X100 那么宏語(yǔ)句GOX#1 與其等同。下面舉個(gè)稍大的例子:#1 = 10 #2 = 20#3 = 30G0 X10 Z-20 F30 = GO X#1 Z-#2 F#3 以上已經(jīng)詮釋了賦值,以及最基本的宏語(yǔ)句應(yīng)用。如果上面這個(gè)例子看不懂,建議你不要學(xué)了;若看得懂,那么我們繼續(xù)。NO.3 宏變量的運(yùn)算優(yōu)先級(jí)首先,什么叫運(yùn)算優(yōu)先級(jí)?我有一位50多歲的學(xué)員對(duì)這個(gè)不太理解
4、。相信年紀(jì)輕的應(yīng)該沒這個(gè)問題。所謂運(yùn)算優(yōu)先級(jí),就是加減乘除先算哪個(gè),后算哪個(gè)。如果有括號(hào),就先算括號(hào)里面的等等。這個(gè)我不想贅述多少了,小學(xué)的東西。但我依然要舉個(gè)例子,以適應(yīng)剛接觸宏的朋友。例: 假設(shè) #1 = 100,#2 = 10,#3 = 50,#4 = 20那么 #1 - #2 * #3 + #4 = ?#1/#2 = ?#3/#2*#4 = ?(#1-#3)/#2 = ?以上三個(gè)運(yùn)算表達(dá)式的結(jié)果分別是:-380、10、100、5 相信也沒什么問題吧。關(guān)于運(yùn)算優(yōu)先級(jí)就到這,實(shí)在沒什么好講的,僅僅就是用了宏代碼運(yùn)算而已。NO.4 IF.GOTO語(yǔ)句講到這,我們終于迎來了有意義的一節(jié)。這一節(jié)
5、的知識(shí)點(diǎn)將伴隨著所有學(xué)習(xí)宏程序的人。而且永遠(yuǎn)都離不開這兩個(gè)語(yǔ)句。所以一定要理解透徹!IF.GOTO語(yǔ)句,直觀意思是:如果.就跳轉(zhuǎn)到哪(或者是做什么事)。我們不妨用這個(gè)格式來造句,如果 福布斯有我的名字,那么 我就不上班了;如果 我是看此貼的人,那么 我一定會(huì)留言的! 等等。這類語(yǔ)句都有一個(gè)共同點(diǎn):“如果”的后面會(huì)跟著一個(gè)條件!根據(jù)這個(gè)條件,決定我做什么事!所以很多書中都這么介紹此語(yǔ)句:IF條件成立GOTO 那么我們用一個(gè)小程序來詳細(xì)的解釋下這語(yǔ)句。#1 = 10N10 #2 = 20IF#2 EQ 20 GOTO10G0 X100Z100.上面這個(gè)IF語(yǔ)句是什么意思呢? 他表示:如果#2這個(gè)變
6、量的值等于20的話,就跳轉(zhuǎn)到第10號(hào)程序段。可能有新人會(huì)問“GOTO10” 后面的10表示什么意思。其實(shí)這個(gè)10表示行號(hào)。數(shù)控的程序一般都有行號(hào)的,如果沒有,那是系統(tǒng)參數(shù)設(shè)定的事,不過你只要知道有行號(hào)就行。還有人會(huì)問 EQ 是什么意思。這個(gè)我建議去看看書,里面有釋義的。對(duì)于新手,建議掌握以下幾個(gè)常用的符號(hào):GT 大于GE 大于等于LT 小于LE 小于等于EQ 等于NE 不等于以上的記住了,也夠用一會(huì)了。其他的自己看書。所以都這里我們不難理解上面判斷語(yǔ)句的意思了:如果#2等于20,就跳轉(zhuǎn)到第10號(hào)段。由于#2是等于20的(因?yàn)樵谫x值的時(shí)候,#2=20),所以條件成立,就跳到了第10號(hào)段執(zhí)行。我們
7、都知道數(shù)控程序一般是從上往下執(zhí)行的,那么我們這跳到了第10行,接著往下執(zhí)行時(shí)又遇到了IF判斷語(yǔ)句,于是有開始判斷#2是不是等于20,結(jié)果等于!于是又成立了,繼續(xù)跳到第10行。所以,這個(gè)程序是死循環(huán),永遠(yuǎn)不會(huì)結(jié)束。說到這,細(xì)心人會(huì)發(fā)現(xiàn)一個(gè)問題:條件成立了,會(huì)執(zhí)行GOTO語(yǔ)句,那要是不成立,程序會(huì)怎么辦? 其實(shí)很簡(jiǎn)單,不成立就往下面走。也就是說如果不成立,就執(zhí)行G0X100 Z100的程序段??偨Y(jié):如果條件成立,就執(zhí)行GOTO語(yǔ)句,你寫的行號(hào)是多少,它就跳到那個(gè)行;要是條件不成立,那么就執(zhí)行IF下面的語(yǔ)句,不執(zhí)行GOTO語(yǔ)句!(WHILE.DO語(yǔ)句的語(yǔ)義、變量的自增自減NO1. WHILE.DO語(yǔ)
8、句看到這個(gè)語(yǔ)句,還是老樣子,先直觀翻譯下:當(dāng).就執(zhí)行某某代碼段。和IF語(yǔ)句差不多,這個(gè)語(yǔ)句也是用來做條件判斷的,但WHILE.DO自身沒有跳轉(zhuǎn)的功能。那么這個(gè)語(yǔ)句該怎么用?我們是造句說明吧,“當(dāng)年薪達(dá)到100W的時(shí)候,我就可以買跑車”。這里“年薪達(dá)到100W”是條件,如果條件達(dá)到了100W,我就執(zhí)行買跑車這個(gè)想法。就這么簡(jiǎn)單的邏輯!下面我們用一個(gè)程序來解釋它例:#1 = 20#2 = 20WHILE#1 EQ #2 DO1GO X50 Z50G0 X0 Z0END1G0X100Z100.上面這個(gè)程序段的意思是:當(dāng)#1和#2的值相等,那么就執(zhí)行DO1與END1之間的程序。有人會(huì)問一個(gè)問題:END
9、1是什么東西。DO后面的 1 又是什么東西?這里呢要說明一下,WHILE語(yǔ)句一定要和 END 結(jié)合使用。因?yàn)镋ND是他的目標(biāo)地址。就像IF語(yǔ)句里的行號(hào)一樣,是個(gè)目的地!那么END和DO 后面各有一個(gè)1,我們就白話的理解為第一層循環(huán)的意思。如果這里DO后面跟的是2,而END后面跟的是1,那么程序?qū)?bào)警,因?yàn)镈O2找不到與之匹配的END2!所以DO和END后面的數(shù)字,一定要匹配!前面說到第一層循環(huán),因?yàn)楹晔侵С盅h(huán)嵌套的,這個(gè)知識(shí)點(diǎn)會(huì)著重的講解,這里不贅述?,F(xiàn)在我們分析下上面的程序段。由于#1和#2在初始賦值的時(shí)候都是20,所以#1和#2是相等的。程序在執(zhí)行WHILE語(yǔ)句時(shí),他會(huì)判斷中括號(hào)里的#1
10、和#2是不是相等,如果相等,就執(zhí)行DO1與END1之間的程序;反之如果#1和#2不相等,那么就不執(zhí)行 DO1 與 END1 之間的程序,而是往END1下面的程序走,執(zhí)行G0X100 Z100代碼!講到這,很多朋友會(huì)發(fā)現(xiàn)WHILE和IF其實(shí)一樣的,只不過格式不同、目的地的表示方法不同而已。但這里要說一點(diǎn):WHILE能做到的,IF一定可以做到;而IF能做到的,WHILE不一定能做得到(具體例子在后期的帖子講解)。而且IF語(yǔ)句比WHILE語(yǔ)句靈活,強(qiáng)大!作為前期,我們了解到這就可以了。NO2. 變量的自增自減如果你看到了這里,請(qǐng)集中注意力!自增自減的運(yùn)算說簡(jiǎn)單也簡(jiǎn)單,說難也難。更何況我是用文字表述,
11、所以表達(dá)上面也有一定的制約!所以各位跟著我的思路走方可。我們一直提到變量,變量,變量。那么什么是變量呢?通俗的說,變量是一個(gè)會(huì)變化的量。與之對(duì)應(yīng)的是常量。常量比如:1,2,100,89等等阿拉伯?dāng)?shù)字。在程序里,變量我們是用 # 代碼來表示的。比如#1 = 10 這里#1是代表了10,但是他可不是永遠(yuǎn)都是10。至于為什么,這就是我要講的地方。我們先看一個(gè)小程序段:例: #1 = 10#1 = #1 - 1G0X#1.首先GO X#1,此時(shí)此刻的#1是9,而不是10!Why?因?yàn)?1做了一個(gè)自減運(yùn)算。在曲線加工中,專業(yè)術(shù)語(yǔ)叫 步距 。它怎么稱呼并不重要,重要的是我們要理解它!下面我們來分析新手們郁
12、悶的問題:#1 = #1 - 1 等號(hào)左邊的#1(下文簡(jiǎn)稱左),怎么可能和右邊的#1(以下簡(jiǎn)稱右)做運(yùn)算呢?因?yàn)樽约翰荒芎妥约哼\(yùn)算。就像10 = 10 - 1 這怎么可能呢?其實(shí) #1 是個(gè)代號(hào)而已,不是常量。既然#1是個(gè)代號(hào),那么他里面的值是可以改的。上面的#1 = #1 - 1,其實(shí)等價(jià)于9 = 10 - 1 ! 只不過9和10用的是同一個(gè)#1而已,但結(jié)果是不同的。由于這里#1只做了一次運(yùn)算,所以#1最終的值就是9 如果再執(zhí)行一次,那么就變成了8 = 9 - 1 !因?yàn)榇藭r(shí)此刻右邊的#1保存的是上一次經(jīng)過運(yùn)算后的值(也就是9),那么左邊的自然而然就是8了。如果再有一次計(jì)算,那么就是7 =
13、8 - 1 ! 以此類推??偟膩碚f要記?。鹤兞康闹凳菚?huì)變化的!下面我們用一個(gè)實(shí)例來看下這個(gè)自增或自減的運(yùn)算。例:#1 = 5#2 = 10N1 #1 = #1 + 1 /由于這里#1經(jīng)過運(yùn)算了,所以左邊的#1是6,不是5了!IF#1 LT #2 GOTO1 /如果#1小于#2,那么就跳轉(zhuǎn)到第1行程序段GOX100Z100.上面這個(gè)程序段的意思是:讓#1不斷的做自增1運(yùn)算,也就是說從5開始,每次加1,一直加到不小于10。一旦#1的值 大于或者等于10,那么條件就不滿足了,就會(huì)執(zhí)行G0X100 Z100 程序代碼!如果你新手,還會(huì)被一個(gè)問題困擾:IF#1 LT #2 這里的#1,每次循環(huán)后的值是多
14、少呢?答案是:第一次這里的#1是6,第二次7,第三次8,第四次9,第五次10 。當(dāng)?shù)搅说?次是,#1的值是10,而10是不小于10的(一定要小于10才跳轉(zhuǎn)!),所以此刻的IF條件不滿足了,就執(zhí)行G0 X100 Z100代碼段了。這就是自增(自減)。1 外圓車削宏例子。目的在于強(qiáng)化IF語(yǔ)句和WHILE語(yǔ)句的使用等2 介紹自變量和因變量3 曲線類的宏程序編制 (第一階段) NO.1 外圓車削宏例子由于我不從事機(jī)械行業(yè),所以沒什么畫圖軟件。將就一下,能看懂就好首先,要求是加工這個(gè)零件,直徑從100MM車削到30MM,長(zhǎng)度為60MM。這里說明一下,這樣的零件可以用外圓循環(huán)來做,用不到宏。之所以用宏來寫
15、,是為了各位更能透析的理解它,畢竟,咱才剛開始,好玩的在后面。所以,各位不要糾結(jié)于這個(gè)問題。宏能做的事,循環(huán)指令可不一定做得到。寫這個(gè)零件的宏程序之前,我們先來個(gè)最普通的程序:程序頭、刀具號(hào)等等略。各位不要討論以下程序的切削參數(shù),因?yàn)檫@不是本篇帖子的重點(diǎn)一刀車削2MM(直徑值)G0 X100 Z2 G01 Z0 F0.2Z-60 (空刀就空刀吧,我勤勞)G0 X102Z2X98G01 Z-60G0 X102Z2X96G01 Z-60 GO X102Z2X94G01 Z-60.不寫了,這個(gè)零件的程序大概就這樣。到了這,我們要分析了:這個(gè)程序,只有X向在不斷的變化,而其他沒變。比如Z的值,定位點(diǎn)等
16、等都沒變。那么我們可不可用一個(gè)變量來表示X呢?當(dāng)然可以!假設(shè)我們給#1賦值為100,讓他每次循環(huán)自減2,然后加個(gè)判斷語(yǔ)句,看到?jīng)]到30。這不就可以完成上面一大堆程序所做的是么!到這里,你應(yīng)該感到宏有多么奇妙了,呵呵。下面直接上程序:老規(guī)矩了,程序號(hào)什么的都略G0 X100 Z2#1 = 100 /X向的初始值。因?yàn)閳D紙上是100。當(dāng)然也能賦其他值,這里不深究,時(shí)候未到。WHILE#1 GE 30 DO1 /這里用WHILE語(yǔ)句,因?yàn)榍捌玫腎F,其實(shí)都一樣了G0 X#1G01 Z-60G0 X#1+1Z2#1 = #1 - 2END1G0X100Z100程序到這里已經(jīng)結(jié)束了。下面我們分析下程序
17、工作的步驟:1 當(dāng)程序到了#1 這,系統(tǒng)知道#1 = 100,因?yàn)橘x值了。2 執(zhí)行到WHILE時(shí),系統(tǒng)判斷了下,發(fā)現(xiàn)#1 是大于等于 30的,所以他就執(zhí)行DO1和END1之間的程序3 既然執(zhí)行DO1和END1之間的程序,所以就執(zhí)行了G0 X#1 .一直到#1 = #1 - 2。走到這一步,#1其實(shí)已經(jīng)從100變成了98(原因在第二篇講過),最后到了END14 到了END1,程序重新返回到WHILE語(yǔ)句,并且判斷#1是不是滿足條件,結(jié)果發(fā)現(xiàn)#1(98)依然大于等于30,所以就繼續(xù)執(zhí)行DO1與END1之間的程序。然后就又做了一遍上面的過程。不過每做一次,#1的值就發(fā)生了變化。一直到條件不滿足!一旦
18、條件不滿足,說明已經(jīng)加工完畢了以上是分析了程序的執(zhí)行過程,同時(shí)也是刀具的走到軌跡。接下來我們來分析一個(gè)非常重要的問題:GT 和 GE 的區(qū)別!相信這個(gè)問題,不少會(huì)宏的人都不好答。GT 大于GE 大于等于如果把上面程序的條件改為#1 GT 30,知道會(huì)發(fā)生什么事嘛?答案是:沒車完,留了2MM余量!為什么?看分析:假設(shè)我們#1的值經(jīng)過自減已經(jīng)從100變化到了32,那么用GT的時(shí)候,程序這么判斷:32大于30,成立!所以執(zhí)行DO和END之間的代碼,G0 X#1(32) Z-60.在這個(gè)代碼里#1會(huì)再次經(jīng)過計(jì)算,最后成了30,到了END這一步,會(huì)返回到WHILE這一行繼續(xù)判斷,發(fā)現(xiàn)30不大于30了,不
19、成立!一旦不成立,就不執(zhí)行DO和END之間的程序,而是執(zhí)行了G0 X100 Z100!好像沒什么問題,但各位要看清楚,最后一刀是切在了32MM處!雖然#1最后是30,但這個(gè)數(shù)值沒有被執(zhí)行!而用GE(大于等于)就不會(huì)有這個(gè)問題,當(dāng)#1成30,返回到WHILE判斷的時(shí)候,發(fā)現(xiàn)30雖然不大于30,但卻等于30,于是條件依然成立,成立就執(zhí)行DO和END之間的代碼,于是就有了G0 X#1(此刻是30了) Z-60. 于是到了#1自減時(shí),#1成了28并返回到WHILE這一行并做判斷,20不大于等于30,所以不成立,于是退刀。但這里我們會(huì)發(fā)現(xiàn),最后一刀切在了30MM處!這就是GT和GE的區(qū)別,LT和LE也一
20、樣。不再贅述。以上通過一個(gè)簡(jiǎn)單的外圓宏,初步的理解了宏語(yǔ)句的工作過程以及判斷依據(jù)。后期會(huì)繼續(xù)介紹,離不開的!第一個(gè)節(jié)點(diǎn)就到這吧。NO.2 自變量和因變量第二小節(jié)的知識(shí)點(diǎn)不多,僅僅是為了后期的曲線類編制做鋪墊,為了掃盲,沒其他了。我們還是白話的理解,所謂自變量,就是自己不斷變化的量。所謂因變量,就是因?yàn)槠渌兞康淖兓?,而自己跟著變化。比?X = Y + 10 如果Y等于5,X就等于15;如果Y等于10,X就等于20。那么這里的Y就是自變量,而X就是因變量。因?yàn)閄的結(jié)果是根據(jù)Y的值而變化的。這就是因變量和自變量的概念。夠白話了。N0.3 曲線類的宏程序編制 (第一階段) 到了這一部分,熱血沸騰了
21、。因?yàn)楹芏喟捎讯荚趩栠@個(gè)橢圓怎么編,那個(gè)雙曲線、阿基米德螺旋線、正弦曲線等等怎么弄。其實(shí)這些曲線都是最基本的,可以說是宏基礎(chǔ)。之所以眾多人沒看懂,那是因?yàn)闀膯栴},講的模棱兩可!現(xiàn)在我們就來看看這曲線的宏到底什么意思,到底該怎么編才爽!縱觀宏程序的書,凡是談到數(shù)車宏都是從橢圓入手,以它為例。那么本貼也不革新,也從橢圓切入,看看它到底有多么的玄乎 - -!此貼僅介紹第一階段:方程的化簡(jiǎn)這里用標(biāo)準(zhǔn)方程做講解,參數(shù)方程到下一篇再講說到方程,我在第一篇講過,數(shù)學(xué)好不好和這關(guān)系不大。但是數(shù)學(xué)再差,也得會(huì)化簡(jiǎn)方程,所謂化簡(jiǎn)就是定義自變量和因變量。下面我們看一個(gè)橢圓方程,并把它化簡(jiǎn)(無論什么方程,都需要定義
22、出自變量和因變量,如果給你化簡(jiǎn)好了,那自然是好事)。我們先看這個(gè)方程,我們只要知道X Z是某個(gè)點(diǎn)的坐標(biāo)而已,其他的不要知道?,F(xiàn)在我們假設(shè)把 X 定義為因變量,Z定義為自變量。那么當(dāng)Z的值變化了,X的值也會(huì)變化。這個(gè)概念應(yīng)該沒問題了吧。我們的目的是把X單獨(dú)拿出來,所以要分步進(jìn)行:1 把X這一大塊做一個(gè)整體,那么。這一步應(yīng)該沒問題。就像 3 + 2 = 5,那么2 = 5 - 3。 只不過我們移動(dòng)的是一個(gè)整體而已2 既然已經(jīng)把X這個(gè)整體移了出來,那么現(xiàn)在的工作就是把分母去掉,僅僅留X這一塊。根據(jù)數(shù)學(xué)定理,我們?cè)趦蛇呁瑫r(shí)乘以B2,就可以去掉右邊的分母了。如圖3 現(xiàn)在剩下X的平方,但我們要的X,所以還
23、要去平方。去平方就簡(jiǎn)單了,直接對(duì)右邊開根號(hào)就行。如圖 。到了這一步,其實(shí)已經(jīng)可以了。但為了程序的可讀性,還可以繼續(xù)化簡(jiǎn),就是把B的平方,從根號(hào)拿出來,所以,最終的化簡(jiǎn)應(yīng)該如下 化簡(jiǎn)已經(jīng)完成。其實(shí)我們不難發(fā)現(xiàn),所以的因變量就是未知數(shù)的意思。而自變量就是已知數(shù)。假設(shè)a、b的值是固定的,那么當(dāng)Z的值變化了,X的值肯定變化。因?yàn)樗麄兇嬖谝粋€(gè)等式關(guān)系。橢圓為例的宏程序(第二節(jié))在第一節(jié),我講解了化簡(jiǎn)以及化簡(jiǎn)的目的。不論以后做到什么曲線,都需要化簡(jiǎn)。拋物線也好,漸開線也罷,至少你要定義出自變量和因變量。這樣才能編制它的程序。那么第二節(jié)我主要介紹橢圓的相關(guān)參數(shù)。其實(shí)這些我本也不該講。但部分吧友的基礎(chǔ)真的很差
24、,所以這里也是掃盲。以后遇到拋物線或者其他曲線,建議先看下曲線的定義,不求甚懂,但至少要知道方程的某個(gè)值或者符號(hào),代表的是什么!說到橢圓,和我們宏相關(guān)的參數(shù)就兩個(gè):長(zhǎng)半軸和短半軸!分別用字母 a、b 表示。那么什么是長(zhǎng)半軸,什么是短半軸呢?我們看圖說明:如圖,所謂長(zhǎng)半軸,我們可以通俗的理解為:橢圓圓心點(diǎn)0,到右邊點(diǎn)A的直線距離叫長(zhǎng)半軸!短半軸就是圓心點(diǎn)O到達(dá)B點(diǎn)的垂直距離。(不要摳字眼,也不要拿什么專業(yè)定義討論,這些不重要!)。前面也說過,a 表示長(zhǎng)半軸,b 表示短半軸。如果a = 10,b = 5 那么說明這個(gè)橢圓的長(zhǎng)半軸是10,短半軸是5 就這么回事。那么我知道長(zhǎng)、短半軸,能不能列出一個(gè)方
25、程呢?當(dāng)然可以!方程就是 不要問為什么等于1,對(duì)編程沒任何意義。這是數(shù)學(xué)大師們給我們定義好的,我們不需要花這個(gè)時(shí)間研究它。這里兩個(gè)分母a、b就是長(zhǎng)短半軸,Z和X 表示橢圓上某個(gè)點(diǎn)的Z和X坐標(biāo)。其實(shí)我們可以發(fā)現(xiàn),Z對(duì)應(yīng)的是長(zhǎng)半軸,X對(duì)應(yīng)的是短半軸。知道這個(gè),我們自己可以根據(jù)長(zhǎng)短半軸把一個(gè)橢圓方程列出來了。然后再普及一個(gè)只是,這里的Z和X,他們的取值范圍最大分別是他們的長(zhǎng)短半軸的值。我們這里a=10,b=5 所以這里Z和X取值最大分別是10和5 如果取值超出這個(gè)范圍,那么系統(tǒng)會(huì)報(bào)錯(cuò),因?yàn)檫@個(gè)方程不成立!說到這,我們可以想想,如果把X當(dāng)因變量,那么當(dāng)Z等于8的時(shí)候,X的值一定能求出來。那么當(dāng)Z等于4
26、,X的值也會(huì)被求出來,因?yàn)樗麄兇嬖诘仁疥P(guān)系。第二小節(jié)就到這,實(shí)在沒什么好講的了。NO.2 橢圓為例的宏程序(第三節(jié)) 講完方程的基礎(chǔ),這一節(jié)就要綜合使用前面三篇所有的知識(shí)了!在正式編制橢圓程序前,先講解下一個(gè)運(yùn)算符:平方根我們都看過第三篇,在方程化簡(jiǎn)時(shí)用到根號(hào)了。而在數(shù)控系統(tǒng)中,沒有根號(hào)這符號(hào)。但是有一個(gè)字符他可以表示根號(hào)SQRT 比如SQRT(4) = 2 SQRT(9) = 3 就這么簡(jiǎn)單!現(xiàn)在我們來用一個(gè)橢圓圖,來編制宏吧首先看到這個(gè)圖紙,我們要得到幾個(gè)信息:長(zhǎng)半軸是60,短半軸是20 有人會(huì)奇怪,這不是40嘛? 如果你覺得是40,說明基礎(chǔ)相當(dāng)差。不過沒關(guān)系,這也不重要!40是短軸,那么
27、短軸的一半不就是20么,所以稱為短半軸 - -! 那么長(zhǎng)半軸為60,長(zhǎng)軸就是120 - -!我們知道長(zhǎng)、短半軸,可以列出這個(gè)方程: 然后,我們把Z作為自變量,X作為因變量,就有了如下方程:。當(dāng)Z取了一個(gè)值,X就會(huì)被求出來了,這里的X和Z表示橢圓曲線上的某一個(gè)點(diǎn)的坐標(biāo),當(dāng)你的Z取60,那么對(duì)應(yīng)的X值就是0。 。試想一下,如果Z的值不斷地變化,那么X的值也跟著變化,最后用G01指令把這些小點(diǎn)連接起來,是不是可以做出橢圓了呢?!講到這,要介紹兩個(gè)“點(diǎn)”的概念:橢圓中心點(diǎn)和零件原點(diǎn)。零件原點(diǎn)一般取在零件的右端面中心,這樣就構(gòu)成了一個(gè)直角坐標(biāo)系。那么圖中的任何長(zhǎng)度方向數(shù)值,都是帶負(fù)號(hào)的!這個(gè)是基礎(chǔ)不再贅
28、述。橢圓中心點(diǎn)在X0 Z-60處。區(qū)別橢圓中心和零件原點(diǎn)是很重要的,很多學(xué)習(xí)宏程序的人會(huì)把這兩個(gè)點(diǎn)弄混淆!我們開始編制程序吧。先做零件切削刀路分析:首先這個(gè)零件我們加工順序是從右向左,那么刀具當(dāng)是從零件右端面起切,至最左端結(jié)束(這里不考慮裝夾)。 (只寫精加工)!T0101 S500M03G0X0Z2 G01Z0F150 #1=60 我們以橢圓長(zhǎng)半軸為自變量。這個(gè)值有正負(fù)之分。取決于需要加工的部分是在橢圓中心點(diǎn)的哪邊。這里取60,是因?yàn)閳D中橢圓要從最右端加工,而最右端的坐標(biāo)值相對(duì)于橢圓中心是60。因此長(zhǎng)半軸、短半軸的取值不是由零件原點(diǎn)決定,而是根據(jù)橢圓中心決定的,需格外注意?。?WHILE #
29、1 GE 0 DO1 / 這句話的意思是:如果#1的值大于等于60,那么就一直執(zhí)行DO1、END1里的程序段,直到不符合條件!#2=20SQRT1-#1*#1/60/60 / 此程#2表示橢圓短半軸,跟著長(zhǎng)半軸變化而變化。其實(shí)這一步就是我們上面化簡(jiǎn)的方程,只不過用了宏代碼格式表達(dá)而已。G01X#2*2 Z#1-60 / 這里是重點(diǎn)!我認(rèn)為這是宏程序的核心!這一步直接關(guān)系到程序的正確與否!首先說明為什么#2要乘以2。因?yàn)檫@里的#2表示短半軸,可以理解為零件X方向單邊值。那么在實(shí)際零件里,是雙邊的值才對(duì),所以要乘以2!重點(diǎn)是Z值!我們先想想,做這個(gè)零件,刀具肯定是從右向左加工的。也就是說Z值是從“
30、-1到-2再到-3一直到-60”的順序變化的。如果這個(gè)Z段改為”Z#1”那么會(huì)怎么樣? 我們發(fā)現(xiàn)他的第一刀在Z60處!因?yàn)?1=60!而我們加工時(shí)第一刀應(yīng)該在Z0!如果#1一直減小那么Z加工方向是對(duì)了,但值卻不對(duì)。他是從60一直加工到0。加工完我們就會(huì)發(fā)現(xiàn)根本沒做零件,走了空刀而已!那我們需要的是從0加工到-60。所以重點(diǎn)是怎么樣才能把他的第一刀定位在Z0!其實(shí)很簡(jiǎn)單,我們給他點(diǎn)“障礙”,在#1后面減去60。那么第一刀就會(huì)在Z0了。因?yàn)?0-60=0。好,我們看看對(duì)不對(duì)。第一刀Z0,第二刀Z-1(這里假設(shè)#1每次運(yùn)算后,減1)第三刀Z-2(程序Z58-60的緣故),我們就發(fā)現(xiàn)Z值和他的方向都是
31、對(duì)的!總而言之Z向的第一刀在你選擇加工的初始點(diǎn)上就可以了!如果把零件原點(diǎn)和橢圓中心原點(diǎn)設(shè)置在一起。那么Z段程序就應(yīng)該是“Z#1.這里面的奧妙自己摸索,已經(jīng)講的詳細(xì)了。#1=#1-1 /這程序段意思是#1每經(jīng)過一次運(yùn)算后遞減1。(一般遞減值不會(huì)這么大,0.1就可以了。只是這里取1是為配合上面的講解)END1G0X100Z100M30問題二:宏程序用不用得到這個(gè)問題呢我覺得沒法給一個(gè)肯定的回答。就我個(gè)人經(jīng)歷而言,以前常用,做數(shù)車的時(shí)候,公司做變螺距螺桿和異性螺紋等零件,這個(gè)不用宏的話很累。然后做加工中心,用的就更多了。但確實(shí)有些吧友用不到,這不是你的問題,而是公司的問題。因?yàn)楣镜幕钜话愣紗我?,?duì)
32、于一線操作的人來講,沒什么太復(fù)雜的零件。但是,難道我們學(xué)技術(shù)要根據(jù)公司的零件來定嗎?另外我做數(shù)控的時(shí)候,數(shù)車從不用CAM軟件編程,加工中心是能不用CAM,盡量不用CAM,除非遇到空間異形曲面不得已而用之。這里說一句狠話,我數(shù)車能用宏做的,CAM不一定能做的了,數(shù)車CAM能做的,我手工編程一定能做的了!所以,想要提高水平,建議先打好手工編程基礎(chǔ),當(dāng)然也包括宏。說句玩笑話,學(xué)會(huì)宏去裝B也可以的么 _問題三:宏有沒有等級(jí)劃分同樣的,等級(jí)劃分這個(gè)問題因人而異。就我個(gè)人而言,我是把所有曲線類的宏都劃分為入門,包括加工中心的三維空間曲面,比如空間正弦曲面等等,都是入門級(jí)!這可不是大話,因?yàn)檫@些曲線都有公式
33、,我們要做的就是把公式里的每一個(gè)小點(diǎn)用G01鏈接起來而已。然后是中級(jí)篇,中級(jí)主要包括大螺距螺紋的編制,比如梯形,矩形,鋸齒形,變螺距,圓弧螺紋,橢圓曲面螺紋等。高級(jí)的呢就有點(diǎn)不切實(shí)際,比如我朋友的波浪軸,三爪卡盤不加墊片不用任何工裝車偏心,或者怎么讓系統(tǒng)定期撞刀,定期撞卡盤等等,還有很多?;旧细呒?jí)的宏用來踢館或者裝B用。至少我是這么玩的 _ 所以我很討厭有人跟踢我,如果來踢我了,那就搞定我的波浪軸吧。搞不定,就老實(shí)的回去 _ 問題四:有吧友私信我后期會(huì)不會(huì)收費(fèi)說到收費(fèi)今天還有個(gè)小插曲,但過去了。我也希望這是誤會(huì)。我寫的東西是共享的,不收費(fèi),同時(shí)也是原創(chuàng)。以上是我收集了幾個(gè)有代表性的問題,只能
34、做簡(jiǎn)單的解答。下面我們言歸正傳!細(xì)心的吧友會(huì)發(fā)現(xiàn),為什么這篇不是第五篇,而是4 - 1 呢?因?yàn)槲矣X得第四篇的橢圓講解的不夠細(xì)致,那是我很早之前的一篇文章,部分內(nèi)容我粘貼到了第四篇。但既然和各位共享了,那么我就有必要寫的更深一層!今天我用的曲線不是橢圓,咱們換個(gè)口味-拋物線!總是橢圓,我人都快成橢圓了,哈哈本篇大綱:1 徹徹底底的剖析曲線的編程原理!NO.1 曲線原理深層解析!任何帶有方程的曲線,我們要做的是把他化簡(jiǎn),化簡(jiǎn)的目的是定義出自變量和因變量!比如昨天的橢圓,我是用Z為自變量,那么能不能用X為自變量呢?當(dāng)然可以!這個(gè)沒有拘束。這里要說一下,自變量不一定是X或者Z,還有可能是一個(gè)角度。這
35、個(gè)在后期會(huì)講到,這里不贅述?;?jiǎn)后,我們就可以著手編制宏了。下面直接上圖:看到這個(gè)圖,肯定也看到了方程 - - ! 這里已經(jīng)化簡(jiǎn)的差不多了。但我們需要的是X,不是X的平方,所以還得開根號(hào)。因此用X做因變量的方程是:X = SQRT(-10*Z) 這應(yīng)該沒什么問題?;?jiǎn)好了那就直接上程序唄:#1 = 0 N10 #2 = SQRT(-10 * #1)G01 X#2*2 Z#1 F0.1#1 = #1 - 0.1IF #1 GE -29.61 GOTO10G0 X100Z100M30程序很短,但里面包含的思想很多。我們一步一步來分析:1, #1和#2 這里的#1代表Z,#2代表X,也就是說Z是自變
36、量,那么X的值會(huì)因?yàn)閆的變化而變化。#1的取值是非常有講究的,絕不是想給什么值就給什么值!在這我可以教大家一個(gè)簡(jiǎn)單的方法:你可以把任意一個(gè)數(shù)給#1,但是請(qǐng)看下程序的Z值是不是0,然后按照方程再計(jì)算下X的值是不是零。因?yàn)槲覀冘囅鲿r(shí),曲線的起點(diǎn)就是 X0 Z0。如果第一刀是X0 Z0 那么恭喜你 #1 的值賦值是正確的!這里又有人會(huì)問,我從哪知道對(duì)不對(duì)呢?答案是在這一行 “G01 X#2*2 Z-#1 F0.1”由于我們#1的初始值是0,所以Z肯定是0,那么X呢?X是根據(jù)上面的方程“SQRT(10 * #1)”算出來的。我們把#1帶進(jìn)方程算算吧!SQRT(10 * 0),結(jié)果是 0 也就是說#2
37、= 0 到了下一行X#2*2,其實(shí)就是X0*2,此時(shí)X是0 所以只要你#1正確了,#2肯定是正確的。因?yàn)?2是跟著#1的變化而變化的。到了這,我把#1和#2的關(guān)系介紹了下,應(yīng)該不難理解2, N10 #2 = SQRT(-10 * #1) 這一步其實(shí)沒什么,就是把數(shù)學(xué)方程,用宏格式的代碼給寫了一遍。至于前面的N10,這是目標(biāo)地址,在前面的帖子講過,不贅述。但是地址的選擇是有講究的,絕不是亂放。這個(gè)問題到下面再說。3, G01 X#2*2 Z#1 這一步是什么意思呢?專業(yè)術(shù)語(yǔ)叫“直線擬合”,之所以稱為直線擬合,是因?yàn)镚01是車削直線的。也就是說,把一個(gè)點(diǎn)的X坐標(biāo)和Z坐標(biāo)用GO1指令鏈接起來,由于Z
38、在變化,所以X也變了,每循環(huán)一次,就鏈接一個(gè)點(diǎn),一直到最后結(jié)束。這里不介紹工作過程,下面會(huì)詳細(xì)的說。4, #1 = #1 - 0.1 這一步前面也講過,就是#1做遞減運(yùn)算。如果你是仔細(xì)看前面的帖子,這一步不會(huì)郁悶的。所以我不贅述了。5, IF #1 GE -29.61 GOTO10 這一步是判斷下有沒有車完。由于我們是#1為自變量,而#1又代表著Z,我們看看圖紙中,曲線部分Z值最后一個(gè)點(diǎn)是在-29.61,所以當(dāng)#1的值沒有到-29.61,就意味著沒車完。沒車完就跳到行號(hào)那繼續(xù)車6,退刀以上我僅僅逐行釋義了代碼,但沒有講解程序的工作過程,現(xiàn)在請(qǐng)各位集中精神,跟著我的思路,看看這程序到底怎么工作的
39、!首先,我們把系統(tǒng)當(dāng)做一個(gè)人大腦。它在第一行是,看到有個(gè)#1變量,并且他的值是0 然后到了第二行,它又看到了行號(hào),并且也記住了方程。到這他不知道是干嘛的。到了下面一行 G01 X#2*2 Z-#1 F0.1 時(shí),他知道了,原來我要執(zhí)行G01代碼,于是他把這行的坐標(biāo)給算了出來,程序就變成 G01 X0 Z-0 F0.1 這是走的第一刀,然后這行執(zhí)行完畢,到了下一行它發(fā)現(xiàn)有個(gè) #1 = #1 - 0.1 。于是它把#1的值經(jīng)過運(yùn)算,得到了-0.1 這樣又到了下一行,看到一條判斷語(yǔ)句 IF #1 GE -29.61 GOTO10 ,它很聰明,把代碼翻譯成了 如果,-0.1 大于等于 -29.61,那
40、么就跳轉(zhuǎn)到第10號(hào)行。 他發(fā)現(xiàn)-0.1 = -29.61 的,那就跳轉(zhuǎn)唄。于是就到了 N10 #2 = SQRT(10 * #1) 行,此時(shí)此刻,他又進(jìn)行計(jì)算了(大家請(qǐng)注意,這一次的計(jì)算,#2和#1都不是0了!經(jīng)計(jì)算器計(jì)算,#2 = 1 ,#1 = -0.1 ),計(jì)算完,#2和#1個(gè)字保存了新的值,這樣就又到了 G01 X#2*2 Z-#1 F0.1 行,此時(shí)它翻譯為 G01 X2 Z-0.1 大家發(fā)現(xiàn)沒有,刀具已經(jīng)在動(dòng)了哦!從剛開始的X0 Z0 車到了X2 Z-0.1 !執(zhí)行完這行,就到了#1 = #1 - 0.1 于是呢#1的值就成了-0.2 于是又到了判斷這行,發(fā)現(xiàn)-0.2=-29.61
41、,于是繼續(xù)跳到第10號(hào)行,到了這行,由于#1=-0.2,所以#2又是一個(gè)新的數(shù)值,就這樣往復(fù)的循環(huán)。循環(huán)。一直到#1不滿足條件,退刀! 這里我們可以提前算下,#1=-29.61的時(shí)候,看看#2是不是17.21(34.42的一半。因?yàn)?2是單邊X值,到了下面的G01段,會(huì)乘以2),如果是,那么就對(duì)咯。拿起你們的計(jì)算器,算算吧!#2 = SQRT(-10 * -29.61) = 17.2075.怎么樣,結(jié)果是對(duì)的吧!那么我們?cè)倏纯磮D紙,曲線的最后X值是34.42,完全正確!這里的誤差在范圍之內(nèi),不要糾結(jié)。以上是程序的執(zhí)行過程,但我們的問題還沒有結(jié)束,接著往下看1, 為什么 G01 X#2*2 Z#
42、1 中的Z#1不寫成Z-#1呢?我們都知道,在數(shù)車編程中,如果把工件坐標(biāo)系原點(diǎn)放在零件右端面的旋轉(zhuǎn)中心,那么任何向左車削的Z值,都是負(fù)的(這個(gè)我不說為什么。初一的知識(shí))。所以按道理應(yīng)該是Z-#1啊。其實(shí)不然,因?yàn)槲覀兊?1就是負(fù)值,他是-0.1 -0.2 -0.3 -0.4.-29.61 這要再加個(gè)“-”號(hào),可就畫蛇添足啦!2 這是我給各位的建議:要學(xué)好數(shù)控,一定要有一個(gè)科學(xué)計(jì)算器! 這玩意好處大大的!比如我們程序的開頭,#1不知道怎么給數(shù)值,那你就隨意給一個(gè),然后帶到方程算,看看第一刀的起刀點(diǎn)是不是圖紙中的那個(gè)點(diǎn)。再比如最后#1需要判斷的時(shí)候,也不知道車到什么長(zhǎng)度結(jié)束,那也可以算啊。把#1
43、= -29.61 帶到方程算,看X值是不是34.42不就行了? 就這么回事,一定要靈活!誰(shuí)說數(shù)學(xué)好不好就不能學(xué)宏的?咱不會(huì)算,這不有計(jì)算器么 _3 我在第四篇的寫到的 Z值得判定,各位一定要徹底吸收。細(xì)心的吧友會(huì)發(fā)現(xiàn),橢圓的那個(gè)宏,在Z這一步是 “Z#1-60”的,可拋物線怎么沒用#1減去什么東西呢? 那是因?yàn)槲覀兊?1本來就在0位,而橢圓的那個(gè)例子,如果不減去60,他的Z第一刀在60MM,而正確的應(yīng)該是在0,所以就給他減了個(gè)60,讓他乖乖的到第一刀的Z起刀點(diǎn):Z0 4 任何曲線,都是這個(gè)樣,工作過程也一樣,只不過有的方程復(fù)雜,有的簡(jiǎn)單而已。但萬(wàn)變不離其中!之所以說曲線類的是入門,是因?yàn)樗蟹?/p>
44、程?。》匠叹褪敲枋鲞@個(gè)曲線的,我們要做的只不過是把曲線的各個(gè)點(diǎn)連接起來,僅此而已!實(shí)例 1.單外徑粗車宏的應(yīng)用本實(shí)例介紹一個(gè)簡(jiǎn)單的車削外徑的宏程序,目的為了讓讀者熟悉宏語(yǔ)句用法和邏輯。上圖為一個(gè)單一外圓車削圖,材料為直徑50的棒料,車削到直徑30,長(zhǎng)度30.圖紙要求,平面見光就行,采用宏程序粗加工,每刀吃刀量為3毫米。2.2工藝分析1.采用3爪自定心卡盤夾持直徑50,臺(tái)階爪定位左端面。2.選擇加工刀具,選用90度外圓機(jī)架刀車刀。3.0宏程序編程思路1.模仿G71路線。2.毛培直徑50賦值給#1,通過毛培每次遞減,實(shí)現(xiàn)車削到指定直徑。3.圖紙要求直徑30賦值給#24.吃刀量賦值給#3,每層吃刀量為3.4.0加工程序編程與注釋O0010M3S300G99T101M08G0X51.Z10.Z0.G1X-0.7F0.12(平端面)G0W1.X50.#1=50(毛培賦值)#2=30(圖紙要求尺寸)#3=3(吃刀量賦值)N10#1=#1-#3(利用減法運(yùn)算,計(jì)算出每一層的X值)G0X#1(X進(jìn)刀)G1Z-30.F0.12G0U1.Z1.IF#1GT#2GOTO10(如果#1大于#2,那么執(zhí)行跳轉(zhuǎn)到N10的地方執(zhí)行后面程序,如果不滿足,執(zhí)行后面一步)G0X120.Z130.M30程序編制完成,我們來檢查一下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力外包招聘合同范本
- 2025年德州年貨運(yùn)從業(yè)資格證考試題庫(kù)
- 勞動(dòng)合同范本 股權(quán)
- 企業(yè)借貸合同質(zhì)押合同范本
- 代理分紅合同范本
- 買門頭房合同范本
- 動(dòng)遷協(xié)議合同范本
- 東莞擺攤餐飲轉(zhuǎn)讓合同范本
- 任意拆解合同范本
- 制作車輛抵押合同范本
- RBA商業(yè)道德程序文件(系列)
- 某山體滑坡綜合治理工程監(jiān)理規(guī)劃
- 遼寧省大連市2023-2024學(xué)年八年級(jí)下學(xué)期第一次月考語(yǔ)文試題(含答案解析)
- DataOps 實(shí)踐指南 2.0白皮書
- 供電所班組建設(shè)方案
- 委托處置不良資產(chǎn)協(xié)議(三篇)
- 胎膜早破的診斷與處理指南
- 新時(shí)代勞動(dòng)教育教程(中職版勞動(dòng)教育)全套教學(xué)課件
- 2024年02月國(guó)家鐵路局事業(yè)單位招考聘用27人筆試歷年(2016-2023年)真題薈萃帶答案解析
- 廚房用電安全知識(shí)
- 承德承德縣2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)綜合檢測(cè)卷(含答案)
評(píng)論
0/150
提交評(píng)論