摘要:正弦脈寬調制技術(SPWM)在電力電子及工業控制領域有著廣泛的應用,特別是在工業與民用中,所以這些領域對SPWM數據的計算精度和速度要求越來越高。以往提出的各種優化算法對處理器或者處理芯片都有較高的要求,同時可能造成資源浪費。在此提出了一種能夠節省計算資源的比較算法,動態計算SPWM數據,可以大幅度提高軟件計算SPWM數據的計算速度。
關鍵詞:SPWM; 自然采樣法; 軟件計算; 比較法
中圖分類號:TN80234文獻標識碼:A文章編號:1004373X(2012)04005104
Quick calculation of natural sampling SPWM data by software
HUO Hu, YANG Qianqian, CUI Xintong
(College of Science, Beijing Forestry University, Beijing 100083, China)
Abstract: Sinusoidal pulse width modulation (SPWM) is widely used in the fields of power electronics and industrial control. Its application, especially in the industrial and civil fields, has higher requirements of calculation accuracy and speed for SPWM data. A variety of optimization algorithms proposed in the past have high requirements for the processor or processing chip, and may result in waste of resources. A comparison algorithm which can save the computing resources and compute SPWM data dynamically is proposed. It can significantly improve the calculation speed of the data SPWM with software.
Keywords: SPWM; natural sampling; calculation with software; comparison method
收稿日期:201109110引言
SPWM的波形產生可分為硬件和軟件兩種方法,通過軟件計算波形開關點實施調控具有電路簡單,調控準確,應用靈活等優點。該軟件算法中以自然采樣法輸出的SPWM波形最接近正弦波,但三角波與正弦波交點有任意性,所以脈寬表達式是一個復雜的超越方程計算式。在調控范圍比較小或控制方式比較簡單時可以采用查表法快速實現[1],然而當載波幅值和載波比都為變量時,其數據量成級數增長,存儲開銷難以接受。下面具體討論應用比較法來計算SPWM數據。
1控制比與計算精度的關系
很多文章介紹了自然采樣法的數學計算方法,并給出了各種優化算法,這些算法力圖精確求解斜線方程與正弦方程的交點,但由于運算中帶有大量的浮點運算,若沒有DSP[2]或高速浮點處理芯片的支持必然會造成運算時間過長,對實時調控產生影響。實際上需要的計算精度與每載波周期可能的開關點數量有關系,用符號C來表示(下同),稱其為控制比,數值上等于載波周期除以PWM周期(同步調制方式中此值為整數),可以理解為用多少個PWM周期控制一個載波周期。PWM頻率實際上是開關電路的極限頻率或最理想的工作頻率,假設每載波周期可能的開關點數量為512個,則需要二進制的9位計算精度,如果再加1位存一位最多計算10位就夠了。如果采用數據類型IEEE 32浮點數迭代運算將得到24位(二進制)精度的計算結果[3],與實際需要相差甚遠,這里特別指出計算精度與具體的數值大小無關。從另一個角度看, 由于PWM頻率的限制,即使有高精度的計算結果也無法實施高精度的開關控制,這種無意義的計算資源浪費發生在每一次運算過程中,因此數量是巨大的。可以采用兩種方法減少計算開銷:一種方法是在迭代算法的各個步驟中加入精度條件限制,由于浮點庫函數精度不可控,如果不能避免浮點庫函數的調用,則此方法的優化效果不明顯;另一種方法是采用基于數值比較的方法確定計算結果。下面就第二種方法展開討論。
2比較法基本思想
首先考慮調制波為鋸齒波的計算。圖1中縱向虛線為可能的開關點位置,相鄰兩點間的差值為Δx,其對應y軸增量為Δy。定義每項計算值x的數學含義為函數Msin(x0+x)=Kx(x0為當前鋸齒波起始位置點)解的真值落入區間(x-Δx,x]之中。
假設調制比(正弦波幅值對調制波幅值之比)M=m1,載波比N(半周期調制波的個數)[4]的SPWM數據已經計算完成,其第a項的計算值為xa,當N值不變時,如果待計算的M=m2(m2>m1),可以確定每一項的計算值一定增大,那么只需從當前值+Δx開始依次校驗后面的開關點,找到滿足不等式m2sin(x0+x)
變動情況由增長方向校驗和減小方向校驗2個算法實現。
K值為鋸齒波斜率,其數值只與載波比N和x軸、y軸的標量有關,與控制比C的選取無關。為簡化計算,可以將Δy視為一常量,若Δy等于y軸標量除以C,則斜線方程簡化為y等于Δy乘開關點相對值。校驗的次數與C值有關,可視其為計算深度的控制,C值的變化只改變計算結果的數據范圍,取值越大可能的開關點數量越多,計算量越大、計算結果數值越大、精度越高,反之亦然。
由于計算深度可以控制,并且每次計算都以上次計算結果為起始值,因此計算效率得以提高,特別當M值變化不大和N取值較大時(計算結果變動不大)每個載波周期只需要進行一次三角正弦運算即可完成,實際應用中M或N值劇烈變動的情況也并不多見[5]。
圖1M值變大時計算值變大3鋸齒波向三角波的轉換
由于正弦函數半周期對稱,可以利用上述算法計算得到半周期載波為鋸齒波的SPWM數據。三角波做調制波的實際應用更為廣泛,而鋸齒波與三角波存在一定的轉換關系,其數學式較復雜,為簡化說明如圖2所示。
圖2(a)中為N=8,M=0.4正弦波與鋸齒波相位相差半個載波周期時的圖形,圖2(b)為左圖以正弦中點水平翻轉后與左圖疊加的結果,不難看出調制比為M正弦相位后移0.5鋸齒波周期,計算結果第i和第N-i項數據組合(第N-i項為開點,第i項為關點)即可得到調制比為2M,正弦相位差為0的第i項載波為三角波的開關點PWM數據(i=0~[N/2])。特別的當N為奇數時第[N/2]個鋸齒波起點與正弦中點重合有交點對稱的性質,所以奇數時中間點與自己組合可得到1/4周期的三角波數據。
圖2鋸齒波與三角波的關系4實際應用中的考慮
4.1初始值的處理
在算法實現中取各參量均為整形變量,計算后移位處理。因為需要有計算初值,需要不小于N最大值的數據區存放運算結果,數據區初始值以0填充,然后以初始的M和N值開始計算。由于0值可能與實際的計算結果相差較遠,故初始化階段耗時較長,可以把這段時間放入上電初始化程序中,或者以固定參數的計算結果填充數據區以減少初始化時間。每周期計算前先比較新的M或N值以確定計算方向,重新計算幾個參數后逐點比較。
4.2N取值變化的計算
上述算法實現中特別要注意的是動態的N值調整可能會破壞數據的一致性,這里的數據一致性是指不會有一組M,N值存在兩種可能的計算結果。這種破壞情況發生在N值增加時,錯誤的計算初值可能會引起校驗循環。建議將新增加的數據插入到正弦半周期的結束位置,N增大時數據以減小方向計算,故初值以緩沖區的上一個數據,也就是上次計算的最后一個填充可保持一致性,并且減少校驗數據的計算次數。
4.3查表法求三角正弦
為減小正弦三角函數的運算開銷,可以用查表法優化三角正弦運算[6]。正弦表的分度值和存儲位數都會影響計算精度,應用中在ROM區域以16位整數存儲16 384個65 536×sin(i+1)-1(i=π/2/0~16 383)的結果,共占用32 KB的存儲空間。為使結果再精確1位,也可以配合插值法進行查表,查得的正弦值與M乘法運算完成后移位處理數據,這樣既保證了15位的精度,又節省了存儲空間。由于0~π/2對應的正弦值為遞增函數,也可以考慮只存儲低8位,將高8位放入一張地址映射表,查表時分別獲取高低8位。這樣可以將存儲需求再減少1/2(近似),但是如果不能消除查表的隨機性將增加額外的開銷。采用查表法獲取正弦三角函數值,并且合理地安排各參數的標量值,完全可以避免浮點數的運算,因此再次大幅度提高計算效率。
4.4SPWM的輸出
應用中PWM由時鐘分頻電路、計數器和比較器電路產生,通過修改內部比較值控制占空比,很多MCU都內置此部分功能。帶有加減計數功能的PWM控制器比較適合于三角調制波的輸出。上述算法的計算結果可直接應用于加減計數的中央對齊模式。對于每周期更新一次的PWM控制器,要做到平滑輸出非對稱的自然采樣法波形數據是比較困難的。有些PWM控制器帶有設置回0值的模/數功能,實際就是調節比較器的比較位數,可以將這個模/數看作PWM的輸出深度[78]。當輸出深度與計算深度(控制比決定)不同時,只需對數據做移位處理,并且應當保證計算深度始終大于等于輸出深度。
數據的輸出使用指針指向當前輸出數據緩沖區,每個PWM通道一個指針,各通道指針的差即為載波的相位差。通過合理地安排各通道的指針可以實現通道分組、多個數據緩沖區的快速切換和相位微調等操作。PWM比較寄存器的更新都有緩沖器滾動的操作方式,通常情況是在PWM溢出中斷時各通道指針值加1指向下一個地址單元,并更新各通道比較強的寄存器。指針加1后判斷指針偏移是否大于N值,對于N個緩沖區數據對應1/2調制周期的情況指針值回0,對于N個緩沖區數據對應1/4調制周期的情況指針值應當作減計數回0進入下一個周期。
4.5調頻的控制
在比較器比較位數固定的情況下載波頻率的調整有兩種方法:一種是調整PWM頻率,即修改PWM分頻值或調整PWM輸入時鐘,因為各計算參量不變,所以程序不需要任何計算處理;另一種是修改載波比的N值。保持同步方式N始終為整數。兩種方法都有在被調整數值比較小時頻率控制分度值大的問題,可以采取兩種調整交互進行的方法,始終保持N有足夠大的數值,這樣可提高頻率(特別是高頻情況下)的控制精度。建議在軟件中額外增加兩個函數用于N~2N和N~(1/2)N的快速計算(算法不再詳述),在設置分頻器倍頻和半頻的同時,調用N加倍和N減半的函數,可達到平滑頻率調整的目的。假設通過上述方法使N始終介于32~63之間,則可以保證頻率控制達到1/1 000的控制精度。
4.6其他應用
對于雙極式、二次或三次諧波輸出和死區控制等特殊情況,通過對以上算法的各參數或計算結果加以適當的修改同樣可以適用,這也正是軟件計算SPWM數據具有很大靈活性的體現。
5數據與分析
表1數據為Freescal MC9S08內核,頻率為32 MHz單片機上,計算半個調制周期(0~π)鋸齒波SPWM數據所用時間(不包括中斷時間)。
表1半個調制周期鋸齒波SPWM數據所用時間
M變動N變動C值耗時 /ms0.40~0.50161 02430.10.50~0.60321 02460.50.65~0.70481 02447.70.65~0.704851227.60.65~0.704825616.60.848~361 02451.90.836~241 02450.90.824~161 02432.70.816~151 0245.7
表2為M=0.9,N=42,C=1 024時計算結果與Matlab軟件計算的真值比較。通過對比可以看出,計算存在一個數值的偏差,原因是二進制移位與四舍五入的差異造成的。
6結語
實際應用中分別在STC12C5A(51系列)單片機和飛思卡爾MC9S08DZ60八位單片機[910]上實現了上述算法,并且將它應用于兩相步進電機N>32細分步在不同轉速下的恒力矩控制,效果良好。文中第4.6節所提某些功能為理論設計,還未能全部實現。
參考文獻
[1]竇偉,黃念慈.單片機控制的正弦波逆變電源[J].電力電子技術,2004,38(6):9496.
[2]任小洪,賀映光,方剛.DSP生成SPWM波的一種設計方法[J].工業控制計算機,2011,24(1):9596.
[3]ANSI/IEEE. STD 7542008 floatingpoint arithmetic \\[S\\]. USA: IEEE, 2008.
[4]劉鳳君.正弦波逆變器[M].北京:科學出版社,2002.
[5]LI Hong. New algorithm for generating SPWM waveform \\[J\\]. Journal of Northwestern Polytechnical University, 2000, 18 (2): 264267.
[6]王榕生.線性組合采樣法SPWM新技術[J].電工電能新技術,2010,29(2):2932.
[7]孫同景.Freescale9S12 十六位單片機原理及嵌入式開發技術[M].北京:機械工業出版社,2008.
[8]朱良合,鄒云屏,唐健.基于線性采樣的SPWM研究與實現[J].電力電子技術,2010,44(8):5890.
[9]于光平,李金鍇,劉冰.基于C8051單片機的SPWM波形的實現[J].中國新技術新產品,2011(3):2324.
[10]郝隆,洪乃剛.基于Freescale單片機的SPWM控制技術[J].電氣技術,2010(3):5961.