一、参考资料
- 【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 知乎
- FOC入门教程_zheng是在下的博客-CSDN博客
- DengFOC官方文档
- 技术干货 |【自制】FOC驱动板
- SVPWM_扇区判断_时间计算_哔哩哔哩_bilibili
二、FOC控制算法流程框图
- 在FOC控制中主要用到三个PID环,从内到外依次是:电流环、速度环、位置环
- 通过电流反馈来控制电机电流(扭矩)→通过控制扭矩来控制电机的转速→通过控制电机的转速控制电机位置
2.1 PI电流环(内层)
2.2 电流环+速度环
- w:电机的转速,可以通过电机编码器或者霍尔传感器计算得到
2.3 位置环+速度环+电流环
- 编码器无法返回电机的转速w,可以通过计算一定时间内的编码值变化量来表示电机的转速(用平均速度代表瞬时速度)。
- 电机转速比较高时,这样的方法是可以的。但是在位置控制模式时,电机的转速会很慢(因为需要转子固定在某个位置),此时用平均测速法会存在非常大的误差(转子不动或动的很慢,编码器就没有输出或者只输出1、2个脉冲)。
- 所以为了避免速度环节带来的误差,在做位置控制时,可以只使用位置和电流组成的双环进行控制。此时位置环使用PID控制(位置的微分D就是速度),可以减小位置控制的震荡,加快收敛,积分项的作用是为了消除静态误差。
三、FOC控制算法重要公式
3.1 Clarke变换与反变换
- Clarke变换:将三相正弦电流Ia、Ib、Ic,转换成Iα、Iβ
- Clarke逆变换:用不到,采用了SVPWM进行了替代。
3.2 Park变换与反变换
- Park变换:将两相正弦电流Iα、Iβ,转换为两个常量Iq、Id
α--β坐标系:电机定子
q-d坐标系:电机转子
θ:转子当前的角度
Iq:当三相绕组产生的磁场方向与转子磁铁相切时,电流产生的旋转力矩最大。
Id:当三相绕组产生的磁场方向与转子磁场方向反向平行时,这时电机会被吸在原地不动,电流都用来产生热量。
- Iq=1,Id=0,转子逆时针旋转,且转速随着Iq的变大而变大。
- Iq=0,Id=1,转子定在原地,且发热量随着Id的变大而变大。
- Park逆变换:
3.3 扇区计算
序号 | A相桥臂 | B相桥臂 | C相桥臂 | 二进制编码 | 矢量编号 |
1 | 0 | 0 | 0 | 000 | U0 |
2 | 1 | 0 | 0 | 100 | U4 |
3 | 1 | 1 | 0 | 110 | U6 |
4 | 1 | 1 | 1 | 111 | U7 |
5 | 0 | 1 | 1 | 011 | U3 |
6 | 0 | 0 | 1 | 001 | U1 |
7 | 0 | 1 | 0 | 010 | U2 |
8 | 1 | 0 | 1 | 101 | U5 |
3.3.1 矢量编码
为了便于分析:采用二进制的方式对电压矢量进行编码,例如二进制100,十进制为U4
- 3个半桥臂共可产生8种输出状态(2^3=8)
- U7(111):3个半桥的上桥臂全部导通,无电流输出
- U0(000):3个半桥的上桥臂全部关闭,无电流输出
3.3.2 七段式SVPWM调制
- 在合理的位置插入两个零矢量,并且在时间上进行平均分配,以使产生的PWM对称,从而有效地降低PWM的谐波分量。
3.3.3 扇区计算
在每一个扇区,选择相邻的两个电压矢量以及零矢量,按照伏秒平衡的原则可以合成每个扇区内的任意电压矢量。
在Ⅰ扇区,由正弦定理可得:
- 计算:Uα、Uβ
- 计算:T4、T6
由上面的两个公式,可得T4、T6:
SVPWM背景分析
通过三相矢量,合成一个旋转的矢量。
四、SVPWM算法分析
- SVPWM:待补充!
4.1 MOS管的8种开关状态
在三相逆变电路中:
- 1:上桥臂导通
- 0:上桥臂关闭
序号 | A相桥臂 | B相桥臂 | C相桥臂 | 二进制编码 | 矢量编号 |
1 | 0 | 0 | 0 | 000 | U0 |
2 | 1 | 0 | 0 | 100 | U4 |
3 | 1 | 1 | 0 | 110 | U6 |
4 | 1 | 1 | 1 | 111 | U7 |
5 | 0 | 1 | 1 | 011 | U3 |
6 | 0 | 0 | 1 | 001 | U1 |
7 | 0 | 1 | 0 | 010 | U2 |
8 | 1 | 0 | 1 | 101 | U5 |
在三相半桥的MOS管导通编码为100时,电机的简化电路模型如下所示:
序号 | 三相半桥电路MOS导通状态编码 | Ua | Ub | Uc | 合成矢量Ux |
1 | 000 | 0 | 0 | 0 | U0 |
2 | 100 | 2/3Udc | -1/3Udc | -1/3Udc | U4 |
3 | 110 | 1/3Udc | 1/3Udc | -2/3Udc | U6 |
4 | 111 | 0 | 0 | 0 | U7 |
5 | 011 | -2/3Udc | 1/3Udc | 1/3Udc | U3 |
6 | 001 | -1/3Udc | -1/3Udc | 2/3Udc | U1 |
7 | 010 | -1/3Udc | 2/3Udc | -1/3Udc | U2 |
8 | 101 | 1/3Udc | -2/3Udc | 1/3Udc | U5 |
4.2 矢量合成
- 目标:通过逆变器的控制,输出一个旋转的电压矢量。
- 在三相逆变电路中,Ua、Ub、Uc可以合成幅值不变(2/3Udc),频率为三相正弦信号w的空间电压矢量U0~U7。
- 在每一个扇区,选择相邻的两个电压矢量以及零矢量,按照伏秒平衡的原则可以合成每个扇区内的任意电压矢量。
在Ⅰ扇区,由正弦定理可得:
- 计算:T4、T6
由上面的两个公式,可得T4、T6:
- T0=T7,是将PWM波形设置为中央对齐模式对称配置零矢量的结果。
- m为SVPWM的调制系数(调制比),在电流环控制过程中,m设置的越大,代表了期望力矩越大。0<m<1
- Uref最大值等于:乘以2/3是因为等幅值变换,此时m=1
相比于PWM式:Uref最大 =1/2 Udc,能量利用率可以提高15%
4.3 扇区判断
- Uα、Uβ,可以通过park逆变换得到
在Ⅰ扇区:
0<θ<360,根据tanθ的值和正负号,可以做出如下判断:
去除绝对值后,进一步整理可得:
令U1、U2、U3等于:
符号规定:个人定义,也可以取相反的定义
- U1>0时,A = 1
- U2>0时,B = 1
- U3>0时,C = 1
- 中间变量N=4A+2B+C,可以通过对N值的判断确定扇区
扇区号 A B C N Ⅰ 1 0 1 5 Ⅱ 1 1 1 7 Ⅲ 1 1 0 6 Ⅳ 0 1 0 2 Ⅴ 0 0 0 0 Ⅵ 0 0 1 1
4.4 扇区作用时间计算
- Ⅰ扇区:
进一步展开可得:
参考这个方法(通过第Ⅰ扇区旋转)计算出其他扇区的作用时间:注意这个没有加调制系数
- Ⅱ扇区:
- Ⅲ扇区:
- Ⅳ扇区:
- Ⅴ扇区:
- Ⅵ扇区:
结合上面六个扇区的公式特点进行提取:使用U1、U2、U3进行替换
使用U1、U2、U3进行公式简化,可以得到下面的表:非零矢量作用时间
问题:前面这个常系数 需要吗?
4.5 七段式SVPWM时间分配
- 目前已知任意一个合成矢量Uref的方向和大小,那么如何控制硬件电路实现那?
- 把矢量作用时长换成MOS管的导通时间即可,然后通过这些组合方式生成SVPWM。
- 在合理的位置插入两个零矢量,并且在时间上进行平均分配,以使产生的PWM对称,从而有效地降低PWM的谐波分量。
- 把这些矢量信号进行排列组合,生成SVPWM信号,例如在I扇区使用到了矢量U4和U6,加入零矢量,可以形成中央对齐的PWM信号。
应为0-1-5-7-7-5-1-0
应为0-4-5-7-7-5-4-0
Uref所在的位置 | MOS开关切换顺序二进制编码 | 电压矢量切换顺序 |
Ⅰ区(0<θ<60) | 000-100-110-111-111-110-100-000 | 0-4-6-7-7-6-4-0 |
Ⅱ区(60<θ<120) | 000-010-110-111-111-110-010-000 | 0-2-6-7-7-6-2-0 |
Ⅲ区(120<θ<180) | 000-010-011-111-111-011-010-000 | 0-2-3-7-7-3-2-0 |
Ⅳ区(180<θ<240) | 000-001-011-111-111-011-001-000 | 0-1-3-7-7-3-1-0 |
Ⅴ区(240<θ<300) | 000-001-101-111-111-101-001-000 | 0-1-5-7-7-5-1-0 |
Ⅵ区(300<θ<360) | 000-100-101-111-111-101-100-000 | 0-4-5-7-7-5-4-0 |
如果T4和T6非零矢量作用时间的和大于Ts,则需要进行调制处理,其原理是等比例缩小两个非零矢量作用时间。
T7 = (T-T4-T6)/2
三相半桥输出PWM的占空比: