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