專利名稱:可編程控制進(jìn)料和速度的透鏡磨邊系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用玻璃毛坯使透鏡成形的透鏡磨邊機(jī)領(lǐng)域。
在該工藝中透鏡磨邊機(jī)是熟知的,例如在授予Ramos等人的美國專利第4,870,784號中所描述的一種。一般,透鏡由毛坯形成,該毛坯根據(jù)所希望的光焦度而具有一定的曲率。驗眼透鏡的曲率提供矯正光焦度。深色眼鏡或太陽鏡的透鏡曲率一般不提供矯正光焦率。形成具有所希望的曲率的透鏡毛坯后,必須將該透鏡“加工”(“Cut”out)成適合眼鏡框架的形狀。這可通過“磨邊”或用諸如研磨輪的磨邊工具研磨透鏡的邊緣直到達(dá)到所希望的透鏡形狀來完成。如果透鏡是眼用的,磨邊過程可由在上述參考的授予Rames等人的專利中所描述的透鏡磨邊機(jī)來完成,該磨邊機(jī)在研磨輪中使用刻槽對透鏡邊緣倒邊。另一種一般用來制造非眼用透鏡的透鏡磨邊機(jī)在研磨輪中使用頂尖對透鏡邊緣倒邊。透鏡邊緣的斜邊能使透鏡與眼鏡或太陽鏡的框架緊密配合。兩種透鏡磨邊機(jī)都使透鏡毛坯相對于研磨輪旋轉(zhuǎn)。同時,當(dāng)透鏡毛坯旋轉(zhuǎn)時,磨邊機(jī)根據(jù)將要從該透鏡毛坯所形成的透鏡形狀改變透鏡毛坯中心與磨研輪間的位移。在上面討論的兩種透鏡磨邊機(jī)中,如在該工藝中所熟知的,所述位移借助于具有所希望的透鏡形狀相對于固定表面隨透鏡毛坯旋轉(zhuǎn)的凸輪來變化。這個特點的一個問題是每次制造不同的透鏡形狀必須暫停磨邊機(jī)的運轉(zhuǎn)并改變凸輪。由透鏡毛坯形成透鏡后,如前所述,它被切削成斜邊。然后將透鏡邊緣進(jìn)行細(xì)磨或拋光以完成該加工。
現(xiàn)有透鏡磨邊的方法被透鏡間所表現(xiàn)的如超差情況的質(zhì)量不一致和非均勻性所困擾。有幾個原因。第一,一般是象金剛石一樣的材料或任何適合于研磨透鏡的材料的研磨輪在使用中不斷磨損并逐漸變小,從而導(dǎo)致透鏡尺寸增大。第二,凸輪和相對其必須移動和摩擦的表面不斷磨損,導(dǎo)致更大的滑動和振動,這使由凸輪運動所決定的透鏡形狀畸變?,F(xiàn)行方法也為高的維修成本和停機(jī)時間所困擾。這是由于研磨輪以非均勻方式磨損,必須定期加以修整。也如前所述,研磨輪隨著使用變小,因此必須在透鏡尺寸增大超過容許極限前定期更換。每次對研磨輪整形或更換,磨邊機(jī)都要停機(jī)而不再生產(chǎn)。
這樣的透鏡研磨機(jī)不能始終如一地生產(chǎn)出同樣尺寸的透鏡是由于每塊透鏡是在同一磨邊機(jī)中在研磨輪、凸輪和磨邊機(jī)其它磨損表面壽命的不同時期形成的結(jié)果。另外,不同磨邊機(jī)的相同元件磨損點不同,因此,在不同磨邊機(jī)上制造出的透鏡必然有稍微不同的尺寸。這樣的不一致在試圖將透鏡安裝到框架中時便會產(chǎn)生困難。
另一個問題是透鏡的磨邊速度必須充分放慢以避免損壞玻璃透鏡材料。如果試圖提高產(chǎn)量將研磨輪的速度和(或)透鏡的旋轉(zhuǎn)速度增大到在研磨過程中可觀察到電火光,則玻璃材料會受到損壞并使高質(zhì)量護(hù)目鏡變得無用。即使沒有觀察到火花或小玻璃粒子的燃燒,作為磨邊太快的結(jié)果,可能使透鏡表面太粗糙而不能接受。由于這些原因,透鏡研磨速度必須放慢以避免損壞玻璃透鏡材料的任何冒險。不利的是這樣慢的生產(chǎn)速度使生產(chǎn)透鏡的成本提高。
如在上述參考的授予Ramos等人的專利中所公開的,已使用計算機(jī)來輔助透鏡磨邊工藝。具體地說,使用計算機(jī)根據(jù)透鏡大小將透鏡邊緣直接定位在Ramos等人的研磨輪中的倒邊槽上,不同大小透鏡相對于該槽需要不同的定位。Ramos等人專利中的計算機(jī)也控制操作序列。
本發(fā)明是一種可預(yù)編程透鏡磨邊機(jī)系統(tǒng),該系統(tǒng)在微處理機(jī)的控制下與編程在存儲器中的透鏡邊緣形狀相適應(yīng)地對透鏡邊緣研磨和倒邊。該系統(tǒng)通過由微處理機(jī)控制的象機(jī)器人一樣的手臂夾持透鏡毛坯。根據(jù)編程在存儲器中的透鏡邊緣形狀,由手臂使透鏡的旋轉(zhuǎn)以及手臂相對于研磨輪的運動決定了透鏡的形狀和大小。通過簡單地修正微處理機(jī)存儲器中不同透鏡邊緣形狀,可容易地改變透鏡邊緣形狀和大小,這樣節(jié)省了在以前透鏡磨邊機(jī)中更換凸輪所需的時間。
該系統(tǒng)包括一個透鏡尺寸傳感器,在通過微處理機(jī)的自校正反饋回路中,該反饋回路自動補(bǔ)償研磨輪的磨損收縮。所述自校正反饋回路根據(jù)對透鏡尺寸的監(jiān)測頻率允許該磨邊機(jī)使用同一研磨輪且磨損到幾乎為一核心而透鏡大小仍沒有明顯的變化。
本發(fā)明也包括一種將磨損至少分配到近乎全部研磨輪表面的方法,從而在大體整個透鏡邊緣研磨操作期間透鏡毛坯連續(xù)沿軸向移動過研磨輪表面,以致于使研磨輪表面磨損均勻分布。這種均勻磨損工藝避免了在研磨輪中形成空隙或槽,這在先前的磨邊機(jī)中需要通過經(jīng)常對該輪子修整來消除。在本發(fā)明中,借助于自校正反饋回路研磨輪不需更換直到它完全磨損,借助于均勻磨損工藝研磨輪不需修整,這樣消除了在以前的透鏡磨邊機(jī)中由于經(jīng)常留心研磨輪的維修而需要的經(jīng)常性中斷。
根據(jù)本發(fā)明的一個方面,在通過研磨輪柱面部分的研磨形成透鏡邊緣形狀后,將透鏡邊緣在研磨輪頂尖部分上通過相對研磨輪頂點的對側(cè)連續(xù)對旋轉(zhuǎn)透鏡邊緣對側(cè)進(jìn)行倒邊。在本發(fā)明這一方面中,透鏡的旋轉(zhuǎn)運動以及夾持透鏡的象機(jī)器人一樣的手臂的運動,根據(jù)從透鏡的形狀和曲率和研磨輪頂尖形狀計算出的存儲在存儲器中的軌跡由微處理機(jī)予以控制。作為使用在本說明書中的術(shù)語“軌跡”同時指(a)透鏡關(guān)于其上固定中心點的旋轉(zhuǎn)路徑,(b)垂直于研磨輪旋轉(zhuǎn)軸的透鏡的徑向運動路徑和(c)平行于研磨輪旋轉(zhuǎn)軸的透鏡的橫向運動路徑。對于同一種透鏡可將不同的倒邊輪廓編程到存儲器中,而對許多不同透鏡可將同一倒邊輪廓編程到存儲器中。
根據(jù)本發(fā)明,將透鏡或透鏡毛坯的運動在整個透鏡邊緣研磨和倒邊過程時間中分為N點。例如N為64,000量級。透鏡相對研磨輪的旋轉(zhuǎn)速度、研磨輪的旋轉(zhuǎn)速度、透鏡沿軸平移過研磨輪表面的速度以及將透鏡壓靠在研磨輪上的力對于N點中每一點都確定在存儲器中。微處理機(jī)對于每個要制造的不同透鏡形狀需要將一整套這樣的定義存儲在存儲器中。
在本發(fā)明的另一方面中,該組透鏡旋轉(zhuǎn)速度、研磨輪速度、軸向透鏡進(jìn)料速度以及研磨壓力在N點的每一點上優(yōu)化以使透鏡研磨速度(產(chǎn)量)最大到稍低于玻璃透鏡材料過熱的速度。根據(jù)本發(fā)明的試錯法在N點的每一點上決定每個參數(shù)(旋轉(zhuǎn)速度、速度、進(jìn)料速度和研磨壓力)的優(yōu)化值,在該方法中將所有參數(shù)的各種組合在N點的每一點上試過并將結(jié)果存儲在存儲器中。在該方法的一個實施例中,微處理機(jī)在監(jiān)測安裝用來檢測玻璃透鏡材料過熱的火花傳感器時系統(tǒng)地變化所有參數(shù)(旋轉(zhuǎn)速度、速度、進(jìn)料速度和研磨壓力)。對于透鏡運動中N點的每一點,微處理機(jī)注意所有參數(shù)在傳感器沒有檢測到過熱時的研磨輪最高速度時的值。微處理機(jī)將注意到的值存儲在存儲器中。在所有N個點上執(zhí)行該過程后,就完成了試錯過程,存儲器對給定透鏡形狀的整個研磨過程含有一組優(yōu)化研磨參數(shù)。然后將這組參數(shù)永久性存儲(例如存儲在硬盤上或只讀存儲器中)并在生產(chǎn)同樣設(shè)計的透鏡中一次又一次重復(fù)使用。該學(xué)習(xí)過程只需要充分容量的存儲器。
將玻璃從透鏡上磨掉的優(yōu)化速度至少部分取決于被磨掉的玻璃粒子從工件或透鏡毛坯上帶走熱量的能力。為了保持一定的散熱速率,當(dāng)研磨過程中工件(透鏡毛坯)尺寸減小時應(yīng)防止玻璃切消速度的降低。因此,在許多場合本發(fā)明的試錯學(xué)習(xí)法在研磨過程中透鏡毛坯的尺寸減小時可逐漸增大研磨輪速度。在這個意義上,由本發(fā)明試錯學(xué)習(xí)法產(chǎn)生的一組優(yōu)化研磨參數(shù)將執(zhí)行熟知的有時稱之為“恒定表面磨削”的金屬車床技術(shù)原理。
下面將參照附圖詳細(xì)說明本發(fā)明最佳實施例,附圖中
圖1a和1b示出研磨透鏡邊緣的現(xiàn)有技術(shù)的裝置;
圖2a和2b分別示出透鏡毛坯和由圖1a的裝置從該毛坯生產(chǎn)出的透鏡;
圖3是簡單示出本發(fā)明透鏡磨邊系統(tǒng)的關(guān)鍵元件的示意圖;
圖4是示出圖3的系統(tǒng)中使用的透鏡伺服臂的圖;
圖5a和5b示出圖3中系統(tǒng)的完整型式;
圖6是一個示范性透鏡邊緣外形的極坐標(biāo)圖;
圖7描繪了一個沒有曲率的透鏡以恒定的透鏡旋轉(zhuǎn)速度在磨邊期間在研磨輪柱面部分(實線)和研磨輪頂尖部分(點線)上透鏡軌跡的極坐標(biāo);
圖8描繪了一個具有球面彎曲的透鏡的與圖7相對應(yīng)的透鏡軌跡的極坐標(biāo);
圖9a、9b和9c是分別描繪作為時間的函數(shù)相對于研磨輪的透鏡運動的垂直位置、水平位置和水平(進(jìn)料)速度的示范性透鏡軌跡板坐標(biāo);
圖10描繪了在透鏡磨邊過程中對于每個隨時間遞增點存儲在圖3系統(tǒng)的存儲器中的所有研磨工藝參數(shù)的圖表;以及圖11是示出本發(fā)明為獲悉將寫入圖10表中參數(shù)優(yōu)化值的編程學(xué)習(xí)過程的流程圖。
圖1a示出了現(xiàn)有技術(shù)透鏡磨邊過程中的基本步驟。研磨輪10包括柱面部分12和頂尖部分14,兩部分都具有如圖1b所示的同心圓形狀。研磨輪10由金剛石似的材料制造而成。將圖2a所示的透鏡毛坯16沿其邊18在圖1a的柱面部分12上研磨形成圖2b中的透鏡20。然后分別將透鏡邊緣18的“左”角18a在頂尖部分14的“右”邊14a上研磨,將透鏡邊緣18的“右”角18b在頂尖部分14的“左”邊14b上研磨分別形成倒邊的透鏡表面22a和22b。所述倒邊表面22a和22b的幾何形狀符合將要把透鏡20安裝在其中的護(hù)目鏡框架形狀。
研磨過程中透鏡的運動由旋轉(zhuǎn)凸輪(未示出)相對固定表面的運動所控制,該凸輪具有與圖2b所示的透鏡20同樣的形狀?,F(xiàn)有技術(shù)的方法和裝置具有許多如前討論的缺點,這些缺點是由于研磨輪10表面的磨損、凸輪表面的磨損和由于磨損不均勻在研磨輪10表面中形成的空隙,以及每次對于不同的透鏡設(shè)計必需更換凸輪所引起的。
在圖3所示的本發(fā)明透鏡磨邊系統(tǒng)中解決了所有這些問題。由安裝在伺服控制臂30上的伺服控制手28將每塊透鏡毛坯從含有許多透鏡毛坯的圓盤傳送帶26中取出,該伺服控制臂30由臂伺服控制器32控制,而中央微處理機(jī)34控制臂伺服控制器32。旋轉(zhuǎn)圓盤傳送帶26的位置由微處理機(jī)34通過圓盤傳送帶旋轉(zhuǎn)控制器25應(yīng)用熟知數(shù)字伺服控制技術(shù)進(jìn)行控制。在一個執(zhí)行過程中,手28沿臂30軸向運動以至其將自己延伸到圓盤傳送帶26(虛線位置)并通過在手指35、36間壓緊其相對邊緣夾持透鏡毛坯16。手指36可向另一手指35移動將透鏡16牢牢夾緊。然后手28將透鏡毛坯16取出,臂30圍繞轉(zhuǎn)軸38旋轉(zhuǎn)到實線位置。手28然后沿臂30軸向運動將透鏡插入安裝在旋轉(zhuǎn)心軸44、46上的相對主動盤40、42(圖4)之間。心軸44、46支承在由透鏡伺服控制器54操縱的透鏡伺服臂52的相對梁48、50上。透鏡伺服控制器54由微處理機(jī)34控制。一旦將透鏡毛坯16置于該對主動盤40和42之間,透鏡伺服控制器54就使相對梁48、50相互朝對方移動以將透鏡毛坯16緊握在兩個主動盤40、42之間,如圖4所示。然后微處理機(jī)34指揮透鏡伺服控制器54將臂52移動到研磨輪10并將透鏡毛坯16的邊緣頂在輪10上,借助于由透鏡伺服控制器54控制的心軸馬達(dá)58使心軸44、46旋轉(zhuǎn)。
透鏡伺服控制器54在透鏡毛坯繞著心軸44、46的軸旋轉(zhuǎn)時變化透鏡毛坯16中心(即心軸44、46的軸)到研磨輪10軸的距離R以獲得所希望的透鏡邊緣輪廓或形狀。透鏡伺服控制器54由微處理機(jī)34根據(jù)存儲在透鏡形狀軌跡存儲器60中的透鏡軌跡表控制這樣做。該透鏡軌跡表根據(jù)透鏡將要形成的形狀對透鏡毛坯16圍繞心軸44、46的軸的每個遞增旋轉(zhuǎn)位置θ定義透鏡毛坯中心和研磨輪10間的距離r。應(yīng)用現(xiàn)有技術(shù)熟知的計算機(jī)數(shù)控機(jī)床技術(shù),微處理機(jī)34使用存儲在透鏡伺服控制器程序存儲器62中的伺服控制器程序從存儲在透鏡形狀軌跡存儲器60的數(shù)據(jù)中計算出伺服控制信號。產(chǎn)生伺服控制器程序在該領(lǐng)域中是普通的。微處理機(jī)34依次傳送這樣產(chǎn)生的控制信號,該信號決定了透鏡邊緣研磨步驟的順序。
一旦完成透鏡磨邊過程,就由透鏡伺服臂保持透鏡邊緣18的角18a貼著旋轉(zhuǎn)的邊緣間歇(break-edge)輪61對透鏡邊緣進(jìn)行細(xì)磨。
透鏡形狀軌跡存儲器60可包含對不同軌跡大范圍的選擇表,用于制造具有不同邊緣輪廓的不同透鏡。這樣,透鏡設(shè)計可通過指示微處理機(jī)34到存儲器60中不同的表而得以迅速改變,這是一個顯著的優(yōu)點。
隨著研磨輪10的磨損,它變得越來越小,這在現(xiàn)有技術(shù)中將使透鏡尺寸增大。解決的辦法曾是經(jīng)常更換研磨輪10使在透鏡接連被磨邊時透鏡尺寸的增大為最小。在本發(fā)明中通過使用一個經(jīng)探頭輸出電路66連接到微處理機(jī)34的尺寸探頭64解決了這個問題。該探頭64是例如英國Gloucester,Renishaw Metrology有限公司生產(chǎn)的那種類型。由圖3的系統(tǒng)形成透鏡20后,透鏡伺服臂52把透鏡旋轉(zhuǎn)到預(yù)定的旋轉(zhuǎn)位置θ、然后沿邊緣將透鏡20朝探頭64移動。微處理機(jī)34記錄探頭64第一次測定與透鏡邊緣接觸時透鏡伺服臂52的位置點。這個位置表示在旋轉(zhuǎn)位置θ處透鏡20的關(guān)徑r。正確位置可容易地從希望的透鏡邊緣輪廓中確定。微處理機(jī)34對實際位置與正確位置進(jìn)行比較并計算其差值。微處理機(jī)34通過調(diào)整(減小)下一個將要磨邊的透鏡與研磨輪10的軸間的距離來補(bǔ)償這個誤差?;旧希⑻幚頇C(jī)34對整個磨邊過程調(diào)整透鏡軌跡使它向輪10的旋轉(zhuǎn)軸靠近相等于計算出的位置誤差的數(shù)據(jù)。這個特點將在下面描述。因此,只要足夠頻繁地監(jiān)測透鏡半徑,就可允許研磨輪10在接連透鏡磨邊期間磨損到幾乎到其軸而不產(chǎn)生透鏡尺寸方面的誤差。
現(xiàn)有技術(shù)的另一問題是大部分透鏡磨邊發(fā)生在研磨輪10的柱面部分12上,非均勻磨損在研磨輪中產(chǎn)生空隙或不希望的槽。因此,研磨輪10必須經(jīng)常修整。本發(fā)明包括解決該問題的方法,在該方法中微處理機(jī)34使透鏡伺服臂52在整個透鏡磨邊操作期間連續(xù)將透鏡毛坯16沿軸平移過研磨輪10的表面,同時控制從輪10的一端到另一端透鏡的軸向進(jìn)料速度,從而使磨損均勻地分布在輪10的整個表面。當(dāng)透鏡接觸研磨輪10的頂尖部分時在倒邊操作期間繼續(xù)該軸向運動。
根據(jù)本發(fā)明的均勻磨損分布方法,透鏡伺服臂52必須執(zhí)行一個復(fù)合作業(yè),即在根據(jù)要求的透鏡形狀變化透鏡毛坯16到研磨輪10的距離的同時使該透鏡毛坯16旋轉(zhuǎn),并同時以連續(xù)運動方式將透鏡軸向平移過輪10的表面。如將在下面討論的,這個作業(yè)在輪10的頂尖部分14對該透鏡倒邊時將更復(fù)雜。
參照圖5,本發(fā)明的最佳方法需要同一微處理機(jī)34來控制由使用一對透鏡伺服臂52、53的一對研磨輪10、11對一對透鏡同時研磨。對于兩個研磨輪10、11中的每一個都有一個卸料臂30(如圖3中所示)和一個裝料臂31,一個卸料圓盤傳送帶26(如圖3中所示)和一個裝料圓盤27。對于一個透鏡伺服臂52,卸料臂30將透鏡毛坯16從卸料圓盤傳送帶26取出并將其交給透鏡伺服臂52進(jìn)行研磨。在研磨過程結(jié)束時,裝料臂31將透鏡從透鏡伺服臂52中取下并將其放入裝料圓盤傳送帶27中。使每個圓盤傳送帶進(jìn)行旋轉(zhuǎn),將圓盤傳送帶中的當(dāng)前槽定位到下一個槽,以便對應(yīng)下個周期的裝料或卸料臂。最好是,對微處理機(jī)34編程,使其操作圓盤傳送帶以及裝料和卸料臂,以致于當(dāng)將一個已完成的透鏡放入裝料圓盤傳送帶時,便從卸料圓盤傳送帶中取出下一個透鏡毛坯,從而沒有浪費的動作。一個優(yōu)點是同一周期可用來同時生產(chǎn)一對有待裝入同一護(hù)目鏡框架的透鏡,因此增大了每對透鏡緊密配合的可能性。
圖6以板坐標(biāo)示出一個示范性的透鏡邊緣形狀。圖6中半徑r相當(dāng)于圖4中透鏡20中心(心軸44、46的軸)與研磨輪10的表面間的距離r。在這里定義為,透鏡中心是指透鏡20在研磨過程中圍繞其旋轉(zhuǎn)的點。圖4中的距離R是透鏡中心與研磨輪10中心間的位移。r和R之間的差是研磨輪10的半徑。圖7中的實線曲線是作為對應(yīng)于圖6的極坐標(biāo)圖的透鏡旋轉(zhuǎn)角θ的函數(shù)R的曲線圖。該實線曲線是存儲在透鏡軌跡存儲器60中的數(shù)據(jù)所確定的軌跡,其控制透鏡毛坯16在研磨輪10的(僅僅)柱面部分12上的運動。
在倒邊操作期間透鏡20的軌跡更加復(fù)雜并取決于研磨輪10頂尖部分14的斜度以及透鏡20本身的曲率。假設(shè)圖6的極坐標(biāo)圖中所描繪的透鏡形狀沒有曲率-最好是平面-在倒邊操作過程中透鏡軌跡可通過將圖7的傾斜虛線疊加到實線曲線上并將兩者加到一起來獲得。所得復(fù)雜的透鏡軌跡(點線)描繪了在倒邊期間當(dāng)根據(jù)本發(fā)明將磨損均勻地分布在整個研磨輪表面的方法以恒定速度將透鏡軸向平移過頂尖部分14的表面時相對于研磨輪10的透鏡軌跡。該點線曲線描繪了透鏡軌跡的部分,其中透鏡爬上頂尖14的一側(cè)、然后下落到另一側(cè),以便將磨損均勻分布橫過頂尖部分14的表面。因此,圖7的點線曲線對應(yīng)于存儲在存儲器60中用于透鏡研磨過程的倒邊部分的數(shù)據(jù)。
在大部分情況下,透鏡軌跡在倒邊期間甚至更為復(fù)雜,這是因為透鏡一般都具有球面曲率(如圖1a中透鏡20的側(cè)視圖所示)。這種復(fù)雜的透鏡軌跡可在圖8的曲線圖中通過將定義透鏡邊緣形狀的實線曲線與非線性虛線曲線相加來獲得。圖8的非線性虛線曲線的形狀由透鏡曲率和研磨輪10的頂尖部分14的夾角α所控制。不象圖7,對圖8更復(fù)雜的情況沒有示出在倒邊期間所得的透鏡軌跡,但是通過將圖8的兩條曲經(jīng)相加在理論上獲得所得透鏡軌跡。通過改變透鏡20與頂尖14中心間的距離R,透鏡邊緣的倒邊深度可按要求加以改變。
一種在倒邊期間獲得透鏡軌跡的更實際的方法是使用球面三角法根據(jù)熟知的原理來計算它。用于完成這項工作的計算機(jī)程序作為附錄A附加在本文中。這樣的計算機(jī)程序可由微處理機(jī)34執(zhí)行并可存儲在透鏡運動程序存儲器64中。這樣的程序僅需要使用者輸入包括透鏡形狀(如圖6的極坐標(biāo)所代表)、透鏡曲率(例如可在圖1a的透鏡側(cè)視圖所見)的透鏡設(shè)計數(shù)據(jù)和研磨輪10的頂尖部分14的夾角α。這樣的輸入數(shù)據(jù)可存儲或進(jìn)入圖3所示的外部設(shè)備66中。該外部設(shè)備可以是存儲器或諸如調(diào)制解調(diào)器的通訊設(shè)備。因此,可從距離遠(yuǎn)的地方通過調(diào)制解調(diào)器(66)輸入新的透鏡設(shè)計并使用存儲器66中的透鏡運動程序由微處理機(jī)34迅速自動計算出完整的透鏡運動。由微處理機(jī)34與別的透鏡設(shè)計相對應(yīng)的表一道將所得透鏡軌跡表存儲在存儲器60中。改變或更新透鏡設(shè)計的整個過程在圖3的系統(tǒng)中實際上不需要人工干預(yù),這是一個顯著的優(yōu)點。
R和r間的差值是研磨輪10的半徑,當(dāng)輪磨損時它就減少。如前所述,由微處理機(jī)34執(zhí)行的自校正反饋方法周期性地在一些預(yù)定的透鏡旋轉(zhuǎn)角θ將實際透鏡半徑與該角度時如圖6的曲線圖所確定的正確半徑相比較。任何差異表示研磨輪半徑由于磨損而減少的數(shù)據(jù)。微處理機(jī)34通過從(例如)圖7的圖表中所有R值中減去在一些預(yù)定角度θ檢測出的實際和理想透鏡半透之差值來簡單地改變軌跡。
結(jié)果由圖7的點劃線所示。圖7中實線和點劃線間的位移E是由微處理機(jī)34檢測到的理想和實際透鏡半徑間的誤差或差值。因此,隨著研磨輪半徑減小,微處理機(jī)34通過減小必要的R而將作為透鏡旋轉(zhuǎn)角θ的函數(shù)的透鏡半徑r保持在正確值上。
所有控制透鏡磨邊過程的參數(shù)都定義在存儲于存儲器60的表中。這里已討論過透鏡形狀參數(shù)r和θ以及由本發(fā)明的均勻磨損分布方法所要求的連續(xù)軸向進(jìn)料速度。剩下的參數(shù)包括透鏡的旋轉(zhuǎn)速度(dθ/dt)、研磨輪速度和透鏡邊緣貼壓在研磨輪上的力。
為通過微處理機(jī)34執(zhí)行離散控制,將由矢量(r,θ)所定義的透鏡的移動分為N個離散段。在下面的例子中,N=64,000,盡管應(yīng)該認(rèn)識到熟練工人可對N選擇任何合適的值。這些段可認(rèn)為是覆蓋整個磨邊過程期間的N個時間點t0、t1、t2、……tN。距離輪10軸的透鏡中心的位移Y作為時間的函數(shù)如圖9a所示。圖9a中的三角形凸峰對應(yīng)該過程的倒邊部分。圖9b與圖9a屬于同一時期并示出透鏡中心作為時間的函數(shù)沿研磨輪軸的位置X。在圖9b的個別例子中,透鏡的進(jìn)料速度(dx/dt)在該過程的倒邊部分期間變小。這圖示在圖9c中。然而,應(yīng)該理解進(jìn)料速度的任何順序或變化是可能的。
圖9a、9b和9c對應(yīng)圖4中所表明的透鏡軌跡,其中透鏡毛坯16不間斷地軸向橫過研磨輪10。前面提到的所有參數(shù)可以同樣的方式圖示。將這樣的圖分為N個點(以圖9a、9b和9c的方式)并數(shù)字化代表存儲在存儲器60中的數(shù)據(jù)。
圖10以表的形式示出存儲在存儲器60中的數(shù)據(jù)格式。在將該過程分為(標(biāo)號為t0、t1、t2等)圖10的表中的64,000個點的每一點上確定透鏡軸向進(jìn)料速度、研磨輪速度、透鏡旋轉(zhuǎn)速度、研磨力、位移r和透鏡旋轉(zhuǎn)角θ。在該過程的每一點ti,微處理機(jī)34從圖10的表(存儲在存儲器60中)取出上述參數(shù)每一個的對應(yīng)值并從中確定送到透鏡伺服控制器54、研磨輪馬達(dá)70和透鏡旋轉(zhuǎn)馬達(dá)58的伺服控制信號中的任何變化。通過控制透鏡伺服臂52的運動,透鏡伺服控制器54控制透鏡沿輪10軸的軸向平移速度、透鏡的旋轉(zhuǎn)速度以及透鏡中心離研磨輪10表面的距離r。
熟練工人可以作出圖10中表的各種實際實施例,其中某些前述參數(shù)如前面提到的作為多余部分或不必要而省去。例如,在N個時間點的每一點規(guī)定透鏡的旋轉(zhuǎn)角度θ可避免要求在N點的每一點規(guī)定透鏡旋轉(zhuǎn)速度dθ/dt。
沒有已知的方法用于在將透鏡磨邊過程分為圖10表中的N=64,000點的每一點上對所有前述參數(shù)計算優(yōu)化值。根據(jù)本發(fā)明,將N點的每一點上的所有參數(shù)的優(yōu)化值數(shù)組定義為導(dǎo)致最大產(chǎn)量而不損傷玻璃透鏡材料的數(shù)組。這種損傷由在磨邊或磨邊過程后在透鏡邊緣上的粗劣表面拋光期間可見的火花(玻璃粒子的燃燒)來表現(xiàn)。
本發(fā)明用圖10表中的參數(shù)優(yōu)化值對存儲器60編程并操作圖3系統(tǒng)的方法,從圖11所示的流程圖中的初步學(xué)習(xí)步驟著手?;旧希趯⒃撨^程分為圖10的表中的N點的每一點上所有參數(shù)都要進(jìn)行變化,并且將具有在研磨輪旁最高的玻璃透鏡材料的移動速度而沒損傷該材料的表現(xiàn)的參數(shù)值的組合選擇為該過程中那一點的優(yōu)化數(shù)組。將該作業(yè)執(zhí)行N次以便在N點的每一點上找到參數(shù)值的優(yōu)化組合。
在圖11的實施例中,該方法使用了一個圖3中所示的火花傳感器72(諸如紅外傳感器),安置來探測任何由研磨輪10從透鏡毛坯16磨掉的玻璃粒子火花。微處理機(jī)34在透鏡研磨過程(圖11的塊80到108)中N點的每一點上使該系統(tǒng)自動地系統(tǒng)地逐步通過圖10表中所有參數(shù)的所有可能組合。對于參數(shù)值的每一組合,微處理機(jī)34詢問火花傳感器72以決定該組合是否被準(zhǔn)許。在將所有數(shù)據(jù)存儲后,微處理機(jī)34找到最大的允許的研磨輪速度并將其與別的參數(shù)值一起同時存入存儲器60中的圖10的表中(圖11的塊110)。這樣微處理機(jī)34通過對透鏡磨邊和倒邊過程分成N點的每一點執(zhí)行前述作業(yè)將所有條款填入圖10的表中。
在圖11的簡化實例中,為指導(dǎo)清楚起見,假設(shè)透鏡毛坯16軸向平移過研磨輪10表面的線進(jìn)料速度在整個磨邊過程期間為恒定的,并在倒邊期間降低為另一較小的恒定速度。然而,應(yīng)該認(rèn)識到這個簡化不是必要的,并在執(zhí)行本發(fā)明中大都不被使用。對于這個簡化,每個時間點t易于根據(jù)圖9a和9b的圖與透鏡毛坯16的某一確定位置X、Y相聯(lián)系。對圖10表中的每一參數(shù)(研磨輪速度等)選擇一個實際范圍。
該學(xué)習(xí)過程由將每個參數(shù)設(shè)置到其范圍的起點并將標(biāo)號i初始化為零開始(圖11的塊80)。然后將透鏡毛坯16的位置Xi、Yi增量到下一個位置(i+1st),微處理機(jī)34詢問火花傳感器72,如果火花傳感器72沒有檢測出玻璃透鏡材料過熱則將所有參數(shù)的當(dāng)前值存儲在圖10的表中(圖11的塊82)。然后將研磨輪速度增量,微處理機(jī)34重復(fù)如前同樣的詢問和存儲作業(yè)(塊84)。下一步,將透鏡旋轉(zhuǎn)速度增量,微處理機(jī)34重復(fù)如前同樣的詢問和存儲作業(yè)(塊86)。然后將研磨力增量,微處理機(jī)34重復(fù)如前同樣的詢問和存儲作業(yè)(塊90)。
在內(nèi)循環(huán)中連續(xù)重復(fù)塊90的步驟直到研磨力到達(dá)其范圍的終端(塊92),在該點將其重置到其范圍的起點(塊94)。然后,在外循環(huán)中連續(xù)重復(fù)塊86的步驟,每個這樣的重復(fù)包括一個完整的內(nèi)循環(huán)周期性工作直到透鏡旋轉(zhuǎn)速度到達(dá)其范圍的終點(塊100),在該點將其重置到其范圍的起點(塊102)。下一步,連續(xù)重復(fù)塊84的步驟,每個這樣的重復(fù)以前述方式包括一個完整的內(nèi)部和外部循環(huán)周期性工作直到研磨輪速度達(dá)到其范圍的終點(塊104),在該點將其重置到其范圍的起點(塊106)。
如果透鏡毛坯沒有到達(dá)其移動的終點(塊108),該過程返回到塊82的步驟并重復(fù)它自己。否則(塊108的YES分支),微處理機(jī)34開始分析在先前步驟中存儲的數(shù)據(jù)(塊110)。在塊110的步驟中,微處理機(jī)34重查對于透鏡毛坯16的軌跡中N個位置Xi、Yi的每一個位置所記錄的所有參數(shù)組合。在每個位置處,微處理機(jī)確定哪個組合具有最高的研磨輪速度,并(僅僅)將該組合記錄在圖10表中ti的對應(yīng)值處。
圖11的流程圖示出根據(jù)本發(fā)明可實現(xiàn)的許多可能的試錯學(xué)習(xí)過程之一。在圖11的過程中,按照最大研磨輪速度簡單地確定參數(shù)值的最佳組合,并使用了火花傳感器。另外,也可使用其它方法來定義參數(shù)值的優(yōu)化組合。作為另一替換,可用對表面光潔度的檢測替代火花傳感器72。當(dāng)然,某些前述參數(shù)可取消或用別的等效參數(shù)替換。
圖11編程學(xué)習(xí)過程的一個優(yōu)點是增大研磨輪10從玻璃透鏡毛坯16中磨掉材料的速度也就增大了從毛坯16中帶走熱量的速度,從而研磨速度優(yōu)化值的上限可比希望的高得多。然而,通常以32到250的透鏡邊緣的表面光潔度均方根為特征的可接受結(jié)果由約2,500RPM的研磨輪速度、20RPM的透鏡旋轉(zhuǎn)速度和30英寸/分的軸向透鏡進(jìn)料速度來獲得。最好是,輪10的頂尖部分14的夾角為113°。
最好是,微處理機(jī)34是熟知型號的AT計算機(jī)系統(tǒng)的一部分,其中微處理機(jī)通過一個盤驅(qū)動控制器82控制20兆字節(jié)的硬盤存儲器80,通過一個視頻控制器86控制監(jiān)視器84。可通過AT鍵盤終端88將命令送入微處理機(jī)。存儲器60、62和66是硬盤存儲器80中單獨的存儲器單元。操作者可使用鍵盤終端88使微處理機(jī)34在監(jiān)視器上顯示關(guān)于圖3系統(tǒng)執(zhí)行的透鏡磨邊過程的信息。操作者也可使用鍵盤終端88開始或中斷或修改該過程,例如允許通過調(diào)制解調(diào)器68接收新的透鏡設(shè)計數(shù)據(jù)并存儲在存儲器80中,操作者也可使用鍵盤終端88命令微處理機(jī)開始圖11的編程學(xué)習(xí)過程。最好是,圖11的過程以存儲在存儲器80中的軟件程序執(zhí)行。
盡管本發(fā)明已通過參照其特定的最佳實施例進(jìn)行了詳細(xì)說明,但應(yīng)理解在不違背本發(fā)明的實質(zhì)精神和范圍的前提下可對其進(jìn)行各種變型和改進(jìn)。
附錄A' This program prompts user for radii and radii locations' Written by Jim Pickett December,1989' Modified by Rory Flemmer November/December 1989.
DEFINT I-NDEFDBL A-H,O-Zmax=300DIM x(max),y(max),r(max)CLSLOCATE 1,35PRINT "PROGRAM NEWFILE"LOCATE 2,35PRINT"-"FOR i=1 TO 8READ f$LOCATE 3+2* i,15PRINT f$NEXT iDATA "This program prompts the user to input lens shape information."DATA "The data is read from B&L style blueprints as co-ordinates"DATA "for the center of each arc and then its radius"DATA "Up to one hundred radii can be used."DATA "The program creates a file with a name selected by the user"DATA "The program adds the suffix <.len> to the filename and stores"DATA "the data on disc in the current directory."DATA "The program provides an on-screen editor"LOCATE 23,30PRINT "Hit Any Key to Continue."a$=""WHILE a$=""a$=INKEY$WENDCLSLOCATE 2,5PRINT "Number X-Location Y-Location Radius"LOCATE 21,1PRINT "Enter 999,999,999 to quit."i=0100i=i+1IF i>max THENPRINT "TOO MANY RADII FOR PROGRAM MEMORY"GOTO 1000END IFLOCATE 22,1IF i<10 THENPRINT USING "Enter values for the followingX(#),Y(#),Radius(#)";i;i;iELSE
FOR i=0 TO 4095 STEP 10k=i+offsetIF k>4095 THEN k=k-4096IF k<0 THEN k=k+4096j=i+tIF j>4095 THEN j=j(luò)-4096IF j<0 THEN j=j(luò)+4096x=r(j) * COS(theta(k))y=r(j) * SIN(theta(k))PSET (x,y)IF i MOD 10=0 THENx=rprs(i) * COS(thetaprs(i))y=rprs(i) * SIN(thetaprs(i))PSET(x,y)END IFNEXT iLOCATE 12,40PRINT CINT(t * 360/4096);"degrees"LOCATE 23,1PRINT"Input desired rotation in degrees-999 to quit";
INPUT zIF z=999 THEN STOPWHILE z -;0z=z+360WENDWHILE z>360z=z-360WENDt=t+z * 4095/360IF t<0 THEN t=t+4096IF t>4095 THEN t=t-4096GOTO redraw
iendswitch=1END IFict=0FOR N=istart TO iendict=ict+1LOCATE ict+3,2PRINT USING "### ###.######## ###.######## ###.########";N;x(N);y(N);r(N)NEXT NIF iendswitch=1 THEN GOTO 401VIEW PRINT 21 TO 25LOCATE 21,1801 PRINT "Enter 'C' to continue display,'E' to edit this data,or 'Q' to quit."a$=""WHILE a$=""a$=INKEY$WENDIF UCASE$(a$)="C" THEN GOTO 501IF UCASE$(a$)="E" THEN GOTO 401IF UCASE$(a$)="Q" THEN GOTO 601CLS 2GOTO 801501 istart=iend+1iend=iend+15IF iend>=i THENiend=iiendswitch=1END IFVIEW PRINT 1 TO 25CLS 2LOCATE 2,5PRINT "Number X-LocationY-Location Radius"ict=0FOR N=istart TO iendict=ict+1LOCATE ict+3,2PRINT USING " ######.######## ###.######## ###.########";N;
x(N);y(N);r(N)NEXT NIF iendswitch=1 THEN GOTO 401LOCATE 21,1701 PRINT "Enter 'C' to continue display,'E' to edit this data,or 'Q' to quit."a$=""WHILE a$=""a$=INKEY$WENDIF UCASE$(a$)="C" THEN GOTO 501IF UCASE$(a$)="E" THEN GOTO 401IF UCASE$(a$)="Q" THEN GOTO 601GOTO 701
Orient' Written by Bill Long November/December 1989' Modified by Rory Flemmer November/December 1989OPTION BASE 0n=4095DIM r(n),theta(n),rprs(n),thetaprs(n)SCREEN 2WINDOW (-2.66,-2)-(2.66,2)CLSLOCATE 5,10PRINT "This program establishes theOrientation of the Lens in the Pressing"LOCATE 6,10PRINT"--"LOCATE 10,10PRINT "The program requires the selection of a known lens style"LOCATE 12,10PRINT "such as <style002> and a pressing style such as <p55>"LOCATE 14,10PRINT "The program will then draw the lens and the pressing and invite the"LOCATE 16,10PRINT "user to specify the number of degrees of rotation,positive or negative"LOCATE 18,10PRINT "The program will re-draw the lens until a value of 999 is entered"LOCATE 22,10PRINT "Hit any key to continue or Q to quit"a$=""WHILE a$=""a$=INKEY$WENDIF a$="q" OR a$="Q" THEN STOPCLSLOCATE 10,20INPUT "lens style please",s$CLSLOCATE 10,20INPUT "pressing style please",p$s$="style002"f$="p55"CLSLOCATE 12,20PRINT "Reading and manipulating data"LOCATE 16,20PRINT "Please be patient this is a major computational effort"OPEN s$+".cds" FOR INPUT AS #1OPEN f$+".prs" FOR INPUT AS #2FOR i=0 TO 4095INPUT #1,r(i),theta(i),zINPUT #2,rprs(i),thetaprs(i)NEXT iFOR i=0 TO 4095IF theta(i)=0 THEN offset=iNEXT iredrawCLSWINDOW(-2.66,-2)-(2.66,2)
IF i<100 THENPRINT USING "Enter values for the followingX(##),Y(##),Radius(##)";i;i;iELSEPRINT USING "Enter values for the followingX(###),Y(###),Radius(###)";i;i;iEND IFEND IFVIEW PRINT 23 TO 25LOCATE 23,2INPUT;"",x(i),y(i),r(i)PRINTIF x(i)=999 OR y(i)=999 OR r(i)=999 THENi=i-1GOTO 200END IFVIEW PRINT 1 TO 25CLSLOCATE 2,5PRINT "Number X-Location Y-Location Radius"istart=1IF i>16 THEN istart=i-16+1ict=0FOR N=istart TO iict=ict+1LOCATE ict+3,2PRINT USING"### ###.######## ###.######## ###.########";N;x(N);y(N);r(N)NEXT NLOCATE 21,1PRINT "Enter 999,999,999 to quit."GOTO 100200 PRINT "Is all data correct (Y or N)?(Y)"a$=""WHILE a$=""a$=INKEY$WENDVIEW PRINT 21 TO 25101 CLS 2LOCATE 21,2IF UCASE$(a$)="N"THENVIEW PRINT 1 TO 25CLSLOCATE 2,5PRINT "Number X-Location Y-Location Radius"istart=1iend=i900 IF i>16 THENiend=16ELSE
END IFGOTO 601401 iendswitch=0VIEW PRINT 21 TO 25CLS 2LOCATE 21,2PRINT "ENTER CHOICE"PRINT "1-INSERT A LINE 3-DELETE A LINE"PRINT "2-CHANGE A LINE 4-QUIT EDITING"PRINT "* ANY OTHER ENTRY WILL RETURN DISPLAY TO TOP OF FILE *"iselect$=""WHILE iselect$=""iselect$=INKEY$WENDIF iselect$="1" OR iselect$="2" OR iselect$="3" OR iselect$="4" THEN GOTO 103GOTO 101103 IF iselect$="1" THEN GOSUB insertIF iselect$="2" THEN GOSUB changeIF iselect$="3" THEN GOSUB deleteIF iselect$="4" THEN GOTO 102IF iendswitch=1 THEN GOTO 401IF UCASE$(a$)="C" THEN GOTO 501IF UCASE$(a$)="E" THEN GOTO 401IF UCASE$(a$)="Q" THEN GOTO 601a$="N"GOTO 101102 CLS 2PRINTPRINT "Is all data correct (Y or N)?(Y)"a$=""WHILE a$=""a$=INKEY$WENDIF UCASE$(a$)="N" THEN GOTO 101601 VIEW PRINT 21 TO 25CLS 2PRINT "Enter filename under which to save data or RETURN to quit."INPUT;"",a1$'a$=""'WHILE a$=""' a$=INKEY$'WENDIF a1$=""THENPRINT "Are you sure you wish to abort edit (Y or N)?(N)"
a$=""WHILE a$=""a$=INKEY$WENDIF UCASE$(a$)="Y" THEN GOTO 1000GOTO 200END IFOPEN "c\buf\"+a1$+".len" FOR OUTPUT AS #1WRITE #1,iFOR n1=1 TO iWRITE #1,x(n1),y(n1),r(n1)NEXT n1CLOSE #11000 CLSCLEARVIEW PRINT 1 TO 25' CHAIN "pulldwnl"END'--insert301 CLS 2LOCATE 21,2PRINT "Line to be inserted?"INPUT;"",ilineIF iline<1 THEN GOTO 301IF i+1>max THENPRINT "TOO MANY RADII FOR PROGRAM MEMORY"PRINT "CHANGES NOT SAVED"a$=""WHILE a$=""a$=INKEY$WENDGOTO 1000END IFIF iline>i THENiline=i+1ELSEFOR n2=i TO iline STEP-1SWAP x(n2+1),x(n2)SWAP y(n2+1),y(n2)SWAP r(n2+1),r(n2)NEXT n2' iswitch=1' number=i' i=ilineEND IFi=i+1LOCATE 22,1IF iline<10 THENPRINT USING "Enter values for the followingX(#),Y(#),Radius(#)";iline;iline;ilineELSE
IF iline<100 THENPRINT USING "Enter values for the followingX(##),Y(##),Radius(##)";iline;iline;ilineELSEPRINT USING "Enter values for the followingX(###),Y(###),Radius(###)";iline;iline;ilineEND IFEND IFVIEW PRINT 23 TO 25LOCATE 23,2INPUT;"",x(iline),y(iline),r(iline)VIEW PRINT 1 TO 25CLSLOCATE 2,5PRINT "Number X-Location Y-Location Radius"IF iline<istart THEN istart=ilineiend=iend+1IF iline>iend THEN istart=ilineiend=istart+15IF iend>=i THENiend=iiendswitch=1END IFict=0FOR N=istart TO iendict=ict+1LOCATE ict+3,2PRINT USING" ### ###.######## ###.######## ###.########";N;x(N);y(N);r(N)NEXT NVIEW PRINT 21 TO 25LOCATE 21,1IF iendswitch=1 THEN RETURN751 PRINT "Enter 'C' to continue display,'E' to edit this data,or 'Q' to quit."a$=""WHILE a$=""a$=INKEY$WENDCLS 2IF UCASE$(a$)<> "Q" AND UCASE$(a$) <>"C" ANDUCASE$(a$)<> "E" THEN GOTO 751RETURN'--changeCLS 2331 LOCATE 21,2PRINT "Line to be changed ?"INPUT;"",ilineIF iline<1 OR iline>i THENPRINT "That line does not exist."
GOTO 331END IFCLS 2LOCATE 21,2PRINT "Number X-Location Y-Location Radius"PRINT USING"### ###.######## ###.######## ###.########";iline;x(iline);y(iline);r(iline)IF iline<10 THENPRINT USING"Enter values for the followingX(#),Y(#),Radius(#)";iline;iline;ilineELSEIF iline<100 THENPRINT USING"Enter values for the followingX(##),Y(##),Radius(##)";iline;iline;ilineELSEPRINT USING"Enter values for the followingX(###),Y(###),Radius(###)";iline;iline;ilineEND IFEND IFLOCATE 25,2INPUT;"",x(iline),y(iline),r(iline)VIEW PRINT 1 TO 25CLS 2LOCATE 2,5PRINT "Number X-Location Y-Location Radius"IF iline=iend THENistart=iend-15IF istart<0 THEN istart=0GOTO 222END IFIF iline<istart THEN istart=ilineIF iline>iend THEN istart=ilineiend=istart+15IF iend>=i THENiend=iiendswitch=1END IF222 ict=0FOR N=istart TO iendict=ict+1LOCATE ict+3,2PRINT USING" ### ###.######## ###.######## ###.########";N;x(N);y(N);r(N)NEXT NVIEW PRINT 21 TO 25LOCATE 21,1IF iendswitch=1 THEN RETURN771 PRINT "Enter 'C' to continue display,'E' to edit this data,or 'Q' to quit."
a$=""WHILE a$=""a$=INKEY$WENDCLS 2IF UCASE$(a$)<>"Q" AND UCASE$(a$)<>"C" AND UCASE$(a$)<>"E" THEN GOTO 771RETURN'--deleteCLS 2351 LOCATE 21,2PRINT "Line to be deleted ?"INPUT;"",ilineIF iline<1 OR iline >i THENPRINT "That line does not exist."GOTO 351END IFx(iline)=0y(iline)=0r(iline)=0FOR n2=iline TO iSWAP x(n2+1),x(n2)SWAP y(n2+1),y(n2)SWAP r(n2+1),r(n2)NEXT n2i=i-1VIEW PRINT 1 TO 25CLS 2LOCATE 2,5PRINT "Number X-Location Y-Location Radius"IF iline=iend THEN istart=iend-15IF iline<istart THEN istart=ilineIF iline>iend THEN istart=ilineiend=istart+15IF iend>=i THENiend=iiendswitch=1END IFict=0FOR N=istart TO iendict=ict+1LOCATE ict+3,2PRINT USING" ### ###.######## ###.######## ###.########";N;x(N);y(N);r(N)NEXT NVIEW PRINT 21 TO 25LOCATE 21,1IF iendswitch=1 THEN RETURN
761 PRINT"Enter 'C' to continue display,'E' to edit this data,or 'Q' to quit."a$=""WHILE a$=""a$=INKEY$WENDCLS 2IF UCASE$(a$)<>"Q" AND UCASE$(a$)<>"C" AND UCASE$(a$)<>"E" THEN GOTO 761RETURN'--
'Compute pressing dataWritten by Rory Flemmer,November/December 1989.
304-864 5568DEFSNG A-ZOPTION BASE 0CLSLOCATE 1,25PRINT "Program PRESSING"LOCATE 2,25PRINT "-"FOR i=1 TO 4READ f$LOCATE 4+2*i,10PRINT f$NEXT iDATA "This program requests dimensions of the pressing in inches"DATA "It uses these to create a data file on the default disc in"DATA "the current directory called <filename.prs>"DATA "<filename> is a name with not more than 8 letters,supplied by the user"LOCATE 22,50PRINT "Hit any key to continue-Q to quit"a$=""WHILE a$=""a$=INKEY$WENDIF a$="q" OR a$="Q" THEN STOPnn=4095pi=3.141593theta=0zinc=(pi+pi)/4096DIM r(nn),theta(nn)CLSLOCATE 10,20INPUT "Enter diameter of pressing-in.",zradius=z/2LOCATE 15,20INPUT "Enter width of pressing-in.",zwidt=z/2LOCATE 20,20INPUT "Please enter file name,without suffix-999 to quit";f$IF f$="999" THEN STOPOPEN f$+".prs" FOR OUTPUT AS #1SCREEN 2WINDOW (-2.66,-2)-(2.66,2)theta=-zincFOR i=0 TO 4095theta=theta+zincIF theta>pi/2 AND theta<3*pi/2 THEN
widt=-ABS(widt)ELSEwidt=ABS(widt)END IFyval=widt*TAN(theta)length=SQR(yval*yval+widt*widt)IF length>radius THEN length=radiusy=length*SIN(theta)x=length*COS(theta)PSET(x,y)WRITE #1,length,thetaNEXT iLOCATE 23,1PRINT"Pressing data computed and stored as";f$+".PRS"
' Lensedge-written by Jim Pickett,May and December,1989.
' Modified by R.L.C. Flemmer,Jan 1990.
' builds an object from radii and centre locations in *.len file' puts edge data in *.cds fileCLEAR' $DYNAMICDEFINT I-NDEFDBL A-H,O-ZCLSLOCATE 1,25PRINT"Program LENSEDGE"LOCATE 2,25PRINT"-"FOR i=1 TO 9READ f$LOCATE 2+2*i,1PRINT f$NEXT iDATA "This program reads data from the file <filename.len>,created by NEWFILE."DATA "It prompts the user for <filename> and adds the suffix <.len>.Its function"DATA "is to create a data file which specifies information for the edge of the"DATA "style under consideration.The file is stored on the default disc"DATA "in the current directory"DATA ""DATA "<filename>.cds contains 4096 data triples.Each of the 4096 triples gives"DATA "values for the angle (radians),radius at that angle (thousandths of an inch"DATA "and offset due to the 6 diopter curvature (thousandths of an inch"LOCATE 23,20PRINT "Hit any key to continue-q to quit"a$=""WHILE a$=""a$=INKEY$WENDIF a$="q" OR a$="Q" THEN STOPCLSFOR i=1 TO 5READ f$LOCATE 5+2*i,5PRINT f$NEXT iDATA "The program initially calculates the lens edge from the data in"DATA "<filename.len>.During this process it draws out the lens on the screen."DATA ""DATA "Thereafter it interpolates this data to provide data at 4096 equal"
DATA "increments of angle.During this process,it re-draws the lens."LOCATE 23,20PRINT "Hit any key to continue-q to quit"a$=""WHILE a$=""a$=INKEY$WENDIF a$="q" OR a$="Q" THEN STOPCLSPRINT "Input lens style file.(Include directory and path)"PRINTINPUT"",a1$PRINTOPEN a1$+".len" FOR INPUT AS #1GOTO 2010 CLSPRINT "There is no lens file";a1$;"found."PRINT "Please input a file which is present.(Include directory and path)"PRINTINPUT;"",a1$PRINTOPEN a1$+".len" FOR INPUT AS #120 'OPEN a1$+".cnc" FOR OUTPUT AS #2dioptres=6diop=(1000#/6)/25.4#pi=3.141592653589793#pid2=pi*.5pi2=pi*2pid180=pi/180ipts=4096igain=20000offset=-2.5INPUT #1,numn=5200DIM x(num),y(num),rad(num),xstart(num),ystart(num),xx(n),yy(n),xxx(n),yyy(n)CLSFOR i=1 TO numINPUT #1,x(i),y(i),rad(i)NEXT iCLOSE #1SCREEN 2WINDOW (-1.5,-1.2)-(1.5,1.2)LOCATE 1,36PRINT a1$LINE (-10,0)-(10,0)LINE (0,-10)-(0,10)a1=x(num)
b1=y(tǒng)(num)r1=rad(num)aa1=a1bb1=b1rr1=r1FOR i=1 TO numa2=x(i)b2=y(tǒng)(i)r2=rad(i)aa1=a2bb1=b2rr1=r2GOSUB findintersectionxstart(i)=xminystart(i)=y(tǒng)minCIRCLE (xmin * 70,ymin * 70),1,12a1=a2b1=b2r1=r2aa1=a1bb1=b1rr1=r1NEXT icount=0ymin=.1FOR i=1 TO numxbegin=xstart(i)ybegin=y(tǒng)start(i)IF i+1>num THENxend=xstart(1)yend=y(tǒng)start(1)ELSExend=xstart(i+1)yend=y(tǒng)start(i+1)END IFzcrement=.001IF xbegin>xend THEN zcrement=-.001FOR zj=xbegin TO xend STEP zcrementcount=count+1arg=rad(i)*rad(i)-(zj-x(i))*(zj-x(i))
IF arg<0 THENPRINT argIF arg -;01 THENLOCATE 2,1PRINT "flag2"GOTO 111ELSEarg=0END IFEND IFroot=SQR(arg)y1=y(tǒng)(i)+rooty2=y(tǒng)(i)-rootIF ABS(y1-yend)<ABS(y2-yend)THENyy=y(tǒng)1ELSEyy=y(tǒng)2END IFIF zj=xbegin AND ABS(yy-ybegin)>.05 THENGOSUB interpolatecount=count+1xi=zjyi=y(tǒng)yPSET(zj,yy),ixx(count)=zjyy(count)=y(tǒng)yELSExi=zjyi=y(tǒng)yPSET(zj,yy),ixx(count)=zj;yy(count)=y(tǒng)yEND IF111 NEXT zjNEXT iCLOSE #1PAINT (0,0),1GOSUB getlensdata1 LOCATE 23,1PRINT "PRESS ANY KEY TO CONTINUE"a$=""WHILE a$=""a$=INKEY$WENDCLSSCREEN 2CLEARVIEW PRINT 1 TO 25END'--findintersection
slope=(b2-b1)/(a2-a1)bcept=b2-slope*a2aaa=1+slope*slopebbb=2*slope*(bcept-b1)-2*a1ccc=a1*a1+(bcept-b1)*(bcept-b1)-r1*r1arg=bbb*bbb-4*aaa*cccdenom=1/(2*aaa)root=SQR(arg)x1=(-bbb+root)*denomx2=(-bbb-root)*denomy1=x1*slope+bcepty2=x2*slope+bceptdiff1=(x1-a1)*(x1-a1)+(y1-b1)*(y1-b1)-r1*r1diff2=(x2-a1)*(x2-a1)+(y2-b1)*(y2-b1)-r1*r1diff3=(x1-a2)*(x1-a2)+(y1-b2)*(y1-b2)-r2*r2diff4=(x2-a2)*(x2-a2)+(y2-b2)*(y2-b2)-r2*r2IF ABS(diff1-diff3)>ABS(diff2-diff4) THENxmin=x2ymin=y(tǒng)2ELSExmin=x1ymin=y(tǒng)1END IFRETURN'--interpolatecount=count-1xend1=xendybegin1=y(tǒng)start(i)yend1=y(tǒng)yzcrement2=.001IF ybegin1>yend1 THEN zcrement2=-.001FOR zjj=y(tǒng)begin1 TO yend1 STEP zcrement2count=count+1arg=rad(i)*rad(i)-(zjj-y(i))*(zjj-y(i))IF arg<0 THENIF arg -;01 THENPRINT "flag2"GOTO 112ELSE
arg=0END IFEND IFroot=SQR(arg)x1=x(i)+rootx2=x(i)-rootIF ABS(x1-xend1)<ABS(x2-xend1) THENxx=x1ELSExx=x2END IFxi=xxyi=zjj'GOSUB calangle'radius=rad(i)+wheel'xx(count)=x(i)+radius*COS(angle)'yy(count)=y(tǒng)(i)+radius*SIN(angle)'PSET(xx(count)*70,yy(count)*70)'xx(count)=zjyy(count)=y(tǒng)yy11=y(tǒng)y(count)IF y11<ymin AND y11>0 AND xx(count)>0THENymin=y(tǒng)11ipos=countEND IFPSET(xx,zjj),ixx(count)=xxyy(count)=zjjxend1=xx112NEXT zjjRETURN'--calanglex2i=x(i)y2i=y(tǒng)(i)IF xi=x2i THENIF yi<y2i THENangle=pid2+piELSEangle=pid2END IFGOTO 30END IFangle=ATN((y2i-yi)/(x2i-xi))IF xi<x2i THENangle=pi+angle
END IFIF xi>x2i AND yi<y2i THENangle=2*pi+angleEND IF30 RETURN'--getcncdataiwatch=0IF ipos+1>count THENy2=y(tǒng)y(1)x2=xx(1)ELSEy2=y(tǒng)y(ipos+1)x2=xx(ipos+1)END IFIF y2<yy(ipos) THENx3=xx(ipos)-yy(ipos)*(xx(ipos)-x2)/(yy(ipos)-y2)ELSEIF ipos-1<1 THENy2=y(tǒng)y(count)x2=xx(count)ELSEy2=y(tǒng)y(ipos-1)x2=xx(ipos-1)END IFx3=xx(ipos)-yy(ipos)*(xx(ipos)-x2)/(yy(ipos)-y2)END IFradius=x3y3=0theta=0newradius=(radius+offset)*igainWRITE #2,newradiusdtheta=360/4096*pid180theta=0ict=iposangle=0FOR irad=2 TO iptsIF irad=4094 THEN STOPtheta=theta+dthetaWHILE angle<thetaict=ict+1IF ict>count THENict=1iwatch=1END IFangle2=angleradius2=radiusGOSUB calangle2
WENDrad=radius+((theta-angle)/(angle2-angle))*(radius2-radius)x3=rad*COS(theta)y3=rad*SIN(theta)newradius=(rad+offset)*igain'WRITE #2,newradius'' LINE(0,0)-(x3*70,y3*70),14NEXT irad'close #2RETURN'--calangle2xict=xx(ict)yict=y(tǒng)y(ict)IF xict=0 THENIF yict<0 THENangle=pid2+piELSEangle=pid2END IFGOTO 330END IFangle=ATN(yict/xict)IF xict<0 THENangle=pi+angleEND IFIF irad=ipts THENIF xiot>0 AND yict>0 THENangle=2*pi+angleEND IFEND IFIF iwatch=1 THEN angle=angle+pi2radius=SQR(yict*yict+xict*xict)330 RETURN'--getlensdataCLSOPEN a1$+".cds" FOR OUTPUT AS #3LOCATE 1,36PRINT a1$WINDOW (-1.5,-1.2)-(1.5,1.2)LINE(-1.5,0)-(1.5,0)LINE(0,-1.2)-(0,1.2)'(1.11,.35)-(1.14,.4)n=1zinc=2*pi/4096iflag=0ng=1GOSUB gettan
zlastangle=anglezn=anglexxx(1)=xx(1);yyy(1)=y(tǒng)y(1)rad=SQR(xxx(1)*xxx(1)+yyy(1)*yyy(1))altitude=diop-SQR(diop*diop-rad*rad)WRITE #3,CSNG(rad),CSNG(angle),CSNG(altitude)nguess=1topn=n+1IF n>4096 THEN RETURNIF n>2000 THEN iflag=1znextangle=zlastangle+zincangle=znWHILE angle<znextanglenguess=nguess+1IF nguess>5008 THEN nguess=nguess-5008ng=nguessGOSUB gettanWEND'IF angle>pi+pi THEN angle=angle-pi-pi' LOCATE 1,1PRINT nguess,zlastangle,znextangle,anglezn=angleyyyng=nguess-1GOSUB gettanWHILE angle=znng=ng-1GOSUB gettanWENDz1=anglengless=nguess-1IF ngless<1 THEN ngless=ngless+5008xxx(n)=xx(ngless)+(znextangle-zl)/(zn-zl)*(xx(nguess)-xx(ngless))yyy(n)=y(tǒng)y(ngless)+(znextangle-zl)/(zn-z1)*(yy(nguess)-yy(ngless))rad=SQR(xxx(n)*xxx(n)+yyy(n)*yyy(n))theta=znextanglealtitude=diop-SQR(diop*diop-rad*rad)WRITE #3,CSNG(rad),CSNG(theta),CSNG(altitude)'LOCATE 1,1PRINT rad,theta,altitudezlastangle=znextangle'PRINT n,znextangle*360/2/piPSET (xxx(n),yyy(n))GOTO topRETURN'-gettan'IF ng>5003 THEN STOPIF ng>5008 THEN ng=ng-5008IF ng<1 THEN ng=ng+5008IF xx(ng)>=0 AND yy(ng)>=0 THEN quad=1IF xx(ng)<=0 AND yy(ng)>=0 THEN quad=2
IF xx(ng)>=0 AND yy(ng)<=0 THEN quad=3IF xx(ng)>=0 AND yy(ng)<=0 THEN quad=4SELECT CASE quadCASE 1angle=ATN(yy(ng)/xx(ng))CASE 2angle=pi-ABS(ATN(yy(ng)/xx(ng)))CASE 3angle=pi+ATN(yy(ng)/xx(ng))CASE 4angle=pi+pi-ABS(ATN(yy(ng)/xx(ng)))END SELECTIF angle<0 THEN STOPIF iflag=1 AND angle<1 THEN angle=angle+2*piRETURN
權(quán)利要求
1.一種用于對光學(xué)透鏡工件的邊緣輪廓加工成形的透鏡磨邊系統(tǒng),它包括一個磨邊工具,用于夾持該透鏡工件的夾持裝置,用于存儲代表相對于該磨邊工具透鏡邊緣研磨軌跡數(shù)據(jù)的存儲器裝置,用于移動夾持裝置而將透鏡工件圍繞該夾持裝置的軸旋轉(zhuǎn)過一系列的旋轉(zhuǎn)角并對應(yīng)該一系列旋轉(zhuǎn)角將透鏡工件的邊緣壓向該磨邊工具到一系列透鏡半徑的伺服裝置,與該存儲器裝置相連用于控制伺服裝置從而根據(jù)存儲在存儲器中代表透鏡邊緣研磨軌跡的數(shù)據(jù)調(diào)整所述一系列透鏡旋轉(zhuǎn)角和一系列透鏡半徑的可編程微處理機(jī)。
2.權(quán)利要求1所述的系統(tǒng),其特征在于所述伺服裝置包括用來使所述夾持裝置將透鏡工件軸向平移過所述磨邊工具表面的裝置,所述微處理機(jī)裝置使所述夾持裝置將透鏡工件連續(xù)地平移過所述磨邊工具表面,從而使磨邊工具需要修整的頻率減為最小。
3.權(quán)利要求1所述的系統(tǒng)還包括用于檢測由磨邊工具對其邊緣進(jìn)行研磨的透鏡工件的半徑的透鏡尺寸傳感器裝置,其特征在于所述微處理機(jī)裝置包括用于將所述傳感器裝置探測到的實際透鏡半徑與預(yù)定值相比較并計算其差值的裝置,用于修正所述一系列透鏡半徑以補(bǔ)償所述差值,從而允許磨邊工具磨損而不會在磨邊工具上磨邊的一系列透鏡的實際透鏡半徑中引起相應(yīng)誤差的裝置。
4.權(quán)利要求1所述的系統(tǒng),其特征在于所述存儲器裝置包含在沿透鏡軌跡N個點上確定透鏡半徑和透鏡旋轉(zhuǎn)角的表,該表包含透鏡軌跡數(shù)據(jù),該表還在N點的每一個點上至少確定下列參數(shù)之一的對應(yīng)值(a)透鏡工件相對于磨邊工具軸的平移速度,(b)透鏡旋轉(zhuǎn)速度,(c)磨邊工具速度,以及(d)將透鏡工具夾持貼靠于磨邊工具的力,從而確定一系列參數(shù)值,以及所述伺服裝置包含由微處理機(jī)裝置控制的用于根據(jù)存儲器中表的內(nèi)容至少控制參數(shù)之一的裝置。
5.權(quán)利要求4所述的系統(tǒng),其特征在于存儲器中的一系列參數(shù)值由試錯法確定,該方法包括在磨邊工具上研磨透鏡工件的邊緣,同時至少改變參數(shù)之一,以便在監(jiān)測透鏡工件過熱的同時獲得許多參數(shù)的組合,除去監(jiān)測步驟探測到透鏡工件過熱的那些組合,以及將具有最高磨邊工具速度而沒觀察到過熱的組合存儲在表中。
6.權(quán)利要求5所述的系統(tǒng),其特征在于在一系列透鏡半徑和透鏡旋轉(zhuǎn)角的每一個上執(zhí)行該方法從而產(chǎn)生表的一組對應(yīng)的連續(xù)條款。
7.權(quán)利要求1所述的系統(tǒng)還包含用于存儲多個將在磨邊工具上磨邊的透鏡毛坯的卸料圓盤傳送帶裝置,用于存儲多個在磨邊工具上由磨邊透鏡毛坯形成的透鏡的裝料圓盤傳送帶裝置,由微處理機(jī)裝置控制的用于從卸料圓盤傳送帶裝置中抓取一系列透鏡毛坯中一個并將其放在夾持裝置之間的卸料臂伺服裝置,由微處理機(jī)控制用于將由透鏡毛坯研磨成的透鏡從夾持裝置取出并將其放入裝料圓盤傳送帶裝置的裝料臂伺服裝置。
8.權(quán)利要求1所述的系統(tǒng)還包括用于接收透鏡設(shè)計數(shù)據(jù)的輸入裝置,用于從透鏡設(shè)計數(shù)據(jù)計算代表透鏡邊緣研磨軌跡的數(shù)據(jù)并將透鏡軌跡數(shù)據(jù)存入存儲器的可編程裝置。
9.權(quán)利要求8所述的系統(tǒng),其特征在于磨邊工具包括一個柱面部分和一個用于對透鏡邊緣倒邊的頂尖部分,其特征還在于用于計算透鏡軌跡數(shù)據(jù)的可編程裝置包括用于接收加到透鏡設(shè)計數(shù)據(jù)上的下列規(guī)范的裝置,所述規(guī)范為(a)磨邊工具頂尖部分的夾角,和(b)磨邊工具柱面部分的半徑。
全文摘要
一種用于對透鏡磨邊的計算機(jī)數(shù)控機(jī)系統(tǒng)根據(jù)存在存儲器中的透鏡形狀控制透鏡工件相對于磨邊工具的旋轉(zhuǎn)和位移。該系統(tǒng)將透鏡工件連續(xù)軸向平移過磨邊輪的表面以便使磨損均勻分布在磨邊輪表面,從而減少對磨邊輪修整的要求。該系統(tǒng)將透鏡尺寸與預(yù)定尺寸相比較并通過在對連續(xù)透鏡工件磨邊期間自動調(diào)整透鏡軌跡來補(bǔ)償其任何差值,從而允許磨邊輪磨損而沒有明顯的透鏡尺寸誤差。該系統(tǒng)在整個透鏡磨邊操作期間的每個離散點上控制磨邊工具的速度、透鏡旋轉(zhuǎn)速度、透鏡軸向進(jìn)料速度和透鏡工件與磨邊輪間的力以優(yōu)化產(chǎn)量而避免透鏡工件過熱。
文檔編號B24B49/02GK1055688SQ91101319
公開日1991年10月30日 申請日期1991年2月27日 優(yōu)先權(quán)日1990年2月27日
發(fā)明者戴維·L·布賴昂 申請人:博士倫有限公司