Установите время шага в качестве переменной в экспортированном коде Simulink
Я разработал контроллер в Simulink и пытаюсь экспортировать его как чистый класс C, используя Simulink кодер для развертывания на нашем микроконтроллере. Мы используем решатель с фиксированным шагом в симуляции, однако, когда экспортированный код используется на нашем реальном предприятии, фактический размер шага может изменяться в зависимости от загрузки процессора.
Моя проблема заключается в следующем: скажем, я установил фиксированный шаг по времени в 0,05 с при моделировании (и поэтому экспортированный код предполагает, что он выполняется каждые 0,05 с), но затем микропроцессор иногда выполняется через 0,1 с, а иногда после 0,03 с, и т.д. Я думаю, что это может привести к нежелательному поведению.
Есть ли способ заставить Simulink-кодировщик создать переменную для времени шага, которую мы можем настроить во время выполнения? То есть измерьте, сколько времени прошло с момента последнего выполнения, и затем заполняйте переменную во время каждого выполнения.
По аналогии, в программировании видеоигр функции обновления обычно включают dt
Параметр, поэтому мы знаем, сколько времени прошло с последнего кадра.
Единственное решение, которое я могу найти, - это вручную искать и заменять размер шага во всех блоках интегратора после генерации кода. Это, однако, кажется подверженным ошибкам.