使用Simulink仿真快速验证模型设计-初级

使用Simulink仿真快速验证模型设计

在完成模型设计之后,需要对其功能进行全面测试与验证。验证内容包括:功能逻辑性、数据有效性、边界值处理、以及潜在风险评估等。
在模型开发过程中,有多种测试方法可供选择,如MIL(Model-in-the-Loop)、SIL(Software-in-the-Loop)和HIL(Hardware-in-the-Loop)等等测试。这些方法能够全面测试模型,并生成详细的测试报告。在正规的企业级开发环境中,这些测试通常由专业的测试工程师负责,所需时间成本较高。
对于开发人员来说,模型设计完成后,首先需要对功能逻辑进行基本验证,确保模型可以运行且逻辑正确、功能正常。在时间允许的情况下,可以进一步进行更全面的测试。
如何能在最短的时间内,以最高效率验证逻辑?此时可以利用MATLAB自带的仿真功能。通过搭建一个仿真系统,可以高效验证模块的正确性和逻辑性。接下来,将通过示例方式帮助大家更好地理解与应用这一仿真功能。

案例Demo示例

需求描述

初始状态下小风扇关闭。
每按一次按键,小风扇的运行状态依次在以下模式之间切换:
关闭状态
50%风速运行(一档)
75%风速运行(二档)
100%风速运行(三档)
第四次按下按键时,小风扇返回关闭状态

模型设计实现

小风扇控制逻辑

详细的控制逻辑说明:
状态定义
STATE_OFF: 小风扇关闭状态。
STATE_Leve1: 小风扇以50%风速运行状态(一档)。
STATE_Leve2: 小风扇以75%风速运行状态(二档)。
STATE_Leve3: 小风扇以100%风速运行状态(三档)。
事件定义
EVENT_BUTTON_PRESS: 按下按键事件。
状态转移
初始状态为 STATE_OFF。
每次接收到 EVENT_BUTTON_PRESS 事件时,按以下顺序切换状态:
STATE_OFF -> STATE_Leve1
STATE_Leve1-> STATE_Leve2
STATE_Leve2-> STATE_Leve3
STATE_Leve3-> STATE_OFF

对模型进行仿真测试

仿真测试前的设置步骤

在进行仿真测试前,需要进行一些设置,以确保仿真过程的准确性和有效性。以下是详细的设置步骤:
SetJPG

  • 首先找到设置选项,一个带齿轮的图标,每个版本的设置位置可能会有差异,但是都可以在设置项中找到齿轮图标。

  • 点击打开设置菜单,然后选择"Solver"页面。这个页面是用于配置求解器的,它负责控制模型的计算方法。在"SolverSelection"选项中,将"Type"设置为"Fixed-step",这表示我们选择了固定步长的求解方式。一旦选择"Fixed-step",页面上将会出现"Solver details"的设置项。在这里,将步长值设置为0.01,意味着我们选择了固定步长,并且步长时间为0.01秒。

  • 为什么要进行这样的设置呢?因为在之前的默认设置中,系统会根据每个模块的运行时间自动进行判断。但为了确保在仿真过程中整个系统能够同步运行,避免出现难以解释的问题,我们需要将系统的仿真时间统一固定。这样,每个模块都将在同一时间周期内完成计算,从而保证仿真结果的一致性和可解释性。
    SolverSet

    • 完成所有设置后,点击Apply(应用)按钮,保存配置。
    • 点击OK(确定)按钮,关闭设置面板。
搭建仿真环境

仿真
具体模块的介绍放在本章的附录里了,请再附录查看

运行仿真
  • 在Simulink模型窗口中,点击Run(运行)按钮,开始仿真测试。
  • 仿真过程中,可以实时监控系统行为,并根据需要调整设置和参数。
    Run
    running
仿真结果

在仿真测试过程中,发现当第三次按下按键后,风扇输出仍然是75%,而预期应该是100%。这表明我们的控制逻辑存在问题。经过检查内部逻辑,发现代码中本该设置为100%输出的部分被误写成了75%,导致无法输出100%的风速。找到了一个BUG。点击停止 结束仿真后,对模型进行修改。**修改后记得保存
end
modified

再次仿真之后发现输出正确
仿真结果正确

总结

通过以上步骤,我们找到了控制逻辑中的一个BUG,并成功修正。重新仿真测试验证了修正效果,确保了控制逻辑的正确性和可靠性。调试过程中,注意保持良好的代码结构和注释,以便快速定位和修正问题。通过不断的仿真测试和优化,可以进一步提高系统的稳定性和性能。

附录

仿真环境中使用到的模块介绍

Push ButtonConstantDisplay
PushButtonConstantDisplay
PushButton作为整个系统的输入源,也是信号源;当按下时,此模块会输出高电平,松开时会输出低电平。可以在设置项中设置高电平的值Constant模块也是系统的输入和信号源,但其值是固定的,需要手动修改。这样在测试仿真时使用起来非常不便。若配合一些动态仿真实体模块(如PushButton),则使用会更加便捷。Display模块是系统的输出装置,相当于一个显示器,能够显示结果输出。它方便工程师实时观察和监控系统的运行状态。
注意:无法单独使用该模块,需要配合SourceBlock进行使用注意:可以单独使用该模块,配合仿真实体block更好使用无特别注意事项

模型文件

存放在 使用仿真快速验证模型设计-初级(文件)

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值