0. 什么是电路的数学模型?
这里说的数学模型,是指根据电路状态方程,并且仅用简单模块搭建的模块,具体来说,是利用 HDL Coder 库内的模块。
包含常见的数学操作(加减乘除)等等。
1. 为什么要搭建电路的数学模型?
之前写过如何查找常用的电力仿真模块 👉 【Simulink】电力系统仿真常用模块位置
1.1 以前如何搭建三相逆变器?
1️⃣ 用一个通用桥 Universal Bridge 模块:
设置桥臂数量和 IGBT/Diodes 模式,即可得到一个三相逆变器:
这种方式搭建三相并网逆变器的应用详见 👉 【Simulink】基于FCS-MPC的三相并网逆变器电流控制(Matlab Function)
2️⃣ 拆解元件,用6个 IGBT/Diode 模块组合:
设置默认就行
这种方式搭建三相并网逆变器的应用详见 👉 【Simulink】采用延时补偿的三相并网逆变器FCS-MPC
3️⃣ 用蓝库搭建,即 simscape 库的模块
写到这里,有小伙伴可能会有疑问,Matlab/Simulink不是自带了逆变器 / IGBT模块吗?为什么还要自己搭建数学模型?这里就不得不提一下我们实验室正在使用的 硬件在环仿真(Hardware-in-the-loop simulation, HILS) 平台——Speedgoat
1.2 什么是硬件在环?
关于这个问题,上海熠速信息技术有限公司(Speedgoat在中国的独家代理)的官网以及熠速的工程师们已经给出了比较详细的解释:
熠速:电力系统中实时仿真技术的应用
熠速:仿真应用场景及解决方案:硬件在环
知乎:永磁同步电机控制与仿真系列文章
1.3 为什么要对电路进行数学建模?
关于这个问题,许老师的书/知乎也已经给出了非常好的答案:
知乎:永磁同步电机控制与仿真系列文章 | 电路拓扑式建模与数学建模
总的来说,如果要把模型放在Speedgoat的FPGA里面进行实时仿真,需要经过HDL编译,而HDL编译对模型使用的模块有一定要求。
下面进入正题~
2. 三相并网逆变器的数学模型
许老师已经提供过三相逆变器的建模思路,后面连接RLC负载:
熠速:永磁同步电机控制系统仿真系列文章——逆变器模型(1)
熠速:永磁同步电机控制系统仿真系列文章——逆变器模型(2)
个人觉得写得很好,也是尽可能地还原物理模型,考虑了IGBT压降等参数。
之前我和师兄也试过仿真复现了一下,大体上是能用的,但是好像有个电流还是电压波形看着不太对,有可能是我自己搭建的问题。此外我这里是并网的,也就是加了个电压源,后面接RL负载。
我在实际应用的时候,直接用理想的数学模型了 🐶
设逆变桥输出端相对于直流侧电源负极性端N间的电压为 v x N , ( x = a , b , c ) v_{xN},(x=a,b,c) vxN,(x=a,b,c),直流侧电源负极性端N与电网中性点n之间的电压为 v n N v_{nN} vnN,逆变器的开关状态 S x , ( x = a , b , c ) S_x,(x=a,b,c) Sx,(x=a,b,c),当 S a = 1 S_a=1 Sa=1 ,表示S1导通,S2关断, v a N = u d c v_{aN}=u_{dc} vaN=udc;当 S a = 0 S_a=0 Sa=0 ,表示S2导通,S1关断, v a N = 0 v_{aN}=0 vaN=0。其他桥臂类似。
逆变器输出电压方程:
{ v a N = S a u d c = R i a + L d i a d t + e a + v n N v b N = S b u d c = R i b + L d i b d t + e b + v n N v c N = S c u d c = R i c + L d i c d t + e c + v n N \begin{cases} v_{aN}=S_{{a}}u_{dc}=Ri_{{a}}+L\frac{di_{a}}{{d}t}+e_{{a}}+v_{nN}\\ v_{bN}=S_{b}u_{dc}=Ri_b+L\frac{di_b}{dt}+e_{b}+v_{nN}\\ v_{cN}=S_{c}u_{dc}=Ri_c+L\frac{di_c}{dt}+e_{c}+v_{nN}\end{cases} ⎩ ⎨ ⎧vaN=Saudc=Ria+Ldtdia+ea+vnNvbN=Sbudc=Rib+Ldtdib+eb+vnNvcN=Scudc=Ric+Ldtdic+ec+vnN
在三相对称系统中,三相电压与电流瞬时值和为零:
{ e a + e b + e c = 0 i a + i b + i c = 0 \begin{cases}e_a+e_b+e_c=0\\i_a+i_b+i_c=0\end{cases} {ea+eb+ec=0ia+ib+ic=0
联立上面两个公式可得:
v n N = u d c 3 ( S a + S b + S c ) v_{nN}=\frac{u_{dc}}{3}(S_{a}+S_{b}+S_{c}) vnN=3udc(Sa+Sb+Sc)
逆变器交流侧输出端与电网中性点n间的电压 v x n , ( x = a , b , c ) v_{xn},(x=a,b,c) vxn,(x=a,b,c) 满足的关系式为:
{ v a n = v a N − v n N v b n = v b N − v n N v c n = v c N − v n N \begin{cases}v_{an}=v_{aN}-v_{nN}\\ v_{bn}=v_{bN}-v_{nN}\\ v_{cn}=v_{cN}-v_{nN} \end{cases} ⎩ ⎨ ⎧van=vaN−vnNvbn=vbN−vnNvcn=vcN−vnN
代入之前的式子,得到:
{ v a n = S a v d c − v d c 3 ( S a + S b + S c ) = ( 2 S a − S b − S c ) v d c 3 v b n = S b v d c − v d c 3 ( S a + S b + S c ) = ( − S a + 2 S b − S c ) v d c 3 v c n = S c v d c − v d c 3 ( S a + S b + S c ) = ( − S a − S b + 2 S c ) v d c 3 \begin{cases}v_{{an}}={S}_{{a}}v_{dc}-\frac{v_{dc}}{3}\left({S}_{{a}}+{S}_{{b}}+{S}_{{c}}\right)=\left(2{S}_{{a}}-{S}_{{b}}-{S}_{{c}}\right)\frac{v_{dc}}{3}\\v_{{bn}}={S}_{{b}}v_{dc}-\frac{v_{dc}}{3}\left({S}_{{a}}+{S}_{{b}}+{S}_{{c}}\right)=\left(-{S}_{{a}}+2{S}_{{b}}-{S}_{{c}}\right)\frac{v_{dc}}{3}\\v_{{cn}}={S}_{{c}}v_{dc}-\frac{v_{dc}}{3}\left({S}_{{a}}+{S}_{{b}}+{S}_{{c}}\right)=\left(-{S}_{{a}}-{S}_{{b}}+2{S}_{{c}}\right)\frac{v_{dc}}{3}\end{cases} ⎩ ⎨ ⎧van=Savdc−3vdc(Sa+Sb+Sc)=(2Sa−Sb−Sc)3vdcvbn=Sbvdc−3vdc(Sa+Sb+Sc)=(−Sa+2Sb−Sc)3vdcvcn=Scvdc−3vdc(Sa+Sb+Sc)=(−Sa−Sb+2Sc)3vdc
整理可得:
{ L d i a d t = ( S a − S a + S b + S c 3 ) v d c − R i a − e a = v a n − R i a − e a L d i b d t = ( S b − S a + S b + S c 3 ) v d c − R i b − e b = v b n − R i b − e b L d i c d t = ( S c − S a + S b + S c 3 ) v d c − R i c − e c = v c n − R i c − e c \begin{cases}L\frac{{d}i_{{a}}}{{d}t}=({S}_{{a}}-\frac{{S}_{{a}}+{S}_{{b}}+{S}_{{c}}}{3} ) v_{dc}-Ri_{{a}}-e_{{a}}=v_{{an}}-Ri_{{a}}-e_{{a}}\\L\frac{{d}i_{{b}}}{{d}t}=({S}_{{b}}-\frac{{S}_{{a}}+{S}_{{b}}+{S}_{{c}}}{3} ) v_{dc}-Ri_{{b}}-e_{{b}}=v_{{bn}}-Ri_{{b}}-e_{{b}}\\L\frac{{d}i_{{c}}}{{d}t}=({S}_{{c}}-\frac{{S}_{{a}}+{S}_{{b}}+{S}_{{c}}}{3} ) v_{dc}-Ri_{{c}}-e_{{c}}=v_{{cn}}-Ri_{{c}}-e_{{c}} \end{cases} ⎩ ⎨ ⎧Ldtdia=(Sa−3Sa+Sb+Sc)vdc−Ria−ea=van−Ria−eaLdtdib=(Sb−3Sa+Sb+Sc)vdc−Rib−eb=vbn−Rib−ebLdtdic=(Sc−3Sa+Sb+Sc)vdc−Ric−ec=vcn−Ric−ec
后面Simulink模型搭建都是基于上述公式。
3. 仿真测试
本篇博客的电路部分采用数学模型,控制部分采用FCS-MPC控制策略。之前的博客已经介绍过基于FCS-MPC的三相并网逆变器电流控制:
【Simulink】基于FCS-MPC的三相并网逆变器电流控制(Matlab Function)
3.1 模型内部:
逆变器交流侧输出端与电网中性点n间的电压 v x n , ( x = a , b , c ) v_{xn},(x=a,b,c) vxn,(x=a,b,c) 生成:
并网电压源和相角生成,以及 v x n − e x v_{xn}-e_x vxn−ex:
这一步困扰了我一段时间,因为之前不知道 sin 模块不能正常编译,一直以为是累加器的问题,导致后面实时仿真的时候波形有很大的尖峰。请教煜速的工程师之后,用了 Direct Lookup Table(n-D) 生成正弦波。
注意:转Single格式是因为编译的时候不支持Double
RL负载,输出电流:
3.2 仿真结果:
电网电压:
标准正弦。
相角:
相对于用了锁相环了。
输出电流:
电流波形好坏一般和控制有关,可以尝试将FCS-MPC换成其他控制策略。目前离线仿真的波形看起来和以为模块输出结果略有不同,但是在实时仿真(HiL)的时候,没有这种奇怪的波形(虽然噪声也增多了很多)。
以上模型在实时仿真中也是得到了验证的。
4. 其他模型搭建方式
上述模型是基于数学公式搭建的,由于我们的对象是三相并网逆变器,数学模型相对简单。如果是复杂电路,也可以用蓝库(Simscape库)搭建,然后经过状态空间转换(多一步编译),但是仿真步长有限制,而用本文的方式相对来说可以跑快一点。
不知道后续Speedgoat有没有优化更新HDL编译的方式,但目前在Speedgoat FPGA里面仿真电力电子模型还是需要使用本文的方法的。
参考:
[1] 郑文帅. 三相并网逆变器有限控制集模型预测控制研究[D]. 辽宁工程技术大学控制理论与控制过程, 2021.
不好意思这篇博客外链比较多,但是确实有很多问题在其他地方已经详细介绍过的,所以直接引用超链接了~
另外推荐一下Speedgoat,很好的硬件在环仿真平台,已用一年多,答疑也很nice(无广🐶)~