FOC - SVPWM扇区判断


【全文大纲】 : https://blog.youkuaiyun.com/Engineer_LU/article/details/135149485


1 . 前言

  1. SVPWM模块内容比较多,这篇博文尽量讲的细致且简洁,从扇区判断,到扇区计算,这里先从扇区判断开始。

2 . 扇区判断

拿到Uα和Uβ后,就可以送到SVPWM模块解析了,SVPWM会将矢量圆分成六个扇区,因为UαUβ为正弦交流,将其分成六个部分,也就是将UαUβ整个周期360度每隔60度作为一个扇区,那么接下来根据UαUβ的值是多少,从而确定在哪个扇区计算进行输出,这个阶段称为 扇区判断

在这里插入图片描述

  1. 上图中可以看到黄线为Uα,蓝色为Uβ,分隔6列,分别对应扇区1-6,
    【Q】这里为什么黄线是Uα而不是Uβ
    【A】因为从UαUβ三相电压合成公式中可以得出

    U α = ( U a − 1 2 U b − 1 2 U c ) ∗ 2 3 U_α = (Ua - \frac 1 2 U_b - \frac 1 2 U_c) * \frac 2 3 Uα=(Ua21Ub21Uc)32

    U α = 2 3 U m [ ( c o s θ ) − 1 2 c o s ( θ − 2 3 π ) − 1 2 c o s ( θ + 2 3 π ) ] U_α = \frac 2 3U_m[(cosθ) - \frac 1 2 cos(θ-\frac 2 3π) - \frac 1 2 cos(θ+\frac 2 3π)] Uα=32Um[(cosθ)21cos(θ32π)21cos(θ+32π)]

    U α = U m c o s θ U_α = U_m cosθ Uα=Umcosθ

   
    U β = ( 3 2 U b − 3 2 U c ) ∗ 2 3 U_β = (\frac {\sqrt3}2 U_b- \frac {\sqrt3}2 U_c)*\frac 2 3 Uβ=(23 Ub23 Uc)32

    U β = 2 3 3 2 U m [ c o s ( θ − 2 3 π ) − c o s ( θ + 2 3 π ) ] U_β = \frac 2 3 \frac {\sqrt3} 2U_m[ cos(θ-\frac 2 3π) - cos(θ+\frac 2 3π)] Uβ=3223 Um[cos(θ32π)cos(θ+32π)]

    U β = U m s i n θ U_β = U_msinθ Uβ=Umsinθ

θ θ θ 为 0 时, U α = U m U_α=U_m Uα=Um,所以黄线是 U α U_α Uα 而不是 U β U_β Uβ;以上的 ∗ 2 3 *\frac 2 3 32 是因为三相合成出来的系数是 3 2 \frac 3 2 23,所以需要等幅值变换约掉后为1,以0度为参考,此时SVPWM的 U o u t U_{out} Uout = U β U_β Uβ = 2 3 U d c ∗ c o s ( 30 ° ) = 3 3 U d c \frac 2 3U_{dc}*cos(30°)=\frac {\sqrt3}{3}U_{dc} 32Udccos(30°)=33 Udc U d c U_{dc} Udc 是母线电压,cos(30°)是因为90°输出时离其中相线偏移30°,因此cos(30°)* 2 3 U d c \frac 2 3U_{dc} 32Udc U β U_β Uβ输出极限 2 3 U d c \frac 2 3 U_{dc} 32Udc 是因为三相逆变桥最多两路出一路进, 3 3 U d c \frac {\sqrt3}{3}U_{dc} 33 Udc 乘上 3 \sqrt 3 3 等于 U d c U_{dc} Udc,定义输出等于线电压则利用率为100%,SVPWM输出的线电压恰好等于 U d c U_{dc} Udc,也就是说SVPWM电压利用率为100%,以上就是SVPWM利用率100%的缘故。


  1. 接下来只需要判断UαUβ的关系就可以区分出来,这里不能单纯的按 U α U β U_αU_β UαUβ,大于0,小于0,的关系来判断,例如扇区一和扇区二中,有一段部分 U α U β U_αU_β UαUβ都是大于0,因此我们不单纯采用这种方式判断扇区,而是在此基础上以不同扇区 U α U β U_αU_β UαUβ的比值来一起判断。

第一步,列出扇区角度关系,比值关系

扇区范围 U α U_α Uα U β U_β Uβ
扇区 1 t a n 0 ° < U β U α < t a n 60 ° tan0°<\frac {Uβ}{Uα} < tan60° tan<Uβ<tan60°大于 0大于 0
扇区 2 t a n 60 ° < U β U α < t a n 120 ° tan60°<\frac {Uβ}{Uα} < tan120° tan60°<Uβ<tan120°大于0 或 小于0大于 0
扇区 3 t a n 120 ° < U β U α < t a n 180 ° tan120°<\frac {Uβ}{Uα} < tan180° tan120°<Uβ<tan180°小于 0大于 0
扇区 4 t a n 180 ° < U β U α < t a n 240 ° tan180°<\frac {Uβ}{Uα} < tan240° tan180°<Uβ<tan240°小于 0小于 0
扇区 5 t a n 240 ° < U β U α < t a n 300 ° tan240°<\frac {Uβ}{Uα} < tan300° tan240°<Uβ<tan300°大于0 或 小于0小于 0
扇区 6 t a n 300 ° < U β U α < t a n 360 ° tan300°<\frac {Uβ}{Uα} < tan360° tan300°<Uβ<tan360°大于 0小于 0

第二步,把角度计算出来就是:

扇区范围 U α U_α Uα U β U_β Uβ
扇区 1 0 < U β U α < 3 0 <\frac {Uβ}{Uα} < \sqrt3 0<Uβ<3 大于 0大于 0
扇区 2 3 < U β U α < − 3 \sqrt3<\frac {Uβ}{Uα} < -\sqrt3 3 <Uβ<3 大于0 或 小于0大于 0
扇区 3 − 3 < U β U α < 0 -\sqrt3<\frac {Uβ}{Uα} < 0 3 <Uβ<0小于 0大于 0
扇区 4 0 < U β U α < 3 0<\frac {Uβ}{Uα} <\sqrt3 0<Uβ<3 小于 0小于 0
扇区 5 3 < U β U α < − 3 \sqrt3<\frac {Uβ}{Uα} < -\sqrt3 3 <Uβ<3 大于0 或 小于0小于 0
扇区 6 − 3 < U β U α < 0 -\sqrt3<\frac {Uβ}{Uα} < 0 3 <Uβ<0大于 0小于 0

第三步,把范围定在有效区域计算,0*任何值等于0无意义,所以抛弃与0的关系进一步缩短有效范围,至于扇区2和扇区5到底取 3 < U β U α \sqrt3<\frac {Uβ}{Uα} 3 <Uβ 的范围来运算,还是 U β U α < − 3 \frac {Uβ}{Uα} < -\sqrt3 Uβ<3 来运算,其实都可以,具体证明过程在第四步有详细描述

扇区范围 U α U_α Uα U β U_β Uβ
扇区 1 U β U α < 3 \frac {Uβ}{Uα} < \sqrt3 Uβ<3 大于 0大于 0
扇区 2 3 < U β U α < − 3 \sqrt3<\frac {Uβ}{Uα} < -\sqrt3 3 <Uβ<3 大于0 或 小于0大于 0
扇区 3 − 3 < U β U α -\sqrt3<\frac {Uβ}{Uα} 3 <Uβ小于 0大于 0
扇区 4 U β U α < 3 \frac {Uβ}{Uα} <\sqrt3 Uβ<3 小于 0小于 0
扇区 5 3 < U β U α < − 3 \sqrt3<\frac {Uβ}{Uα} < -\sqrt3 3 <Uβ<3 大于0 或 小于0小于 0
扇区 6 − 3 < U β U α -\sqrt3<\frac {Uβ}{Uα} 3 <Uβ大于 0小于 0

第四步,移项后乘系数 1 2 \frac 1 2 21,这里乘 1 2 \frac 1 2 21是因为后续SVPWM计算方便,

扇区范围 U α U_α Uα U β U_β Uβ
扇区 1 3 2 U α − 1 2 U β > 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ>0 23 21Uβ>0大于 0大于 0
扇区 2 3 2 U α − 1 2 U β < 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ<0 23 21Uβ<0大于0 或 小于0大于 0
扇区 3 − 3 2 U α − 1 2 U β > 0 -\frac {\sqrt3}2 Uα-\frac 1 2Uβ>0 23 21Uβ>0小于 0大于 0
扇区 4 3 2 U α − 1 2 U β < 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ<0 23 21Uβ<0小于 0小于 0
扇区 5 3 2 U α − 1 2 U β > 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ>0 23 21Uβ>0大于0 或 小于0小于 0
扇区 6 − 3 2 U α − 1 2 U β < 0 -\frac {\sqrt3}2 Uα-\frac 1 2Uβ<0 23 21Uβ<0大于 0小于 0

【Q】第四步这里为什么扇区2无论Uα大于0还是Uα小于0, 3 2 U α − 1 2 U β 都是 < 0 ? \frac {\sqrt3}2 Uα-\frac 1 2Uβ都是<0? 23 21Uβ都是<0?
【A】可以到文章最上面的波形看,第2个扇区α整个阶段都是小于β的,因此无论α是正是负减去β都是负数,至于 3 2 − 1 2 \frac {\sqrt3}2-\frac 1 2 23 21的结果是0.366…,但是从波形上看第2个扇区中 α − β α-β αβ的极限最大值是-0.366…,恰好抵消掉前面提到 3 2 − 1 2 \frac {\sqrt3}2-\frac 1 2 23 21的值,因此无论第2个扇区α是正是负,减去 1 2 U β \frac 1 2Uβ 21Uβ的结果都是 ≤ 0 ≤0 0的,扇区5也是类似的证明逻辑


第五步,到这里已经能区分出 扇区1,3,4,6了,但是扇区2,5这两个扇区与其他扇区的范围仍有一模一样的关系,例如看第四步的扇区2和扇区4公式是一样的,主要是因为扇区2和扇区5的Uα会出现前半段/后段大于0小于0的情况,因此,根据数学不等式,将Uα取反得出

扇区范围 U α U_α Uα U β U_β Uβ
扇区 1 − 3 2 U α − 1 2 U β < 0 -\frac {\sqrt3}2 Uα-\frac 1 2Uβ<0 23 21Uβ<0大于 0大于 0
扇区 2 − 3 2 U α − 1 2 U β < 0 -\frac {\sqrt3}2 Uα-\frac 1 2Uβ<0 23 21Uβ<0大于0 或 小于0大于 0
扇区 3 3 2 U α − 1 2 U β < 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ<0 23 21Uβ<0小于 0大于 0
扇区 4 − 3 2 U α − 1 2 U β > 0 -\frac {\sqrt3}2 Uα-\frac 1 2Uβ>0 23 21Uβ>0小于 0小于 0
扇区 5 − 3 2 U α − 1 2 U β > 0 -\frac {\sqrt3}2 Uα-\frac 1 2Uβ>0 23 21Uβ>0大于0 或 小于0小于 0
扇区 6 3 2 U α − 1 2 U β > 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ>0 23 21Uβ>0大于 0小于 0

【Q】第五步的扇区2为什么Uα取反了,结果仍然小于0,扇区5也是类似,只是扇区5的相位是反过来理解
【A】因为第四步中可以看到无论Uα>0还是Uα<0, 3 2 U α − 1 2 U β 都是 < 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ都是<0 23 21Uβ都是<0 ,因此这里第五步即使取反,那也是小于0,因此扇区2的结果还是小于0


第六步,经过以上的关系推导,终于能完全区分开扇区1-6了,但是我们程序里肯定不想加这么多判断,所以接下来把判断化简,把上面重复的表达给拿出来就是

ABC
U β Uβ Uβ 3 2 U α − 1 2 U β \frac {\sqrt3}2 Uα-\frac 1 2Uβ 23 21Uβ − 3 2 U α − 1 2 U β -\frac {\sqrt3}2 Uα-\frac 1 2Uβ 23 21Uβ

这三个有啥用?不知道怎么判断啊!别急,经过关系化简得出以下规律
N 关系值 = A + 2 B + 4 C N_{关系值}=A+2B+4C N关系值=A+2B+4C
例如当
U β > 0 Uβ>0 Uβ>0 那么A则为1,
3 2 U α − 1 2 U β < 0 \frac {\sqrt3}2 Uα-\frac 1 2Uβ<0 23 21Uβ<0那么B则为0,
− 3 2 U α − 1 2 U β > 0 -\frac {\sqrt3}2 Uα-\frac 1 2Uβ>0 23 21Uβ>0那么C则为1

结果就是A=1,B=0,C=1

N 关系值 = 5 N_{关系值} = 5 N关系值=5

【Q】上面ABC三个量是怎么总结出来的?
【A】从本质上理解,根据第四步第五步,结合 结果>0的量 可以总结出来
图中ABC三个量和Uα,但是α在第二 第五扇区 不固定,因此剔除α,剩下ABC那三个量对于每个扇区都是固定的,因此可以求解,为什么是315462,细心推一下发现
A+B 扇区1
A 为扇区2
A+C 扇区3
C 扇区4
B+C 扇区5
B 扇区6

但是程序为了方便不会这样逐个判断,因此加起来直接索引效率就会高很多,所以对ABC编码,其实把ABC的值乱取都可以,但是不能取成不同组合下出现一样结果,例如A+B不能等于C,最终根据叠加值索引就可以了,因此基于上述规律利用二进制规律,用1,2,4来代替ABC,加起来索引映射回扇区1到6即可。

第七步,上述得出来的结果N并不是最终扇区,而是一个关系值,把关系值N与扇区列出真值表

N 关系值 N_{关系值} N关系值315462
扇区123456

因此若 N 关系值 = 5 N_{关系值} = 5 N关系值=5,则最终扇区为 3

3 . 总结

总而言之扇区判断是为了让控制打到对应扇区,我们想把力矩打到某个扇区,就要知道这个扇区在哪里,结合UαUβ的比值与关系,我们最终可以得出扇区,这里扇区判断就结束了,后续写扇区计算,一个字一公式的手敲,总算写完了。

技术交流QQ群 : 745662457
群内专注 - 问题答疑,项目外包,技术研究

<think> 我们之前已经讨论了扇区1的计算方法,现在用户询问扇区2和扇区3的基本矢量作用时间计算方法。在SVPWM中,每个扇区都有对应的两个有效矢量,我们需要根据参考电压矢量所在的扇区来计算这两个矢量的作用时间。 首先,回顾一下SVPWM的六个扇区划分,每个扇区由两个相邻的基本矢量构成。扇区2的范围是60°~120°,扇区3的范围是120°~180°。 通用的计算步骤: 1. 确定参考电压矢量在αβ坐标系的分量(即帕克逆变换后的Uα和Uβ)。 2. 根据Uα和Uβ计算三个中间变量: $$X = \frac{\sqrt{3} T_s}{U_{dc}} U_\beta$$ $$Y = \frac{T_s}{U_{dc}} \left( \frac{3}{2} U_\alpha + \frac{\sqrt{3}}{2} U_\beta \right)$$ $$Z = \frac{T_s}{U_{dc}} \left( -\frac{3}{2} U_\alpha + \frac{\sqrt{3}}{2} U_\beta \right)$$ 3. 根据扇区号,用中间变量表示两个基本矢量的作用时间(T1, T2): - 扇区2:T2 = X, T3 = Y(这里T2对应扇区2的第一个矢量V2,T3对应V3) - 扇区3:T1 = -X, T3 = -Z(这里T1对应扇区3的第一个矢量V1,T3对应V3) 4. 对作用时间进行饱和处理:如果T1+T2>Ts,则按比例缩放,并计算零矢量作用时间T0=Ts-T1-T2。 注意:不同文献对矢量的编号可能不同,这里采用常见的6个基本矢量: V1(100), V2(110), V3(010), V4(011), V5(001), V6(101) 扇区与矢量的对应关系: 扇区1:V4, V6 扇区2:V2, V3 扇区3:V1, V3 下面详细说明扇区2和扇区3的计算方法。 ### 扇区2(60°~120°)计算方法 扇区2由$V_2$($110$)和$V_3$($010$)构成。参考电压矢量$U_{ref}$满足: $$\frac{T_2}{T_s} V_2 + \frac{T_3}{T_s} V_3 = U_{ref}$$ 其中, $$V_2 = \frac{2}{3}U_{dc} \cdot \begin{bmatrix} \frac{1}{2} \\ \frac{\sqrt{3}}{2} \end{bmatrix}, \quad V_3 = \frac{2}{3}U_{dc} \cdot \begin{bmatrix} -\frac{1}{2} \\ \frac{\sqrt{3}}{2} \end{bmatrix}$$ 通过中间变量计算: $$ \begin{aligned} T_2 &= X \\ T_3 &= Y \\ \text{其中,} & \\ X &= \frac{\sqrt{3} T_s}{U_{dc}} U_\beta \\ Y &= \frac{T_s}{U_{dc}} \left( \frac{3}{2} U_\alpha + \frac{\sqrt{3}}{2} U_\beta \right) \end{aligned} $$ 计算后,需要检查$T_2$和$T_3$是否非负,且满足$T_2 + T_3 \leq T_s$,否则进行饱和处理。 ### 扇区3(120°~180°)计算方法 扇区3由$V_1$($100$)和$V_3$($010$)构成。参考电压矢量$U_{ref}$满足: $$\frac{T_1}{T_s} V_1 + \frac{T_3}{T_s} V_3 = U_{ref}$$ 其中, $$V_1 = \frac{2}{3}U_{dc} \cdot \begin{bmatrix} 1 \\ 0 \end{bmatrix}, \quad V_3 = \frac{2}{3}U_{dc} \cdot \begin{bmatrix} -\frac{1}{2} \\ \frac{\sqrt{3}}{2} \end{bmatrix}$$ 通过中间变量计算: $$ \begin{aligned} T_1 &= -X \\ T_3 &= -Z \\ \text{其中,} & \\ X &= \frac{\sqrt{3} T_s}{U_{dc}} U_\beta \\ Z &= \frac{T_s}{U_{dc}} \left( -\frac{3}{2} U_\alpha + \frac{\sqrt{3}}{2} U_\beta \right) \end{aligned} $$ 同样,计算后需要进行负值归零和饱和处理。 ### 计算流程总结 1. 计算中间变量$X, Y, Z$(三个变量都是标量,与扇区无关)。 2. 根据扇区号确定作用时间: - 扇区2:$T_2 = X$, $T_3 = Y$ - 扇区3:$T_1 = -X$, $T_3 = -Z$ 3. 负值处理:将负作用时间设为0。 4. 饱和处理:如果$T_1 + T_2 > T_s$(扇区2为$T_2+T_3$,扇区3为$T_1+T_3$),则按比例缩放,使总时间等于$T_s$。 5. 零矢量作用时间:$T_0 = T_s - T_1 - T_2$(扇区2为$T_s-T_2-T_3$,扇区3为$T_s-T_1-T_3$)。 ### 示例代码(扇区2和扇区3) ```python import numpy as np def calc_svpwm_times(sector, U_alpha, U_beta, U_dc, T_s): # 计算中间变量 X = (np.sqrt(3) * T_s * U_beta) / U_dc Y = (T_s / U_dc) * (1.5*U_alpha + (np.sqrt(3)/2)*U_beta) Z = (T_s / U_dc) * (-1.5*U_alpha + (np.sqrt(3)/2)*U_beta) # 根据扇区分配时间 if sector == 2: T1 = X # 这里T1对应矢量V2的作用时间(有些文献记为T2,注意区分) T2 = Y # 这里T2对应矢量V3的作用时间(有些文献记为T3) T3 = 0 # 第三个矢量不使用 # 在扇区2中,我们使用V2和V3,所以零矢量作用时间用T0=Ts-T1-T2 elif sector == 3: T1 = -X # 这里T1对应矢量V1的作用时间 T2 = -Z # 这里T2对应矢量V3的作用时间 T3 = 0 else: # 其他扇区,这里只处理2和3,其他扇区需要扩展 raise ValueError("目前只支持扇区2和3") # 负值处理 T1 = max(T1, 0) T2 = max(T2, 0) # 饱和处理 total = T1 + T2 if total > T_s: T1 = T1 * T_s / total T2 = T2 * T_s / total T0 = 0 else: T0 = T_s - T1 - T2 # 返回两个有效矢量的作用时间和零矢量时间 # 扇区2返回的T1对应V2,T2对应V3;扇区3返回的T1对应V1,T2对应V3 return T1, T2, T0 # 扇区2示例 U_alpha = 80 # V U_beta = 120 # V (在扇区2内) U_dc = 300 # V T_s = 1e-3 # s sector = 2 T2, T3, T0 = calc_svpwm_times(sector, U_alpha, U_beta, U_dc, T_s) print(f"扇区2: T2(V110)={T2:.6f}s, T3(V010)={T3:.6f}s, T0={T0:.6f}s") # 扇区3示例 U_alpha = -50 # V U_beta = 150 # V (在扇区3内) sector = 3 T1, T3, T0 = calc_svpwm_times(sector, U_alpha, U_beta, U_dc, T_s) print(f"扇区3: T1(V100)={T1:.6f}s, T3(V010)={T3:.6f}s, T0={T0:.6f}s") ``` ### 注意事项 - 扇区判断:在计算作用时间前,需要先判断参考矢量所在的扇区扇区判断可通过Uα和Uβ完成,具体方法这里不再展开。 - 矢量的作用顺序:在SVPWM中,除了计算作用时间外,还需要合理分配矢量的作用顺序(比如五段式或七段式),以减小开关损耗和电流谐波。 - 不同文献对矢量的命名和扇区划分可能略有差异,请以实际使用的定义为准。 §§相关问题§§ 1. 如何准确判断SVPWM扇区? 2. 扇区4、5、6的作用时间如何计算? 3. SVPWM中零矢量分配策略对电机控制有什么影响? </think> ### 扇区2基本矢量作用时间计算方法(60°~120°) 扇区2的边界矢量为$V_2$($110$)和$V_3$($010$)[^1]。作用时间计算步骤如下: 1. **中间变量计算**(与扇区1相同): $$ \begin{aligned} X &= \frac{\sqrt{3}T_s}{U_{dc}} U_\beta \\ Y &= \frac{T_s}{U_{dc}} \left( \frac{3}{2}U_\alpha + \frac{\sqrt{3}}{2}U_\beta \right) \\ Z &= \frac{T_s}{U_{dc}} \left( -\frac{3}{2}U_\alpha + \frac{\sqrt{3}}{2}U_\beta \right) \end{aligned} $$ 2. **扇区2作用时间公式**: $$ \begin{cases} T_2 = Y \\ T_3 = -Z \end{cases} $$ 其中$T_2$对应$V_2$,$T_3$对应$V_3$[^2]。 3. **饱和处理逻辑**: - 若$T_2 < 0$ → $T_2 = 0$ - 若$T_3 < 0$ → $T_3 = 0$ - 若$T_2 + T_3 > T_s$ → 按比例缩放: $$T_2' = T_2 \frac{T_s}{T_2 + T_3}, \quad T_3' = T_3 \frac{T_s}{T_2 + T_3}$$ 4. **零矢量时间**: $$T_0 = T_s - T_2 - T_3$$ ```python def calc_sector2(U_alpha, U_beta, U_dc, T_s): # 中间变量(与扇区1相同) X = (np.sqrt(3) * T_s * U_beta) / U_dc Y = (T_s / U_dc) * (1.5*U_alpha + 0.5*np.sqrt(3)*U_beta) Z = (T_s / U_dc) * (-1.5*U_alpha + 0.5*np.sqrt(3)*U_beta) # 扇区2作用时间 T2 = Y # V2(110)作用时间 T3 = -Z # V3(010)作用时间 # 负值处理 T2 = max(T2, 0) T3 = max(T3, 0) # 饱和处理 total = T2 + T3 if total > T_s: T2 *= T_s / total T3 *= T_s / total T0 = 0 else: T0 = T_s - T2 - T3 return T2, T3, T0 ``` ### 扇区3基本矢量作用时间计算方法(120°~180°) 扇区3的边界矢量为$V_1$($100$)和$V_3$($010$)[^3]。计算流程: 1. **中间变量计算**(同前): $$X, Y, Z \text{ 定义不变}$$ 2. **扇区3作用时间公式**: $$ \begin{cases} T_1 = X \\ T_3 = Z \end{cases} $$ 其中$T_1$对应$V_1$,$T_3$对应$V_3$。 3. **边界处理**: - 当$T_1 < 0$ → $T_1 = 0$ - 当$T_3 < 0$ → $T_3 = 0$ - $T_1 + T_3 > T_s$时: $$T_1' = T_1 \frac{T_s}{T_1 + T_3}, \quad T_3' = T_3 \frac{T_s}{T_1 + T_3}$$ 4. **零矢量分配**: $$T_0 = T_s - T_1 - T_3$$ ```python def calc_sector3(U_alpha, U_beta, U_dc, T_s): # 中间变量 X = (np.sqrt(3) * T_s * U_beta) / U_dc Y = (T_s / U_dc) * (1.5*U_alpha + 0.5*np.sqrt(3)*U_beta) Z = (T_s / U_dc) * (-1.5*U_alpha + 0.5*np.sqrt(3)*U_beta) # 扇区3作用时间 T1 = X # V1(100)作用时间 T3 = Z # V3(010)作用时间 # 负值处理 T1 = max(T1, 0) T3 = max(T3, 0) # 饱和处理 total = T1 + T3 if total > T_s: T1 *= T_s / total T3 *= T_s / total T0 = 0 else: T0 = T_s - T1 - T3 return T1, T3, T0 ``` ### 计算示例(扇区2) **参数**:$U_\alpha = -50V$, $U_\beta = 100V$, $U_{dc} = 300V$, $T_s = 0.001s$ 1. 计算中间变量: $$ \begin{aligned} Y &= \frac{0.001}{300} \left( \frac{3}{2} \times (-50) + \frac{\sqrt{3}}{2} \times 100 \right) \approx 0.000144s \\ Z &= \frac{0.001}{300} \left( -\frac{3}{2} \times (-50) + \frac{\sqrt{3}}{2} \times 100 \right) \approx 0.000622s \end{aligned} $$ 2. 作用时间: $$ \begin{aligned} T_2 &= Y = 0.000144s \\ T_3 &= -Z = -0.000622s \rightarrow 0s \quad \text{(负值归零)} \end{aligned} $$ 3. 零矢量时间: $$T_0 = T_s - T_2 = 0.000856s$$ > **关键点**:所有扇区共享相同的$X,Y,Z$计算,仅时间分配公式不同,这显著优化了实时控制系统的计算效率[^1][^2]。
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

极客 - L U

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

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

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

打赏作者

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

抵扣说明:

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

余额充值