FOC 原理
物理学基础概念
左手定则
将左手的食指,中指和拇指伸直,使其在空间内相互垂直。食指方向代表磁场的方向(从 N 级到 S 级),中指代表电流的方向(从正极到负极),那拇指所指的方向就是受力的方向。可用于判断安培力(运动导体所受到的力)和洛伦兹力(运动电荷所受的力)。
右手定则
伸开右手,使拇指与其余四个手指垂直,并且都与手掌在同一平面内;让磁感线垂直于手心进入,并使拇指指向导线运动方向,这时四指所指的方向就是感应电流的方向。用于判断导体在做切割磁场时产生的电流方向。
安培定则(右手螺旋定则)
电直导线中的安培定则(安培定则一):用右手握住通电直导线,让大拇指指向直导线中电流方向,那么四指指向就是通电导线周围磁场的方向; 通电螺线管中的安培定则(安培定则二):用右手握住通电螺线管,让四指指向电流的方向,那么大拇指所指的那一端是通电螺线管的 N 极。
安培力定则
安培力: 以电流强度为 I 的长度为 L 的直导线,置于磁感应强度为 B 的均匀外磁场中,则导线受到的安培力的大小为:
\[ F = IBLsin\alpha \]
式中α为导线中的电流方向与 B 方向之间的夹角。 设定两条细直、无限长、固定的、相互平行的载流导线,则在自由空间内,任意一条导线施加于对方的每单位长度作用力\(f_m\)是:
\[ f_m = \frac{\mu_0 I_1 I_2 }{2\pi r} \]
其中,\(\mu_{0}\) 是真空磁导率,\(I_1,I_2\) 分别是流动于两条导线的电流,r 是两条导线之间的垂直距离。采用国际单位制,\(\mu_{0}\)值定义为:
\[ \mu _{0} = 4\pi \times 10^{-7} \]
毕奥─萨伐尔定律
长直载流导线周围的磁感应强度大小与距离成反比、与电流成正比。
\[ dB = \frac{\mu _0}{4\pi} \frac{Idl sin\theta }{r^2} \]
真空磁导率:
\[ \mu _0 = 4 \pi \times 10^{-7} N \cdot A^{-2} \]
载流直导线、圆形载流导线、载流密绕直螺线管的磁场都是通过该公式求取。具体细节可参考 毕奥─萨伐尔定律 在通电螺线管中产生的磁场强度是正比与导线中的电流和导线匝数的。
洛伦兹力
在电动力学里,若考虑一带电粒子在电磁场中的受力,可以用以下的劳仑兹力定律表示:
\[ F = q(E + v \times B) \]
这里 F 是洛伦兹力,q 是是带电粒子的电荷量,E 是电场,v 是带电粒子的速度,B 是磁场。这方程式右边有两项,第一项是电场力\(F_E = qE\) ,第二项是磁场力\(F_B = qv \times B\)。
直流电机基本方程
电枢绕组的感应电动势
若电枢导体的有效长度为 l,导体切割气隙磁场的线速度为 v,则每根导体中的感应电动势\(e_c\)为:
\[ e_c = b_{\sigma}lv \]
式中\(b_{\sigma}\)为导体所在位置处的气隙磁通密度。,若电枢绕组的总导体数为\(Z_a\)每条支路串联导体数等于\(\frac{Z_a}{2a}\)则支路电动势\(E_a\)为:
\[ E_a = \sum_{1}^{\frac{Z_a}{2a}}b_{\delta }lv = lv\sum_{1}^{\frac{Z_a}{2a}}b_{\delta }(x_i) \]
式中各点气隙磁通密度\(b_{\delta }(x_i)\)互不相同,所以每根导体的电动势也不相同,为简单记,引入平均气隙磁通密度\(B_{av}\),记:
\[ B_{av} \approx \frac{1}{\frac{Z_a}{2a}} \sum_{1}^{\frac{Z_a}{2a}}b_{\delta }(x_i) \]
则\(E_a\)可以写为:
\[ E_a = lv\frac{Z_a}{2a}B_{av} \]
考虑到线速度\(v = 2p \tau \frac{n}{60}\), 其中\(\tau\)为极距,$2$为电枢周长将 v 代入可以得到:
\[ E_a = 2\frac{pn}{60}\frac{Z_a}{2a}(B_{av}\tau l) = \frac{pZ_a}{60a}n\Phi = C_e n \Phi \]
式中\(\Phi\)表示每极的总磁通量,他等于一个极下的平均气隙磁通密度\(B_av\)乘以一个极的面积\(l\tau\)即$= B_{av}l$, \(C_e\)称为电动势常数,\(C_e = \frac{p Z_a}{60a}\) . 这就是电枢绕组的电动势方程。对发电机和电动机都适用。
电枢的电磁转钜
设导体中电流为\(i_a\)导体所在位置的气隙磁通密度为\(b_{\delta}\), 则作用在该导体上的电磁转钜\(T_c\)为:
\[ T_c = b_{\delta} l i_a \frac{D_a}{2} \]
\(D_a\)为电枢外径,由于一个极下载流导体数为\(\frac{Z_a}{2p}\),所以作用在一个极下载流导体上的合成电磁转钜\(T_p\)应为:
\[ T_p = li_a \frac{D_a}{2}\sum_{1}^{\frac{Z_a}{2p}}b_{\delta }(x_i) = (\frac{Z_a}{2p}B_{av})li_a\frac{D_a}{2} \]
式中\(B_{av}\)为气隙磁通密度平均值,作用在整个电枢上的电磁转钜\(T_e\)应为\(T_p\)乘以 2p 即:
\[ T_e = 2pT_p = Z_aB_{av}li_a \frac{D_a}{2} \]
考虑到\(\pi D_a = 2p\tau , \Phi = B_{av}l \tau\)支路电流\(i_a = \frac{I_a}{2a}\), 其中\(I_a\)为电枢电流,可得:
\[ T_e = Z_aB_{av}l(\frac{I_a}{2a}) \frac{p \tau}{\pi} = \frac{p}{2\pi} \frac{Z_a}{a} \Phi I_a = C_T \Phi I_a \]
式中\(C_T\)为转钜常数,这就是直流电机的转钜公式。对发电机和电动机都适用。
六步驱动
采用动图表示如下:
BLDC 的六步方波控制参考 BLDC 的六步方波控制
BLDC 就是通过三相进行改变线圈的电流方向来改变磁场方向,从而免去使用换向器来提高电机的性能,以上是 bldc 的六步控制法, 但是这个控制太粗略了,不能实现对电机的力矩,速度以及位置的闭环控制,为此前人开发了一些控制算法,本文只介绍 foc 这一种控制算法。
FOC 算法
整体控制框图
这里先将 FOC 控制框图列出,在下面将会一个模块一个模块当介绍。 ## clark 变换
在上图中 clark 变换是将\(I_a I_b I_c\)三相电流变为\(I_{\alpha} I_{\beta}\)两项电流,在实际的使用中需要对三相电流进行采集以获得实际电机中的电流,但是三相电流呈 120 度相位差分布并不够直观而且有信息冗余,根据基尔霍夫定律,三相电流矢量和应该为 0,因此可以使用两项进行表示,我们对直角坐标系很熟悉,因此这里将三相电流转化为直角系的两项坐标系的过程就是 clark 变换,详细变换如下:
\[ \begin{aligned} &I_{\alpha } = I_a - cos(\frac{\pi }{3})I_b - cos(\frac{2\pi }{3})I_c \\ &I_{\beta } = sin(\frac{\pi }{3})I_b - sin(\frac{\pi }{3})I_c \end{aligned} \]
写成矩阵形式如下:
\[ \begin{bmatrix} I_{\alpha }\\ I_{\beta } \end{bmatrix} = \begin{bmatrix} 1 & -\frac{1}{2} & -\frac{1}{2}\\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix} \begin{bmatrix} I_a\\ I_b\\ I_c\end{bmatrix} \]
但是到这里还没完,我们在实际使用过程中使用的公司并不是这个而是有一个系数 k 来调整为等幅变换或等功率变换,实际使用的公式如下:
\[ \begin{bmatrix} I_{\alpha }\\ I_{\beta } \end{bmatrix} = k * \begin{bmatrix} 1 & -\frac{1}{2} & -\frac{1}{2}\\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix} \begin{bmatrix} I_a\\ I_b\\ I_c\end{bmatrix} \]
在等幅值变换中\(k = \frac{2}{3}\)具体推导如下:
以相电压来作为推导而不是相电流,设\(V_m\)是相电压峰值,则:
\[ \begin{aligned} &U_a = V_m * cos(\theta) \\ &U_b = V_m * cos(\theta - \frac{2\pi }{3}) \\ &U_c = V_m * cos(\theta + \frac{2\pi }{3}) \\ &U_a + U_b + U_c = 0 \end{aligned} \]
这里\(\theta = 2\pi ft\)将这三相电压合成空间电压矢量\(U_t\)为:
\[ U_t = U_a + U_b * e^{\frac{2 \pi j}{3}} + U_c * e^{\frac{4 \pi j}{3}} = \frac{3}{2}V_m * e^{j\theta } \]
由此可以看出合成的电压矢量是原来的\(\frac{3}{2}\), 但是为什么会多出来??? 因此当\(k = \frac{2}{3}\)时合成矢量将与变换前一致,就是等幅值转换,将\(k = \frac{2}{3}\)代入先前公式并化简可以得到:
\[ \begin{aligned} &U_{\alpha } = U_a \\ &U_{\beta } = \frac{1}{\sqrt{3}}(U_a + 2U_b) \end{aligned} \]
另一种变换是等功率变换,当\(k = \sqrt{\frac{2}{3}}\)为等功率变换,详细推导过程可以参考 Clark 变换及比例系数 2/3 推导过程
park 变换
dq 坐标系是建立在转子上的直角坐标系,其中:
d 轴方向与转子磁链方向重合,又叫直轴; q 轴方向与转子磁链方向垂直,又叫交轴;
d 轴和𝑞轴 q 轴如下图所示;
相对与定子来说是旋转的坐标系,在 dq 坐标系下\(i_d i_q\)为恒定值而不再是正弦值。park 变换的本质是静止坐标系αβ乘以一个旋转矩阵,从而得到 dq 坐标系:
\[ \begin{aligned} &i_d = i_{\alpha} * cos(\theta) + i_{\beta} * sin(\theta) \\ &i_q = -i_{\alpha} * sin(\theta) + i_{\beta} * cos(\theta) \end{aligned} \]
写成矩阵式为:
\[ \begin{bmatrix}i_d\\ i_q\end{bmatrix} = \begin{bmatrix}cos(\theta ) & sin(\theta )\\ -sin(\theta ) & cos(\theta )\end{bmatrix}\begin{bmatrix}i_{\alpha }\\ i_{\beta }\end{bmatrix} \]
通过 park 变换后将交流信号转变为直流信号,这样就方便进行信号调节,像使用 pid 控制器对电机信号进行控制。
Park 反变换
Park 反变换又叫直交变换,由 dq 轴的直流量,最终变换到αβ的交流量,其公式如下:
\[ \begin{aligned} &i_{\alpha} = i_d * cos(\theta) - i_q * sin(\theta) \\ &i_{\alpha} = i_d * sin(\theta) + i_q * cos(\theta) \end{aligned} \]
写成矩阵形式如下:
\[ \begin{bmatrix}i_{\alpha }\\ i_{\beta }\end{bmatrix} = \begin{bmatrix}cos(\theta ) & -sin(\theta )\\ sin(\theta ) & cos(\theta )\end{bmatrix}\begin{bmatrix}i_d\\ i_q\end{bmatrix} \]
因为 svpwm 使用的坐标系还是αβ坐标系,在经过 park 变换后进行调控例如使用 pid 控制器对其中的参数进行调控后需要再经过反 park 变换回去输入到 svpwn 模块中去。
这里需要注意 park 变换是需要电角度信息的,因此这里涉及无感和有感两种 foc,由于本人也没有研究过无感 foc 因此这里只讲下有感 foc。所谓有感就是有传感器,通过传感器获得电机转子的位置,传感器种类很多有光电式和霍尔传感器式,按照获取角度类型可以分为绝对式编码器和相对式编码器,但无论哪种传感器最终都是获得电机转子的位置,然后在 park 变换的时候用于将\(\alpha \beta\)坐标系转换到 dq 坐标系下。这里以常见的霍尔传感器为例来说明一下,霍尔传感器又分为线性霍尔传感器和开关型霍尔传感器,线性霍尔传感器可以获得更精细的角度信息,例如 ti 的 DRV5055, 这种传感器如果想要获得较好的性能一般使用两个传感器呈 90 度角度排列,这种传感器使用前需要进行校准,对磁场的最大值和最小值进行校准更精确的校准是对其进行尺度因子的校准这个一般不需要;另一种是开关型霍尔传感器一般使用 3 个传感器彼此之间呈 60 度或 120 度排布。除此之外还有一种集成式传感器,通过 iic 或 spi 接口数字输出角度信息,例如 as5600,tle5012b 等,这种使用起来更加简单,不需要对传感器进行校准只需要对电角度和机械角度进行校准即可。 下面以 drv5055 这种线性霍尔传感器为例说明一下使用注意事项: drv5055 线性霍尔传感器输出的是模拟信号,可以检测磁场强弱信号,在电机的转子上需要安装一个径向冲磁的圆形或圆环型磁铁,然后两个 drv5055 呈 90 度分布在磁铁的外环位置,当电机转转一周传感器将经历完整的从 N 极到 S 极的磁场信号,输出为一个周期的正弦曲线,两个传感器输出如下:
两个呈 90 摆放的 drv5055 传感器在电机转子旋转一周输出的波形如上图所示,这里主要说明两点:
- 使用呈 90 度摆放的两个传感器的好处:单个传感器以上图\(B_x\)为例在最大值和最小值的地方斜率为 0 附近斜率也非常小,在值为 0 附近斜率最大,因此当转子在极值处值变化不明显会容易出现误差,而两个呈 90 度摆放的传感器就刚好弥补了这个缺点。
- 关于传感器校准,从上图可以看到两个传感器的幅值不同,一般情况下都是不同的,两个传感器不可能做的完全一样而且安装也会又偏差,因此需要对传感器进行校准,校准方法就是对两个传感器进行归一化处理,分别找到两个传感器对极值进而就确定了中值(理想情况下中值为 0 但实际上往往存在偏差)将其归一化到 [-1, 1] 这个值域内就完成了对传感器对校准。
SVPWM
概述
SVPWM 是近年发展的一种比较新颖的控制方法,是由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,能够使输出电流波形尽 可能接近于理想的正弦波形。空间电压矢量 PWM 与传统的正弦 PWM 不同,它是从三相输出电压的整体效果出发,着眼于如何使电机获得理想圆形磁链轨迹。 SVPWM 技术与 SPWM 相比较,绕组电流波形的谐波 成分小,使得电机转矩脉动降低,旋转磁场更逼近圆形,而且使直流母线电压的利用率有了很大提高,且更易于实现数字化。下面将对该算法进行详细分析阐述。
基本原理
SVPWM 的理论基础是平均值等效原理,即在一个开关周期内通过对基本电压矢量加以组合,使其平均值与给定电压矢量相等。在某个时刻,电压矢量旋转到某个区域中,可由组成这个区域的两个相邻的非零矢量和零矢量在时间上的不同组合来得到。两个矢量的作用时间在一个采样周期内分多次施加,从而控制各个电压矢量的作用时间,使电压空间矢量接近按圆轨迹旋转,通过逆变器的不同开关状态所产生的实际磁通去逼近理想磁通圆,并由两者的比较结果来决定逆变器的开关状态,从而形成 PWM 波形。 由于逆变器三相桥臂共有 6 个开关管,为了研究各相上下桥臂不同开关组合时逆变器输出的 空间电压矢量,特定义开关函数 Sx ( x = a、b、c) 为:
\[ S_x = \left\{\begin{matrix} 1(上桥臂导通)\\ 0(下桥臂导通) \end{matrix}\right. \]
(Sa、Sb、Sc) 的全部可能组合共有八个,包括 6 个非零矢量 Ul(001)、U2(010)、U3(011)、U4(100)、U5(101)、U6(110)、和两个零矢量 U0(000)、U7(111),下面以其中一 种开关组合为例分析,假设 Sx ( x= a、b、c)= (100), 此时:
\[ \begin{aligned} &U_{ab} = U_{dc}, U_{bc} = 0, U_{ca} = -U_{dc} \\ &U_{aN} - U_{bN} = U_{dc},U_{aN} - U_{cN} = U_{dc} \\ &U_{aN} + U_{bN} + U_{cN} = 0 \end{aligned} \]
求解上述方程可得:
\[ \begin{aligned} &U_{aN} = \frac{2U_d}{3} \\ &U_{bN} = - \frac{U_d}{3} \\ &U_{cN} = - \frac{U_d}{3} \end{aligned} \]
同理可计算出其它各种组合下的空间电压矢量,列表如下:
其中非零矢量的幅值相同(模长为 \(\frac{2U_{dc}}{3}\)),相邻的矢量间隔 60°,而两个零矢量幅值为零,位于中心。在每一个扇区,选择相邻的两个电压矢量以及零矢量,按照伏秒平衡的原则来合成每个扇区内的任意电压矢量,即:
\[ \int_{0}^{T}U_{ref} dt = \int_{0}^{T_x}U_x dt + \int_{T_x}^{T_x + T_y}U_y dt + \int_{T_x + T_y}^{T}U_0 dt \]
等效与下式:
\[ U_{ref} * T = U_x * T_x + U_y * T_y + U_0 * T_0 \]
其中,\(U_{ref}\) 为期望电压矢量;T 为采样周期;\(T_x、T_y、T_0\) 分别为对应两个非零电压矢量 \(U_x、U_y\)和零电压矢量\(U_0\)在一个采样周期的作用时间;其中\(U_0\)包括了\(U_0\)和\(U_7\)两个零矢量。上式的意义是,矢量 \(U_{ref}\) 在 T 时间内所产生的积分效果值和 \(U_x、U_y、U_0\)分别在时间\(T_x、T_y、T_0\)内产生的积分效果相加总和值相同。由于三相正弦波电压在电压空间向量中合成一个等效的旋转电压,其旋转速度是输入电源角频率,等效旋转电压的轨迹将是如上图所示的圆形。所以要产生三相正弦波电压,可以利用以上电压向量合成的技术,在电压空间向量上,将设定的电压向量由 U4(100) 位置开始,每一次增加一个小增量,每一个小增量设定电压向量可以用该区中相邻的两个基本非零向量与零电压向量予以合成,如此所得到的设定电压向量就等效于一个在电压空间向量平面上平滑旋转的电压空间向量,从而达到电压空间向量脉宽调制的目的。
推导
三相电压给定所合成的电压向量旋转角速度为ω=2πf,旋转一周所需的时间为 T =1/f ;若载波频率是 fs,则频率比为 R = fs / f。这样将电压旋转平面等切割成 R 个小增量,亦 即设定电压向量每次增量的角度是 :
\[ \gamma = \frac{2}{R} = \frac{2 \pi f}{fs} = \frac{2Ts}{T} \]
假设欲合成的电压向量 \(U_{ref}\) 在第Ⅰ区中第一个增量的位置,如下图所示,欲用 U4、U6、U0 及 U7 合成,用平均值等效可得:\(U_ref * Tz =U4 * T4 +U6 * T6\) 。
在两相静止参考坐标系(α,β)中,令\(U_{ref}\)和 U4 间的夹角是θ,由正弦定理可得:
\[ \left | U_{ref} \right | cos(\theta ) = \frac{T_4}{T_s}\left | U_4 \right | + \frac{T_6}{T_s} \left | U_6 \right | cos(\frac{\pi }{3})\\ \left | U_{ref} \right | sin(\theta ) = \frac{T_6}{T_s} \left | U_6 \right | sin(\frac{\pi }{3}) \]
因为 |U4 |=|U6|=2Udc/3 ,所以可以得到各矢量的状态保持时间为:
\[ \begin{aligned} &T_4 = mT_s sin(\frac{\pi }{3} - \theta ) \\ &T_6 = mT_s sin(\theta ) \end{aligned} \]
式中 m 为 SVPWM 调制系数(调制比), \(m= \frac{\sqrt{3}\left | U_{ref} \right |}{U_{dc}}\)。而零电压向量所分配的时间为:T7=T0=(TS-T4-T6 ) /2 或者 T7 =(TS-T4-T6 ) 得到以 U4、U6、U7 及 U0 合成的 Uref 的时间后,接下来就是如何产生实际的脉宽调制波形。在 SVPWM 调制方案中,零矢量的选择是最具灵活性的,适当选择零矢量,可最大限度地减少开关次数,尽可能避免在负载电流较大的时刻的开关动作,最大限度地减少开关损耗。
七段式 SVPWM
我们以减少开关次数为目标,将基本矢量作用顺序的分配原则选定为:在每次开关状态转换时,只改变其中一相的 开关状态。并且对零矢量在时间上进行了平均分配,以使产生的 PWM 对称,从而有效地降低 PWM 的谐波分量。当 U4(100) 切换至 U0(000) 时,只需改变 A 相上下一对切换开关,若由 U4(100) 切换至 U7(111) 则需改变 B、C 相上下两对切换开关,增加了一倍的切换损失。因此要改变电压向量 U4(100)、U2(010)、 U1(001) 的大小,需配合零电压向量 U0(000),而要改变 U6(110)、U3(011)、U5(100), 需配合零电压向量 U7(111)。这样通过在不同区间内安排不同的开关切换顺序, 就可以获得对称的输出波形,其它各扇区的开关切换顺序如下表所示:
现的先后顺序为 U0、U4、U6、U7、U6、U4、U0,各电压向量的三相波形则与上表中的开关表示符号相对应。再下一个 TS 时段,Uref 的角度增加一个γ,利用式上式可以重新计算新的 T0、T4、T6 及 T7 值;这样每一个载波周期 Ts 就会合成一个新的矢量,随着θ的逐渐增大,\(U_ref\) 将依序进入第Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ区。在电压向量旋转一周期后,就会产生 R 个合成矢量。
合成矢量\(U_ref\)所处扇区 N 的判断
空间矢量调制的第一步是判断由 Uα和 Uβ所决定的空间电压矢量所处的扇区。假定合成的电压矢量落在第 I 扇区,可知其等价条件如下:0º < arctan(Uβ/Uα) < 60 º 以上等价条件再结合矢量图几何关系分析,可以判断出合成电压矢量\(U_ref\)落在第 X 扇区的充分必要条件,得出下表:
若进一步分析以上的条件,有可看出参考电压矢量\(U_ref\)所在的扇区完全由\(U_{\beta }, \sqrt{3}U_{\alpha } - U_{\beta }, -\sqrt{3}U_{\alpha } - U_{\beta }\)三式决定,因此令:
\[ \begin{aligned} &U_1 = U_{\beta} \\ &U_2 = \sqrt{3}U_{\alpha } - U_{\beta } \\ &U_3 = -\sqrt{3}U_{\alpha } - U_{\beta } \end{aligned} \]
再定义,若 U1>0 ,则 A=1,否则 A=0; 若 U 2>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 所在的扇区。
采用上述方法,只需经过简单的加减及逻辑运算即可确定所在的扇区,对于提高系统的响应速度和进行仿真都是很有意义的。
基本矢量作用时间计算
在传统 SVPWM 算法中用到了空间角度及三角函数,使得直接计算基本电压矢量作用时间变得十分困难。实际上只要充分利用 Uα 和 Uβ 就可以使计算大为简化。以 Uref 处在第Ⅰ扇区时进行分析有:
\[ \begin{bmatrix}U_{\alpha }\\ U_{\beta }\end{bmatrix} = U_{ref}\begin{bmatrix}cos(\theta )\\ sin(\theta )\end{bmatrix} T_s = \frac{2}{3}U_{dc}\left ( \begin{bmatrix}1\\ 0\end{bmatrix} T_4 + \begin{bmatrix}cos(\frac{\pi }{3})\\ sin(\frac{\pi }{3})\end{bmatrix} T_6\right ) \]
经过整理后得出:
\[ \begin{aligned} &U_{\alpha } T_s = \frac{2}{3}U_{dc}(T_4 + \frac{1}{2}T_6) \\ &U_{\beta } T_s = \frac{2}{3}U_{dc}(\frac{\sqrt{3}}{2}T_6) \end{aligned} \]
\[ \begin{aligned} &T_4 = \frac{2U_{\alpha } T}{2U_{dc}} - \frac{1}{2}T_6 = \frac{2U_{\alpha } T_s}{2U_{dc}} - \frac{\sqrt{3}}{2}\frac{U_{\beta }T_s}{U_{dc}} = \frac{\sqrt{3}T_s}{U_{dc}}U_2 \\ &T_6 = \frac{\sqrt{3} U_{\beta }T_s}{U_{dc}} = \frac{\sqrt{3}T_s}{U_{dc}}U_1 \\ &T_7 = T_0 = \frac{T_s - T_4 - T_6}{2} \end{aligned} \]
同理可求得\(U_ref\)在其它扇区中各矢量的作用时间,结果如下表所示。由此可根据前式中的 U1 、U 2 、U3 判断合成矢量所在扇区,然后查表得出两非零矢量的作用时间, 最后得出三相 PWM 波占空比,下表可以使 SVPWM 算法编程简易实现。
将 I 扇区的时间图画出来如下:
SVPWM 物理含义
SVPWM 实质是一种对在三相正弦波中注入了零序分量的调制波进行规则采样的一种变形 SPWM。但 SVPWM 的调制过程是在空间中实现的,而 SPWM 是在 ABC 坐标系下分相实现的;SPWM 的相电压调制波是正弦波,而 SVPWM 没有明确的相电压调制波,是隐含的。为了揭示 SVPWM 与 SPWM 的内在联系,需求出 SVPWM 在 ABC 坐标系上的等效调制波方程,也就是将 SVPWM 的隐含调制波显化。 我们知道了各扇区的矢量发送顺序: 奇数区依次为:U 0 ,U k ,U k+1 ,U 7 ,U k+1 ,U k ,U 0 偶数区依次为:U 0 ,U k+1 ,U k ,U 7 ,U k ,U k+1 ,U 0 利用空间电压矢量近似原理,可总结出下式:
\[ \begin{bmatrix}T_k\\ t_{k+1}\end{bmatrix} = \begin{bmatrix} sin(\frac{k\pi }{3}) & -cos(\frac{k\pi }{3})\\ sin(\frac{(k -1) \pi }{3}) & -cos(\frac{(k-1)\pi }{3}) \end{bmatrix}\begin{bmatrix} cos(\theta )\\ sin(\theta ) \end{bmatrix} \]
式中 m 仍为 SVPWM 调制系数,利用以上各式就可得到在第Ⅰ扇区的各相电压平均值:
\[ \begin{aligned} &U_a(\theta ) = \frac{U_{dc}}{T_s}(-\frac{T_0}{2} + \frac{T_4}{2} + \frac{T_6}{2} + \frac{T_7}{2} + \frac{T_7}{2} + \frac{T_6}{2} + \frac{T_4}{2} - \frac{T_0}{2} ) = \frac{\sqrt{3}}{2}\left | U_{ref} \right | cos(\theta - \frac{\pi }{6}) \\ &U_b(\theta ) = \frac{U_{dc}}{T_s}(-\frac{T_0}{2} + \frac{T_4}{2} + \frac{T_6}{2} + \frac{T_7}{2} + \frac{T_7}{2} + \frac{T_6}{2} + \frac{T_4}{2} - \frac{T_0}{2} ) = \frac{\sqrt{3}}{2}\left | U_{ref} \right | sin(\theta - \frac{\pi }{6}) \\ &U_c(\theta ) = \frac{U_{dc}}{T_s}(-\frac{T_0}{2} + \frac{T_4}{2} + \frac{T_6}{2} + \frac{T_7}{2} + \frac{T_7}{2} + \frac{T_6}{2} + \frac{T_4}{2} - \frac{T_0}{2} ) = -\frac{\sqrt{3}}{2}\left | U_{ref} \right | cos(\theta - \frac{\pi }{6}) \end{aligned} \]
同样可以推导出其它扇区的调制波函数,其相电压调制函数如下:
\[ U_a(\theta ) = \left\{\begin{matrix} \frac{\sqrt{3}}{2}\left | U_{ref} \right | cos(\theta - \frac{\pi }{6}) ---(0 \leqslant \theta < \frac{\pi }{3}, \pi \leqslant \theta < \frac{4\pi }{3})\\ \frac{\sqrt{3}}{2}\left | U_{ref} \right | cos(\theta ) ---(\frac{\pi }{3}\leqslant \theta < \frac{2\pi }{3}, \frac{4\pi }{3} \leqslant \theta < \frac{5\pi }{3})\\ \frac{\sqrt{3}}{2}\left | U_{ref} \right | cos(\theta + \frac{\pi }{6}) ---(\frac{2\pi }{3} \leqslant \theta < \pi , \frac{5\pi }{3} \leqslant \theta < 2\pi ) \end{matrix}\right. \\ U_b(\theta ) = U_a(\theta - \frac{2\pi }{3}) \\ U_c(\theta ) = U_a(\theta - \frac{4\pi }{3}) \]
其线电压的调制波函数为:
\[ \begin{aligned} &U_{ab}(\theta) = U_a(\theta) - U_b(\theta) = \sqrt{3 } \left| U_{ref} \right |sin(\theta + \frac{\pi }{3}) \\ &U_{bc}(\theta ) = U_{ab}(\theta - \frac{2\pi }{3}) \\ &U_{ca}(\theta ) = U_{a}(\theta - \frac{4\pi }{3}) \end{aligned} \]
从相电压调制波函数来看,输出的是不规则的分段函数,为马鞍波形。当调制波为正弦波时为 spwm,调制波为在理想正弦波基础上加入三次谐波注入就是 svpwm。比单纯正弦调制波输出的 SPWM,SVPWM 的优点:
- 谐波优化程度高,转矩脉动小。
- 通过共模分量注入,等效基波增大,电压利用率提高。
开环控制
对于一个完整当 FOC 控制器是需要电流采样的,只有在有电流采样的情况下才可以进行 clark 变换,而在实际的使用过程中有时我们并不需要进行电流闭环控制,可以采用开环控制算法,那么在没有电流反馈的情况下该如何进行开环控制呢?这里可以将 clark 变换和 park 变换省略掉,直接对 dq 轴变量进行调控,然后直接进行反 park 变换回去,再经过 svpwm 模块输出最终的信号给到电机。这里的开环控制跟有感还是无感是没有关系的,这里让然可以采用有感的开环控制,只是这里就没有办法做电流闭环控制,只能做力矩,速度和位置闭环控制。
总结
回到一开始的 FOC 控制总体框图,整个 FOC 流程是通过电流采样获得三相电流值,对三相电流值进行 clark 变换到\(\alpha \beta\)坐标系下(两相直角坐标系),再经过 park 变换,变换到转子的 dq 坐标系下,到这里交流信号已经转变为直流信号,然后对这个直流信号进行调节,一般采用 pid 控制器进行调节,可以进行力矩,速度和位置闭环调节,将调节后对 dq 坐标轴数据再经过反 park 变换再经过 svpwm 运算后输出 pwm 信号到电机,这就是完整对 foc 控制算法。
参考文献
二相导通星形三相六状态无刷直流永磁电动机工作原理
Clark 变换与 Park 变换
如何深入理解 SVPWM?
三相对称电流通过向 dq 坐标轴上投影得到的 Id、Iq 与通过 park 变换得到的 Id、Iq 有什么区别和联系么?
深入浅出讲解 FOC 算法与 SVPWM 技术
永磁同步电机 (PMSM) 的 FOC 闭环控制详解
克拉克 (Clark) 变换中等幅值 (2/3) 和等功率 (sqrt(2/3)) 变换的公式推导
SVPWM 技术