我在 Simulink 中开发了一个控制器,并尝试使用 Simulink 编码器将其导出为纯 C 类,以便部署在我们的微控制器上。我们在模拟中使用固定步长求解器,但是,当导出的代码在我们的实际工厂中使用时,实际步长可能会根据处理器的负载而变化。
我担心的是:假设我在模拟中将固定时间步设置为 0.05 秒(因此导出的代码假定它每 0.05 秒执行一次),但是微处理器有时会在 0.1 秒后执行,有时会在 0.03 秒后执行,等等。我认为这会导致一些不受欢迎的行为。
有没有办法让 Simulink 编码器创建一个我们可以在运行时调整的步进时间变量?也就是测量自上次执行以来的时间,然后在每次执行时填写变量。
打个比方,在视频游戏编程中,更新函数通常包含一个dt
参数,因此我们知道它距离上一帧已经过去了多长时间。
我能找到的唯一解决方案是在生成代码后手动搜索和替换所有积分器块中的步长。然而,这似乎容易出错。