做三相并网逆变器的控制仿真,我觉得绕不开的一个节点就是FCS-MPC。原因是这套算法思路够直观:开关状态就那八个,全枚举一遍,选代价函数最小的直接怼上去,不需要调制器,不需要整定PI参数。但真把它放到Simulink里跟LCL滤波器一起跑,各种麻烦就出来了:谐振、延时、离散化误差、仿真卡顿……这些坑我从上手到跑通,前前后后踩了不少。这篇就把整个项目的模型搭建、参数计算、控制器实现和调试图谱串一遍,给后面做同样东西的人留个参考。
数字控制在电力电子里不稀奇,但FCS-MPC属于那种“原理两分钟、调模型两星期”的家伙。很多人一开始被跟网型逆变器、LCL滤波器、模型预测这些名词压住,其实拆开看就三件事:怎么把LCL的离散模型写出来,怎么枚举开关矢量,怎么把代价函数调到不出幺蛾子。下面按我实际搭建的路径逐步讲,涉及的具体参数都来自一个10kW/380V的模拟项目,你按自己的功率等级等比缩放就行。
1. FCS-MPC和LCL滤波器:为什么这两样东西会被放在一起
1.1 先从被电网“刁难”的逆变器说起
三相并网逆变器的核心任务,说白了就是控制输出电流,让它跟电网电压保持同频同相,同时把谐波压下去。电网在这里不是个“听话的负载”,它是一个电压源,还有内阻抗,强行往里灌电流的后果就是电流波形不好看、功率因数不达标,严重的时候逆变器直接保护停机。
传统做法是SPWM或SVPWM配PI控制器,里面还要拆成dq轴解耦,调两个电流环、一个电压环,参数一串。而FCS-MPC的思路完全换了个方向:我不去调占空比,直接把所有可能的开关状态列出来,逐个预测“如果现在用这个状态,下一拍电流会变成多少”,然后选预测结果最接近目标的那一组开关状态,在这一拍直接发出去。整个过程每个采样周期重复一次,相当于每一拍都重新做一次全局最优决策。
这个思路用生活化的话来讲,就是开车到路口前,别人是“根据当前车速和经验慢慢修正方向盘”,FCS-MPC是“把每条可能的车道提前模拟一遍,选一条能最快到位且不压线的,直接打满方向冲过去”。决策频率越高,效果越接近理想状态。
1.2 有限控制集MPC究竟“控制”什么
FCS里的“有限控制集”,指的是逆变器所有可输出的电压矢量是有限的。三相两电平逆变器有6个开关管,组成3个桥臂,每个桥臂上下管互补导通,所以总共有2的3次方等于8种开关组合。其中6个是非零电压矢量,幅值等于2Vdc/3,在αβ平面上把360度均分成6个扇区;另外两个是零矢量,也就是输出端直接短路到正母线或负母线。
每个控制周期要做的事如下:
- 采样当前输出电流、电网电压、直流母线电压;
- 对8个开关组合逐一计算对应的输出电压矢量;
- 用离散化的被控对象模型预测下一拍电流;
- 把预测值与参考值的误差代入代价函数;
- 选出代价函数最小的开关组合,输出PWM脉冲。
这个过程中没有调制器,没有PI参数,核心就在“预测模型”和“代价函数”两处。模型准不准,代价函数合不合理,直接决定控制性能。也正因为如此,FCS-MPC特别依赖准确的系统模型和合适的采样频率。
1.3 LCL滤波器的存在感和麻烦
LCL滤波器用在逆变器和电网之间,比单个L滤波器“过滤”能力更强。同样体积磁芯条件下,LCL对高频开关纹波的衰减更明显,高频段衰减斜率是-60dB/dec,单L只有-20dB/dec。所以在并网电流谐波指标要求高、又不想把电感线圈堆得太夸张的场合,LCL基本是标配。
但LCL有个天生的隐患:它本质是一个三阶谐振网络,存在一个谐振峰,而且这个谐振峰附近相位会剧烈变化。如果不做阻尼处理,系统可能在谐振频率附近失稳,表现出来就是输出电流上叠加高频振荡。更麻烦的是,FCS-MPC通常直接控制网侧电流,网侧电流不能直接反映电容支路的状态,等于控制器“看不到”谐振的存在,有时候看起来“控制得好好的”,实际电容电流已经抖成筛子。
所以LCL和FCS-MPC搭配使用时,有一个关键动作:必须在模型或代价函数里把阻尼信息补进去,要么用电容电流反馈做有源阻尼,要么在代价函数中增加一个电容电流惩罚项。这一点很多人第一次做的时候会漏掉,后面调试阶段就疯狂翻车。
1.4 为什么标题里是Matlab Simulink仿真
实验平台验证成本高,直接用DSP或FPGA调FCS-MPC,光是把ADC采样、计算延时、PWM输出这些时序对齐就够喝一壶。Simulink的价值在于它能直观地把主电路、控制算法和波形观测放在一张图上,改一个权重系数、拉一个波形出来看效果,比在硬件上改一次参数重新烧录快太多。
而且Simulink里做FCS-MPC,控制器部分用Matlab Function就能实现,不需要专门的DSP代码,推理成本低,适合先把算法思路、参数规律、边界条件摸清楚。等仿真验证完毕,再把Matlab Function改写成C代码,移植到DSP或FPGA上,整个开发链路非常顺。
2. 仿真模型的整体架构与参数设计
2.1 主电路参数:直流侧、交流侧、电网
我做的模拟项目是额定功率10kW,三相交流侧线电压380V,频率50Hz。直流母线电压取了700V,留出足够的调制度裕度。逆变器桥臂用理想开关模型,实际项目中替换成IGBT模型也适用,只要把导通压降和死区时间加上去就行。
主电路拓扑结构是:直流电压源接三相两电平逆变器,逆变器输出经过LCL滤波器后并入三相电网。控制目标是网侧电流,也就是LCL靠近电网那一侧的电感电流。
在Simulink里搭建时,我用的模块组合如下:
- 直流源:直接用DC Voltage Source,电压设为700V;
- 逆变器:用Three-Phase Two-Level Converter模块,也可以选Universal Bridge,桥臂数选3,开关器件选MOSFET或IGBT;
- LCL滤波器:每相用两个Series RLC Branch和一个Series RLC Branch并联支路搭出来;
- 电网:用Three-Phase Source,线电压380V,频率50Hz;
- 测量:用Three-Phase V-I Measurement同时测电压和电流,放到控制器输入端。
这里有一个容易踩的小坑:Three-Phase Source内部默认有短路容量和X/R参数,如果设得太大,电网在仿真里会“很软”,并网电流波形会带额外畸变。调试初期建议把Source内部的阻抗设为极小值或直接选并联大容量模型,让电网接近理想电压源,等算法跑稳了再加电网阻抗考验鲁棒性。
2.2 LCL滤波器参数计算
LCL参数不是随便拍的,要满足三个约束:总电感压降不超过额定值的10%,谐振频率在10倍基波频率和0.5倍开关频率之间,电容支路无功功率不超过额定功率的5%。
以10kW为例,相电压有效值220V,基准阻抗Zbase等于3倍相电压平方除以额定功率,算下来约14.5Ω。总电感取0.1倍基准阻抗再除以2π倍基波频率,也就是0.1乘14.5再除314,约为4.6mH。这里把总电感拆成逆变器侧L1和网侧L2,比例通常取3比7到6比4之间,我取了L1等于3.6mH,L2等于1mH。
电容Cf的取值上限按5%额定无功算,算出来是11μF左右,取整采用10μF。代入谐振频率公式:
谐振频率等于1除以2π乘以根号下L1乘L2除L1加L2再乘Cf。
把L1等于3.6mH、L2等于1mH、Cf等于10μF代入,L1和L2并联等效约0.78mH,再乘10μF等于7.8e-9,开根号约为8.8e-5,取倒数再除2π,谐振频率约在1.8kHz左右。这个频率高于10倍基波频率500Hz,低于0.5倍开关频率5kHz,满足经典经验范围。
最终参数表如下:
| 参数 | 符号 | 取值 |
|---|---|---|
| 额定功率 | P | 10kW |
| 直流母线电压 | Vdc | 700V |
| 电网线电压 | Vg | 380V/50Hz |
| 逆变器侧电感 | L1 | 3.6mH(含寄生电阻0.1Ω) |
| 网侧电感 | L2 | 1mH(含寄生电阻0.05Ω) |
| 滤波电容 | Cf | 10μF |
| 开关频率/采样频率 | fsw | 10kHz |
| 谐振频率 | fres | 1.8kHz |
2.3 控制周期与采样时间的选择
FCS-MPC的开关状态在每个采样周期更新一次,所以采样周期Ts和开关周期是同一个概念。我这里取10kHz,也就是Ts等于100微秒。这个频率下,8个电压矢量的枚举计算量很小,控制器压力不大,波形谐波指标也说得过去。
Ts选太大会有两个坏处:一是离散化模型误差变大,前向欧拉法在低频采样下偏差明显;二是控制刷新率低,等效开关频率偏低,电流纹波会变大。Ts选太小,虽然理论上预测更准,但每个周期留给MCU计算的时间窗口就变小,给后续做硬件移植埋雷。10kHz对大多数应用是一个比较折中的起点,先在这个频率下把逻辑调通,再根据硬件能力调整。
在Simulink里,控制器的采样速率通过零阶保持器或Rate Transition模块实现。主电路连续模型允许Simulink内部变步长,但我建议整个模型强制改成固定步长,步长设成Ts除以20到Ts除以10之间。我常用固定步长5微秒,也就是把100微秒的控制周期拆成20个小步,这样LCL的连续动态不会因为大步长被截断。
2.4 代价函数与权重系数的处理
FCS-MPC的代价函数是核心中的核心。最常见的并网电流控制,代价函数就是网侧电流在αβ轴上的预测值与参考值误差的平方和:
g等于参考α轴电流与预测α轴电流之差的平方,加上参考β轴电流与预测β轴电流之差的平方。
这个形式最简单,只有一个权重系数。当控制目标不只是电流跟踪,还要抑制LCL谐振、限制开关频率时,代价函数就要扩展成多目标加权形式。比如在函数里加入电容电流项来阻尼谐振,或者加入开关次数项来降低平均开关频率,每个附加项前面都有一个权重系数λ。
权重系数的调试没有公式可套,只能给经验方向:电流跟踪项的主导权要最大,权重设为1起步;电容电流阻尼项权重从0.1起步,逐步增大,观察网侧电流波形是否还带谐振纹波;开关次数惩罚项权重通常很小,在0.01到0.1之间,超过0.5就会明显拖慢动态响应。
我在实际调试中发现一个规律:权重系数对性能的影响不是线性的。某项权重调到足够大之后,再往上加也没多少变化,反而把其它目标的性能拖垮。所以调参时先固定电流项权重为1,然后单独扫另一个权重,每次只动一个参数,记录波形变化。不要同时调两个系数,不然出了问题根本不知道是谁的锅。
3. Simulink中FCS-MPC控制器的实现
3.1 整体模型拓扑
在Simulink里,模型分三块:主电路、测量与采样、控制器。主电路和图一摆放的位置一样,也不需要额外说明。关键是测量与控制器之间的连接方式。
测量模块输出的电压电流是连续波形,而控制器是一个离散系统,需要用零阶保持器把连续信号变成每100微秒刷新一次的采样值。这里我习惯直接用Rate Transition模块,把连续信号转成离散信号,然后进入Matlab Function。Matlab Function内部要显式声明输入端口,端口名对应到函数参数名,注意Simulink里端口顺序不能搞错。
控制器输出端是两个维度的问题。如果直接输出6路PWM脉冲,需要6个输出端口。我习惯输出3路桥臂开关状态逻辑,0或1,然后送到一个PWM Generator的补充逻辑里,由它生成互补的上下管信号,并加入死区时间。这样做的好处是后面接硬件时,死区逻辑有一个正规入口,不会因为忘了加死区导致上下管直通。
3.2 预测模型的数学离散化
先写简化的L滤波器形式,帮助理解,再扩展到LCL。对于单L情况,网侧电流的连续域方程是:
L乘di/dt等于逆变器输出电压减去电网电压。
用前向欧拉法离散化,得到:
i(k+1)等于1减Ts乘R除L,乘以i(k),加Ts除L乘以v(k)减e(k)。
这个式子很简单,代入8个候选电压矢量,就能得到8个预测电流。
LCL是三阶系统,状态向量包含L1电流、电容电压、L2电流。连续域状态方程写成矩阵形式,然后同样做离散化。在Matlab Function里直接调用的办法是预先用连续状态空间矩阵算好离散矩阵Ad、Bd、Gd,每个控制周期只做矩阵乘法,不需要在线求解微分方程。
我实际代码里的写法类似这样:
x_k1 = Ad * x_k + Bd * v_k + Gd * e_k;其中x_k是当前时刻状态向量,v_k是候选电压矢量,e_k是电网电压。计算量很小,一个采样周期内枚举8次矩阵乘法,耗时在微秒级,DSP跑起来毫无压力。
3.3 枚举法与代价函数计算的过程
完整的枚举流程如下:
先将三相电流和电网电压做Clark变换,得到αβ坐标系下的分量。然后构造8个开关状态矩阵,每行代表一个开关组合。对每个开关组合,计算输出电压矢量vαβ,注意vαβ等于开关状态向量乘一个和Vdc相关的矩阵关系。接着代入离散预测模型,算出下一拍电流。最后把所有预测电流和参考电流代入代价函数,记录最小值对应的开关状态序号。
参考电流从哪里来?如果是恒定功率并网,直接把参考电流的d轴分量设成目标值,q轴设成0,再通过电网电压相角做Park反变换得到αβ轴参考。如果要做直流母线电压外环,则需要先加一个PI控制器把电压误差转成电流参考。我这里用的是恒定电流参考,方便聚焦MPC本身的性能。
关键代码如下:
function [Sa, Sb, Sc] = fcs_mpc(i2_abc, vg_abc, Vdc, i_ref_abc, x_l1, vc_abc) Ts = 1e-4; % 坐标变换 i_alpha = ... i_beta = ... e_alpha = ... e_beta = ... % 8个开关状态 states = [0 0 0; 0 0 1; 0 1 0; 0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1]; g_min = inf; for j = 1:8 % 根据开关状态计算输出电压 v_alpha = Vdc/3 * (2*states(j,1) - states(j,2) - states(j,3)); v_beta = Vdc/sqrt(3) * (states(j,2) - states(j,3)); % 预测下一拍状态 x_k1 = Ad * x_k + Bd * [v_alpha; v_beta] + Gd * [e_alpha; e_beta]; i2_pred_alpha = C * x_k1(1); % 从状态里取网侧电流 i2_pred_beta = C * x_k1(2); % 代价函数 g = (i_ref_alpha - i2_pred_alpha)^2 + (i_ref_beta - i2_pred_beta)^2; if g < g_min g_min = g; best_state = j; end end Sa = states(best_state, 1); Sb = states(best_state, 2); Sc = states(best_state, 3); end3.4 开关状态生成与延时补偿
很多初学者做FCS-MPC仿真时,直接把算出来的开关状态在当前周期末端送出去。这在仿真里能跑,但到了硬件上基本必死,原因是计算需要时间。从采样完成到算出结果,通常已经占了几乎一个采样周期,等真正更新PWM时,系统状态已经变了,用旧状态算出来的最优解可能已经不是最优。
解决办法是两步预测法。具体做法是:
在当前第k个采样周期,先采样得到当前状态x(k),然后用某个候选电压矢量预测出第k+1拍的状态x(k+1)。接着假设第k+1拍不更新输出电压,继续用同一个候选矢量再预测一拍,得到x(k+2)。代价函数用x(k+2)的网侧电流计算。这样算出来的最优开关状态,在第k+1拍开始时才真正施加到逆变器上,刚好抵消一拍的固有延时。
这个“延时补偿”几乎是FCS-MPC从仿真走向工程的分水岭。仿真里不去做,结果看起来也正常,但在实验平台上一跑就会发现问题,电流波形出现半周期的滞后性畸变。所以我的建议是仿真阶段就按带延时补偿的方式写,别给自己留偷懒的口子。
3.5 S-function和嵌入式函数的选择
Matlab Function在仿真里够用,但仿真速度很慢。原因是Matlab Function内部每次调用都要走一次解释器开销。如果整个仿真模型里只有控制器这一处Matlab Function,固定步长5微秒跑50毫秒仿真时间大概要几分钟,勉强能接受。
如果想提速,有几个办法:
- 把控制器改成C MEX S-Function,C代码编译成二进制后执行,速度能提升几十倍;
- 用Simulink的加速模式配合代码生成,把Matlab Function转成嵌入式C代码后仿真;
- 减少不必要的示波器模块,把波形先用To Workspace记录,仿真结束后统一绘图。
我个人建议顺序是:先用Matlab Function把算法调通、波形调好,再移植到C MEX验证速度,最后再生成硬件代码。不要一上来就啃C,调试成本太高。
4. 仿真结果怎么看:波形、谐波与性能指标
4.1 稳态波形判读
稳态看两个东西:并网电流波形是否正弦,是否和电网电压同频同相。
电流波形最直观。FCS-MPC输出的电流带明显的高频纹波是正常的,因为它没有调制器,输出电压矢量一拍一个样,电流只能在很小的范围内波动。关键看纹波是否在可接受范围,以及有没有低频包络畸变。如果电流波形出现周期性的“鼓包”或“塌陷”,通常是参考电流生成环节的问题,比如Park变换角度没对齐、参考幅值变化不平滑。
相位判断可以用一个Scope同时显示电网电压和并网电流,把电压缩小10倍后叠加在电流波形上看。单位功率因数下,电压过零点应该和电流过零点对齐。如果相位明显有偏,先查电网电压锁相环节,FCS-MPC本身不产生相位差,问题基本出在参考电流的角度生成上。
4.2 THD分析
THD是并网电流最硬性的指标。Simulink里用Powergui自带的FFT Analysis工具,选稳态区间做FFT,重点看基波以下和开关频率边带的谐波分布。
在10kHz开关频率、LCL参数如前面的设计下,我的仿真稳态THD大约在2%到3%之间。注意这个指标是在理想电网下测的,实际电网带背景谐波后还会恶化。如果THD高于5%,先不要急着调权重系数,重新检查LCL参数是否落在谐振频率区间,再看有没有做有源阻尼。
还有一个容易被误导的细节:FFT分析窗口不同,THD数值能差出好几个百分点。取稳态段的中段而非启动暂态段,窗口长度取整数个基波周期,最好取10个周期以上,结果才稳定。我用的是0.2秒到0.3秒之间的波形段,也就是10个基波周期。
4.3 动态响应:负载突变、功率阶跃
FCS-MPC的宣传点就是动态响应快。为了验证这一点,可以在参考电流d轴分量上加一个阶跃,比如从5kW的电流参考瞬间跳到10kW,看并网电流在多少个采样周期内跟上。
我的实测结果是:在10kHz采样下,电流从阶跃开始到进入新稳态的误差带,大约需要2到3个控制周期,也就是200到300微秒。这个速度比传统双闭环PI加SVPWM方案快得多,PI再怎么说也要经历积分过程,MPC是直接基于预测做出最优选择,天然没有积分滞后。
但要留个心眼:动态响应快不代表超调小。权重系数扫参时我发现,如果电流项权重过大,动态过程中电流会有明显的“过冲”现象,幅度可能达到稳态幅值的20%左右。这时候可以把参考电流的变化率限制一下,比如在生成参考电流时加一个斜坡限幅器,斜坡时间设5毫秒左右,既保留快速性又避免过冲。
4.4 权重系数λ对波形的影响
前面提过,代价函数里每一项前面都有权重。这里单独把权重系数对波形的影响说透。
对电流跟踪项本身,权重其实没有意义,因为代价函数里所有项都在同一个量纲下比较,电流项默认权重就是1。真正需要调的是其它项。以电容电流阻尼项为例,权重从0调到0.2的过程中,网侧电流的谐振纹波会明显减小;继续调到0.5以上,纹波改善变缓,但动态响应开始变慢,因为控制器把更多“注意力”放在了电容电流上,牺牲了对电流参考的跟踪。
这里有个通用调参方法:固定所有其它权重不变,把目标权重从零开始步进扫描,每次跑完记录电流THD和动态响应时间,画出一条权衡曲线,选曲线拐点处作为推荐值。这套方法虽然土,但比凭感觉调靠谱得多。
5. 常见问题与排查技巧实录
5.1 模型发散、电流飞掉
仿真一启动,电流直接发散到天上,这是最常见的翻车现场。查以下四个方向:
- 离散化步长和采样周期不匹配。Simulink里固定步长设得太大,LCL的高频动态没有被正确解析,模型自然发散。把仿真步长降到Ts的十分之一以下,也就是5微秒以内。
- 离散化矩阵Ad、Bd算错。这种错最阴险,因为代码不报错,但波形乱飞。用一组已知稳态工况手动代入验算几个步长,看预测值是否合理。
- 前向欧拉法在采样频率不足时误差过大。10kHz采样下前向欧拉对LCL这种三阶系统勉强够用,如果降到5kHz还不改离散算法,建议换双线性变换法算离散矩阵。
- 初始状态没设好。仿真从零状态开始,LCL电容初始电压为零,电网电压直接加在电容两端,启动瞬间电流冲击很大,可能让控制直接饱和。把电容初始电压设成电网电压的初始值可以缓解。
5.2 电流波形畸变、THD居高不下
波形正弦,就是THD一直偏高,优先检查参考电流的质量。如果参考电流本身就是正弦表查出来的离散阶梯波,那么跟踪目标本身就带谐波,输出一定坏。改用dq坐标系下恒定参考加Park反变换生成正弦波,谐波质量会好很多。
其次查LCL是否有有源阻尼。一个快速判断方法是把网侧电流波形和电容电流波形放在一起看,如果电容电流在某个频率上明显振荡,而网侧电流波形又有对应频率的毛刺,基本就是缺阻尼。
再一个隐蔽因素:电网电压采样质量。如果电网电压波形本身含谐波,而预测模型里用的是这个含谐波的采样值,控制器会把这个谐波当作“正常值”,输出的电流也跟着畸变。给电压采样通道加一个低通滤波器或陷波器,能显著改善THD。
5.3 LCL谐振尖峰问题
LCL谐振是并网逆变器的老话题。如果谐振频率处没有阻尼,即使FCS-MPC原理上看似能压制,实际仿真中也会看到网侧电流叠加明显的高频振荡,而且振荡频率恰好在谐振频率1.8kHz附近。
处理办法按优先级排列:
- 在代价函数里加入电容电流项,权重从0.1起调;
- 采样电容电压做反馈,构成有源阻尼环;
- 实在不想改代价函数,就在电容支路串一个小阻尼电阻,电阻值1欧姆以下,但会引入额外损耗,仿真里可以接受,实际工程要权衡。
我在仿真里验证过,单纯靠代价函数加电容电流项,阻尼效果完全够用,而且不损失效率。推荐优先试这个方案。
5.4 计算延迟导致控制性能下降
仿真里不带延时补偿,波形照样好看,但把同样的控制逻辑写成C代码放到样机上,电流波形立刻变差。原因前面说过,计算本身要时间。
我见过不少人在仿真里绕开延时补偿,理由是“反正仿真里不会有计算延迟”。这个想法很危险,因为滞后一拍带来的相位裕度损失,在仿真里会用“理想同步”掩盖掉。正确做法是从一开始就按“当前时刻算、下一拍执行”的时序来编写控制器,并且用第k+2拍的预测值做代价函数。
验证方法很简单:在控制器输出端加一个Delay模块,延迟一个采样周期,然后对比加与不加的电流波形。如果波形明显恶化,说明你的控制器目前没有做延时补偿,后面移植硬件必出问题。
5.5 仿真速度太慢的优化
Simulink跑FCS-MPC慢,主要瓶颈在Matlab Function的解释执行。一套LCL三阶模型加8次枚举,每个控制周期内的计算量其实不大,但解释器开销巨大。
优化手段按见效程度排列:
- 把控制器改成C MEX S-Function,速度提升最明显;
- 把不需要实时观测的内部变量注释掉,减少MATLAB工作区交互;
- 用Scope模块记录波形较少,改用To Workspace加10倍降采样后再绘图;
- 把Simulink模型里的连续状态减少,比如LCL里的寄生电阻串联的小惯性环节,能简化就简化。
有一点要提醒:不要因为仿真慢就把固定步长调大来“节省时间”。仿真步长和算法采样周期是两码事,调大步长会让误差淹没MPC的真实性能,最后调出来的权重参数全部失真,纯属白忙。
最后再分享一个小技巧:在Simulink里调试FCS-MPC,建议先把控制器里的预测模型“打通行”验证,然后关闭有功阻尼项,跑出一个有明显谐振但不发散的结果,记录这个波形。再打开阻尼项,对比两组的差别。这一步能帮你直观看到哪部分控制逻辑在起作用,比上来就把所有项都打开、出了波形成功却不知道为什么成功要扎实得多。仿真阶段把机理看明白,后面做实验平台就只是换一套执行环境而已。