王婷,李歡
(1.武昌工學(xué)院智能制造學(xué)院,湖北武漢430070;2.湖南中大創(chuàng)遠(yuǎn)數(shù)控裝備有限公司研發(fā)部,湖南長沙 410199)
數(shù)控裁床作為服裝加工的重要生產(chǎn)設(shè)備,其性能決定了服裝制品的生產(chǎn)質(zhì)量和生產(chǎn)效率[1]。而自動(dòng)化裁剪系統(tǒng)是數(shù)控裁床實(shí)現(xiàn)自動(dòng)加工的核心,直接影響設(shè)備的使用性能。目前國外著名的服裝自動(dòng)化裁剪系統(tǒng)有美國格柏(Gerber)AccuMark 系統(tǒng),加拿大派特(PAD)PAD System系統(tǒng)和法國力克(Lectra)Modaris系統(tǒng)等,國外廠商的產(chǎn)品性能普遍較為優(yōu)良,并且功能比較完善[2]。但此類系統(tǒng)核心技術(shù)均掌握在西方發(fā)達(dá)國家手中,顯然不利于國內(nèi)服裝企業(yè)長遠(yuǎn)發(fā)展,所以國內(nèi)學(xué)者和相關(guān)企業(yè)也進(jìn)行了相關(guān)研究。肖宇明皓[3]提出了一種二維高性能圓弧插補(bǔ)算法。史偉民等[4]提出了基于模擬退火蟻群混合算法的裁床樣片切割路徑優(yōu)化方法。馬虎亮等[5]提出了圓弧-線段一階混合曲線及其插補(bǔ)算法。戈立遠(yuǎn)控股有限公司設(shè)計(jì)開發(fā)了服裝CAD軟件系統(tǒng),經(jīng)緯公司開發(fā)了一套針對(duì)箱包的CAD軟件系統(tǒng)[6]。就目前國內(nèi)研究現(xiàn)狀而言,對(duì)數(shù)控裁床系統(tǒng)的理論插補(bǔ)算法以及對(duì)CAD系統(tǒng)的研究較多,但針對(duì)集設(shè)計(jì)與制造一體化的數(shù)控裁床生產(chǎn)問題解決方案的研究較少。
因此,本文作者設(shè)計(jì)一套集設(shè)計(jì)與制造為一體的數(shù)控裁床加工系統(tǒng)??紤]數(shù)控裁床的運(yùn)動(dòng)速度控制和加工軌跡插補(bǔ)算法將直接影響加工效率和加工精度[7],在系統(tǒng)開發(fā)時(shí),將上述兩點(diǎn)作為研究要點(diǎn)。關(guān)于運(yùn)動(dòng)控制問題,根據(jù)設(shè)計(jì)的CNC加工數(shù)據(jù)生成特點(diǎn),通過大量試驗(yàn)掌握數(shù)控裁床運(yùn)動(dòng)規(guī)律,制定各段軌跡的運(yùn)行規(guī)則,有效提高加工效率和運(yùn)動(dòng)精度。關(guān)于插補(bǔ)問題,提出將插補(bǔ)算法和數(shù)據(jù)棧相結(jié)合的方法,經(jīng)實(shí)踐進(jìn)行檢驗(yàn),實(shí)際輸出的輪廓軌跡能夠按照理論軌跡準(zhǔn)確進(jìn)行。
圖1 系統(tǒng)運(yùn)行流程
圖1所示為所設(shè)計(jì)的數(shù)控裁床加工系統(tǒng)運(yùn)行流程。目前主流繪圖軟件均支持惠普HPGL協(xié)議格式文件的數(shù)據(jù)輸出,HPGL圖形文件是為繪制繪圖儀產(chǎn)品而建立的一套指令系統(tǒng),其中PLT拓展名最為常用,此類型格式輸出的數(shù)據(jù)主要以坐標(biāo)點(diǎn)的方式出現(xiàn)[8-9],本文作者設(shè)計(jì)的系統(tǒng)就選擇此類型數(shù)據(jù)進(jìn)行處理。在圖1流程圖中共有兩條主線:一條主線為利用C++語言的類特性,通過設(shè)計(jì)CCurve類,實(shí)現(xiàn)解析PLT文件里的字符數(shù)據(jù),并基于微軟基礎(chǔ)類庫(Microsoft Foundation Classes,MFC)平臺(tái),實(shí)現(xiàn)CCurve模型的坐標(biāo)點(diǎn)軌跡繪制;另一條主線為根據(jù)CCurve中模型數(shù)據(jù),生成CNC加工數(shù)據(jù)以及插補(bǔ)數(shù)據(jù),通過仿真以及實(shí)際加工迭代優(yōu)化,最終得到理想加工效果。
根據(jù)PLT數(shù)據(jù)特性抽象出數(shù)控裁床系統(tǒng)走刀使用的數(shù)據(jù)模型,利用C++類特性,將數(shù)據(jù)轉(zhuǎn)化為坐標(biāo)點(diǎn)數(shù)據(jù)及曲線屬性集合,形成設(shè)計(jì)的CCurve類,最終實(shí)現(xiàn)PLT文件解析并生成曲線數(shù)據(jù)模型。
基于Visual Studio 2013的MFC開發(fā)Windows桌面應(yīng)用程序SpCutter。該系統(tǒng)實(shí)現(xiàn)圖像顯示、圖層轉(zhuǎn)換、文本添加、旋轉(zhuǎn)、移動(dòng)和刪除等功能。文中重點(diǎn)闡述圖像顯示的實(shí)現(xiàn)原理。
基于MFC平臺(tái)的CView基類實(shí)現(xiàn)圖形繪制。CView基類為用戶定義的視圖類提供基本功能[10],設(shè)計(jì)派生類GmCutterView。在GmCutterView類中重寫父類(CView)的純虛函數(shù)OnDraw,在OnDraw中使用CDC的成員方法MoveTo及LineTo實(shí)現(xiàn)對(duì)CCurve模型的坐標(biāo)點(diǎn)軌跡(m_pointList)繪制。其中關(guān)鍵代碼如下:
INT_PTR nSize = m_pointList.GetSize();
if(nSize <= 0) return;
pDC->MoveTo(m_pointList.GetAt(0));
if (nSize == 1){
pDC->LineTo(m_pointList.GetAt(0));
}else{
int i;
for (i = 1;i pDC->LineTo(m_pointList.GetAt(i)); } } 為驗(yàn)證系統(tǒng)實(shí)際使用效果,特別是為驗(yàn)證系統(tǒng)處理復(fù)雜圖形能力,將如圖2(a)所示的PLT圖形文件載入系統(tǒng)平臺(tái)。圖2(a)為系統(tǒng)加載PLT模型效果圖,可以看出圖形文件可完整、清晰地顯示。為進(jìn)一步驗(yàn)證圖形輪廓構(gòu)成,將該馬頭外輪廓進(jìn)行局部放大,如圖2(b)所示,可清晰地看出外輪廓是大量黑色小點(diǎn)依次連線而形成,這些黑色小點(diǎn)就是通過解析PLT圖形文件轉(zhuǎn)換而成的坐標(biāo)點(diǎn)數(shù)據(jù),組成圖形輪廓的直線和曲線就是由相連坐標(biāo)點(diǎn)構(gòu)成的。 圖2 圖形顯示系統(tǒng)測試圖 CNC加工數(shù)據(jù)的生成是完成數(shù)控裁床加工的關(guān)鍵核心[11-12]。在數(shù)控裁床實(shí)際加工過程中,理想狀態(tài)為實(shí)際加工軌跡沿著圖像顯示輪廓進(jìn)行加工。而數(shù)控裁床加工軌跡形成是靠筆繪和切割等工序?qū)崿F(xiàn)的,因此在加工過程中還需進(jìn)行刀具轉(zhuǎn)換。 為滿足數(shù)控裁床加工需求,通過設(shè)計(jì)的CCurve類,生成CNC加工數(shù)據(jù)。CCurve類的主要成員變量信息如表1所示。 表1 CCurve類成員變量 在表1中,CCurve類成員變量m_pointList表示解析PLT數(shù)據(jù)轉(zhuǎn)化成的曲線坐標(biāo)點(diǎn)集,成員變量m_nPenNumInPlt表示原始PLT圖形數(shù)據(jù)包含的筆號(hào),成員變量m_nCurveType表示實(shí)際加工筆號(hào)。其中,原始PLT筆號(hào)與加工筆號(hào)存在對(duì)應(yīng)關(guān)系,即原始PLT筆號(hào)等于0或者1時(shí),加工刀號(hào)為筆繪;原始PLT筆號(hào)大于1時(shí),加工刀號(hào)為切割。 圖3 軌跡生成的圖形解釋 所設(shè)計(jì)的數(shù)控裁床加工軌跡生成原理為根據(jù)CCurve類坐標(biāo)點(diǎn)集m_pointList中當(dāng)前點(diǎn)距下一點(diǎn)在x軸和y軸方向上需要的相對(duì)步進(jìn)量,以及當(dāng)前段矢量相對(duì)上一段矢量的角度變化量,計(jì)算出每段線段對(duì)應(yīng)的CNC加工數(shù)據(jù)相關(guān)參數(shù)。圖3所示為CNC加工數(shù)據(jù)生成原理的幾何圖形解釋。 圖3中線段分別由3個(gè)相鄰坐標(biāo)點(diǎn)P0(x0,y0)、P1(x1,y1)和P2(x2,y2)連線組成。根據(jù)加工軌跡生成原理,假設(shè)點(diǎn)P0為當(dāng)前點(diǎn),點(diǎn)P1為下一點(diǎn),則在x軸方向相對(duì)步進(jìn)量為兩點(diǎn)x軸坐標(biāo)之差,同理,在y軸方向相對(duì)步進(jìn)量為兩點(diǎn)y軸坐標(biāo)之差。而點(diǎn)P2為P1下一點(diǎn),則其兩軸方向相對(duì)步進(jìn)量計(jì)算方法也和點(diǎn)P0到點(diǎn)P1計(jì)算方法保持一致。 圖3中各矢量線段與x軸夾角也是關(guān)鍵參數(shù),在第3.2節(jié)的運(yùn)動(dòng)速度控制中會(huì)重點(diǎn)使用該參數(shù)。以圖3中矢量線段為例,P0P1與x軸夾角θ0計(jì)算方法如式(1)所示,P1P2與x軸夾角θ1計(jì)算方法如式(2)所示,則P1P2相對(duì)于P0P1的轉(zhuǎn)角變化量如式(3)所示。需要特別指出的是,式(1)和式(2)適用于兩點(diǎn)之間x坐標(biāo)不相等時(shí)。當(dāng)兩點(diǎn)的x坐標(biāo)相等時(shí),判定為該矢量線段與x軸垂直。 (1) (2) Δθ=θ1-θ0 (3) 根據(jù)上述CNC加工數(shù)據(jù)生成原理,并結(jié)合運(yùn)動(dòng)速度控制關(guān)鍵因素,設(shè)計(jì)CNC系統(tǒng)數(shù)據(jù)結(jié)構(gòu)成員變量如表2所示。 表2 CNC數(shù)據(jù)結(jié)構(gòu)成員變量 由圖3可知,數(shù)控裁床加工的實(shí)際矢量軌跡為連續(xù)多個(gè)矢量線段組成的曲線。為保證加工精度,在加工過程中需要在各矢量線段之間進(jìn)行加減速處理,從而保持合理加工速度以滿足數(shù)控裁床的加工精度與效率需求。 傳統(tǒng)的矢量線段加減速處理方法是以每一段矢量線段為研究對(duì)象,并使得每段的起始和末尾的速度都為0,這勢必造成在加工過程中電動(dòng)機(jī)的啟停頻繁、進(jìn)給速度緩慢以及效率低下。如何根據(jù)各矢量線段之間的變化情況對(duì)速度進(jìn)行加減速控制,是提高數(shù)控裁床加工性能的重要研究方向。 本文作者根據(jù)各矢量線段均為直線這一特性,提出一種直線加減速控制方法。經(jīng)過在數(shù)控裁床平臺(tái)的反復(fù)測試驗(yàn)證,發(fā)現(xiàn)只有控制好前一段矢量線段完成加工時(shí)的結(jié)束速度才不會(huì)影響下一段矢量的控制精度,否則就會(huì)出現(xiàn)加工軌跡抖動(dòng)的情況。而軌跡抖動(dòng)情況會(huì)隨著矢量線段轉(zhuǎn)角變化量的增大而增多。因此,研究轉(zhuǎn)角變化量的變化和各矢量線段結(jié)束速度之間的關(guān)系有積極意義。 通過大量試驗(yàn),發(fā)現(xiàn)矢量線段的轉(zhuǎn)角變化量Δθ對(duì)應(yīng)的最大結(jié)束速度差別很大,并且在一定范圍內(nèi)的轉(zhuǎn)角變化量Δθ對(duì)應(yīng)最大結(jié)束速度趨同。表3所示為試驗(yàn)所得的速度控制列表,表中速度級(jí)別對(duì)應(yīng)的具體速度適用于STM32F103單片機(jī)通過定時(shí)器輸出脈沖給雷賽專用驅(qū)動(dòng)器M542,并控制57HS04型步進(jìn)電動(dòng)機(jī)。此表可為各矢量線段之間運(yùn)動(dòng)速度控制提供重要參考。 表3 速度控制 本文作者提出的直線加減速數(shù)控裁床運(yùn)動(dòng)控制方法,由于在不同矢量線段銜接過程中,并沒有將所有線段的結(jié)束速度降為0,而是根據(jù)速度控制列表進(jìn)行分類處理,在保證加工精度的基礎(chǔ)上提高了加工效率。 插補(bǔ)算法是數(shù)控裁床系統(tǒng)的關(guān)鍵核心[13]。插補(bǔ)運(yùn)算具有實(shí)時(shí)性,每個(gè)插補(bǔ)中間點(diǎn)的計(jì)算精度影響系統(tǒng)的控制精度,中間點(diǎn)的計(jì)算速度又影響著系統(tǒng)的控制速度[14-15]。本文作者設(shè)計(jì)一種將數(shù)控裁床插補(bǔ)算法與數(shù)據(jù)棧相結(jié)合的方式,進(jìn)一步提高數(shù)控裁床的加工效率。 圖4所示為單段矢量線段的插補(bǔ)算法示意。該示意圖表示微觀上的兩點(diǎn)之間的微粒線段,依據(jù)矢量線段在兩軸方向的長短分別命名為長軸和短軸。 圖4 插補(bǔ)算法示意 在STM32F103單片機(jī)控制步進(jìn)電動(dòng)機(jī)工作時(shí),每一步均需要判定應(yīng)該走長軸還是兩軸同時(shí)走斜對(duì)角。具體的判定方法:設(shè)sAxisL和sAxisS分別為長軸和短軸的步進(jìn)量行程,整段矢量線段的傾角為A,則tanA=sAxisS/sAxisL。i、j分別為長軸和短軸已走的步數(shù),當(dāng)前實(shí)際已走矢量的角度θ滿足tanθ=j/i。當(dāng)tanθ F=i×sAxisS-j×sAxisL (4) 當(dāng)F>0時(shí),沿兩軸斜對(duì)角運(yùn)動(dòng);當(dāng)F≤0時(shí),沿長軸運(yùn)動(dòng)。實(shí)現(xiàn)該插補(bǔ)算法的核心代碼如下所示: j = 0; for(i = 0;i if(i*AxisS - j*AxisL >0){ StepXY;} else{StepL;j++;} } 通過插補(bǔ)運(yùn)算得到的加工數(shù)據(jù)最終需要電動(dòng)機(jī)具體執(zhí)行,而如何高效地將插補(bǔ)數(shù)據(jù)轉(zhuǎn)變?yōu)椴逖a(bǔ)運(yùn)動(dòng)是影響加工效率的關(guān)鍵。在上述插補(bǔ)運(yùn)算過程中,插補(bǔ)運(yùn)算與插補(bǔ)運(yùn)動(dòng)是相互獨(dú)立進(jìn)行的,且運(yùn)算時(shí)會(huì)產(chǎn)生極大的數(shù)據(jù)量。因此,設(shè)計(jì)一種數(shù)據(jù)棧用來處理插補(bǔ)數(shù)據(jù)。該數(shù)據(jù)棧的主要數(shù)據(jù)讀寫邏輯:當(dāng)??臻g有剩余時(shí)往棧內(nèi)存寫數(shù)據(jù),棧剩余空間減小,直至空間為0;當(dāng)插補(bǔ)定時(shí)器中斷從棧內(nèi)取插補(bǔ)數(shù)據(jù),棧剩余空間增大,棧內(nèi)又可以補(bǔ)充插補(bǔ)數(shù)據(jù)。按照這種運(yùn)行機(jī)制,依靠在棧內(nèi)對(duì)插補(bǔ)數(shù)據(jù)進(jìn)行不斷的存和取,保證電動(dòng)機(jī)工作過程不間斷接收插補(bǔ)數(shù)據(jù),進(jìn)一步提高加工效率。 數(shù)控裁床加工仿真是加工前的必要環(huán)節(jié),能有效檢驗(yàn)加工程序的合理性。所設(shè)計(jì)的仿真系統(tǒng)依然利用MFC平臺(tái) CView的Ondraw來繪制,使用CCurve類坐標(biāo)點(diǎn)數(shù)據(jù),將生成的CNC的加工數(shù)據(jù)用于幾何仿真。與第2節(jié)所述PLT圖形文件顯示的內(nèi)容相比較,其區(qū)別在于矢量線段的長短軸是利用計(jì)算機(jī)圖形學(xué)原理,將兩坐標(biāo)點(diǎn)之間的線段離散化,變?yōu)檠刂L短軸的各個(gè)小點(diǎn),而仿真過程就是將各點(diǎn)依次描繪出來。圖5所示為仿真系統(tǒng)的測試圖,該圖形的內(nèi)外輪廓均需要進(jìn)行繪圖工序,而外輪廓還需在繪圖工序完成后進(jìn)行切割工序。 圖5 仿真系統(tǒng)功能驗(yàn)證 圖5(a)表示加載的PLT圖形文件,可見圖形仿真前原始狀態(tài);圖5(b)表示在仿真模塊下,對(duì)圖形文件的連續(xù)曲線的外輪廓進(jìn)行繪圖工序仿真。圖形文件外輪廓變?yōu)榫G色(代表繪圖工序),且可見仿真軌跡與顯示外輪廓重合;圖5(c)表示對(duì)圖形文件分散曲線的內(nèi)輪廓進(jìn)行繪圖工序仿真,依然可見仿真軌跡與顯示內(nèi)輪廓重合;圖5(d)表示對(duì)外輪廓進(jìn)行切割加工工序的仿真,可見仿真軌跡與顯示外輪廓重合,且外輪廓顏色由綠色變?yōu)榧t色(代表切割工序)。 通過試驗(yàn),驗(yàn)證了所設(shè)計(jì)的仿真模塊對(duì)加載圖形的連續(xù)、分散輪廓以及工序變換等均能順利仿真完成。 為驗(yàn)證整套數(shù)控裁床系統(tǒng)實(shí)際生產(chǎn)的可行性,進(jìn)行完整的實(shí)例驗(yàn)證。選用真實(shí)生產(chǎn)中上衣面領(lǐng)作為測試對(duì)象。圖6(a)所示為數(shù)控裁床試驗(yàn)平臺(tái)上的硬件執(zhí)行部分,圖6(b)所示為導(dǎo)入上衣面領(lǐng)PLT圖形文件顯示效果,圖6(c)所示為驗(yàn)證CNC加工數(shù)據(jù)的仿真結(jié)果,圖6(d)所示為在試驗(yàn)平臺(tái)實(shí)際加工完成的樣品。本文作者完整地驗(yàn)證了樣品在系統(tǒng)平臺(tái)上的圖形顯示、仿真加工和實(shí)際加工等環(huán)節(jié),各環(huán)節(jié)均與理論設(shè)計(jì)保持一致,達(dá)到了預(yù)期效果。 圖6 實(shí)例驗(yàn)證 本文作者以數(shù)控裁床的控制系統(tǒng)為研究對(duì)象,設(shè)計(jì)了一整套數(shù)控裁床加工系統(tǒng)方案。文中的創(chuàng)新之處有兩點(diǎn):(1)在提出的數(shù)控裁床CNC加工數(shù)據(jù)生成方法基礎(chǔ)上,通過試驗(yàn)制定加工軌跡的運(yùn)行規(guī)則;(2)設(shè)計(jì)了將加工插補(bǔ)算法與數(shù)據(jù)棧相結(jié)合的應(yīng)用方法,并基于MFC和STM32等平臺(tái)開發(fā)了軟硬件系統(tǒng),最終使理論方法得以實(shí)施。通過樣片應(yīng)用實(shí)例,驗(yàn)證了該數(shù)控裁床系統(tǒng)設(shè)計(jì)的可行性與準(zhǔn)確性,滿足了生產(chǎn)的實(shí)際需要。3 數(shù)控裁床運(yùn)動(dòng)控制
3.1 CNC加工數(shù)據(jù)生成方法
3.2 速度控制列表
3.3 插補(bǔ)算法的應(yīng)用
4 加工驗(yàn)證
4.1 仿真加工驗(yàn)證
4.2 實(shí)例加工驗(yàn)證
5 結(jié)語