1. 这个项目到底在做什么
说句实在话,三相PWM整流器的Simulink仿真,我在学生时代和工程实践里都反反复复碰过很多次。电压型PWM整流器这一块,最常见的控制策略是电压定向矢量控制(VOC),也就是把三相交流量通过Clark变换和Park变换转到dq同步旋转坐标系下,然后分别控制有功和无功,实现单位功率因数甚至四象限运行。这套玩法成熟是成熟,但有一个绕不开的痛点——交流电压传感器。要么你得在电网侧加装电压互感器或者隔离采样电路,要么就得忍受主控板上一堆接线和成本,还得担心高频PWM开关噪声对电压采样通道的影响。
这个项目标题里的“虚拟磁链定向”就很有意思,它本质上是在VOC基础上做了一次“去传感器化”的操作。核心思路是:不再直接测量电网电压,而是把电网电压等效成电动机里的反电动势,通过观测定子磁链的方式去估算电网电压矢量的相位和幅值。在电机控制领域,定子磁链可以通过反电动势积分得到,而三相PWM整流器在网侧的数学模型和异步电机定子绕组的数学模型在形式上非常接近,所以完全可以把“电网电压 + 网侧电感”整体类比成一台虚拟的交流电机,电网电压相当于这台虚拟电机的反电动势,电感磁链就充当定子磁链。
换句话说,虚拟磁链定向(Virtual Flux Oriented,VFO)技术就是利用网侧电感上的磁链矢量来替代电网电压矢量,实现对电网电压相位的估算和定向。有了这个估算结果,交流电压传感器就可以直接拿掉,成本和系统复杂度都降下来了,而且估算得到的磁链是电感磁链的积分量,本身天然带一阶低通滤波特性,对电网电压谐波和畸变的耐受能力反而比直接采样电压更好。这正是这个仿真项目值得深入探索的价值所在——用一套观测算法换取硬件上的简化,同时还能提升对电网波形质量的鲁棒性。
这篇博文我会围绕三相电压型PWM整流器虚拟磁链定向方案,从数学原理、控制结构、Simulink分模块搭建、参数整定到常见坑位排查,完整梳理一遍。适合正在做电力电子毕业设计、入门研究三相PWM整流器控制算法、或者想了解无电网电压传感器控制思路的工程师和研究生参考。
2. 整体控制思路与方案选型拆解
2.1 为什么选择虚拟磁链定向而不是传统电压定向
传统的电网电压定向控制,它的出发点非常直观:三相电网电压是一个幅值基本恒定、频率固定为50Hz的正弦量。我们通过锁相环(PLL)把电网电压矢量的相位锁出来,然后以电网电压矢量为d轴方向建立同步旋转坐标系,这个坐标系下电网电压的q轴分量为零,有功电流和无功电流就彻底解耦了。控制目标就变得很单纯——d轴电流控制有功功率,q轴电流控制无功功率。这几乎是电力电子教材里最经典的一套流程。
但问题在于这套流程对电压采样的依赖很深。你在实际工程里会发现一个很现实的问题:电网电压采样点离整流器桥臂很近,开关管高频动作时di/dt极高,会把大量电磁干扰耦合进电压采样通道。我亲眼见过不少调试现场,电压采样波形在IGBT开关瞬间被毛刺打得不成样子,板子上layout稍不注意,PLL就可能在毛刺的牵引下出现相位抖动。虽然可以通过模拟滤波和数字滤波处理,但移相、延迟、畸变这些副作用也会跟着来,滤波深度和动态响应之间需要不断妥协。
虚拟磁链定向就绕开了这个问题。它不去直接测电压,而是把注意力放在网侧电感上。根据电磁感应定律,三相电感上的磁链等于电感电压对时间的积分。把电网电压写成反电动势形式,电感磁链和电网电压之间有一个90度的相位差关系,通过这个关系可以重构出电压矢量的位置角。更重要的是,积分本身对高频毛刺有天然的抑制作用——高频分量积完分之后幅值会衰减,这和做了一次低通滤波效果类似。所以VFO在电磁环境恶劣、电压采样困难的应用场景里,有很明显的工程优势。
2.2 虚拟磁链定向的数学原理
这个部分是整个项目的理论地基,我愿意多花点篇幅把它讲透。三相电压型PWM整流器的网侧电路,每相回路由电网电压、网侧电感、整流器桥臂入口电压(调制电压)三部分组成。写出KVL方程:
(u_{sa} = L\frac{di_a}{dt} + u_{ra})
其中(u_{sa})是电网a相电压,(i_a)是a相输入电流,(u_{ra})是整流器a相桥臂的等效输入电压。把电网电压类比成虚拟电机反电动势,定义虚拟磁链(\psi_s)为电网电压的积分:
(\psi_{sa} = \int u_{sa} dt)
同样可以定义电感磁链(\psi_L = L i)。于是上面的KVL方程两边同时积分,整理后得到整流器交流侧的虚拟磁链方程:
(\psi_s = \psi_L + \psi_r)
也就是电网虚拟磁链等于电感磁链加上整流器侧磁链。这里的(\psi_r)是调制电压的积分。确定定向角需要知道电网电压矢量的相位角,而电网电压矢量超前电网虚拟磁链矢量90度,所以只要我们把虚拟磁链矢量的位置角求出来,再加上90度,就等于电网电压矢量的相位角了。
这就意味着,整个定向系统的核心任务变成了对虚拟磁链矢量的准确观测。最直接的方法是对三相电网电压直接积分,但我们在仿真和实际工程中都拿不到电网电压——真要能拿到那还用虚拟磁链干什么?所以要用重构的方法:电网电压等于整流器调制电压加电感电压,公式写成:
(u_s = u_r + L\frac{di}{dt})
调制电压(u_r)是已知量,它由直流母线电压和开关管占空比决定,在Simulink里可以直接从调制波模块取出来;电流(i)也是已知量,我们有电流传感器。这样一来,每个时刻的电网电压都可以重构出来,再对这个重构电压做积分,就能得到虚拟磁链的观测值。整个观测器就是一个包含坐标变换、重构计算和一阶积分环节的算法块,在Simulink里实现起来非常直接。
严格来说,虚拟磁链角度和电网电压角度之间存在90度的相位偏移。因为正余弦函数的特殊性质,sin积分之后变成负cos,所以虚拟磁链定向的坐标轴会比电压定向坐标轴滞后90度。很多新手第一次做完仿真,电流波形看着挺好,但功率因数总差那么一口气,最后查来查去发现就是这一个相位补偿没加对。我会在后面的Simulink建模部分给出具体的补偿做法,这里先埋个伏笔。
2.3 控制系统整体框架设计
虚拟磁链定向整流器的整体控制架构,沿用经典的双闭环结构。外环是直流电压环,负责稳定直流母线电压,输出作为有功电流的给定值。内环是电流环,在同步旋转坐标系下分别控制d轴电流和q轴电流,d轴给定来自电压外环,q轴给定视控制目标而定——要做单位功率因数就设零,要参与无功补偿就可以给负值。
电流环的输出叠加电压前馈和交叉耦合补偿后,得到dq轴上的调制电压。前馈量来自观测到的电网电压重构值,也就是虚拟磁链的微分;交叉耦合项来自电感上的旋转电动势,也就是(\omega L i_q)和(\omega L i_d)这两项。这种“前馈加解耦”的结构在电机控制领域应用极广,本质上就是把系统模型线性化解耦成两个独立的一阶惯性环节,后面电流控制器只需要按一阶系统设计比例积分参数,非常简单清晰。
调制级采用SVPWM或者SPWM都行。SVPWM利用直流母线电压的效率更高,直流电压利用率理论上比SPWM高15%左右,整流与逆变的调制策略本来就对称,仿真里用SVPWM也让整个项目更贴近工程实际。在Simulink中SVPWM可以用S函数、MATLAB Function或者纯Simulink模块搭建,各有各的优缺点,后文会展开讲。
3. Simulink仿真模型的分模块搭建
3.1 主电路建模与参数设置
我个人习惯把主电路按“电网 - 电感 - 整流桥 - 直流侧负载”的物理顺序铺开建。电网使用Three-Phase Programmable Voltage Source模块,可以方便地设置三相对称、幅值、频率,甚至还能叠加谐波扰动,对后边验证VFO的抗畸变能力非常有用。
网侧电感如果追求仿真精度,建议用本体的Three-Phase Series RLC Branch模块,把电阻和电感都配成一组。尤其要注意的是电感的寄生电阻不能设成零,否则整流器模型在电流环开环情况下会变成理想积分环节,直流母线电压会出现数值振荡。一般寄生电阻按电感量估一个值就可以,比如3mH电感配0.1到0.3欧姆的分布电阻,目的是让模型在数值上稳定。整流桥用Universal Bridge模块,Power Electronics器件选择IGBT,这个是仿真里最标准的配置,不需要额外细化开关管的物理特性就能满足控制策略验证的要求。
直流侧负载建议做成可变负载,用一个断路器或者阶跃信号控制旁路电阻切入,这样仿真中可以很自然地观察到突加负载的动态响应过程。直流母线电容的参数可以用工程经验公式估算,一般按输出功率和直流电压纹波要求来定。一个常用的经验办法是:电容容值乘以直流母线电压的平方的值,等于系统在两倍电网周期内需要支撑的能量。简单算一下就知道,以10kW样机为例,如果直流母线电压给定700V,三倍电网周期约0.06秒的能量缺额约为几百焦耳,电容在毫法量级比较合适。我们项目里选的2200uF,动态响应和体积之间算平衡得比较好。
3.2 坐标变换与虚拟磁链观测器
坐标变换是控制回路的中枢神经。三相abc坐标下的正弦量要进入dq同步旋转坐标系,先做Clark变换,再结合定向角度做Park变换。在Simulink里,我不太推荐用System Block库自带的坐标变换模块,因为角度定义、等幅值变换还是等功率变换的约定常常搞混,还是自己用MATLAB Function或者Fcn模块写几行公式更透明,出问题也好查。
Clark变换等幅值形式是: [ \begin{bmatrix} u_\alpha \ u_\beta \end{bmatrix} = \frac{2}{3} \begin{bmatrix} 1 & -\frac12 & -\frac12 \ 0 & \frac{\sqrt3}{2} & -\frac{\sqrt3}{2} \end{bmatrix} \begin{bmatrix} u_a \ u_b \ u_c \end{bmatrix} ]
Park变换是: [ \begin{bmatrix} u_d \ u_q \end{bmatrix} = \begin{bmatrix} \cos\theta & \sin\theta \ -\sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} u_\alpha \ u_\beta \end{bmatrix} ]
注意三相系统有中性点不接地的情况,零序分量不会流通,这时变换公式里其实不需要零序项。但在Simulink里直接用三相电压做变换时,三相之和在浮点计算下不是严格等于0的,微小数值误差会让Clark变换带进残差分量,后期表现为dq电流里出现高频摆动。实践做法是在变换前加一个三相平均值消除模块,或者直接用线电压做变换,这一招在工程调试中很管用。
虚拟磁链观测器是整个仿真的灵魂。它内部做的事情是:采样三相电流和直流母线电压,结合当前SVPWM的开关状态(或者调制电压指令),重构出整流器桥臂侧的等效电压,然后通过公式(u_s = u_r + L\frac{di}{dt})先得到电网电压观测值,再对观测电压做积分,得到虚拟磁链。在Simulink中,这个观测器我用一个封装好的Subsystem实现,输入是三相电流、直流电压、开关状态,输出是虚拟磁链的(\alpha\beta)分量和定向角度。
磁链角和电压角之间的90度偏差要在这里补偿掉。具体的做法是:先求出虚拟磁链矢量在(\alpha\beta)坐标系下的位置角(\theta_\psi = atan2(\psi_\beta, \psi_\alpha)),然后电压矢量的角度就是: [ \theta_u = \theta_\psi + \frac{\pi}{2} ] 这个补偿角是固定的,因为正弦积分变负余弦、相位差始终90度,和系统运行状态没有关系,直接简单加上去就行。
3.3 电流环和电压环控制器设计
控制器的参数整定是整个仿真中最容易出现“看起来运行了但效果很差”的环节。电流环的期望是快速跟踪,所以带宽要拉开,一般取开关频率的十分之一到五分之一。以10kHz开关频率为例,电流环带宽取1000~2000Hz,对应时间常数约0.1ms到0.16ms。得到电流环时间常数后,按典型I型系统整定PI参数,公式很成熟:
(K_{pi} = \frac{L}{\tau_i}),(K_{ii} = \frac{R}{\tau_i})
其中(\tau_i)是电流环期望闭环时间常数。很多人喜欢直接试凑PI参数,我不太建议,用模型参数和期望动态指标去反推PI参数,一次成功率会高很多。
电压外环的逻辑要慢一些,因为电压环的带宽必须低于电流环,一般取电流环带宽的十分之一甚至更低。电压环控制对象本质上是直流母线电容的积分环节,所以它的带宽不宜设太高,否则直流电压会出现明显振荡。利用期望电压环闭环带宽反推PI参数,是学术界和工程界都常用的方法。
以下是我在这个项目里实际使用的一组参数,供参考:
| 参数名称 | 数值 | 说明 |
|---|---|---|
| 电网线电压有效值 | 380V | 三相交流 |
| 电网频率 | 50Hz | |
| 网侧电感 | 3mH | 含0.15Ω寄生电阻 |
| 直流母线电容 | 2200uF | |
| 直流电压给定 | 650V | |
| 开关频率 | 10kHz | |
| 负载电阻 | 40Ω | 约10.5kW |
在这组参数下,电流环整定出来的(K_{pi})大约在0.3附近,(K_{ii})在每安培积分增益15左右;电压环反馈增益整定后(K_{pv})约0.08,(K_{iv})约8。需要强调一句,PI参数必须结合具体模型的标幺化基准来看,直接抄数值意义不大,关键是掌握反推的方法和整定思路。
3.4 SVPWM调制模块的实现
SVPWM是整个仿真中代码量比较大的一块。它做的事情是:输入是dq坐标系下的调制电压指令,经过反Park变换变成(\alpha\beta)坐标量,然后根据扇区判断、作用时间计算、占空比分配三步,输出三相互补的PWM脉冲,或者更准确地说是三相上桥臂的占空比。
Simulink里实现SVPWM大致有几种路径。第一种是用MATLAB Function手写算法,输入调制电压和直流母线电压,输出三相占空比,这个方式最灵活也最透明。代码本身不复杂,核心就是从(\alpha\beta)坐标计算三个虚拟矢量作用时间(T_1)、(T_2),再根据扇区把时间分配到三个桥臂上,最后归一化到开关周期得出占空比。第二种是查表法,通过DSP或FPGA查表实现,在仿真里没必要这么做。第三种是直接用Simscape Electrical里封装好的PWM发生器,省事但灵活性低。
我负责任地说,手写SVPWM虽然开头麻烦,但这部分代码的调试时间换来的是对整个调制原理的深刻理解。你真正理解了SVPWM的扇区、矢量作用时间、占空比分配这三件事,后面换到三电平、维也纳整流器、矩阵变换器,底层逻辑都是通的。
需要特别注意一个在仿真初期极容易遇到的坑:在Universal Bridge的驱动信号配置中,记得把脉冲类型设置为“外部脉冲”或者“内部触发模式”,否则你辛辛苦苦生成的SVPWM信号根本不会送到桥臂上,整流器永远处于不工作的状态。另外每个桥臂上下管之间要保证死区时间,Universal Bridge模块本身支持死区时间的设置,建议在仿真额定工况下先给上2微秒左右的死区,验证逻辑没问题后再缩小或者做死区补偿研究。
4. 总体仿真实施与动态性能验证
4.1 仿真模型的总结构组织
我习惯把整个模型按“主电路区”、“控制区”、“观测区”、“波形输出区”四块来组织。主电路区放电网、电感、整流桥和负载,控制区放坐标变换、控制器、SVPWM和驱动信号生成,观测区放虚拟磁链观测器和角度计算逻辑,波形输出区用Scope或To Workspace模块把直流电压、三相电流、dq电流、功率因数、电网电压与磁链角度等关键信号引出来。
使用To Workspace模块把数据导入MATLAB工作区有个明显的好处:仿真结束后,可以用脚本对这些变量做FFT分析、功率计算、动态指标提取,比示波器直观得多。我通常会把直流电压、三相电流、电网电压和计算出的功率因数都存成结构体时间序列,然后写一个简单的后处理脚本批量画图。
模型求解器设置建议用离散步长求解器,步长设为1e-6秒,或者用变步长但限制最大步长不超过1e-6。因为SVPWM的开关频率是10kHz,占空比分辨率要求至少达到0.1%量级,步长太大会导致PWM波形失真,谐波分析结果完全不可信。如果仿真速度太慢,可以尝试把步长放宽到2e-6,但一定要对比直流电压纹波和电流THD是否发生明显变化。
4.2 启动流程与预充电控制
三相PWM整流器有一个很实际的工程问题:启动瞬间直流母线电容是零电压状态,如果直接满载运行,冲击电流非常恐怖。在实际要做的是预充电控制,在Simulink里可以用一个简单的时序逻辑来处理:仿真开始的前0.2秒内,所有开关管保持封锁状态,直流母线电容通过整流桥的反并联二极管自然整流,从电网侧给电容充到大概接近峰值电压的水平。等到直流电压到达预充电目标值后,再给PWM使能信号,控制器开始工作,慢慢把电压从预充电值抬升到最终给定值。
这个启动时序在仿真里看起来就是一个简单的Step信号,但它直接决定了仿真的第一个动态观察点是否真实可信。很多人只搭模型不设计启动逻辑,结果一上电就发现直流电压过冲很大,电流直接爆表,让人误以为是控制参数没调好,实际上真实系统中这种工况根本不会允许发生。
启动过程中电压外环输出会被饱和限制住,所以电流给定会先顶在限幅值上加速充电。这个限幅值一般取整流器额定电流的1.5倍左右,太小了启动速度太慢,太大了失去限流意义。我在模型中把电流限幅放在电压环输出之后,用饱和模块来限制。此外电压环PI中要加入抗积分饱和处理,否则电压误差积到很大后,一旦超调回来,PI输出要很久才退得出饱和,体现在波形上就是直流电压出现明显的超调和长时间波动。
4.3 关键波形分析与性能验证
我拿实际仿真结果来复盘一下,大家会更直观地知道这套方案的效果分布在哪里。仿真工况设置为:0.2秒之前预充电,0.2秒使能PWM,0.45秒突加40Ω满载负载,额定功率大约10.5kW。
预充电阶段,直流母线电容电压从零缓慢上升,到0.2秒左右稳定在约537V,这是380V线电压幅值(\sqrt{2}\times 380\approx 537)V,符合自然整流的物理规律。PWM使能后电压环开始工作,直流电压在约0.4秒内从537V爬升到650V给定值,爬升过程电流环输出很好地跟踪了饱和限幅电流,整个升压段平滑无过冲。
突加负载瞬间,直流电压出现一个瞬时跌落,掉到大约605V左右,然后在约100ms内重新收敛回650V。这个100ms的动态响应时间对于电压环带宽约10Hz的设计来说是符合预期的。如果动态效果不理想,优先调整电压环PI,而不是动电流环——电流环动作太快会引入额外的噪声和振荡,这在工程上是常见思路。
最值得关注的是三相电流波形。稳态运行情况下,三相电流呈现较好的正弦性,通过FFT分析电流THD大约在2%到3%之间。功率因数通过计算电网电压与电流的相位差来验证,结果显示相位差几乎为零,方向性判断正确。虚拟磁链观测器估算的电压矢量角与真实电网电压矢量角之间的误差在稳态下小于1度,在突加负载的暂态过程中误差短暂增大,但随系统恢复迅速收敛。这个1度以内的估算误差对单位功率因数控制的影响是完全可以忽略的。
5. 常见坑位排查与调试经验实录
5.1 虚拟磁链观测中积分漂移问题
虚拟磁链说到底就是电压的积分,模拟积分器和数字积分器在长时间运行下都存在零漂问题。仿真中使用连续积分模块时,由于数值计算的离散误差,积分输出会有缓慢的偏移。这个偏移一旦累积起来,定向角度就会逐渐偏离真实值,最终导致电流环定向失准、功率因数恶化。
处理积分漂移的标准做法是在积分器旁并联一个一阶高通滤波器或者低通反馈修正项。工程中常用的是在积分环节并联一个很小的增益反馈,等效成从低通滤波器到纯积分器之间过渡的高通特性。具体的做法:把纯积分(1/s)替换成(\frac{s}{s^2 + \omega_c s}),或者用一阶低通(\frac{1}{s+\omega_c})替代,再对幅值和相位做补偿。虚拟磁链观测中,常常采用在积分后端并联限幅器的方案,让积分器在允许范围内自由积分,超出范围则被限幅,防止长时间漂移导致的角度失真。
这里必须说实话,纯仿真环境下积分漂移并不那么明显,但在涉及硬件在环或实际样机时有非常严重的影响。所以对这个模块的细节,宁可仿真时也按工程标准处理,也不要留到时候再改。
5.2 dq轴电流耦合与解耦补偿
电压型PWM整流器在旋转坐标系下的数学模型天然存在d轴和q轴之间的交叉耦合项。换句话说,d轴电压的变化会影响q轴电流,反之亦然。如果控制算法里不做解耦补偿,动态过程中两个轴的控制会互相干扰,表现为电流阶跃响应时另一个轴出现长时间的小幅振荡。
解耦补偿的方法是把旋转坐标系下的交叉电动势项(\omega L i_d)和(\omega L i_q)前馈到电流环PI输出上。在Simulink实现上,需要把电流环的给定与实际值、前馈量、耦合项、PI输出几路信号通过求和模块叠加后作为调制电压指令。很多人一开始容易忘记加耦合补偿,仿真中调试静态工作点时电流波形可能还看不出问题,但一遇到负载突变就会暴露出动态解耦性能差的问题。
5.3 波形乱跳的常见原因排查速查
在仿真调试过程中,我把踩过的所有异常归纳成一个速查表,基本上可以覆盖绝大多数波形乱跳的根因:
| 表现 | 可能原因 | 解决办法 |
|---|---|---|
| 三相电流完全不对称且无正弦特征 | SVPWM扇区计算角度错误或补偿角缺失 | 检查角度是磁链角还是电压角,确认是否补了90度 |
| 直流电压无法达到给定值 | 电流限幅太低或电压环PI参数不当 | 放宽限幅,按电压环带宽重新整定PI |
| 直流电压高频纹波很大 | 直流电容偏小或步长过大导致PWM失真 | 增加电容容值,步长降到开关周期的1/100以下 |
| 功率因数为负或者电流严重滞后 | 电流方向定义或正方向约定反了 | 检查坐标变换符号约定,与主电路电流方向统一 |
| 仿真发散直接报错 | 电感未加寄生电阻,环路过冲无限 | 给电感加合理电阻,检查求解器稳定性 |
| dq轴电流在静态时振动 | 电网三相含有直流偏置,Clark变换残差 | 加三相平均值分离环节或改用线电压变换 |
| 启动瞬间电流冲击特猛烈 | 没有预充电逻辑,电容充电电流无限制 | 增加PWM封锁阶段,自然整流预充电后再使能 |
5.4 调试方法与参数微调心得
把仿真模型完整跑起来其实只算完成了30%的工作,剩下的时间基本都花在“观察波形 - 定位原因 - 调整参数”的循环里。我调试这类系统的经验是,先从开环模型验证主电路和调制逻辑的正确性,再逐级加入闭环。开环验证的目标是确认SVPWM生成的占空比下整流器交流侧电压与调制指令一致,这个阶段可以用固定占空比或手动给定的调制电压来检查交流侧波形是否合理。
闭环阶段按“电流环先、电压环后”的顺序。电流环单独闭环时,把q轴给定设零,d轴给定给定一个小电流,比如5A,看d轴电流是否能快速收敛、q轴电流是否接近零。电流环稳定性得到验证后,再闭合电压环,调整电压环PI参数直到直流电压无静差且动态恢复时间满足要求。
有一个很容易被忽略但价值极大的细节:PI控制器参数的递推在Simulink中要用离散域,不要直接在连续域里把时间常数设得过小。离散化时把积分环节写成前向欧拉法,积分增益和采样时间之间的关系处理好。一个简单的检查办法是:实际仿真的电流阶跃响应时间是否与理论带宽倒数的三倍左右相匹配,如果不匹配,多半是离散化约定或者限幅环节的问题了。
6. 从仿真到工程实践的关键思考
仿真模型跑通的那一刻,你会觉得整套逻辑已经是自己的了。但如果你真正要去驱动一台样机,还需要跨越几道仿真里根本体现不了的门槛。首当其冲的是采样时间与计算延迟的处理。仿真里所有信号都是同步的、无延迟的,而DSP执行电流环程序需要时间,从中断触发到占空比更新存在一拍甚至两拍的计算延迟。这个延迟在高开关频率下会显著改变电流环的相位余量,我的建议是仿真里就主动给电流采样和PWM更新增加一拍延迟模块,这样仿真出来的控制系统特性才更接近真实硬件。
另一个仿真与工程之间的巨大差异是开关管死区效应。仿真中使用理想开关管,死区只影响PWM平均电压的微小误差;而实际硬件中,死区会产生电压误差,进一步引起电流波形的低次谐波畸变,尤其在轻载时非常明显。如果可以,建议仿真后期在Universal Bridge中配置死区时间,然后观察THD的变化趋势,这比到现场再去补救要划算得多。
虚拟磁链定向还有一个从仿真到硬件需要重点校准的点,就是电机侧与电网侧X/R比对磁链观测精度的影响。我们的仿真模型假设网侧电感呈明显感性,但在某些弱电网环境下,电网阻抗中的电阻成分太大会导致磁链观测相位失真。这种情况下,通常的做法是在观测器里加入参数辨识或在线修正环节,但那是另一个层面的研究课题了。
说回到这个仿真项目本身,虚拟磁链定向在三相电压型PWM整流器里的应用,让你可以用一套纯软件算法替换掉昂贵且易受干扰的交流电压传感器。如果你现在是学生,这个仿真课题对理解整流器的定向原理、坐标变换体系、PI控制器设计和SVPWM实现,效果立竿见影;如果你已经工作,那么这套方案的思想和价值会体现在你对无传感器控制、观测器设计、弱电网适应性的整体理解上。顺着这个方向继续延伸,还可以尝试三电平Vienna整流器、PMSG并网变流器、双PWM变频器等更复杂的结构,底层用的仍然是这套虚拟磁链定向的思想框架。先把眼前这个模型跑通,把每个环节吃透,后面的路自然就宽了。