Foc电机驱动
相关仿真模型地址:ChenZR0509/FOC-: 存放FOC驱动学习过程中用到的资料以及笔记
第一部分 PMSM三相电机模型
第一章 假设
-
电机类型:永磁同步电机
-
假设:
- 定子绕组为Y型联接,三相绕组对称分布,轴线互差120°;
- 忽略铁心饱和效应
- 气隙磁场成正弦分布
- 不考虑涡流和磁滞损耗
- 转子不考虑阻尼绕组,永磁体无阻尼作用
- 稳态运行时,相绕组中感应电动势波形为正弦波
- 电机长时间工作受到温度和频率影响不计
- 忽略电机具有的高次谐波
- 忽略换相过程中的电枢反应
- 电机类型为表贴式转子,气息磁阻分布均匀,各相电阻电感值相等
- 忽略电机中的铁损和漏磁
第二章 坐标系的建立
-
d-q轴坐标系:

1 2 3
| PMSM电机其转子为永磁体,d-q轴坐标系即为磁链旋转参考坐标系(转子坐标系),其d轴与q轴相差90°,且坐标系圆点位于转子中心,d轴位于磁极整个长度的最大磁通密度点上,这是在磁极的中心,d轴即为转子s极指向n极的方向。d-q轴固定在转子上并跟随转子旋转。 @d轴:直轴,此方向上的电流分量主要是产生励磁的作用。 @q轴:交轴,此方向上的电流分量主要产生转矩的作用。
|
-
静止坐标系a-b-c:
-
静止坐标系α-β:
1
| 静止坐标系固定,且原点与转子的旋转坐标系重合。α轴与a轴重合,β与α轴相差90°
|
第三章 静止坐标系a-b-c下的模型
-
旋转的矢量:
⎩⎪⎪⎨⎪⎪⎧us=usejwetis=isejwetψs=ψsejwet
1 2 3 4 5 6 7
| @电机旋转过程中,矢量也在进行旋转为了以数学的形式表达旋转的矢量,做以下定义: 1、箭头表示旋转的矢量 2、横线表示矢量 @we:表示旋转时电角速度 @us:定子电压,这里us代表的是ua、ub、uc @is:定子电流,这里is代表的是ia、ib、ic @ψs:定子绕组磁链,这里ψs代表的是ψa、ψb、ψc
|
-
磁路分析:
-
定子绕组磁链:
ψc=Lsis=Lsisejwet
1 2 3
| @Ls:定子的电感,这里Ls代表的是La、Lb、Lc @is:流经定子的电流,这里is代表的是ia、ib、ic @we:电角速度
|
-
转子绕组磁链:
ψf=ψfejwet
-
电机总磁链:
ψs=ψc+ψf
1 2 3
| @ψs:电机磁链 @ψc:定子磁链 @ψf:转子磁链
|
-
电路分析:
us=Rsis+dtdψs
1
| @定子电压=定子等效电阻压降+磁链变化产生的压降
|
us=Rsis+Lsdtdis+jweψf
1
| @定子电压=定子等效电阻压降+定子等效电感压降+转子磁场变换作用在定子上产生的压降
|
-
转矩分析:
P=⟨us , is⟩=us⋅is∗
第一项:Rsis⋅is∗=Rsisejwet⋅is∗e−jwet=Rs∣is∣2
第二项:dtdψs⋅is∗=jweψsejwet⋅is∗e−jwet=jweψsis∗=⌊ψs⌋∣∣∣is∗∣∣∣(∠ψs−∠is)
1 2 3
| @上面的式子是一个复功率 @实部是有功功率:取实部就是模长×sin @虚部是无功功率:取实部就是模长×cos
|
Pe=weψs×is
T=wrPe=wrweψs×is=Pnψs×is
1 2 3 4 5
| @上面就是推导出来的电机转矩公式 @Pe:电机有效电功率 @we:电机的电角速率 @wr:电机的机械角速率 @Pn:极对数
|
-
电角度和机械角度:
- 当极对数为1的时候,电机转动一圈,电信号变换一个周期
- 当极对数大于1的时候,电机转动一圈,电信号变换Pn个周期
电角度与机械角度转换:θe=θmPn
-
电压平衡方程:
⎣⎢⎡uaubuc⎦⎥⎤=⎣⎢⎡R000R000R⎦⎥⎤⎣⎢⎢⎡iaibic⎦⎥⎥⎤+dtd⎣⎢⎢⎢⎡ψaψbψc⎦⎥⎥⎥⎤
1 2 3 4
| @u:表示三相定子相电压 @i:表示三相定子相电流 @R:表示三相定子的电阻 @ψ:表示三相定子的磁链
|
-
磁链方程:
⎣⎢⎢⎢⎡ψaψbψc⎦⎥⎥⎥⎤=⎣⎢⎡LaaLabLacLbaLbbLbcLcaLcbLcc⎦⎥⎤⎣⎢⎢⎡iaibic⎦⎥⎥⎤+ψf⎣⎢⎡cosθecos(θe−32π)cos(θe+32π)⎦⎥⎤
1 2 3 4 5 6
| @Laa、Lbb、Lcc:表示三相绕组自感 @Lxy:表示三相绕组任意两个绕组的互感 @ψf:表示永磁体磁链 @θe:表示电角度,即d轴与a轴的空间电角度也可以说是转子N极和A相轴线之间的夹角 @ia、ib、ic:三相定子电流 @ψa、ψb、ψc:表示三相绕组的磁链
|
定子电感计算公式:⎣⎢⎡LaaLabLacLbaLbbLbcLcaLcbLcc⎦⎥⎤=⎣⎢⎡Laa111Lbb111Lcc⎦⎥⎤⎣⎢⎡1cos32πcos34πcos32π1cos32πcos34πcos32π1⎦⎥⎤+⎣⎢⎡LIaLIbLIc⎦⎥⎤
1 2 3
| @Laa、Lbb、Lcc:表示三相绕组自感 @Lxy:表示三相绕组任意两个绕组的互感 @Lia、Lib、Lic:表示三相绕组的漏感
|
-
转矩方程:
Te=21Pndθmd⎝⎜⎜⎜⎛[iaibic]⎣⎢⎢⎢⎡ψAψBψC⎦⎥⎥⎥⎤⎠⎟⎟⎟⎞
1 2 3 4
| @极对数Pn:极数的一半 @机械角度θm:转子相对于定子旋转的度数其体现在实际电机工作现象中。 @ia、ib、ic:三相定子电流 @ψa、ψb、ψc:表示三相绕组的磁链
|
-
机械运动方程:
Jdtdwm=Te−TL−Bwm
1 2 3 4 5
| @J:转动惯量 @wm:机械角速度 @B:阻尼系数 @Te:电机转矩 @Tl:负载转矩
|
第四章 静止坐标系α-β下的模型

-
Clarke变换【基于等幅值变换,所以需要添加一个2/3的系数,后面会在svpwm中消去】:
T3sTo2s=32[10−2123−21−23]
-
Clarke反变换:
T2sTo3s=23⎣⎢⎢⎡323−13−10333−3⎦⎥⎥⎤
第五章 转子坐标系d-q下的模型

-
Park变换:
T2sTo2d=[cosθ−sinθsinθcosθ]
-
反Park变换:
T2dTo2s=[cosθsinθ−sinθcosθ]
第六章 电机参数
第二部分 Foc的PI电流环仿真
第一章 数学分析

-
d-q轴电压方程:
{Ud=RId+LddtdId−weLqIqUq=RIq+LqdtdIq+we(LdId+Ψf)
将耦合项当作扰动项进行处理:
{Ud0=RId+LddtdIdUq0=RIq+LqdtdIq
-
d-q轴电磁转矩方程:
Te=23PnIq[Id(Ld−Lq)+Ψf]
-
由于PMSM电机为表贴式电机,有Ld=Lq=L,且d轴电流对转矩的产生不起作用,为了使得相同转矩条件下所需的电流最小,所以采用Id=0的控制策略。
⎩⎪⎪⎪⎨⎪⎪⎪⎧Ud0=RId+LddtdId=0Uq0=RIq+LqdtdIq=Uq−weψfTe=23PnIqΨfdtdwmJ=Te−TL−Bwm
-
对上面的式子进行拉普拉斯变换:
{Gc(s)=Uq0(s)Iq(s)=Ls+R1Gs(s)=Te−TLwm(s)=Js+B1
-
逆变器的数学模型【等效为一个一阶惯性环节】 :
Ginv(s)=Tss+11
1
| @Ts:表示逆变器的开关周期,因为逆变器输出与输出相等,因此增益取1
|
考虑开关延时、死区时间、数字控制延时的影响,将其等效为一个延迟环节:
Ginv(s)=Tss+1e−sTd
将延迟环节按照泰勒级数展开近似为一个一阶惯性环节:
Ginv(s)=(Tss+1)(Tds+1)1
-
PI控制器形式:
PI=KP+KIs1
-
电流环控制结构图:

-
规定:
-
机械时间常数:
Tm=3Pn2Ψf22RJ
-
电磁时间常数:
Tn=RL
-
对于武器站而言,其转动惯量较大,即机械时间常数远大于电磁时间常数,因此在分析电流环控制系统时可以对扰动项$$w_e$$、$$\psi _f$$进行忽略。
-
仿真假设:
- 电机空载运行,不考虑负载转矩的作用;
- 由于在实际工程中,常认为电机的电流环调节过程远快于转速环的调节过程,从而忽略扰动项$$w_e$$、$$\psi _f$$的作用。
-
忽略扰动后的控制结构图:

-
电流环传递函数:
G(s)=(Tss+1)(Tds+1)(Ls+R)1
-
加入PI控制器后的闭环传递函数为:
G(s)=1+(KP+KIs1)((Tss+1)(Tds+1)1)(Ls+R1)(KP+KIs1)((Tss+1)(Tds+1)1)(Ls+R1)
-
PI控制器参数整定:
-
控制系统开环传递函数为:
G(s)=(KP+KIs1)((Tss+1)(Tds+1)1)(Ls+R1)
-
将中间项拆开,由于Td与Ts取值较小,故而可以将其进行简化:
G(s)=(KP+KIs1)(1+(Td+Ts)s1)(Ls+R1)
-
整理可得:
G(s)=(s(1+(Td+Ts)s)LKP)(s+LRs+KPKI)
-
第一项是一个Ⅰ型系统:
K=LKP
T=Td+Ts
-
第二项需要进行消除,即使用PI控制器的零点消去被控对象的极点:
KPKI=LR
-
整定表:

-
当阻尼比为0.707时控制性能最好,则取KT=0.5,可得
KP=2(Td+Ts)L
KI=2(Td+Ts)R
第二章 Simulink仿真
-
PI电流环仿真总览:

-
PMSM模块及其参数设置:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @配置栏: @相数:3 @反电动势波形:正弦波 @转子类型:圆柱形 @机械输入方式:扭矩输入 @电机类型:No(可以自己填写参数) @参数栏: @定子绕组阻值(Ω):可以是一个值,也可以是一个三个元素的数组 5.8 @电子绕组电感(H):可以是一个值,也可以是一个三个元素的数组 2.55*10^-3 @机械常数: @永磁体磁链大小(Wb) @电压常数(V/krpm) 4.8 @扭矩常数(N·m) @转动惯量(kg·m-2)、阻尼系数、极对数、静摩擦力 [0,0,7,0] @电机初始状态 @高级配置: @采样时间 @坐标系:默认配置即可(与上面坐标系相同)
|
-
Clark变换仿真实现:

-
Park变换:

-
反Park变换:

-
SVPWM:
-
原理:根据平均值等效原理,在一个开关周期内通过对基本电压矢量加以组合,使其平均值与给定电压矢量相等。
-
工作过程:首先,根据旋转矢量在两相静止坐标系下的分量判断其所处的扇区;然后,根据平均值等效原理计算出所在扇区主副矢量的作用时间,将其在一个开关周期内进行合理的分配并转换为对应的PWM信号,进而控制逆变器的开关。
-
理解:
1、想要控制转子旋转,则需要定子产生旋转的磁场,才能使得转子连续的旋转,而旋转的磁场需要正弦电流,那么如果使得直流电源产生正弦电流呢?【逆变–电力电子】
2、六步换向每种开关状态对应一个60°的角度转动,那么如果我们缩短每次开关状态的时间,在宏观的观察上是不是就能达到小于60°的控制效果。
3、SVPWM输入:α轴和β轴上的电压输入
4、SVPWM输出:三相单片机计数器的数
-
六步换向原理:

**解释:**上半桥接直流电源正,下半桥接地。电机三个线圈采用星型接法,一端连接在一起,同时定子的三个线圈位置安装霍尔传感器以感知电机转子的转动变换。
-
SVPWM扇区判断:
-
已知输入给三个线圈的是交流电,即正弦电压:
⎩⎪⎨⎪⎧UA=UmcosθUB=Umcos(θ−32π)UC=Umcos(θ+32π)
-
根据Clark变换可得:
{Uα=32UmcosθUβ=32Umsinθ
-
六步换向机制将360°分成了六个扇区,设其想要根据输入来判断所属于那个扇区那么就可以根据反三角函数来求取角度,但是反三角函数计算复杂度高不适用于单片机编程,因此需要整理一下其相关规律【将计算转换为判断与0的大小】:
扇区 |
$$U_{\beta}$$ |
$$\frac{\sqrt{3}}{2}U_{\alpha}-\frac{1}{2}U_{\beta}$$ |
$$-\frac{\sqrt{3}}{2}U_{\alpha}-\frac{1}{2}U_{\beta}$$ |
角度 |
1 |
>0 |
>0 |
<0 |
0~60 |
2 |
>0 |
<0 |
<0 |
60~120 |
3 |
>0 |
<0 |
>0 |
120~180 |
4 |
<0 |
<0 |
>0 |
180~240 |
5 |
<0 |
>0 |
>0 |
240~300 |
6 |
<0 |
>0 |
<0 |
300~360 |
-
数值对应表:大于0取1,小于0取0
⎩⎪⎪⎨⎪⎪⎧A=UβB=23Uα−21UβC=−23Uα−21Uβ
N=4C+2B+A
扇区 |
1 |
2 |
3 |
4 |
5 |
6 |
判据N |
3 |
1 |
5 |
4 |
6 |
2 |
-
SVPWM矢量合成:
-
Simulink Matlab Function代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
function [Tcmp1,Tcmp2,Tcmp3,sector] = fcn(Valpha,Vbeta,Udc,Tpwm)
sector = single(0); sectorTemp = single(0); Tcmp1 = single(0); Tcmp2 = single(0); Tcmp3 = single(0);
Vref1 = Vbeta; Vref2 = (sqrt(3)*Valpha - Vbeta)/2; Vref3 = (-sqrt(3)*Valpha - Vbeta)/2;
if (Vref1>0) sectorTemp = single(1); end if (Vref2>0) sectorTemp = sectorTemp+single(2); end if (Vref3>0) sectorTemp = sectorTemp+single(4); end
X = sqrt(3)*Vbeta*Tpwm/Udc; Y = Tpwm/Udc*(3/2*Valpha+sqrt(3)/2*Vbeta); Z = Tpwm/Udc*(-3/2*Valpha+sqrt(3)/2*Vbeta);
switch (sectorTemp) case 1 T1 = Z; T2 = Y; case 2 T1 = Y; T2 = -X; case 3 T1 = -Z; T2 = X; case 4 T1 = -X; T2 = Z; case 5 T1 = X; T2 = -Y; otherwise T1 = -Y; T2 = -Z; end if T1+T2 > Tpwm T1 = T1/(T1+T2); T2 = T2/(T1+T2); else T1 = T1; T2 = T2; end
ta = (Tpwm-(T1+T2))/4.0; tb = ta+T1/2; tc = tb+T2/2; switch (sectorTemp) case 1 Tcmp1=tb; Tcmp2=ta; Tcmp3=tc; sector = single(2); case 2 Tcmp1=ta; Tcmp2=tc; Tcmp3=tb; sector = single(6); case 3 Tcmp1=ta; Tcmp2=tb; Tcmp3=tc; sector = single(1); case 4 Tcmp1=tc; Tcmp2=tb; Tcmp3=ta; sector = single(4); case 5 Tcmp1=tc; Tcmp2=ta; Tcmp3=tb; sector = single(3); case 6 Tcmp1=tb; Tcmp2=tc; Tcmp3=ta; sector = single(5); end end
|
-
单片机定时器的仿真:
-
STM32F4高级定时器tim1的计数频率为:180MHz(记一个数需要1/180us)
-
PWM周期:100us(一共需要记18000个数)
-
将单片机设置为自动递增/递减模式,那么定时器记一个周期就只需要9000个计数值。
-
定时器时基:

-
定时器仿真:

1
| @原理:SVPWM会输出三路高低电平变换时的计数值,其与时基信号进行比较,以实现高低电平的转换,进而输出三路互补的PWM脉冲信号。
|
-
参数测量:
-
PI控制参数整定:
KP=2(Td+Ts)L
KI=2(Td+Ts)R
-
已知逆变器开关周期为100us,设Td=0.5Ts=50us,代入武器站电机参数信息,可得:
KP=2(Td+Ts)L=0.2
KI=2(Td+Ts)R=100
-
其电流输出波形如下所示【Id=0,Iq=10】:


1
| 为什么会有噪声?因为在前面理论推导的时候忽略了电压方程中的耦合项的,但是在仿真过程中仍存在d-q两轴之间的耦合,因此输出波形存在高频噪声。
|
第三部分 Foc的PI速度环的仿真
第一章 数学分析

-
加入PI控制器消除极点后电流环开环传递函数为:
G(s)=((Td+Ts)s2+sLKP)=4(Td+Ts)2s2+2(Td+Ts)s1
-
由于采样时间很短,因此将其视为一个一型传递函数,可得电流环闭环传递函数为:
G(s)=2(Td+Ts)s+11=3Tss+11
-
忽略电机阻尼系数B,B=0
-
速度环控制器存在一定的延时,因此加入一个一阶惯性系统,其Td=Ts
-
速度环控制结构图:

-
依据控制框图,可得速度环开环传递函数:
G(s)=πJKI45PnψfKP⋅s2(3Ts2s2+4Tss+1)KIs+KP≈πJ45PnψfKP⋅s2KI(4Tss+1)KIs+KP
-
简化表达式:
τ=KPKI
代入可得:G(s)=τπJ45PnψfKP⋅s2(4Tss+1)τs+1
-
设开环增益为1,$$\tau$$=0.01,使用matlab绘制bode图:
1 2
| Fun=tf([0.01 1],[0.0004 1 0 0]) bode(Fun)
|

-
分析Bode图:
- 有两个转折点,一个转折点频率是$$1/\tau$$,一个转折点频率是$$1/T_s$$
-
自动控制原理:
-
依据Bode图设计控制系统:
-
已知采样频率为100us,则转折频率2为2500,lg2500=3.39
-
确定中频带宽值为2
-
则可以计算出转折频率1,进而计算出$$\tau$$值
τ=4Ts×10中频带宽值
-
为了减小超调量,因此我们需要尽量增大相角裕度,观察相频曲线,相角最大值位于中间,近似取幅值穿越频率为两个转折点的中点,进行计算可得:
lgwc=lg4Ts1−2中频带宽
-
根据开环系数K的定义,可以计算出Kn的表达式:
20lgKN=40lgτ1+20(lgwc−lgτ1)
-
联立可得:
{KN=πJKI45PnψfKP=(4Ts)2101.5×中频带宽值1τ=KPKI=4Ts×10中频带宽值
-
求解计算PI控制器参数:
{KP=45×4×Ts×100.5×中频带宽值×Pn×ψfπJKI=45×(4×Ts)2×101.5×中频带宽值×Pn×ψfπJ
-
根据Matlab的PMSM电机模块参数,代入计算可得:
- 极对数:4
- 力矩常数:0.05 永磁体磁链:0.008333333
- 中频带宽:2
- Ts:100us
- 转动惯量:2.81e-4
{KP=0.147KI=3.6782
第二章 Simulink仿真
