由本人实际测试的是MATLAB/Simulink R2023b版本,曾遇到过因信号跳变致使结果与预期偏差超过20%的情况,对于新手而言,只要依照步骤一步步去操作,便能够轻松躲开这类常……
由本人实际测试的是MATLAB/Simulink R2023b版本,曾遇到过因信号跳变致使结果与预期偏差超过20%的情况,对于新手而言,只要依照步骤一步步去操作,便能够轻松躲开这类常见问题。
结果曲线为啥上蹿下跳
首先要处理信号毛刺方面的问题,接着去打开Scope模块,然后以右键针对波形图实施点击并选择Configuration Properties,再于Logging选项卡当中勾选Limit data points,最后输入固定数值50000。
新手要避开这样的坑,当出现报错说是“Simulink cannot log this signal”,一般原因在于信号线的类型属于离散值。解决的办法是对信号线进行双击操作,在Signal Attributes里面将Output data type改变成double,不要去使用默认的auto,因为auto会自行选择像int8这种低精度格式。
接着去处理采样时间并非处于一致状态的情况,双击任意一个模块,在 Sample time 当中统一填入 0.001,检查总线里边的所有信号路径,通过 Ctrl+D 更新模型之后查看状态栏的 Fixed step size 是否等于 1e – 3,倘若偏差超过 5%就会致使波形显示出现形态上的改变。
【新手需谨慎】在仿真运行结束之后,Scope所呈现的是空白状态,很大可能性是Start time以及Stop time的设置出现了颠倒情况。正确的操作方式为:Start time填写0.0,Stop time填写10.0。我曾见到过有人将其填反而耗费两小时进行Debug的。
误差太大怎么定位问题
数值求解器选用ode4作为核心参数最优值,相对容差设定为0.001,因为这就如同拍照时调节焦距,容差越小照片越清晰,然而计算量会变为原来的两倍,而把相对容差设为0.001是在精度与速度之间取得平衡,这样超标峰值误差能够被控制在3%以内。
制订一个方案对比,方案A:运用Powergui里的Phasor simulation,其长处是运行速度快,短处是仅能观察稳态,方案B:采用Discrete simulation,将样本时间设定为1e – 5秒,能够捕捉瞬态尖峰,在进行并网逆变器谐波分析时选择B,在开展长时间电压稳定性评估时才运用A。
刚开始接触的人要避免踩坑,仿真的结果出现跑飞的情况,是因为控制器的PI参数没有进行初始化。需要双击PID Controller,在Initial conditions那里填写0.01,而不是默认的0。要是默认是0的话,会致使启动瞬间积分器饱和,输出超出量程限幅,后续的数据都是无法使用的。
报错信息看不懂怎么办
高频出现完整的报错内容为:“Derivative of state ‘1’ in block ‘xxx’ at time 0.0 is not finite” ,解决的流程为:第一步,打开Solver配置,将Max step size从auto修改为0.0001。第二步,去查看模型当中是不是存在Algebraic loop,于Debug选项卡里边点击Diagnostics > Algebraic Loop,以此来查看是不是有红色高亮显示。在进行第三步操作时,需双击问题模块,接着将Output signal attribute里的Minimum以及Maximum,改成实际的物理范围,像电流限幅为[-500,500]这样的情况。
对于纯离散系统而言,这个排查方法并不适用。若模型之中全部都是离散模块,举例来说,像是全部运用了Z-domain的滤波器,那么就需要改用Fixed-step discrete solver并配合Tasking mode:SingleTasking。替代的方案是,在Powergui当中勾选Discretize electrical model,将连续的系统转变成离散状态后再运行,如此能够彻底绕开代数环问题。
微信扫一扫
还没有评论呢,快来抢沙发~