实测MATLAB/Simulink R2021b版本, 踩过仿真数据各式各样、结果分析毫无头绪的坑, 新手依照步骤逐一操作, 便能轻易躲开这类常见问题。 第一步:抓准关键信号与波形 把Simu……
实测MATLAB/Simulink R2021b版本, 踩过仿真数据各式各样、结果分析毫无头绪的坑, 新手依照步骤逐一操作, 便能轻易躲开这类常见问题。
第一步:抓准关键信号与波形
把Simulink模型开启之后, 径直对Scope模块进行双击操作, 于工具栏那儿点击“Data Inspector”按钮, 将仿真波形调入单独的窗口内。随后右键按住波形线, 选取“Display”菜单当中的“Legend”选项, 保证每一条信号都带有标签。接着右键点击波形, 选择“Cursor Measurements”, 拉出两条呈竖直状的游标线, 置于你所关注的两个时间点相应位置上。获取游标下方的Delta X值, 获取游标下方的Delta Y值, 此二者便是这一段区间之内的信号变化量。
【新手需防】 常遇状况为游标拽不动或者数值未更新, 缘由是游标模式未开启, 或者波形经缩放后忘记恢复。应对举措: 首先点击工具栏里的“Fit View”按钮以使波形呈全屏显现, 接着再度拉动游标。要将游标放置在波形线上, 而不可置于空白区域。
第二步:定位异常跳变与超调
于Data Inspector窗口左侧的信号列表之中, 勾选你打算重点加以检查的信号, 像电机转速或者输出电压之类。点击工具栏的“Peak Finder”按钮, 会跳出一个表格, 其自动列出所有极值点位置以及数值。要是发觉某个峰值显著超出稳态值5%以上, 那便是超调过大。右键点击该峰值行, 选择“Add Data Tip”, 表格里的那条数据便会在波形图上标示出一个红点。紧接着, 将游标进行拖动, 使其位置定位于此红点的临近区域, 接着, 查看此跳变前后之时的采样点数, 随之, 判断该跳变时间是不是短于1个采样周期。
新手需避坑的情形下, 常见的报错状况是, Peak Finder甄别出数量巨大的无关毛刺, 其缘由在于信号的噪声程度过大, 致使算法将噪声也误算成峰值 ,首先应对信号进行滤波处理, 在“Tools”菜单当中选择“Signal Processing”,进而调用一个构造简单且窗口长度设为 5 个采样点的移动平均滤波器, 之后再对 Peak Finder 重新进行运行, 则最优的滤波窗口长度为 5 , 如此一来既能压制住噪声, 又能够保证不失真。
第三步:对比理论值与仿真值
此步骤给出两种实际操作方案, 依据你的场景从中挑选其一。其中, 方案A为: 直接进行截图比对, 将仿真波形予以截图, 而后插入至Excel或者Word里, 手动去对照你通过手算得出的理论曲线, 该方案适用于校验简单的线性系统, 运行速度快然而精度较为一般。方案B是: 导出CSV数据用以作图, 在Data Inspector窗口点击“Export”按钮, 选择“To workspace”之后再选择“Array”, 将变量名填写为“sim_data”。而后于MATLAB命令行键入“plot(sim_data.Time, sim_data.Signals.Values)”, 与此同时运用hold on命令摞上加你手算的理论曲线。此方案适宜于非线性系统或者调参场景, 数据能够精准地对比出0.1%的误差。
对于新手而言, 存在一个需要避开的坑, 那就是常见的报错情况为导出的数组维度不符合要求, 出现这种情况的原因在于, 你选择了多个信号一同进行导出操作, 然而Simulink却将它们合成为了多维数组, 这就导致新手很容易在处理下标时出现混淆状况。针对此问题, 解决办法如下, 每次仅导出一个信号, 并且要把变量名清晰地写出来, 例如写成“speed_data”或者“voltage_data”。在导出之后, 要立刻在命令行中运用“size(sim_data.Signals.Values)”查看一下数组长度情况, 通过这种方式来确保其与理论数据长度保持一致。
第四步:定位完整报错并解决
一种情况是, 报错呈现为高频且完整的, 其内容为 “Trouble solving algebraic loop in block” , 这种情况通常会出现在反馈回路之中, 也就是当你将输出直接连接到输入, 或者运用了单步延迟不合法的模块时会发生。而存在一站式解决流程 , 它的第一步是 , 双击报错弹窗上面的 “Details” 按钮 , 从而找到具体报错的模块路径 其第二步是 , 在该module的输出端插入一个 “Unit Delay” 模块 , 以此给反馈增多一个采样周期的延迟 第三步则是 , 再次运行仿真。在出现依旧报错的状况时, 将反馈路径里的“Gain”模块的增益值由正数转变为负数, 以此来反转反馈极性。这样一套流程是能够解决90%以上的代数环问题的。
针对新手的避坑提示, 要是你于反馈路径里使用了 “Memory” 这个模块, 那它是不会消除代数环的, 必须得使用 “Unit Delay”, 这可是好多人反复遭遇问题的所在之处, 一定要牢记!
不适用场景与替代方案
纯数字逻辑电路仿真, 本方法并不适用, 因Simulink的Data Inspector处理布尔信号时, Peak Finder会失效, 替代的方案是切换到ModelSim或QuestaSim这类专业数字仿真工具, 借其波形窗口直接拉游标分析时序, 对于混合信号系统, 建议将模拟和数字部分分开仿真, 分别导出CSV后再拼合比对, 如此反而更高效。
微信扫一扫
还没有评论呢,快来抢沙发~