摘 è¦ï¼šæå‡ºäº†ä¸€ç¨®åŸºäºŽAutoCAD的模塊化è¨(shè)計(jì)方法,并å°(duì)自動(dòng)編程系統(tÇ’ng)開發(fÄ)的關(guÄn)éµæŠ€è¡“(shù)進(jìn)è¡Œäº†ç ”ç©¶ï¼ŒåŒ…æ‹¬åœ–å½¢æ•¸(shù)據(jù)çš„é‡‡é›†ï¼ŒåŠ å·¥æ¨¡å…·çš„é¸æ“‡ï¼ŒåŠ å·¥è·¯å¾‘çš„å„ª(yÅu)化處ç†ä»¥åŠNC代碼的生æˆç‰è‡ªå‹•(dòng)編程的一系列éŽ(guò)ç¨‹ã€‚ç ”ç©¶äº†ä»¿çœŸæ¨¡å¡Šçš„ç¸½é«”çµ(jié)æ§‹(gòu)方案,實(shÃ)ç¾(xià n)了基于AutoCAD的二ç¶å‹•(dòng)æ…‹(tà i)仿真。實(shÃ)è¸ç”Ÿç”¢(chÇŽn)è‰æ˜Žï¼ŒåŸºäºŽAutoCAD的數(shù)控沖床自動(dòng)編程系統(tÇ’ng)èƒ½å¤ æ»¿è¶³å¯¦(shÃ)際生產(chÇŽn)的需è¦ï¼Œèƒ½å¤ 有效æé«˜æ•¸(shù)æŽ§æ²–å£“åŠ å·¥çš„ç”Ÿç”¢(chÇŽn)效率和安全性。
é—œ(guÄn)éµå—:VisualLISP;數(shù)控沖床;自動(dòng)編程;åŠ å·¥ä»¿çœŸ
1 概述
  隨著科å¸(xué)技術(shù)的發(fÄ)展,數(shù)控機(jÄ«)床越來(lái)越廣泛地應(yÄ«ng)用在機(jÄ«)æ¢°åˆ¶é€ è¡Œæ¥(yè)ä¸ã€‚在數(shù)æŽ§åŠ å·¥ç³»çµ±(tÇ’ng)ä¸ï¼Œå‚³çµ±(tÇ’ng)çš„NC代碼手工編程ä¸åƒ…效率低,而且容易出錯(cuò);而采用APT語(yÇ”)言的自動(dòng)編程雖然幾何定義語(yÇ”)å¥ç°¡(jiÇŽn)潔,功能較強(qiáng)ï¼Œä½†è¦æ±‚編程人員è¦ç†Ÿè¨˜ç³»çµ±(tÇ’ng)的語(yÇ”)言與è¦(guÄ«)則,一旦出錯(cuò)åˆä¸æ˜“發(fÄ)ç¾(xià n)。國(guó)外的數(shù)控沖床圖形編程系統(tÇ’ng)已應(yÄ«ng)用于工æ¥(yè)生產(chÇŽn)實(shÃ)際,而我國(guó)在這方é¢é‚„è™•äºŽç ”ç©¶éšŽæ®µã€‚
  本文作者å°(duì)數(shù)控沖床的自動(dòng)編程系統(tÇ’ng)進(jìn)è¡Œäº†æ·±å…¥çš„ç ”ç©¶ï¼Œå¹¶åœ¨AutoCADçš„VisualLISPç’°(huán)境下進(jìn)行了相應(yÄ«ng)的系統(tÇ’ng)開發(fÄ)工作,并æˆåŠŸé€šéŽ(guò)了AutoCAD2000~AutoCAD2006多個(gè)版本的兼容性測(cè)試。
2 自動(dòng)編程系統(tÇ’ng)的總體çµ(jié)æ§‹(gòu)
  自動(dòng)編程系統(tÇ’ng)采用模塊化çµ(jié)æ§‹(gòu),由å…大功能模塊組æˆï¼Œåˆ†åˆ¥ç‚ºè‡ªå‹•(dòng)編程主模塊ã€åœ–形信æ¯è™•ç†æ¨¡å¡Šã€åŠ å·¥è·¯å¾‘ç¢ºå®šèˆ‡å„ª(yÅu)åŒ–æ¨¡å¡Šã€æ¨¡å…·åº«(kù)èˆ‡æ¨¡å…·é¸æ“‡æ¨¡å¡Šã€åŽç½®è™•ç†æ¨¡å¡Šã€åœ–形仿真模塊,模塊化數(shù)控沖床自動(dòng)編程系統(tÇ’ng)的總體çµ(jié)æ§‹(gòu)圖如圖1所示。
[align=center]

圖1 自動(dòng)編程系統(tÇ’ng)的總體çµ(jié)æ§‹(gòu)圖[/align]
  自動(dòng)編程主模塊的主è¦å·¥ä½œæ˜¯èª¿(dià o)ç”¨åŠ å·¥è·¯å¾‘æ¨¡å¡Šå’Œæ¨¡å…·åº«(kù)模塊,將圖形信æ¯è½‰(zhuÇŽn)åŒ–ç‚ºåŠ å·¥è·¯å¾‘ä¿¡æ¯åŠæ¨¡å…·ä¿¡æ¯ï¼Œå¹¶ç”Ÿæˆåˆ€ä½æ–‡ä»¶ã€‚æ¤æ¨¡å¡Šé‚„å¯ä»¥ç›´æŽ¥èª¿(dià o)用åŽç½®è™•ç†æ¨¡å¡Šèˆ‡åœ–形仿真模塊,生æˆåŠ å·¥æ‰€éœ€çš„NC代碼,并å°(duì)其進(jìn)行圖形仿真。本模塊所具有的功能還包括ä¿å˜ã€ç·¨è¼¯åˆ€ä½æ–‡ä»¶å’ŒNCä»£ç¢¼æ–‡ä»¶ç‰æ–‡ä»¶ç·¨è¼¯åŠŸèƒ½ã€‚
3 系統(tÇ’ng)開發(fÄ)的關(guÄn)éµæŠ€è¡“(shù)ç ”ç©¶
  3.1 圖形信æ¯çš„處ç†
ã€€ã€€è¦æƒ³ç”ŸæˆNC代碼,首先就è¦è®“計(jì)算機(jÄ«)è˜(shÃ)別所需è¦åŠ å·¥çš„åœ–å½¢ã€‚åœ–å½¢ä¿¡æ¯è™•ç†æ¨¡å¡Šçš„作用是將CAD圖形ä¸çš„æœ‰ç”¨åœ–å½¢ä¿¡æ¯æå–出來(lái),比如圖形ä¸åœ“å”çš„ç›´å¾‘å’Œåœ“å¿ƒã€æ–¹å”的邊長(zhÇŽng)å’Œä¸å¿ƒã€è…°åœ“å”çš„å”徑和ä¸å¿ƒç·šåœ“å¼§çš„åŠå¾‘與圓心ã€çŸ©å½¢å”的邊長(zhÇŽng)和幾何ä¸å¿ƒç‰ï¼Œç„¶åŽå°‡é€™äº›ä¿¡æ¯è¼¸é€åˆ°ä¸»ç¨‹åºæ¨¡å¡Šä¸ã€‚ç²å–圖形信æ¯çš„æ–¹æ³•有多種,比如通éŽ(guò)DXF文件導(dÇŽo)人,或者通éŽ(guò)人機(jÄ«)交互ç²å–。由于VisualLISPå¯ä»¥ç›´æŽ¥æ“ä½œé¸æ“‡é›†ï¼Œæ‰€ä»¥é¸æ“‡åŽä¸€ç¨®æ–¹æ³•更為åˆé©ï¼Œå¹¶ä¸”有利于è¨(shè)定編程原點(diÇŽn)ï¼ˆå·¥ä»¶åæ¨™(biÄo)系原點(diÇŽn))ç‰äººæ©Ÿ(jÄ«)交互更為方便的æ“作。
  3.1.1 åœ“å½¢é¡žåŸºæœ¬åƒæ•¸(shù)çš„ç²å–
  在AutoLISPä¸ï¼Œé€šéŽ(guò)交互æ“作ç²å–åœ“åŸºæœ¬åƒæ•¸(shù)是éžå¸¸å®¹æ˜“的,如下簡(jiÇŽn)å–®ç¨‹åºæ®µå³å¯ç²å¾—圓形的主è¦åƒæ•¸(shù):
 ?。⊿ETQ cir_data(ENTGET (CAR(ENTSELâ€\nè«‹(qÇng)鏿“‡ä¸€å€‹(gè)圓形:â€ï¼‰ï¼‰ï¼‰ï¼‰;通éŽ(guò)交互æ“作ç²å¾—圖形信æ¯
 ?。⊿ETQ cir_pt(CDR(ASSOC 10cir_data)));從圖形信æ¯ä¸ç²å–åœ“å¿ƒåæ¨™(biÄo)
 ?。⊿ETQ cir_r(CDR(ASSOC 40 cir_data)));從圖形信æ¯ä¸ç²å–圓的åŠå¾‘。
  3.1.2 çŸ©å½¢é¡žåŸºæœ¬åƒæ•¸(shù)çš„ç²å–
  矩形類的主è¦åƒæ•¸(shù)是2個(gè)邊長(zhÇŽng)å’Œ4個(gè)é ‚é»ž(diÇŽn),4個(gè)é ‚é»ž(diÇŽn)å¯ä»¥ç”¨AutoLISP函數(shù)ç²å¾—,邊長(zhÇŽng)å¯ä»¥é€šéŽ(guò)計(jì)算相鄰的兩點(diÇŽn)é–“çš„è·é›¢ç¢ºå®šã€‚
  ç²å¾—點(diÇŽn)çš„ä½ç½®ä¸€èˆ¬è¦ç”¨åˆ°ASSOC函數(shù),其作用是從關(guÄn)è¯(lián)è¡¨ä¸æœç´¢1個(gè)å…ƒç´ ï¼Œå¦‚æžœæ‰¾åˆ°å‰‡è¿”å›žè©²é—œ(guÄn)è¯(lián)表?xià ng)l目,如果點(diÇŽn)的數(shù)目較多則一般采用循環(huán)讀å–的方法,åªéœ€åš1個(gè)循環(huán)å³å¯ç²å¾—4個(gè)é ‚é»ž(diÇŽn)。
  (SETQ reg_data(ENTGET(CAR(ENTSELâ€\nè«‹(qÇng)鏿“‡ä¸€å€‹(gè)矩形:â€ï¼‰ï¼‰ï¼‰ï¼‰;通éŽ(guò)交互æ“作ç²å¾—圖形信æ¯
 ?。╓HILE(SETQpt(ASSOCloreg data));è¨(shè)置循環(huán)æ¢ä»¶
 ?。⊿ETQ reg-data(CDR(MEMBER pt reg-da-ta)));將以ç²å¾—的點(diÇŽn)從羌è¯(lián)表ä¸åˆªé™¤
 ?。⊿ETQptb(CONS(CDR pt)ptb)));å°‡ç²å¾—çš„ä¾æ¬¡é»ž(diÇŽn)ä½å˜å„²(chÇ”)到變é‡ptbä¸
  計(jì)算邊長(zhÇŽng)的時(shÃ)候?qÅ«)â…«c(diÇŽn)ä½å¾žé»ž(diÇŽn)表變é‡ptb䏿å–,通éŽ(guò)Distance函數(shù)直接求å–,無(wú)需åšè·é›¢è¨ˆ(jì)算。
  3.1.3 腰圓å”ã€è…°ç›´å”é¡žåŸºæœ¬åƒæ•¸(shù)çš„ç²å–
  腰圓å”ã€è…°ç›´å”åŸºæœ¬åƒæ•¸(shù)çš„ç²å–涉åŠåˆ°å¤šæ®µç·šæ•¸(shù)據(jù)çš„æå–。為了實(shÃ)ç¾(xià n)圖形的自動(dòng)ç·¨ç¨‹ï¼Œå¿…é ˆå°‡é€™å…©é¡žå”å‡è½‰(zhuÇŽn)æ›ç‚ºå¤šæ®µç·šPolyline或者Lwpolyline。
  采用AutoLISP表處ç†å‡½æ•¸(shù)å¯ä»¥ç²å¾—å„節(jié)點(diÇŽn)忍™(biÄo)åŠåœ“弧凸度,其方法如下:
 ?。⊿ETQ pel_data(ENTGET(CAR(ENTSELâ€\nè«‹(qÇng)鏿“‡ä¸€å€‹(gè)矩形:â€ï¼‰ï¼‰ï¼‰ï¼‰
  (SETQ ptl(CDR(ASSOCl0pel-ara)));從pel_dataä¸å–出第一個(gè)節(jié)點(diÇŽn)忍™(biÄo)給變é‡pt1
 ?。⊿ETQ par(CDR(ASSOC42pel-ata)));從pel_dataä¸å–出第一æ¢ç·šæ®µå‡¸åº¦çµ¦è®Šé‡par
  圓弧åŠå¾‘å¯ç”±å‡¸åº¦å€¼å’Œç›¸é„°å…©ç¯€(jié)點(diÇŽn)忍™(biÄo)計(jì)算出來(lái),圓弧åŠå¾‘R的值由å¼ï¼ˆ1)確定:
  R=(dist*par2+dist)/(2*par) (1)
  å¼ä¸ï¼šR為圓弧åŠå¾‘;dist為兩節(jié)點(diÇŽn)è·é›¢;par為凸度絕å°(duì)值。
  腰圓å”é¡žåŸºæœ¬åƒæ•¸(shù)ä¸»è¦æœ‰4個(gè)åŠå¾‘å’Œ4個(gè)圓心。其實(shÃ),åªéœ€è¦è¨ˆ(jì)算出其ä¸4個(gè)圓心就å¯ä»¥å¯¦(shÃ)ç¾(xià n)編程功能了。有了4個(gè)圓心åˆå¯ä»¥ç¢ºå®šåœ“å¼§æ¥?jÄ«ng)_的起點(diÇŽn)和終點(diÇŽn)。通éŽ(guò)分æžè¨ˆ(jì)算出的圓弧åŠå¾‘å°±å¯ä»¥ç²å¾—模具的åŠå¾‘和圓弧æ¥?jÄ«ng)_所需的圓弧åŠå¾‘。
  腰直å”ç²å¾—其多段線的4個(gè)é ‚é»ž(diÇŽn)圓弧åŠå¾‘å°±å¯å¾—出æ¥?jÄ«ng)_的起點(diÇŽn)ã€çµ‚點(diÇŽn)å’Œæ¥?jÄ«ng)_的長(zhÇŽng)度。計(jì)算出的圓弧åŠå¾‘峿¨¡å…·çš„åŠå¾‘。
  3.2 åŠ å·¥æ¨¡å…·çš„è‡ªå‹•(dòng)鏿“‡
  3.2.1 模具庫(kù)的建立
  å°(duì)于一個(gè)具體的刀具,具體有以下幾個(gè)åƒæ•¸(shù):模具號(hà o),形狀,Xæ–¹å‘é•·(zhÇŽng),Yæ–¹å‘é•·(zhÇŽng)以åŠç›´å¾‘。å°(duì)于圓形模具,沒(méi)有Xã€Yæ–¹å‘é•·(zhÇŽng)åƒæ•¸(shù),å°(duì)于矩形模具,沒(méi)æœ‰ç›´å¾‘åƒæ•¸(shù)。用戶å¯ä»¥ç”±å°(duì)話框建立刀具和修改刀具。
  定義變é‡m_dia為模具直徑,m xlen為模具Xæ–¹å‘é•·(zhÇŽng),m_ylen為模具Yæ–¹å‘é•·(zhÇŽng),m_shape為模具形狀,m_sym為模具號(hà o)ï¼Œå¦‚ä¸‹ç¨‹åºæ®µå®šç¾©åˆ€å…·ä¿¡æ¯æ ¼å¼ã€‚
  (list m_sym m_shape m_xlen m_ylen m_dia);刀具信æ¯çµ„æˆè¡¨æ ¼å¼
ã€€ã€€æ¨¡å…·é¡žçš„å»ºç«‹å³æ˜¯å»ºç«‹äº†åˆ€å…·å˜å„²(chÇ”)çš„æ ¼å¼ï¼Œå³åˆ€å…·ä¿¡æ¯åœ¨åˆ€å…·åº«(kù)䏿˜¯ä»¥è¡¨çš„æ ¼å¼å˜å„²(chÇ”)的,模具庫(kù)管ç†é€šéŽ(guò)表æ“作來(lái)完æˆå°(duì)模具庫(kù)的管ç†åŠŸèƒ½ã€‚
  3.2.2 åŠ å·¥æ¨¡å…·çš„è‡ªå‹•(dòng)鏿“‡
  一般的數(shù)控沖壓機(jÄ«)å¯ä»¥å¤šå‰¯æ¨¡å…·ï¼Œå…¶ä¸æ—¢æœ‰åœ“形模具,也有矩形模具,其è¦åŠ å·¥çš„å”å¯åˆ†ç‚ºåœ“å”ã€çŸ©å½¢å”ã€è…°åœ“å”,腰直å”å››é¡žã€‚ç‚ºäº†æ–¹ä¾¿é¸æ“‡åœ–形和ä¸åŒé¡žåœ–形的處ç†ï¼Œç³»çµ±(tÇ’ng)å¯ä»¥é€šéŽ(guò)äº¤äº’å¼æ“作將ä¸åŒé¡žåž‹åœ–形賦值于四個(gè)ä¸åŒçš„鏿“‡é›†ss1ã€ss2ã€ss3ã€ss4。通éŽ(guò)å°(duì)SSGET函數(shù)çš„åƒæ•¸(shù)è¨(shè)置,å¯ä»¥é¿å…賦值éŽ(guò)程的誤æ“作。系統(tÇ’ng)自動(dòng)æ¨¡å…·é¸æ“‡çš„總體æµç¨‹å¦‚圖2所示。
[align=center]

圖2 系統(tÇ’ng)自動(dòng)æ¨¡å…·é¸æ“‡çš„總體æµç¨‹[/align]
ã€€ã€€å…¶ä¸æ¨¡å…·åŒ¹é…需è¦ç·¨å¯«å°ˆç”¨çš„匹é…函數(shù)ï¼Œæ ¹æ“š(jù)å”型的ä¸åŒè‡ªå‹•(dòng)從建立好的模具庫(kù)ä¸é¸æ“‡åˆé©çš„æ¨¡å…·é€²(jìn)è¡ŒåŠ å·¥ã€‚
  3.3 åŠ å·¥è·¯å¾‘ç¢ºå®š
ã€€ã€€åŠ å·¥è·¯å¾‘çš„ç¢ºå®šå°±æ˜¯æ•¸(shù)控沖床沖壓路徑的確定,主è¦çš„è¨(shè)計(jì)任務(wù)就是實(shÃ)ç¾(xià n)以何種方å¼ä¾†(lái)ç¢ºå®šåŠ å·¥é †åºï¼ŒåŠ å·¥è·¯å¾‘å¦‚ä½•å¯¦(shÃ)ç¾(xià n)最çŸå„ª(yÅu)åŒ–ï¼Œå¦‚ä½•ä½¿åŠ å·¥æ™‚(shÃ)間縮到最少,如何使程åºé©æ‡‰(yÄ«ng)å¤šç¨®åŠ å·¥æ–¹æ¡ˆã€‚
  3.3.1 åŠ å·¥è·¯å¾‘ç¢ºå®šçš„åŸºæœ¬åŽŸå‰‡
  數(shù)æŽ§æ²–åºŠåŠ å·¥è·¯å¾‘çš„ç¢ºå®šä¸»è¦æ¶‰åŠå…©å€‹(gè)基本原則:
 ?。?)åŒä¸€æŠŠåˆ€å·¥åºç›¡é‡é›†ä¸ã€‚在數(shù)æŽ§æ²–å£“åŠ å·¥æ™‚(shÃ),為了減少轉(zhuÇŽn)刀所å 用的輔助時(shÃ)é–“ï¼Œå¯æŒ‰é›†ä¸å·¥åºçš„æ–¹æ³•åŠ å·¥é›¶ä»¶ï¼Œç›¡å¯èƒ½ç”¨åŒä¸€æŠŠæ²–æ¨¡åŠ å·¥å®Œé›¶ä»¶è¡¨é¢ä¸Šçš„ç›¸åŒæ²–切部分。
 ?。?)走刀路徑最çŸã€‚å°(duì)于數(shù)控è¨(shè)備來(lái)說(shuÅ),æ¯ä¸€ç§’é˜çš„æ™‚(shÃ)間都是寶貴的,沖壓éŽ(guò)程所需的時(shÃ)間較çŸï¼Œè€Œæ¨¡å…·çš„ç©ºè¡Œç¨‹æ±ºå®šäº†åŠ å·¥æ•ˆçŽ‡ï¼Œåˆç†å®‰æŽ’空行程路徑顯得尤為é‡è¦ã€‚
  3.3.2 åŠ å·¥è·¯å¾‘çš„å„ª(yÅu)化
ã€€ã€€åŠ å·¥è·¯å¾‘çš„å„ª(yÅu)化的å•(wèn)é¡Œå³æ˜¯å°(duì)åŠ å·¥å”尋找最çŸéæ·è·¯å¾‘çš„å•(wèn)題,å°(duì)尺寸相åŒçš„åŠ å·¥å”而言,路徑的優(yÅu)化å¯ä»¥æ¸å±¬èˆ‡å®Œå…¨NPå•(wèn)題,完全NPå•(wèn)題的典型是貨郎擔(dÄn)å•(wèn)題,貨郎擔(dÄn)å•(wèn)é¡Œå’Œæœ¬æ–‡ç ”ç©¶çš„æœ€çŸéæ·è·¯å¾‘å•(wèn)題的差別在于貨郎擔(dÄn)å•(wèn)題的最終節(jié)點(diÇŽn)是起始點(diÇŽn),而最çŸéæ·è·¯å¾‘ä¸è¦æ±‚最åŽå›žåˆ°èµ·å§‹é»ž(diÇŽn)ï¼Œä½†å¦‚æžœèƒ½å¤ ä»¥ä¸€å€‹(gè)高效的算法來(lái)解決貨郎擔(dÄn)å•(wèn)題,最çŸéæ·è·¯å¾‘也å¯åƒç…§å¾—出近似算法。完全NPå•(wèn)題完全的算法是ä¸å˜åœ¨çš„ï¼Œå› ?yà n)é–·?duì)äºŽéæ·é»ž(diÇŽn)大于20時(shÃ)è¦æƒ³å¾—出çµ(jié)果需è¦å¹¾å¹´ç”šè‡³å¹¾å年的時(shÃ)間。一般采用近似算法來(lái)代替最優(yÅu)算法,常見的算法有æ£äº¤è·¯å¾‘æ³•ã€æœ€è¿‘點(diÇŽn)路徑法ç‰ã€‚
  3.4 åŽç½®è™•ç†
  åŽç½®è™•ç†æ¨¡å¡Šçš„主è¦ä½œç”¨æ˜¯ç”¨ä¾†(lái)å°‡åˆ€ä½æ–‡ä»¶è½‰(zhuÇŽn)化為NC代碼。把它作為ç¨(dú)立模塊的作用是å¯ä»¥é€šéŽ(guò)ä¸åŒçš„åŽç½®è™•ç†ç”Ÿæˆé©æ‡‰(yÄ«ng)ä¸åŒæ•¸(shù)控系統(tÇ’ng)çš„NC代碼,增強(qiáng)系統(tÇ’ng)的通用性。
  3.4.1 åŽç½®è™•ç†æ¨¡å¡Šçš„è¨(shè)計(jì)
  åŽç½®è™•ç†æ¨¡å¡Šåˆ†ç‚ºå…©å¤§é¡žï¼šä¸€é¡žç‚ºå°ˆç”¨åŽç½®è™•ç†æ¨¡å¡Šï¼Œå¦ä¸€é¡žæ˜¯é€šç”¨åŽç½®è™•ç†æ¨¡å¡Šã€‚æ ¹æ“š(jù)沖壓數(shù)控系統(tÇ’ng)的特點(diÇŽn),通用åŽç½®è™•ç†æ¨¡å¡Šæ›´é©åˆæœ¬ç³»çµ±(tÇ’ng),通éŽ(guò)制定標(biÄo)準(zhÇ”n)æ ¼å¼çš„æ©Ÿ(jÄ«)床文件,通éŽ(guò)å°(duì)話框?qÅ«)å´¿F(xià n)機(jÄ«)床數(shù)據(jù)的標(biÄo)準(zhÇ”n)化文件。在NC代碼生æˆå’Œåœ–形仿真時(shÃ)調(dià o)用機(jÄ«)床標(biÄo)準(zhÇ”n)文件,å³å¯ç²å¾—相應(yÄ«ng)的數(shù)控代碼信æ¯ã€‚數(shù)控系統(tÇ’ng)C代碼的è¨(shè)置界é¢å¦‚圖3所示。
[align=center]

圖3 G代碼的è¨(shè)置界é¢[/align]
  3.4.2 NC代碼生æˆ
  (1)點(diÇŽn)使²–å”çš„NC代碼生æˆ
  點(diÇŽn)使²–å”çš„C代碼是GOOï¼Œä½†ç‚ºäº†é©æ‡‰(yÄ«ng)更多的數(shù)控系統(tÇ’ng),作者建立一個(gè)變é‡gcode_00,用來(lái)表示快速點(diÇŽn)å®šä½æ²–唿Œ‡ä»¤ï¼Œç³»çµ±(tÇ’ng)默èª(rèn)代碼為GOO,ä¸åŒçš„æ•¸(shù)控系統(tÇ’ng)å¯ä»¥åœ¨è‡ªå‹•(dòng)編程系統(tÇ’ng)çš„åŽç½®è™•ç†è¨(shè)ç½®ä¸è¨(shè)定。刀具的ä¸å¿ƒä½ç½®å標(biÄo)ç”±åŠ å·¥è·¯å¾‘æ¨¡å¡Šç¢ºå®šï¼Œåˆ€å…·ä¿¡æ¯ç”±æ¨¡å…·é¸æ“‡æ¨¡å¡Šç¢ºå®šã€‚
 ?。?)æ¥?jÄ«ng)_åŠ å·¥çš„NC代碼生æˆ
  以直線æ¥?jÄ«ng)_為例,系統(tÇ’ng)默èª(rèn)的直線æ¥?jÄ«ng)_çš„G代碼是G69,ä¸åŒçš„æ•¸(shù)控系統(tÇ’ng)ä»ç„¶å¯ä»¥åœ¨è‡ªå‹•(dòng)編程系統(tÇ’ng)çš„C代碼è¨(shè)ç½®ä¸è¨(shè)定。æ¥?jÄ«ng)_的起始ä½ç½®å’Œçµ‚點(diÇŽn)ä½ç½®å標(biÄo)ç”±åŠ å·¥è·¯å¾‘æ¨¡å¡Šç¢ºå®šï¼Œåˆ€å…·ä¿¡æ¯ç”±æ¨¡å…·é¸æ“‡æ¨¡å¡Šç¢ºå®šã€‚æ¥?jÄ«ng)_的長(zhÇŽng)åº¦å³æ˜¯èµ·é»ž(diÇŽn)ä½ç½®å’Œçµ‚點(diÇŽn)ä½ç½®çš„è·é›¢ï¼Œç”¨å‡½æ•¸(shù)Distanceå¯ä»¥è¼•æ¾å¯¦(shÃ)ç¾(xià n),æ¥çŸ©çš„確定分為圓形模具æ¥?jÄ«ng)_和矩形模具æ¥?jÄ«ng)_兩種情æ³ã€‚
  3.4.3 æ¥?jÄ«ng)_æ¥çŸ©çš„確定
  用圓形的模具進(jìn)行æ¥?jÄ«ng)_時(shÃ)必然會(huì)產(chÇŽn)生å‡å‹»çš„æ¥?jÄ«ng)_齒花,æ¥è·è¶Šå¤§ï¼Œé½’花越明顯。圓形模具的æ¥?jÄ«ng)_æ¥è·å–決于æ¥?jÄ«ng)_齒花的高度,å³å–決于æ¥?jÄ«ng)_精度的大å°ï¼Œé½’èŠ±å¤§å°æ±ºå®šäº†å”çš„åŠ å·¥ç²¾åº¦ï¼Œæ‰€ä»¥è¨(shè)計(jì)ç¨‹åºæ™‚(shÃ)æŠŠç²¾åº¦è¦æ±‚作為一個(gè)輸入?yún)?shù),在自動(dòng)編程系統(tÇ’ng)çš„æ¥?jÄ«ng)_精度è¨(shè)ç½®ä¸è¨(shè)定,æ¥è·çš„大å°ç”±å¼ï¼ˆ2)計(jì)算確定。
  p=2(ds-s2)1/2 (2)
  å¼ä¸ï¼šP為æ¥è·;d為模具直徑;s為齒花高度。
  矩形模具的æ¥?jÄ«ng)_æ¥è·åªå–決于æ¥?jÄ«ng)_的長(zhÇŽng)度與模具的尺寸。用æ¥?jÄ«ng)_起點(diÇŽn)和終點(diÇŽn)çš„è·é›¢é™¤ä»¥æ¥?jÄ«ng)_æ–¹å‘的模具尺寸得出的數(shù)值喿•´åŠ ä¸€ï¼Œå¾—å‡ºæœ€å°æ¥?jÄ«ng)_æ¥æ•¸(shù);ç„¶åŽï¼Œå†ç”¨æ¥?jÄ«ng)_起點(diÇŽn)和終點(diÇŽn)çš„è·é›¢é™¤ä»¥æ¥?jÄ«ng)_æ¥æ•¸(shù)得出的數(shù)值å³å¯ä½œç‚ºæ¥?jÄ«ng)_æ¥è·ã€‚
  當(dÄng)然,在大多數(shù)數(shù)控系統(tÇ’ng)ä¸ï¼ŒçŸ©å½¢æ¨¡å…·çš„æ¥?jÄ«ng)_æ¥è·å¯ä»¥æ˜¯å°äºŽæ¥?jÄ«ng)_æ–¹å‘的模具尺寸的任何值,為了ä¿è‰åŠ å·¥çš„æ•ˆçŽ‡å’ŒåŠ å·¥æ•ˆæžœï¼Œå¯ä»¥äººå·¥ä¼°ç®—一個(gè)åˆç†æ¥çŸ©å€¼ï¼Œç„¶åŽé€šéŽ(guò)自動(dòng)編程系統(tÇ’ng)çš„æ¥?jÄ«ng)_精度è¨(shè)ç½®ä¸è¨(shè)定。如果æ¥?jÄ«ng)_起點(diÇŽn)和終點(diÇŽn)çš„è·é›¢é™¤ä»¥æ¤æ¥è·å¾—出的æ¥?jÄ«ng)_æ¥æ•¸(shù)ä¸ç‚ºæ•´æ•¸(shù)時(shÃ),數(shù)控系統(tÇ’ng)會(huì)自動(dòng)調(dià o)æ•´æ¥çŸ©ä»¥é©åˆåŠ å·¥ã€‚
4 åŠ å·¥éŽ(guò)程的仿真
  在數(shù)æŽ§åŠ å·¥éŽ(guò)程ä¸ï¼Œé›¶ä»¶åŠ å·¥åŽçš„質(zhì)釿˜¯å¦ç¬¦åˆè¦æ±‚ï¼Œåœ¨åŠ å·¥éŽ(guò)ç¨‹ä¸æ˜¯å¦æœƒ(huì)發(fÄ)生零件與刀具ã€åˆ€å…·èˆ‡å¤¾å…·ã€åˆ€å…·èˆ‡æ©Ÿ(jÄ«)床工作臺(tái)之間的干涉與碰撞,刀具是å¦å°(duì)零件進(jìn)行了éŽ(guò)切或少切,刀具的走刀路線ã€èµ°åˆ€æ–¹å¼æ˜¯å¦åˆç†ç‰ä¸€ç³»åˆ—實(shÃ)éš›åŠ å·¥ä¸å¯èƒ½æœƒ(huì)發(fÄ)生的å•(wèn)題都決定于自動(dòng)編程系統(tÇ’ng)所輸出的數(shù)æŽ§åŠ å·¥æŒ‡ä»¤é›†æ˜¯å¦æ£ç¢ºã€‚æ ¹æ“š(jù)NC代碼文件æä¾›çš„ä¿¡æ¯ï¼Œå°‡åŠ å·¥è»Œè·¡æ¨¡æ“¬å‡ºä¾†(lái),顯示在顯示å±ä¸Šï¼Œä»¥æ–¹ä¾¿ç¨‹åºæ ¡é©—(yà n)和沖壓éŽ(guò)程檢驗(yà n)。
  4.1 仿真系統(tÇ’ng)總體çµ(jié)æ§‹(gòu)
  仿真系統(tÇ’ng)應(yÄ«ng)è©²èƒ½å¤ å®Œæˆæ•¸(shù)控程åºçš„錯(cuò)誤檢查,動(dòng)æ…‹(tà i)地模擬數(shù)控機(jÄ«)床驅(qÅ«)å‹•(dòng)刀具的é‹(yùn)å‹•(dòng)åŠåŠ å·¥éŽ(guò)ç¨‹ã€‚å› æ¤åŠ å·¥éŽ(guò)程的仿真一般由文件處ç†ã€éŒ¯(cuò)誤檢查和模擬仿真三部分組æˆã€‚其總體çµ(jié)æ§‹(gòu)如圖4所示。
[align=center]

圖4 仿真系統(tÇ’ng)總體çµ(jié)æ§‹(gòu)圖[/align]
  4.2 NC代碼的翻è¯èˆ‡ä»¿çœŸçš„實(shÃ)ç¾(xià n)
  ç²å¾—äº†ç¨‹åºæ®µçš„æ•¸(shù)據(jù),就å¯ä»¥åˆ©ç”¨å…¶æä¾›çš„æ•¸(shù)值進(jìn)行仿真。
  實(shÃ)ç¾(xià n)了在å±å¹•上作圖ä¸ç‰äºŽå¯¦(shÃ)ç¾(xià n)äº†åŠ å·¥éŽ(guò)程的仿真,如果ä¸åƒ…想看到全部的圖形顯示在å±å¹•上,而且想動(dòng)æ…‹(tà i)的觀測(cè)åŠ å·¥çš„å…ˆåŽé †åºï¼Œå°±éœ€è¦åŠ ä¸€äº›ç¨‹åºã€‚實(shÃ)ç¾(xià n)å‹•(dòng)æ…‹(tà i)的仿真å¯ä»¥ç”±å…©ç¨®æ–¹æ³•實(shÃ)ç¾(xià n):
  一是調(dià o)用AutoCAD的內(nèi)部命令“delayâ€ã€‚這種方法的優(yÅu)點(diÇŽn)是簡(jiÇŽn)單快æ·ï¼Œå¯ä»¥éš¨æ„è¨(shè)定兩個(gè)åœ–å½¢é–“çš„ç”Ÿæˆæ™‚(shÃ)間,å³å¯ä»¥éš¨æ„èª¿(dià o)節(jié)仿真的速度。
  第二種方法是編寫動(dòng)æ…‹(tà i)函數(shù)z_timer。動(dòng)æ…‹(tà i)函數(shù)z_timer的作用是通éŽ(guò)輸入的沖床T軸移動(dòng)é€Ÿåº¦ï¼Œå†æ ¹æ“š(jù)圖形ä¸è¨ˆ(jì)算出的兩個(gè)ç›¸é„°åŠ å·¥é»ž(diÇŽn)çš„è·
  離,å³å¯å¾—出其移動(dòng)所需è¦çš„æ™‚(shÃ)間,然åŽå†ç”±Delay函數(shù)實(shÃ)ç¾(xià n)延時(shÃ)。這種方法的優(yÅu)點(diÇŽn)是:全部時(shÃ)間與實(shÃ)際時(shÃ)間相符,å¯ä»¥åŠ å…¥æ›åˆ€çš„æ™‚(shÃ)間,實(shÃ)ç¾(xià n)真æ£å¯¦(shÃ)時(shÃ)的仿真,并且å¯ä»¥é€šéŽ(guò)å°(duì)話框指定時(shÃ)間縮放比例,å³ä¹Ÿå¯ä»¥æŒ‰æ¯”例控制仿真的速度。
5 程åºé‹(yùn)行實(shÃ)例
  5.1 NC代碼的自動(dòng)生æˆ
  é¸ç”¨å¯¦(shÃ)éš›åŠ å·¥çš„é›»æŽ§æ¿åœ–紙如圖5所示。
[align=center]

圖5 電氣控制æ¿[/align]
  首先,將圖5按1:1的比例在AutoCADä¸ç¹ªåˆ¶å‡ºä¾†(lái)ï¼Œç„¶åŽæª¢æŸ¥è¦åŠ å·¥çš„çŸ©å½¢å”æ˜¯å¦æ˜¯æ•´é«”ï¼Œå¦‚æžœçŸ©å½¢å”æ˜¯ç”¨å¤šæ¢ç›´ç·šæ®µç¹ªåˆ¶çš„,就需è¦è½‰(zhuÇŽn)化為一æ¢å¤šæ®µç·šã€‚點(diÇŽn)擊èœå–®â€œæ•¸(shù)æŽ§åŠ å·¥â€â†’â€œåŠ å·¥åˆ€å…·é (yù)檢驗(yà n)â€ï¼Œä»¥æª¢æŸ¥æ‰€éœ€åŠ å·¥çš„å”在刀庫(kù)䏿˜¯å¦å˜åœ¨åˆé©çš„åŠ å·¥åˆ€å…·ï¼Œæª¢æŸ¥å®Œç•¢åŽï¼Œç³»çµ±(tÇ’ng)會(huì)æç¤ºçŸ©å½¢å”60×20æ²’(méi)有直接å¯ä»¥ä½¿ç”¨çš„æ¨¡å…·ã€‚å› æ¤ï¼Œå¯ä»¥æŒ‡å®šæ¥?jÄ«ng)_模具為T316號(hà o)刀具,å³13×13方模具,但是為了讓動(dòng)æ…‹(tà i)仿真更為清晰,é¸ç”¨T321號(hà o)æ¥?jÄ«ng)_模具,å³10×10方模具。
  點(diÇŽn)èœå–®â€œæ•¸(shù)æŽ§åŠ å·¥â€â†’“NC代碼生æˆâ€ï¼Œåœ¨å½ˆå‡ºçš„å°(duì)è©±æ¡†ä¸æ ¹æ“š(jù)æç¤ºé¸æ“‡è¦åŠ å·¥çš„åœ–å½¢ï¼Œå¹¶è¨(shè)定好相關(guÄn)åƒæ•¸(shù),點(diÇŽn)擊確定å³å¯ç”Ÿæˆç›¸æ‡‰(yÄ«ng)çš„NC代碼,如圖6所示。
[align=center]

圖6 系統(tÇ’ng)生æˆNC代碼文件[/align]
  5.2 NC代碼的動(dòng)æ…‹(tà i)仿真的實(shÃ)例
  çˆ(zhÄ“ng)å…ˆå°(duì)NC代碼文件進(jìn)行錯(cuò)誤檢查,確èª(rèn)æ²’(méi)有詞法和語(yÇ”)法錯(cuò)誤åŽï¼Œé»ž(diÇŽn)擊“數(shù)æŽ§åŠ å·¥â€â†’“數(shù)控仿真â€ï¼Œæ¿€æ´»æ•¸(shù)控仿真å°(duì)話框,通éŽ(guò)å°(duì)話框é¸å®šè¦é€²(jìn)行仿真的NC文件,è¨(shè)定好沖壓仿真速度,點(diÇŽn)擊確定按鈕,å°(duì)話框自動(dòng)é—œ(guÄn)閉,并且在當(dÄng)å‰å±å¹•上開始å°(duì)所指定的NC代碼文件進(jìn)行動(dòng)æ…‹(tà i)仿真。仿真效果如圖7所示。圖7顯示了NC代碼文件的仿真çµ(jié)果,圖ä¸çš„虛線展示了刀具走刀的ä¸å¿ƒè»Œè·¡ã€‚
[align=center]

圖7 仿真çµ(jié)æžœ[/align]
6 çµ(jié)è«–
  本系統(tÇ’ng)å·²æˆåŠŸæ‡‰(yÄ«ng)用到山西æŸé›»æŽ§è¨(shè)å‚™å» ã€‚å¯¦(shÃ)è¸ç”Ÿç”¢(chÇŽn)è‰æ˜Žï¼Œæœ¬ç³»çµ±(tÇ’ng)具有NC代碼的自動(dòng)生æˆå’Œåœ–形的動(dòng)æ…‹(tà i)仿真功能,并且å¯ä»¥å°(duì)已有的NC代碼進(jìn)行檢錯(cuò)。系統(tÇ’ng)通éŽ(guò)å°(duì)åŠ å·¥é›¶ä»¶åœ–çš„è‡ªå‹•(dòng)編程,é¿å…了手工編程ç¹ç‘£çš„忍™(biÄo)計(jì)算,并å°(duì)åŠ å·¥è·¯å¾‘é€²(jìn)行了優(yÅu)化處ç†ï¼Œæé«˜äº†ç”Ÿç”¢(chÇŽn)效率;çµ(jié)åˆåœ–形仿真模塊的應(yÄ«ng)ç”¨ï¼Œæœ‰æ•ˆåœ°æ¸›å°‘äº†åŠ å·¥äº‹æ•…çš„ç™¼(fÄ)生,æé«˜äº†æ²–å£“åŠ å·¥çš„å®‰å…¨æ€§ã€‚