如果已经执行了 MIL(循环中的模型)仿真,为什么在 HIL(循环中的硬件)之前使用 SIL(循环中的软件)?

Why use SIL(Software in the Loop) before HIL(Hardware in the Loop) if MIL(Model in the loop) simulation is already performed?

我已经在 simulink 中实现了一个新的控制器逻辑,并使用 MIL(循环模型)仿真对其进行了测试。

  1. 在进入 HIL 之前是否必须执行 SIL?
  2. 什么样的错误可以在SIL中发现而在MIL中无法检测到?

请帮我举一个例子。

我不会说这是强制性的,但这是一个很好的做法。

通过进行 MIL 测试,您可以测试控制器逻辑在功能和算法上是否正确。当您转向 SIL 测试时,您实际上是在测试从模型生成的代码(对于控制器部分),而在 MIL 中,您是在测试在 Simulink 中实现的控制器算法,而不是 C 代码。当然,C 代码通常编译为 Windows DLL 用于 SIL 测试,因此您没有测试控制器的最终实现,但它仍然是朝着正确方向迈出的一步。如果您正在生成 C 代码并在最终控制器硬件上编译(与 PC 运行 连接工厂模型的串行连接),那就更好了。您没有测试的另一件事是实时执行。

基本上,使用 MIL,您可以检测在 Simulink 中实现的控制器是否适合代码生成(数据类型、采样时间等...)以及是否有任何 bugs/issues 代码的错误生成过程(不太可能但仍然可能)。

迁移到 HIL 让您更加自信,因为现在工厂模型和控制器模型 运行 都是实时的,因此您正在运行从控制器逻辑生成的代码,在其最终硬件上实现,在尽可能真实的条件下。

这一切都是为了在开发周期中降低风险并增强信心。