本人实际测试了Simulink R2023a, 遇到过模型编译出现死锁以及求解器发生震荡这两个在具体实际操作过程中的坑点, 新手只要按照步骤一步步去操作, 便能够轻松躲开这类常见……
本人实际测试了Simulink R2023a, 遇到过模型编译出现死锁以及求解器发生震荡这两个在具体实际操作过程中的坑点, 新手只要按照步骤一步步去操作, 便能够轻松躲开这类常见的问题。在进行嵌入式控制算法验证时, 仿真并非仅仅是让代码简单地运行成功, 而是要实现对物理环境的高保真映射。许多初学者容易陷入一种“只要能运行就可以”的错误认知误区, 结果在实机调试的时候发现噪声完全不匹配, 这通常是由于初始的参数假设太过理想化所导致的。
仿真测试工具怎么选才不踩雷
选型的核心之处在于明确你所拥有的信号类型, 倘若属于纯数字逻辑或简单模拟电路范畴, 那么SPICE类工具便已足矣, 而一旦涉及复杂机电耦合或者实时控制策略领域, 那就必须要选择支持代码生成的平台才行的, 关键参数其最优推荐值乃是将采样时间设定为1e – 4秒, 此数值在大多数的工业电机控制场景当中, 既能够捕捉到高频谐波,又不至于因为步长过小导致计算资源发生爆炸现象。
这儿对两种主流方案予以对比, 一种是基于模型的仿真, 也就是MBD, 另一种是基于硬件在环, 即HIL。MBD的优势在于前期迭代速度较快, 不需要昂贵的设备, 非常适合算法验证阶段。HIL尽管初期投入比较大, 然而能够真实地反映时序抖动以及非线性延迟。要是你的项目处于原理验证期, 那就选择MBD。要是进入量产前的回归测试, 那就必定要采用HIL。
【新手避坑】
常见报错现象:模型运行缓慢甚至卡死。
核心出错的缘由在于, 离散模块跟连续模块混合运用之际, 并未设定正确的固定步长, 或者变步长的精度是欠缺的。
将仿真设置里的最大步长, 强制规定为最小模块周期的十分之一, 这是快速解决办法, 同时还要把不必要的日志记录给关上。
仿真测试工具高频报错怎么解
实操里碰到“Solver failed to keep pace”这样的错误, 堪称是最令人头疼的, 这种情况一般意味着刚性方程组求解器很难实现收敛, 在这个时候千万别盲目地进行重启, 而是要去仔细检查电路当中是不是存在理想电压源并联电容, 或者存在理想电流源串联电感等类似的拓扑禁忌。
当进入第一步时, 要去打开Model Settings, 接着把Solver Type从Variable-step更改为Fixed-step, 如此这般能够明显地减少求解器的动态调整所产生的开销。在第二步里, 于Discrete模块当中, 务必要保证所有的时钟信号处于同步状态, 以此避免亚稳态竞争情况的出现。到了第三步, 需对参数数值展开检查, 把积分器的初始条件设定为零, 进而排除历史状态所带来的干扰。这三个步骤直接命中痛点之处, 能够解决超过80%的非功能性报错问题。
【新手避坑】
常见报错现象:积分发散,波形出现无穷大尖峰。
核心出错的缘由在于, 设置了极小的电阻进行并联于较大的电容, 此状况导致刚性系统得以成形。
快捷的解决途径: 放进小型串联电阻了, 或者采用专门的刚性求解器了, 就像那个ode23t 。
【新手避坑】
常见报错现象:代码生成失败,提示数据类型不匹配。
造成核心出现错误的主要缘由在于, Simulink所采用的是默认的浮点运算方式, 然而目标控制器却是基于定点数的。
迅速的解决途径是, 开启Fixed-Point Designer, 确切地指明整型范畴, 避开溢出。
这套方法不是万能的, 针对超高频射频电路, 或者量子效应显著的微观器件, 传统集总参数仿真会失效, 需要改用场路协同仿真, 或者第一性原理计算。要是属于这类场景, 建议切换到HFSS, 或者COMSOL等多物理场专用工具, 虽然学习曲线很陡, 但是精度更有保障。
微信扫一扫
还没有评论呢,快来抢沙发~