软件快速计算自然采样法SPWM数据

时间:2022-06-14 10:42:06

软件快速计算自然采样法SPWM数据

摘要:正弦脉宽调制技术(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.

上一篇:基于ASP.net的网上书店系统安全性研究 下一篇:基于ARM嵌入式图像处理平台的太阳跟踪系统