Установите время шага в качестве переменной в экспортированном коде Simulink - PullRequest
0 голосов
/ 29 января 2019

Я разработал контроллер в Simulink и пытаюсь экспортировать его как чистый класс C, используя Simulink кодер для развертывания на нашем микроконтроллере.Мы используем решатель с фиксированным шагом в симуляции, однако, когда экспортированный код используется на нашем реальном предприятии, фактический размер шага может измениться в зависимости от загрузки процессора.

Моя проблема заключается в следующем: скажем, у меня естьустановите фиксированный временной шаг равным 0,05 с в симуляции (и поэтому экспортированный код предполагает, что он выполняется каждые 0,05 с), но затем микропроцессор иногда выполняется через 0,1 с, а иногда после 0,03 с и т. д. Я думаю, что это может вызвать некоторыенежелательное поведение.

Есть ли способ заставить Simulink-кодировщик создать переменную для времени шага, которую мы можем настроить во время выполнения?То есть измерьте, сколько времени прошло с момента последнего выполнения, а затем заполняйте переменную во время каждого выполнения.

Для аналогии, в программировании видеоигр функции обновления обычно включают параметр dt, поэтому мы знаемсколько времени прошло с последнего кадра.

Единственное решение, которое я могу найти, - это вручную искать и заменять размер шага во всех блоках интегратора после генерации кода.Это, однако, кажется подверженным ошибкам.

...