孔祥曄,王如剛,周 鋒,郭乃宏
(1.鹽城工學院信息工程學院,江蘇鹽城 224051;2.鹽城雄鷹精密機械有限公司,江蘇鹽城 224006)
步進電機是一種將電脈沖信號轉(zhuǎn)換為角位移或者線位移信號的電動機。因其具有成本低、控制性能好、開環(huán)精度高、不易受外界環(huán)境影響等優(yōu)點,廣泛應用于工業(yè)電機控制裝置中。加減速算法是運動控制中的關鍵技術,加減速算法是實現(xiàn)高速、高效的基礎,實現(xiàn)加速度穩(wěn)定,保證精度、高效,避免失步是目前工業(yè)生產(chǎn)加工需解決的問題[1]。目前常見的加減速算法有:梯形加減速、指數(shù)加減速、S形加減速。
傳統(tǒng)的步進電機控制電路常用STM32和單片機芯片,但是單片機、STM32存在靈活性差、易受損、工作效率不高等缺點。FPGA具有豐富的邏輯單元、乘法器等硬件資源,無限編程重新配置可以減少硬件資源的使用,且靈活方便,并行程度高,可靠性高,在設計過程中可以根據(jù)實際情況進行靈活修改,目前常被應用于研究與生產(chǎn)中[2]。目前,眾多研究人員利用FPGA研究加減速控制并取得了較好的成果。2017年,劉鵬等利用滑動濾波器改善了加減速中加速度突變的問題,在FPGA上實現(xiàn)了梯形加減速控制,但是加減速時間較長[3]。2020年,陳祖霖等利用FPGA優(yōu)化了加減速節(jié)點的突變,一定程度上避免步進電機運動過沖,但也存在一定的失步現(xiàn)象,可以通過減小發(fā)送脈沖周期進行改善[4]。2021年,胡呈祖等提出了通過查表的方法實現(xiàn)FPGA加減速運動控制,能夠?qū)崿F(xiàn)較準確的運動目標控制,降低了成本,但是計算繁瑣、降低了靈活度[5]。2021年,邱靖超等提出了基于FPGA的查表法多軸加減速運動,這種算法可以實現(xiàn)多軸同時控制運動、提高工作效率,減少加工時間,但是一定程度上增加了計算量,降低了工作效率[6]。
在現(xiàn)有研究的基礎上,結(jié)合FPGA并行處理的優(yōu)勢,本文在基于FPGA的S形加減速的基礎上,利用跟蹤微分器的思路提出了一種自適應動態(tài)規(guī)劃控制模型,并通過FPGA進行實驗驗證和功能仿真。基于動態(tài)規(guī)劃搜索算法及最大速度限制算法可以避免連續(xù)修改目標頻率,減少突變,保持速度變化連續(xù)平穩(wěn),減少加工時間、提高工作效率。
傳統(tǒng)的梯形加減速和指數(shù)型加減速具有算法簡單、響應快、實現(xiàn)方便的特點,但是隨著工業(yè)自動化、復雜化的發(fā)展,加減速控制需要精度高,控制靈活、加速度連續(xù)變化等特點,梯形和指數(shù)形加減速已經(jīng)不適應當今大多數(shù)加減速的控制需求。如圖1所示,S形加減速具有變化連續(xù)、沖擊振動小,柔性程度高的優(yōu)點,符合現(xiàn)代發(fā)展的需求,常見的S形控制算法有:查表法[7]、卷積法[8]、積分法[9]。
圖1 S形算法速度變化曲線
查表法的原理是通過曲線公式預先計算減速與減速過程中的各個點,再將這些點轉(zhuǎn)換為定時器的比較匹配值,在MATLAB中寫入S形曲線比較匹配值,將曲線中的16 bit數(shù)據(jù)輸入到FPGA里的ROM核中,產(chǎn)生一個.mif文件放在rom文件夾下,通過查表,進一步結(jié)合脈沖控制步進電機的加減速,S形查表法圖像數(shù)據(jù)的.mif文件如圖2所示。
圖2 圖像數(shù)據(jù)ROM表
查表法加減速控制運行速度快,占用少量的CPU資源,但是該方法占用較大的存儲空間,更改速度、加速度不方便,操作繁瑣。
X1[k]為輸入速度序列,如圖3所示,表達式為式(1)。
圖3 X1[k]序列
(1)
Y1[i]為卷積算子序列,如圖4所示。
圖4 Y1[i]序列
圖5 梯形加減速速度序列
(2)
第2次卷積的卷積序列長度為N2,N2 圖6 Y2[n]序列 圖7 S形曲線加減速速度序列 (3) 通過結(jié)合FPGA實現(xiàn)卷積法加減速控制算法,能夠有效提高運算效率,優(yōu)化系統(tǒng)結(jié)構。由于FPGA上實現(xiàn)余數(shù)的浮點數(shù)計算困難,所以在計算不是整數(shù)的余數(shù)時,會占用較大的CPU資源。 通過插入4段連續(xù)分段函數(shù),累加前一個數(shù)據(jù),連續(xù)積分,得到4段曲線。得到位移、速度、加速度、加加速度之間的數(shù)量關系,再依次對加加速度、加速度以及速度分別進行積分,得到加速度、速度、位移的曲線[11]。圖8為連續(xù)積分曲線。 圖8 連續(xù)積分加加速度、加速度、速度、位移曲線 此算法相對于查表法和卷積法加減速控制算法,能夠減少加工時間,減少電機失步,提高工作效率。但是也存在一定的缺點,當要給系統(tǒng)一個速度改變時,會容易產(chǎn)生步進電機的顫振,突變。 跟蹤微分器(TD)是自抗擾控制技術中的重要組成部分,對于一個有噪聲的輸入信號x(t),使用常見的微分器進行微分會使其噪聲增大,使用跟蹤微分器,將原來的輸入信號x(t)作為輸出的跟蹤信號x2(t),從不連續(xù)的帶有噪聲信號的中提取連續(xù)、微分信號,可獲得平滑的微分信號[12]。本文使用跟蹤微分器,是將步進電機不平滑的轉(zhuǎn)動中提取連續(xù)平滑的信號,在進行信號突變時,跟蹤信號能夠進行補償,使得運動控制的連續(xù)平穩(wěn)。本文采用的跟蹤微分器為二階跟蹤微分器[13],離散化形式可以表示為: (4) fhan為快速跟蹤控制綜合函數(shù),表達式為: (5) fsg函數(shù)表達式為 fsg(x,d)=(sign(x+d)-sign(x-d))/2 (6) 快速控制跟蹤微分器的作用是起到一個緩沖的作用,當給定一個階躍信號時,快速跟蹤控制微分器會抑制其速度或者頻率防止過沖,否則會導致步進電機在加減速過程中過沖導致失步[11]。 在FPGA開發(fā)板中,只添加上述跟蹤微分算法還不能夠使速度突變得到很好的抑制,所以還需要在此基礎上添加最大速度限制模塊,來判斷下一時刻的速度是否超過設置的最大速度,該速度必須大于實際情況下電機使用場景下所需的最大速度[14]。該改進既能夠滿足加速也能滿足減速情況下的限制。設本實驗的最大限制速度為v。當v0+ha>v時,v0為當前速度,h為積分步長,a為控制量(加速度),判定此時超速,這時就要判斷下一個周期內(nèi)速度,并賦予本周期的速度在下一周期速度的限制,計算出a 因為步進電機有正轉(zhuǎn)和反轉(zhuǎn)2個方向,所以x的值有正有負,所以將正負2種情況合并,得到: a=[vsign(x)-x]/h (7) 將式(7)加至式(5)中,可以得到最大速度限制公式: (8) 上述最大速度限制算法可以判定速度是否到達最大值并對其進行減速操作,但是在加速至勻速階段,不能斷定是否運動到應到位置,動態(tài)規(guī)劃算法是將大問題轉(zhuǎn)換為小問題,是求運動過程中最優(yōu)數(shù)學解[15]。加減速運動中,每個周期步進電機重復進行頻率判斷,直至達到最大速度,所以本實驗添加此算法,避免進行重復搜索,解決小問題,算出最優(yōu)解,再逐步進行求解,最后提供解決方案[16]。此算法具體如下。 2.3.1 階段 階段變量是離散的,設轉(zhuǎn)動位移是Sm,解數(shù)列為g(sm),將加速階段若干個相互聯(lián)系的周期分成若干個小問題。因為是實現(xiàn)S形加減速,所以設備選速度塊為di。 di={1,3,5,7,9} (9) 2.3.2 構造 構造初始狀態(tài),從di中可以得到: (10) 2.3.3 約束 設qi為g(sm)序列中第i個值,判定條件為:qi-qi-1 2.3.4 轉(zhuǎn)移 從上面可以遞推得到下面轉(zhuǎn)移方程的一般形式: (11) 根據(jù)上面遞推公式,可以通過判定條件得到目標位移的最優(yōu)解,也就是步進電機運動速度軌跡圖像。 2.3.5 優(yōu)化 由于本文實驗電機是一個由加速勻速再減速的過程,如果使用上述算法,會占用大量內(nèi)存,計算量也大,因為本實驗的加速與減速過程本質(zhì)上是完全相同的2個階段,只是兩階段加速度成相反數(shù)。所以,為了減小計算量和少量的內(nèi)存,對上述算法進行優(yōu)化,降低搜索量,只搜索加速到勻速階段,另一部分由最優(yōu)解序列的逆排序得到。假設S為整個過程的總位移,S1為加速階段的位移,S2為速度到達最快即勻速運動時,每個單位周期內(nèi)的位移。 (12) 當步進電機的基本參數(shù)確定時,為了提高效率,可以先預先搜索出解數(shù)列,與最高速度的目標數(shù)列進行匹配,可以快速計算出位移的速度塊數(shù)列。 本實驗流程圖如圖9所示。 圖9 實驗流程圖 本次實驗采用的實驗平臺是由SF-CY4開發(fā)板,A3977型號驅(qū)動器,型號為42BYGH34-04A的12 V步進電機組成。硬件設計框圖如圖10所示。 圖10 實驗硬件設計框圖 2.4.1 硬件設計 FPGA開發(fā)板選用Cyclone系列的SF-CY4開發(fā)板,利用串口通信將PC端UART協(xié)議轉(zhuǎn)USB協(xié)議與FPGA 的通信,FPGA通過H橋集成電機驅(qū)動器驅(qū)動電機轉(zhuǎn)動,三者之間通過數(shù)字IO接口對電機角速度控制。FPGA與驅(qū)動器A3977的數(shù)字IO接口連線如圖11所示。其中,DIR為方向信號,控制步進電機的轉(zhuǎn)動方向,當方向信號為高電平時,正轉(zhuǎn),反之反轉(zhuǎn);EN為步進電機的使能信號,信號為低電平時,使能信號拉高,電機正常轉(zhuǎn)動;STEP是產(chǎn)生步進電機位移的脈沖信號,當步進電機檢測到一個上升沿時,STEP信號拉高;HOME是反饋信號,不同的STEP,對應不同的HOME信號。A、B代表步進電機驅(qū)動線的2項。 圖11 FPGA與驅(qū)動器數(shù)字信號接口 2.4.2 軟件設計 FPGA采用自頂而下的模塊化設計理念,圖12是本次實驗主要的模塊的RTL視圖,包括PLL鎖相環(huán)模塊,跟蹤微分模塊、規(guī)劃搜索模塊、最大速度限制模塊及除法器模塊,共同驅(qū)動步進電機運動模塊進行驅(qū)動。 PLL鎖相環(huán)模塊整合本實驗所需時鐘信號,分配給各模塊分頻時鐘及復位信號,跟蹤微分模塊將原始輸入使能信號輸出為輸入的跟蹤信號和微分信號,將電機設定角度看成原始信號,實際轉(zhuǎn)動角度看做跟蹤信號,在給定反向轉(zhuǎn)動的指令后,通過跟蹤微分能夠抑制速度的突變,產(chǎn)生過沖現(xiàn)象。在濾波的同時,為判斷步進電機轉(zhuǎn)動的脈沖數(shù)是否轉(zhuǎn)動相對應的角度,通過搜索規(guī)劃模塊搜索求出本周期內(nèi)的最優(yōu)解,獨立設定控制周期與實際脈沖周期,將跟蹤微分模塊和搜索規(guī)劃模塊輸出值輸入最大速度限制模塊,保證電機在可運動的最大速度限制值內(nèi)進行最優(yōu)的速度控制。為方便計數(shù),最后添加除法器,將頻率轉(zhuǎn)換成周期輸入步進電機,達到步進電機運動控制。 利用MATLAB與FPGA之間方便的數(shù)據(jù)交互能力和MATLAB的數(shù)據(jù)分析和可視化功能,為驗證本實驗的可行性,圖13是在MATLAB中計算得到的速度和位移的仿真圖像。 (a) 本文搭建了由SF-CY4型號的FPGA開發(fā)板、A3977驅(qū)動器、步進電機組成的實驗平臺,開發(fā)環(huán)境為QuartusⅡ 13.1,開發(fā)語言為Verilog,仿真軟件為Modelsim。仿真輸出的波形如圖14所示。為了便于觀察本次實驗的結(jié)果并進行分析,模擬波形中real信號是添加DIR轉(zhuǎn)向信號的波形,由于速度只能為正,在實際仿真中,沒有負值,實際輸出給電機的是不帶real信號的,但2個仿真圖最終效果一致。實際仿真如圖15所示。 圖14 效果仿真圖 圖15 實際仿真圖 圖16為實驗結(jié)果反饋結(jié)構框圖,由控制單元向反饋單元進行反饋。梅花聯(lián)軸器連接控制單元和反饋單元,編碼器每1 ms進行轉(zhuǎn)速收集,收集到的數(shù)據(jù)脈沖信號通過驅(qū)動板驅(qū)動用UART串口發(fā)送到PC端。 圖16 反饋結(jié)構框圖 實驗設定步進電機啟動頻率為500 Hz,目標頻率為5 100 Hz,在加減速控制運動過程中,分頻計數(shù)邏輯每1 ms產(chǎn)生1個高脈沖,用來切換當前速度,用增量式旋轉(zhuǎn)編碼器對步進電機的轉(zhuǎn)角進行測試。在每個運動狀態(tài)運行時間相同的情況下,將改進后的控制系統(tǒng)的結(jié)果和動態(tài)控制算法中的最優(yōu)解進行對比,一共對比708次,定義上下浮動超過3 Hz為突變點,表1為各運動狀態(tài)的突變點的個數(shù)及精準度,結(jié)果顯示整個運動過程的精準度為99.91%。 表1 改進后的突變點數(shù) 如圖17所示,實線是沒有改進的實驗結(jié)果,虛線是改進后的實驗結(jié)果。在給定參數(shù)均相同的情況下,改進的加減速運動在A點到達目標頻率,加速時間為113 ms,比改進前的B點提前11 ms到達最大頻率且加速過程平滑。在同一時間,給定電機一個反向轉(zhuǎn)動的指令,沒有添加跟蹤微分器的加減速控制勻速運動達到反向轉(zhuǎn)動目標頻率,并在到達最大速度C點處產(chǎn)生過沖現(xiàn)象,從對比圖中可以看出,添加跟蹤微分模塊的運動控制在正轉(zhuǎn)減速到0且反轉(zhuǎn)從0加速的過程中,采用了S形算法控制,并在反轉(zhuǎn)達到最大速度前避免過沖現(xiàn)象的產(chǎn)生。同時,從實驗結(jié)果來看,反向轉(zhuǎn)動的過程中,改進算法運行時間比改進之前快了14 ms。本實驗中動態(tài)規(guī)劃算法可以減少D點突變現(xiàn)象的產(chǎn)生。 圖17 結(jié)果對比圖 表2為本次實驗改進前后加減速對比表,加速時間是從起始頻率加速至最大速度的時間,反轉(zhuǎn)時間指的是從正轉(zhuǎn)最大速度至反轉(zhuǎn)最大速度使用的時間,改進后的S曲線控制系統(tǒng)較之前的精準度上升了8.14%,效果更好。 表2 改進前后加減速對比表 針對步進電機在運動過程中突然改變目標速度或者反向轉(zhuǎn)動的情況下產(chǎn)生突變、過沖,柔性程度差、運行時間較長的缺點,設計了一種基于自抗擾控制理論中的跟蹤微分器的原理,結(jié)合動態(tài)規(guī)劃算法和最大速度抑制算法的加減速運動控制系統(tǒng)。相比于改進前的連續(xù)積分的算法,該算法可以減緩加減速及反轉(zhuǎn)產(chǎn)生的突變及過沖現(xiàn)象,加工時間提高11ms,改進后的S曲線控制系統(tǒng)較之前的精準度上升了8.14%,效果更好。實驗結(jié)果表明,該算法加減速平穩(wěn)、加速時間適中,符合大多數(shù)中小型企業(yè)的生產(chǎn)需求,運用閉環(huán)控制,有利于今后從單軸運用至多軸的控制研究。1.3 積分法
2 原理及系統(tǒng)設計
2.1 跟蹤微分器
2.2 最大速度限制算法
2.3 動態(tài)規(guī)劃搜索算法及改進
2.4 系統(tǒng)設計
3 結(jié)果與分析
3.1 MATLAB驗證
3.2 實驗結(jié)果反饋
4 結(jié)論