摘 要: 提出一種基于ARM Cortex-M3為核心的運(yùn)動控制器的新運(yùn)動控制方案,并給出關(guān)鍵算法??刂葡到y(tǒng)采用“ARM運(yùn)動控制器+PC機(jī)”的結(jié)構(gòu)。PC機(jī)實(shí)現(xiàn)界面功能以及部分預(yù)處理功能,運(yùn)動控制器則完成關(guān)鍵的算法與處理。在數(shù)控沖孔機(jī)控制上進(jìn)行的應(yīng)用表明,該系統(tǒng)具有較高的可行性。
關(guān)鍵詞: ARM Cortex-M3;運(yùn)動控制系統(tǒng);算法
在現(xiàn)代工業(yè)控制領(lǐng)域中,基于專用運(yùn)動控制芯片或者DSP控制器的運(yùn)動控制系統(tǒng)應(yīng)用較為廣泛[1],但成本較高。新興的ARM Cortex系列具有低功耗、低成本、高性能和開發(fā)環(huán)境優(yōu)秀的特點(diǎn),不僅在功能上能夠滿足工控領(lǐng)域?qū)λ俣燃肮δ艿囊?,更具有很好的成本?yōu)勢。本文采用ARM Cortxe-M3處理器為運(yùn)動控制器設(shè)計(jì)開放式運(yùn)動控制系統(tǒng)[2-3],并在此硬件平臺上研究運(yùn)動控制策略與關(guān)鍵算法,實(shí)現(xiàn)運(yùn)動控制處理功能。
1 控制系統(tǒng)
1.1 控制系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)采用“運(yùn)動控制器+PC機(jī)”的開放式結(jié)構(gòu),如圖1所示。系統(tǒng)以ARM Cortex-M3微處理器作為核心處理芯片的運(yùn)動控制器,與PC機(jī)構(gòu)成的多處理器結(jié)構(gòu),實(shí)現(xiàn)多軸步進(jìn)電機(jī)的控制。
運(yùn)動控制器主要由ARM Cortex-M3微處理器、存儲芯片、接口芯片以及外圍接口等構(gòu)成,如圖2所示。處理器芯片選用ST公司的STM32F103VCT6,其具有高性能、低成本、低功耗的特點(diǎn),時(shí)鐘頻率最高能夠達(dá)到72 MHz,并擁有豐富的外圍設(shè)備和功能強(qiáng)大的定時(shí)器[4]。
ARM Cortex-M3處理器主要實(shí)現(xiàn)數(shù)據(jù)處理、系統(tǒng)控制及中斷處理等。數(shù)據(jù)處理:對PC機(jī)下載的加工數(shù)據(jù)進(jìn)行進(jìn)一步處理,主要是如何將微小線段的端點(diǎn)坐標(biāo)、速度等信息通過特定算法轉(zhuǎn)變?yōu)轵?qū)動步進(jìn)電機(jī)驅(qū)動器的脈沖信號和方向信號。系統(tǒng)控制:按照要求完成模塊功能的分配與處理。中斷處理:完成定時(shí)器中斷、串口通信中斷、急停中斷、位置控制等。
1.2 控制系統(tǒng)軟件
運(yùn)動控制系統(tǒng)軟件程序主要有兩大部分,一是用于人機(jī)交互的界面程序,包括系統(tǒng)初始化模塊、參數(shù)設(shè)置模塊、模板選擇模塊以及顯示模塊等;二是為實(shí)現(xiàn)運(yùn)動控制輸出的算法處理程序,主要包括速度前瞻性處理算法、坐標(biāo)變換與主軸判斷、脈沖分配以及兩軸聯(lián)動算法。
2 主要算法設(shè)計(jì)
運(yùn)動控制系統(tǒng)需要通過運(yùn)動控制算法來獲得控制量的輸出,以達(dá)到對機(jī)械運(yùn)動部件的控制[5]。本系統(tǒng)通過微小線段來擬合要加工的曲線,在PC機(jī)上進(jìn)行前端預(yù)處理得到加工圖形的坐標(biāo)位置、端點(diǎn)數(shù)、端點(diǎn)速度等數(shù)據(jù),并在運(yùn)動控制器中進(jìn)一步處理[6-7]。系統(tǒng)的關(guān)鍵算法設(shè)計(jì)有:兩軸聯(lián)動的實(shí)現(xiàn)、速度前瞻性處理算法以及脈沖分配規(guī)劃。
2.1 兩軸聯(lián)動
首先,根據(jù)X、Y軸的脈沖數(shù)來確定主從軸,脈沖數(shù)多的為主軸。為了實(shí)現(xiàn)聯(lián)動,則必須在同一時(shí)間內(nèi)將X、Y軸的脈沖數(shù)目發(fā)送完。
兩軸聯(lián)動主要是靠3個(gè)定時(shí)器級聯(lián)來實(shí)現(xiàn),如圖3所示。其中,定時(shí)器2作為總線時(shí)鐘的分頻器,實(shí)現(xiàn)一個(gè)動態(tài)的“主時(shí)鐘”;定時(shí)器3和定時(shí)器4分別作為“主時(shí)鐘”的計(jì)數(shù)器,對定時(shí)器2產(chǎn)生的“主時(shí)鐘”進(jìn)行計(jì)數(shù),以產(chǎn)生符合系統(tǒng)所需脈寬的脈沖。
2.2 速度前瞻性處理[1,7]
系統(tǒng)要加工的圓弧是由大量的微小線段來逼近的,為了保證這些微小線段在高速運(yùn)行時(shí)能夠連續(xù)執(zhí)行,不出現(xiàn)停頓現(xiàn)象,系統(tǒng)在上位機(jī)的內(nèi)存中開辟一個(gè)空間,預(yù)先將加工的弧線數(shù)據(jù)讀出,存儲到該空間中,再根據(jù)設(shè)計(jì)好的步進(jìn)電機(jī)升降頻曲線對速度進(jìn)行預(yù)先規(guī)劃處理。預(yù)先規(guī)劃包括:相鄰直線段拐角速度優(yōu)化、減速點(diǎn)預(yù)測以及連續(xù)微小線段始末速度確定。
在高速運(yùn)動時(shí),如果兩個(gè)微小線段的拐角處速度差很大,則會使得拐角處產(chǎn)生很大的加速度,有可能導(dǎo)致過沖甚至堵轉(zhuǎn)現(xiàn)象。因此在加工過程中,為使得連續(xù)微小線段的曲線加工流暢,必須保證微小線段間的速度過渡是連續(xù)的,不能發(fā)生突變。為保證軌跡精度并避免產(chǎn)生突變,兩個(gè)運(yùn)動軸的速度變化率不能超過該軸電機(jī)的驅(qū)動能力。在該約束條件下需要對減速點(diǎn)進(jìn)行提前預(yù)測,從而保證每條小線段在運(yùn)動到線段終點(diǎn)的時(shí)候能夠達(dá)到預(yù)定所能達(dá)到的最高速度,并且不會過沖。
結(jié)合線段主軸的脈沖數(shù)目和升降頻曲線表,推算出到達(dá)該小線段末端能達(dá)到的最高速度和最低速度及該線段終點(diǎn)的速度范圍。再在這個(gè)范圍從最高速度開始檢查滿足速度不突變條件的速度作為該線段的末點(diǎn)速度,并將這個(gè)速度或者這個(gè)速度在升降頻曲線表中的相鄰速度作為下一條小線段的起始速度。通過該方式可以規(guī)劃出構(gòu)成整條曲線的微小線段的端點(diǎn)速度。而后再利用規(guī)劃好始末點(diǎn)速度來進(jìn)行主軸的加減速脈沖分配,確定減速點(diǎn)的位置就可以避免電機(jī)運(yùn)動過程中出現(xiàn)的過沖。
2.3 脈沖分配規(guī)劃
以X軸為主軸為例,根據(jù)主軸的起點(diǎn)速度(line1.begin)、終點(diǎn)速度(line1.end)、主軸脈沖數(shù)(line1.Xlength)以及設(shè)定好的升降頻曲線來規(guī)劃加速、勻速、減速的脈沖數(shù)[6]。具體算法如下:
如果起點(diǎn)速度和終點(diǎn)速度均為最大速度時(shí),則加速和減速脈沖均為零,勻速脈沖數(shù)為整個(gè)主軸脈沖:line1.speed_yunsu=line1.Xlength。
如果起點(diǎn)速度等于最大速度,終點(diǎn)速度小于最大速度時(shí),則:
line1.speed_up=0;
line1.speed_down=Max_down2_VA(line1.end); (最高速度到終點(diǎn)速度需要的脈沖數(shù))
line1.speed_yunsu=line1.Xlength-Max_down2_VA(line1.end);
如果起點(diǎn)速度小于最大速度,終點(diǎn)速度等于最大速度時(shí),則:
line1.speed_up=VA_up2_Max(line1.begin);(從起始速度到最高速度需要的脈沖數(shù))
line1.speed_down=0;
line1.speed_yunsu=line1.Xlength-VA_up2_Max(line1.begin);
如果兩端的速度均小于最大速度時(shí):
當(dāng)主軸脈沖數(shù)大于等于起點(diǎn)加速到終點(diǎn)速度需要的脈沖數(shù)加上從最大速度降到終點(diǎn)速度脈沖數(shù),則運(yùn)動脈沖的分配如下:
line1.speed_up=VA_up2_Max(line1.begin);
line1.speed_down=Max_down2_VA(line1.end);
line1.speed_yunsu=line1.Xlength- VA_up2_Max(line1.begin)-Max_down2_VA(line1.end);
當(dāng)主軸脈沖數(shù)小于起點(diǎn)加速到終點(diǎn)的速度需要的脈沖數(shù)加上從最高速度降到結(jié)束點(diǎn)速度脈沖數(shù):若開始的速度小于末端速度則只有加速脈沖(等于主軸脈沖);若開始的速度大于末端速度則只有減速脈沖;若開始的速度等于于末端速度則只有勻速脈沖。
以ARM Cortex-M3運(yùn)動控制器替代傳統(tǒng)運(yùn)動控制卡的運(yùn)動控制系統(tǒng),降低了控制系統(tǒng)的成本,同時(shí)開闊了ARM Cortex-M3在運(yùn)動控制領(lǐng)域的應(yīng)用。本文提供的方法已經(jīng)成功應(yīng)用于數(shù)控沖孔機(jī)的運(yùn)動控制,實(shí)現(xiàn)了數(shù)控沖孔機(jī)的預(yù)定功能,充分證明了ARM Cortex-M3實(shí)現(xiàn)優(yōu)秀運(yùn)動控制器的可行性。
參考文獻(xiàn)
[1] 鄭魁敬,高建設(shè).運(yùn)動控制技術(shù)及工程實(shí)踐[M].北京:中國電力出版社,2009.
[2] 黃陽明,鄭力新.基于LPC2294和MCX314AS的經(jīng)濟(jì)型數(shù)控系統(tǒng)[J].微型機(jī)與應(yīng)用,2010,29(8):83-85.
[3] 金振林,黃大貴.基于ARM的高精高速運(yùn)動控制[J].制造技術(shù)與機(jī)床,2007(5):42-44.
[4] 彭剛,秦志強(qiáng).基于ARM Cortex-M3的STM32系列嵌入式微控制器應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,2011.
[5] 龐牧野.嵌入式數(shù)控系統(tǒng)連續(xù)軌跡控制算法的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2011.
[6] 鄭灼,李興根.單片機(jī)控制的步進(jìn)電機(jī)升降頻規(guī)律與實(shí)現(xiàn)[J].微電機(jī),1999(4).
[7] 劉青山,高霖.基于運(yùn)動控制卡的PC數(shù)控進(jìn)給速度前瞻控制[J].機(jī)械科學(xué)與技術(shù),2009(9).