Simulink仿真---SVPWM算法

一、理论

SVPWM算法的具体讲解在这里:https://blog.csdn.net/qlexcel/article/details/74787619

1、判断扇区

根据下面3个式子:


    再定义,若U1 > 0 ,则 A=1,否则 A=0; 

                  若U2 > 0 ,则B=1,否则 B=0;

                  若U3 > 0 ,则 C=1,否则 C=0。

    可以看出 A,B,C 之间共有八种组合,但由判断扇区的公式可知 A,B,C 不会同时为 1 或同时为 0,所以实际的组合是六种,A,B,C 组合取不同的值对应着不同的扇区,并且是一一对应的,因此完全可以由 A,B,C 的组合判断所在的扇区。为区别六种状态,令 N=4*C+2*B+A,则可以通过下表计算参考电压矢量Uref所在的扇区。

2、计算各矢量作用时间

        同理可求得Uref在其它扇区中各矢量的作用时间,结果如表2-4所示。表中两个非零矢量作用时间的比例系数为K =√3Ts/Udc 。

各扇区作用时间:

3、确定扇区矢量切换点(如扇区1中,矢量0到矢量4的切换点,矢量4到矢量6的切换点)

二、建模

1、添加扇区判断的子系统(根据输入的Ualpha和Ubeta判断电压矢量所在扇区):

switch模块设置为:(条件为u2>=0,如果满足u1通过,如果不满足,u3通过)

2、计算X、Y、Z,用于计算扇区矢量作用时间(输入Ualpha、Ubeta、母线电压Udc、载波周期时间Ts,计算X、Y、Z)。

3、根据N值和X、Y、Z来计算扇区中矢量的作用时间(输入XYZ、N值、载波周期Ts,计算扇区中矢量作用时间)

Mutiport Switch模块根据最上面输入的N值选择下面的那个端口通过。配置如下:

如:N=1,则Mutiport Switch模块输出为T1=Z、T2=Y,再根据Ts-Z-Y是否大于零来判断是否过调制。如果过调制,还要用上面给的比例公式,把Z和Y矫正一下再输出。

4、扇区矢量切换点的确定

实现上是计算3个PWM通道输出电平的改变点。我们知道SVPWM中定时器是配置为中央对齐模式:

要在每个载波周期中改变输出通道的比较值,而计算出的Tcm1、Tcm2、Tcm3分别就是3个通道的比较值。

5、计算出了每个载波周期3个通道的比较值,再引入定时器的中央对齐模式,就可以输出逆变桥的控制信号了。(此处用三角波模拟定时器中央对齐模式)

输入一个三角波模拟定时器中央对齐模式,用三角波当前值和通道比较值做对比,如果三角波的值大于通道比较值就输出高电平,如果小于就输出低电平。

6、使用3个通道的PWM控制逆变桥,计算相电压

以其中一种开关组合为例分析,假设Sx(x=a、b、c)=(100),此时等效电路如图:

因此相电压可以表示为:(相电压是每相相对于电机中间连接点的电压)

从电阻分压的原理,可以知道相电压共有4种输出:1/3Udc、-1/3Udc、2/3Udc、-2/3Udc。因此上面的模型中,根据3个通道的电平状态来判断相电压输出这4中电压中的哪一个。如Sa、Sb、Sc都输入1,则经过逻辑运算后,到了Product模块,从上到下依次为:0,0,0,0,因此输出0.

7、最后总模型为:

1)、正弦波信号源配置:

输入角速度为100π,幅值为200,相位互差90度的正弦波。角速度为100π,则周期为0.02,频率为50Hz,这个是电压矢量的旋转速度,即3000RPM。如果是一对极电机,转速就为3000RPM。

2)、Tpwm模块输入载波周期,此处载波为5KHz,所以值为0.0002秒。

3)、三角波信号源配置:(即载波为5KHz)

8、仿真结果

N值变化的波形:

定时器通道比较值的波形,3个通道,波形呈马鞍形

定时器通道比较值的波形、三角载波、PWM控制波形:

放大:

扇区N和3个通道PWM控制波形:

相电压波形:

放大:

最后从下面位置加入powergui模块做FFT分析

仿真完后,双击powergui模块,打开FFT Analysis:

配置如下,分析Ua的基波幅值:

可以看到50Hz的基波幅值为199.9V,与实际值200V相符。此仿真结果验证了模型的正确性。

 

模型文件下载:https://download.csdn.net/download/qlexcel/11516270

注:模型来自《现代永磁同步电机控制原理及MATLAB仿真》__袁雷编著

### SVPWM 中三角波的设置方法 在空间矢量脉宽调制(SVPWM)技术中,三角载波信号用于生成 PWM 波形。与传统的 SPWM 不同的是,SVPWM 的核心在于通过空间矢量合成来逼近圆形旋转磁场,因此其三角波的设置需要结合具体的算法实现和硬件配置。 #### 1. 三角波频率的选择 为了确保 PWM 调制的有效性和效率,在设计 SVPWM 系统时需合理选择三角波的频率。通常情况下,三角波的频率应远高于目标电机的工作频率以减少谐波失真[^1]。 ```python fs_pwm = N * f_motor ``` 其中 `N` 是倍频系数,取值范围一般为 5 到 20,取决于系统的性能需求和硬件能力;`f_motor` 表示电机的目标工作频率。 #### 2. 三角波幅值的设定 三角波的幅值决定了最终输出电压的最大值。对于 SVPWM 来说,由于其具有更高的电压利用率(可达 100%),所以三角波的峰值应当匹配直流母线电压的一半[^3]。即: ```python V_triangle_peak = V_dc / 2 ``` #### 3. 结合矢量作用时间调整 PWM 占空比 根据 SVPWM 原理,各基本矢量的作用时间和零矢量的时间分配直接影响 PWM 输出波形的质量。具体来说,可以通过以下公式计算每一路 PWM 的占空比: 假设当前处于某一扇区内,则有两组有效矢量 \(T_1\) 和 \(T_2\) 及一组零矢量 \(T_0\) 或 \(T_7\)。设采样周期为 \(T_s\),则可以定义如下关系: \[ D_{A/B/C} = \frac{T_i}{T_s} \] 这里 \(i=1,2,\text{or }0/7\) 对应不同的开关状态组合。这些比例进一步映射至实际的 PWM 定时器比较寄存器值上完成硬件触发逻辑构建[^3]。 #### 4. 实际代码实现示例 以下是基于 STM32 微控制器的一个简化版 SVPWM 控制程序片段,展示了如何配置并生成对应的三角波及其关联操作。 ```c // 初始化 TIMx 外设作为三角波发生源 TIM_HandleTypeDef htim; void MX_TIM_Init(void){ __HAL_RCC_TIMx_CLK_ENABLE(); TIM_OC_InitTypeDef sConfigOC; htim.Instance = TIMx; htim.Init.Prescaler = SystemCoreClock / desired_frequency - 1; // 设定预分频器使达到期望频率 HAL_TIM_PWM_Init(&htim); sConfigOC.OCMode = TIM_OCMODE_TOGGLE; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH ; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE ; HAL_TIM_PWM_ConfigChannel(&htim,&sConfigOC,TIM_CHANNEL_ALL); } float calculate_duty_cycle(float t_active,float period){ return t_active / period; } ``` #### 总结 综上所述,针对 SVPWM 技术中的三角波设置主要涉及三个方面:一是选取合适的载波频率保证系统稳定性的同时降低噪声干扰;二是依据供电条件校准三角波幅度从而充分利用电源能量;三是精确规划各个功率器件开启关闭时机并通过软硬协同达成理想效果[^2]^.
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值