如果已经执行了 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(循环模型)仿真对其进行了测试。
- 在进入 HIL 之前是否必须执行 SIL?
- 什么样的错误可以在SIL中发现而在MIL中无法检测到?
请帮我举一个例子。
我不会说这是强制性的,但这是一个很好的做法。
通过进行 MIL 测试,您可以测试控制器逻辑在功能和算法上是否正确。当您转向 SIL 测试时,您实际上是在测试从模型生成的代码(对于控制器部分),而在 MIL 中,您是在测试在 Simulink 中实现的控制器算法,而不是 C 代码。当然,C 代码通常编译为 Windows DLL 用于 SIL 测试,因此您没有测试控制器的最终实现,但它仍然是朝着正确方向迈出的一步。如果您正在生成 C 代码并在最终控制器硬件上编译(与 PC 运行 连接工厂模型的串行连接),那就更好了。您没有测试的另一件事是实时执行。
基本上,使用 MIL,您可以检测在 Simulink 中实现的控制器是否适合代码生成(数据类型、采样时间等...)以及是否有任何 bugs/issues 代码的错误生成过程(不太可能但仍然可能)。
迁移到 HIL 让您更加自信,因为现在工厂模型和控制器模型 运行 都是实时的,因此您正在运行从控制器逻辑生成的代码,在其最终硬件上实现,在尽可能真实的条件下。
这一切都是为了在开发周期中降低风险并增强信心。
我已经在 simulink 中实现了一个新的控制器逻辑,并使用 MIL(循环模型)仿真对其进行了测试。
- 在进入 HIL 之前是否必须执行 SIL?
- 什么样的错误可以在SIL中发现而在MIL中无法检测到?
请帮我举一个例子。
我不会说这是强制性的,但这是一个很好的做法。
通过进行 MIL 测试,您可以测试控制器逻辑在功能和算法上是否正确。当您转向 SIL 测试时,您实际上是在测试从模型生成的代码(对于控制器部分),而在 MIL 中,您是在测试在 Simulink 中实现的控制器算法,而不是 C 代码。当然,C 代码通常编译为 Windows DLL 用于 SIL 测试,因此您没有测试控制器的最终实现,但它仍然是朝着正确方向迈出的一步。如果您正在生成 C 代码并在最终控制器硬件上编译(与 PC 运行 连接工厂模型的串行连接),那就更好了。您没有测试的另一件事是实时执行。
基本上,使用 MIL,您可以检测在 Simulink 中实现的控制器是否适合代码生成(数据类型、采样时间等...)以及是否有任何 bugs/issues 代码的错误生成过程(不太可能但仍然可能)。
迁移到 HIL 让您更加自信,因为现在工厂模型和控制器模型 运行 都是实时的,因此您正在运行从控制器逻辑生成的代码,在其最终硬件上实现,在尽可能真实的条件下。
这一切都是为了在开发周期中降低风险并增强信心。