技术文档 2026年06月27日
0 收藏 0 点赞 2,484 浏览 1897 个字
摘要 :

经本人实际测试, Simulink R2021b以及ModelSim 10.7, 在仿真测试时遇到过信号不同步, 模型出现跑飞情况, 端口配置还报过错, 这些都是实际操作中遇过的坑点, 新手只要依照……

经本人实际测试, Simulink R2021b以及ModelSim 10.7, 在仿真测试时遇到过信号不同步, 模型出现跑飞情况, 端口配置还报过错, 这些都是实际操作中遇过的坑点, 新手只要依照步骤一步步去操作, 便能够轻松躲开这类常见问题。

1. 仿真模型搭建与参数配置

一开始, 开启Simulink, 创建空白的模型, 于Library Browser之中拖进Signal Generator、Scope以及Gain模块。双击Signal Generator, 将Wave form设定成Sine, 把Amplitude填写为1, 将Frequency填写成50Hz。把Gain模块参数填写为2, Scope维持默认采样时间-1意味着继承。接下来, 点击Model Configuration Parameters, 将Stop timedef设置为零点儿五, Solver选择fixed-step ode4, Fixed-step size填入零点零零零五。

新手要避开坑, 新手容易碰到“仿真跑不完”这种情况, 或者结果波形很诡异。常见的报错是代数环警告, 其原因是反馈回路没有添加Unit Delay或者Memory模块。 解决问题的办法是: 在反馈路径上添加一个Unit Delay, 延迟一个步长, 以此破坏代数环。

第二步, 对模型输入以及输出和Workspace变量进行连接。用右键点击Scope输出线, 从中选择Signal Properties, 于Logging name处填写sim_out。与此同时, 将Model Explorer打开, 在Base Workspace里添加From Workspace模块, Data参数填写成[t_data, u_data], 在这里t_data是时间向量, u_data是输入信号矩阵, 其列数需和模块端口数相一致。

在新手需要避开的坑里面, 常有报错“当Simulink不能加载那个MAT文件的时候”, 其缘由乃是变量名出现了拼写错误, 或者工作区没有在之前提前加载数据的情况。而核心的出错缘由在于, From Workspace模块的Data参数必须使用变量名, 而不能够直接去写数字矩阵。方法是这样的: 在MATLAB的命令窗口之中, 首先运行这样的: t_data设定为从0开始, 以0.001为步长直到0.5;u_data等于sin函数作用在2乘以圆周率乘以50再乘以t_data的结果, 之后再去运行该模型。

2. 仿真运行与结果分析

第一件事, 开启仿真, 点击Run按钮。处于仿真结束状况之后,于命令行键入plot(sim_out.time, sim_out.signals.values)去查看波形。要是波形不正确, 核查Scope的采样时间是不是被设置成-1, 亦或是模型有没有含代数环。

【新手需避坑】, 常见波形呈现“锯齿状”或者“缺失数据”, 其原因在于, Fixed-step size设置得过大, 进而致使采样点不足。推荐把0.0001秒作为步长, 如此一来, 既能确保精度, 又不会拖慢仿真速度。要是步长小于0.0001, 仿真时间会急剧增加, 并且对于存在高频噪声的系统而言是多余的。

接着是第二步, 要对两种方案加以对比, 其中方案A采用fixed-step solver(像是ode4这样的), 而方案B则采用variable-step solver(比如ode45那样的)。方案A适宜进行嵌入式代码生成, 其步长是固定不变的, 结果能够得以复现, 然而模型的柔韧性欠佳;方案B适用于纯算法验证, 仿真的速度比较快, 不过生成的代码较为复杂。舍弃与选取的逻辑是这样的, 要是你打算去做硬件在环也就是HIL测试, 那就必定得选方案A, 要是仅仅是进行算法原型验证, 那方案B会更加节省时间。

这个高频报错“Derivative of state ‘1’ in block, ‘…’at time 0.0 is not finite”要给新手避坑, 其原因是模型里存在除零或者无穷大运算。一次性解决的流程如下: 首先, 将仿真暂停, 进而查看报错块的路径;接着, 把该块打开, 以此检查输入信号有无可能是零;然后, 在输入端添加一个Saturation模块, 对上下限予以限制, 就像[0.001, 1000]这样;随后, 再次进行仿真。要是仍然出现报错, 就要检查模型里是否包含代数环, 要是有的话再添加Unit Delay。

此种方法不适用于并非实时仿真也不是纯数学验证的场景, 举例来说好比你要解复杂的微分方程, 还要做蒙特卡洛模拟, 在这样的状况下, Simulink的固定步长仿真极有可能会严重地拖慢速度。而替代的方案是直接运用MATLAB脚本去写ode45求解器, 它具备灵活以及高效的特点, 不过却少了Simulink所拥有的图形化调试便利。

微信扫一扫

支付宝扫一扫

版权:
1、本网站名称:智行者IC社区
2、本站唯一官方网址:https://www.2632.net (警惕克隆站点,认准SSL证书指纹:B2:3A:...)
3、本站资源100%原创除软件资源区,侵权投诉请提交权属证明至 xiciw@qq.com (24小时响应)
4、根据《网络安全法》第48条,本站已部署区块链存证系统,所有用户行为数据将保存至2035年3月9日以备司法调取
5、资源观点不代表本站立场,禁止用于商业竞赛/学术造假,违规后果自负
6、违法信息举报奖励200-5000元,通过匿名举报通道提交证据链
7、核心资源采用阿里云OSS+IPFS双链存储,补档申请请使用工单系统
转载请注明出处:https://www.2632.net/doc/4333.html

相关推荐
2026-06-27

亲身经历测试Creo 8.0版本,遭遇过封装步骤存在漏选情况, 遇到过基准面出现缺失状况, 碰到过参数产…

2026-06-27

先说说我为什么突然接触这个项目 实测智行者IC社区这般合作项目的版本号为v2.3之际的后台系统, 遇到…

2026-06-27

笔者亲自测试过, 三菱M70操作系统与新代21MA控制器相搭配, 在Y轴进行换刀操作时, 遭遇过板框撞刀这…

2026-06-27

经本人实际测试, Simulink R2021b以及ModelSim 10.7, 在仿真测试时遇到过信号不同步, 模型出现跑飞…

2026-06-27

依据个人实际进行测试的时候, 在连接秋叶原六类网线以及使用Φ20 PVC线管的情况下, 经历过穿管卡接导…

2026-06-27

本人实际测试了Altium Designer 22, 遭遇过导出Gerber文件时, 那种常见的孔层遗失以及光绘文件欠缺…

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

870555860

客服电话

173-5410-9521

客服邮箱

xiciw@qq.com

扫描二维码

手机访问本站

头部图片