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