第三章 弦波編碼器解碼實現
3.3 線性化法與 QEP-CORDIC 之實現討論
此節將對新提出使用的 QEP-CORDIC 演算法與原本所使用的線性化法做比較,並 就模擬及實做兩方面進行分析。首先進行模擬,下圖 3-20 是我們分別進行兩種不同的 算法,在不同的遞迴次數下模擬後所得到的誤差圖。
0 10 20 30 40 50 60 70 80 90
Residual Error Compared
Degree
2.5x 10-3 Residual Error Compared
Degree
2x 10-4 Residual Error Compared
Degree
1.5x 10-4 Residual Error Compared
Degree
0 20 40 60 80 100 120 140 160 180 200
Residual Error
QEP-CORDIC Residual Error
0 20 40 60 80 100 120 140 160 180 200
Residual Error
Linearized Residual Error
(a) CORDIC 遞迴次數 5 次 (b) 線性化法誤差
Residual Error
QEP-CORDIC Residual Error
0 20 40 60 80 100 120 140 160 180 200
Residual Error
Linearized Residual Error
(c) CORDIC 遞迴次數 8 次 (d) 線性化法誤差
Residual Error
QEP-CORDIC Residual Error
0 20 40 60 80 100 120 140 160 180 200
Residual Error
Linearized Residual Error
(e) CORDIC 遞迴次數 12 次 (f) 線性化法誤差 圖 3-21 兩種解碼法同時在 DSP 實現的誤差比較圖
結果顯示,在 5 次遞迴運算時 QEP-CORDIC 演算法誤差略大於線性化法,而在 8
次及 11 次遞迴運算時 QEP-CORDIC 演算法則與線性化法的誤差相當接近,下則表 3-5 是兩者間的比較
表 3-5 線性化法與 QEP-CORDIC 演算法實驗比較
最大誤差量 誤差變異量
線性化法 5.2687×10
− 2
7.4188×10− 4
QEP-CORDIC(5) 7.3423×10− 2
1.1879×10− 3
QEP-CORDIC(8) 5.2771×10− 2
1.1235×10− 3
QEP-CORDIC(12) 3.7509×10− 2
6.4868×10− 4
由上面的模擬及實驗結果發現了相當奇怪的現象,原本模擬的時候在 12 次遞迴以 下線性化法的誤差都小於 QEP-CORDIC 法,尤其在遞迴次數越少的時候越明顯,但實 驗結果卻是 QEP-CORDIC 演算法在 5 次遞迴時比線性化法誤差略大,在 8 次兩者誤差 已相當接近,在 12 次遞迴運算時反而 QEP-CORDIC 誤差已經小於線性化法了,其原因 分析如下:
1. ADC 取樣精度未加以考慮:在模擬中都沒有考慮到 ADC 取樣後的精度,而實 驗中受限於 ADC 取樣 12-bit 的精度,大大降低了線性化法的精度,但相對於 QEP-CORDIC 演算法來說,本身在模擬時就已經設定為 12 次的遞迴運算,間接 考慮到 ADC 取樣的精度問題,所以 ADC 取樣精度對 QEP-CORDIC 法影響較 小,而對線性化法則影響較大。
2. DSP 運算時有限位元之影響:線性化法中需要用到複雜的運算元,如:除法、
乘法或是取絕對值,DSP 執行這些複雜的運算後都會因為有限位元的限制而忽 略掉末端的位元資訊,而 QEP-CORDIC 演算法本身就是為了數位系統所發展 的,並無使用到複雜的運算元,僅僅以位移及加法器就可以完成,所以在實做 運算時誤差與模擬相差無不多。
除此之外執行速度也大有不同,以 DSP-Based 及 FPGA-Based 實際實現兩種不同的 解碼技巧,DSP-Based 的線性化解碼因為需要用到許多乘法及除法,所以需要的時間比 較多,大約需要75.88
μ s
,所以最高處理速度約是 13.1 KHz 左右;相對的 FPGA-Based 的 QEP-CORDIC 解碼因為是專為數位硬體所設計的演算法,只需使用到位移及加減法 即可,所以處理速度極快,以目前實現的 unrolled 架構來說,14 次的遞迴運算來說只需要 20 個系統週期,以 133.33 MHz 的系統週期來說只需
150 ns
,約為 6.666 MHz,但實 際實現上因為受限於外部 LTC1407A 串列傳輸 ADC 的傳輸限制,最快更新速度只能執 行到 245 KHz 左右。第4章第四章 串列式編碼器在低速控制應用
4.1 低速估測
速度估測在低速控制中是影響控制效能最大的因素之ㄧ,本節所提出的速度估測法 目的在於未來搭配高解析度串列式編碼器時,可以得到更精確的速度資訊。精確的速度 回授除了經由硬體編碼器解析度的提升外,利用信號處理的方法提升回授信號的可信 度、降低雜訊也同樣可以增加速度回授的解析度。本節提供三種不同的速度估測法,最 後實際比較各種估測法在低速控制上所得到的結果。
4.1.1 差分法加低通濾波器
差分法是最常應用於伺服馬達控制的速度估測法,在一般轉速編碼器解析度足夠的 情況下確實是個簡單而且有效的方法。其作法是取兩點之間的差分後再經過一個簡單的 低通濾波器濾除雜訊。
定義目前位置θ
( ) k
與前次位置θ( k − 1 )
及本次速度差分值ω( ) k
關係為( ) ( ) ( k =
θk −
θk − 1 )
ω
(4.1)
接著使用一個連續時間的一階低通濾波器來降低編碼器的雜訊影響,估測速度ω
ˆ ( ) k
為( ω ω )
τ
ω
ˆ 1 ˆ−
=
dt c
d (4.2)[13]
其中
c
c
= ×f
τ π
21 是低通濾波器的截止頻率常數,
f 為截止頻率,然後將上式用反 c
向近似法推導,取樣週期為 T
( ) ( ) ( ) ( )
1.86x 104 Low Resolution Information for Velocity Estimate
0 10 20 30 40 50 60 70 80 90 100
1.86x 104 High Resolution Information for Velocity Verify
(a) 16-bit 解析度 (b) 19-bit 解析度
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Differential Velocity Estimate (16bit)
Sample
Velocity(Pulse/Sample)
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
Differential Velocity Estimate (19bit)
Sample 照命令的形式來設定,或是使用主軸成分分析(principle component analysis) [15]來決定 階數。再以前 M 點的資料作為最小平方法的參數估測來源,可得下列式:
假設時刻
t 1 = 1
,A 矩陣便可簡化為Fixed N=1 and Test M
Value M
Residual Error
1 2 3 4 5 6 7
Value N
Residual Error
圖 4-4 不同參數 M 下的累積誤差圖 圖 4-5 不同參數 N 下的累積誤差圖
使用的參數為
M
=4、N = 1
,將階數 N 設定為1時有最小誤差的原因在於實驗是以 固定低速的命令為主,所以速度表現應該為單純1階的線性方程式,故誤差最小。0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
1 2 3 4 5 6
Least-square Fit Velocity Estimate (16bit)
Sample
Velocity(Pulse/Sample)
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
1 2 3 4 5 6
Least-square Fit Velocity Estimate (19bit)
Sample
Velocity(Pulse/Sample)
圖 4-6 16-bit 最小平方近似法估測速度 圖 4-7 19-bit 高解析度估測速度 6851
. 4 8578
.
0 =
=
μσ σ
= 0 . 1365
μ= 4 . 6853
利用此組參數進行運算,結果如上圖 4-6,整體輸出範圍約在 3.5~5.5 之間,實際 上平均值約為 4.6851 與右邊的高解析度速度資訊所得的 4.6853 是非常相近的,而變異 量約為 0.8578,比 900 Hz 時的差分法還要小。
4.1.3 卡曼濾波器 [16]
卡曼濾波器是在 1960 年時由 Rudolf Emil Kalman 所提出的理論,是一種最佳化遞 迴資料處理演算法(optimal recursive data processing algorithm),利用遞迴運算處理離散時 間資料的線性濾波問題,由於它的在數位系統有許多的優點,便立刻受到廣泛的研究及 應用。
卡曼濾波器利用一組數值化方程式有效遞迴的估測系統狀態,使得累積平方誤差最 小化,不但可以估測過去、現在甚至是未來的系統狀態,除此之外在系統模型不夠準確 的狀況下更能展現其作用。
假設系統離散狀態方程式為
k
綜合上述的推論推理出下列五條卡曼濾波器的遞迴公式
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
Kalman Filter Velocity Estimate (16bit)
Sample
Velocity(Pulse/Sample)
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
Kalman Filter Velocity Estimate (19bit)
Sample
相比減少十倍以上。
4.1.4 各估測法模擬比較
整合上面三種估測法結果做比較,同樣的一筆 16-bit 位置資訊經過三種不同的速度 估測法得到不同的結果,將三張圖與 19-bit 差分圖做比較
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
Differential Velocity Estimate (16bit)
Sample
Velocity(Pulse/Sample)
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
Least-square Fit Velocity Estimate (16bit)
Sample
Velocity(Pulse/Sample)
(a) 差分法加低通濾波 (b) 最小平方近似法
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
Kalman Filter Velocity Estimate (16bit)
Sample
Velocity(Pulse/Sample)
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0
High Resolution Velocity (19bit)
Sample
Velocity(Pulse/Sample)
(c) 卡曼濾波器結果 (d) 19-bit 差分結果
圖 4-10 不同估測法結果與實際差分速度圖(約 11rpm)
表 4-1 各估測法變異量與平均值比較
差分+低通 最小平方近似 卡曼濾波器 19-bit 差分
變異量 1.5625 0.8578 0.0616 0.3102
平均值 4.6855 4.6851 4.6872 4.6855
由上比較表得知三種估測法的平均值都與高解析度所得結果差不多,但在變異量方 面則是卡曼濾波器表現最好,因此推論卡曼濾波器在低速命令下應該是最適合做為速度 估測用。
4.2 各估測法實驗比較
實驗中以傳統的 10000 PPR 光學編碼器為位置感測器,目的在於使用較低解析度的 編碼器方便看出各種速度估測法的效果及差異,若使用高解析度弦波編碼器可能因為其 優異的位置回授精度,而不易看出速度估測法的效果。
首先判斷 10000 PPR 的傳統編碼器在使用上的極限及速度估測範圍,目前的實驗的 取樣頻率為 7.5KHz
rpm
10000 4560 7500× =
(4.18)
也就是說在速度低於 45rpm 的情況下每次的取樣週期將可能不再有位置變化,此時 速度估測法才有其明顯效果及意義,實驗中將速度命令分別設定在 30、10 及 3rpm 三種 不同的速度,實際測試這三種速度估測法對伺服馬達的速度控制效能。
首先是差分法,差分法後所使用的低通濾波器設定在 900 Hz,實際速度回授結果如 下
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 20
25 30 35 40 45
Time(s)
Ve lo c ity (r p m )
30rpm compare
Differential Reference
(a) 30rpm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0 5 10 15 20 25
Time(s)
Ve lo c ity (r p m )
10rpm compare
Differential Reference
圖(b) 10rpm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0
2 4 6 8 10 12 14 16
Time(s)
Ve lo c ity (r p m )
3rpm compare
Differential Reference
(c) 3rpm
圖 4-11 差分加低通濾波控制結果
由上面三個實際的速度估測及控制結果顯示,在 30rpm 及 10rpm 的速度命令下速度 控制的誤差量相對於速度命令都在一定範圍內,速度的平均值也與命令相當接近,值得 注意的是在 3rpm 的情況下速度估測有時會發生 0 速度的情形,表示這個估測法似乎已 經不適用這樣的低速範圍,但是平均值仍然是與速度命令很接近。
第二種速度估測法,最小平方近似法的實驗使用模擬時所得的最佳參數,階數設定 為 1,點數設定為 4,結果如下
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 15
20 25 30 35 40 45 50
Time(s)
Ve lo c ity (r p m )
30rpm compare
Least square Reference
(a) 30rpm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0 5 10 15 20 25
Time(s)
Ve lo c ity (r p m )
10rpm compare
Least square Reference
(b) 10rpm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0
5 10 15 20 25
Time(s)
Ve lo c ity (r p m )
3rpm compare
Least square Reference
(c) 3rpm
圖 4-12 最小平方近似法控制結果
由上面三種不同的實驗結果來看,最小平方近似估測法在低速區域時並沒有表現的 比前述的差分好,在 10rpm 與 3rpm 的情況下速度估測都已經會發生 0 速度的情形,表 示已經不適用這樣的低速度,另外速度漣波無論是在 10rpm 或是 3rpm 下都會高達 20rpm 左右,沒有明顯下降的趨勢,說明了在更低速的區域下似乎也無法再得到更好的結果 了。而在 30rpm 的情況下漣波還是相當高,但是三種速度下的平均值都與速度命令相 近。此法的特點在於少量的計算及簡單的實現,但對於低速領域的速度估測似乎並不是 特別適用。
最後實驗的是卡曼濾波器,實驗的參數一樣使用模擬時所用的參數及模型,唯一的 改變是將初始狀態
x 由原本的 0 改為目前第一筆所給的速度命令,結果如下 0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 24
26 28 30 32 34 36
Time(s)
Ve lo c ity (r p m )
30rpm compare
Kalman filter Reference
(a) 30rpm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
6 7 8 9 10 11 12 13 14 15
Time(s)
Ve lo c ity (r p m )
10rpm compare
Kalman filter Reference
(b) 10rpm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0
1 2 3 4 5 6 7 8
Time(s)
Ve lo c ity (r p m )
3rpm compare
Kalman filter Reference
(c) 3rpm
圖 4-13 卡曼濾波器控制結果
上面三種不同速度下的估測結果顯示卡曼濾波器有最佳的速度估測能力,不只是在 30rpm 或 10rpm 下能有效明顯的降低漣波,就連 3rpm 的速度下都能明顯的降低速度漣 波,而且沒有前兩種估測法所會發生的 0 速度情形,表示至少在 3rpm 的情況下卡曼濾 波器仍然有一定的效果。
將上列實驗的結果列表比較
表 4-2 不同速度估測法下的變異量
30rpm 10rpm 3rpm
差分法+低通濾波 18.8865 17.8261 13.3988
最小平方近似法 21.9879 55.6257 37.5272
卡曼濾波器 2.2705 1.4765 1.2293
表 4-3 不同速度估測法下的平均值
30rpm 10rpm 3rpm
差分法+低通濾波 29.9065 9.9684 2.9508
最小平方近似法 29.9721 9.9495 2.9926
卡曼濾波器 29.9731 9.9459 2.9667
比較上面兩個表格,三種估測法的速度平均值都相當接近,並沒有特定方法有比較 好的效果,但是在變異量方面明顯的卡曼濾波器有最好的效果,也就是說卡曼濾波器的
估測結果最穩定,雜訊較小,速度估測結果較可靠。
4.3 低速控制
控制器是影響低速控制效能的另一個主要因素,本節的目的在於利用不同的控制器 比較低速下的控制效能,並且討論在 CNC 機台上加上負載之後的低速控制表現,以後 搭配上 19-bit 串列式編碼器後可以更加提升低速控制效能。在前兩小段控制器之比較是 使用 400 W 裝載 10000 PPR 傳統編碼器的伺服馬達,4.3.3 的 CNC 機台測試則是以 400 W 裝載 17-bit 高解析度串列式編碼器的伺服馬達進行測試。
4.3.1 PI 控制器
將 4.1.3 節中卡曼濾波器應用於伺服馬達控制之中,速度迴路控制以傳統 PI 控制器 做實驗,調整出一組適合低速控制的參數,並比較調整前後的差異。
圖 4-14 伺服馬達控制系統實體圖
實驗中將由速度命令端放入不同的速度命令,偏重於 45rpm 以下之低速範圍,比較 穩態時的漣波大小及變異量。以下實驗是在
K p
=2、K i
=0.0103下所做的實驗0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
38 40 42 44 46 48 50 52
45rpm velocity control
Time(s)
Velocity(rpm)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
11 12 13 14 15 16 17 18 19 20
15rpm velocity control
Time(s)
Velocity(rpm)
(a) 45rpm (b) 15rpm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
10rpm velocity control
Time(s)
5rpm velocity control
Time(s)
3rpm velocity control
Time(s)
1rpm velocity control
Time(s)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
45rpm velocity control
45rpm velocity control