Запуск блока Simulink xPC с более высокой скоростью, чем непрерывная скорость - PullRequest
2 голосов
/ 04 сентября 2008

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

Что создает проблему: один блок читает устройство с очень высокой скоростью (500 Гц). Остальная часть приложения может и должна работать с более медленной скоростью (скажем, 25 или 50 Гц), потому что было бы излишним запускать ее с самой высокой скоростью, а процессор просто не может сжать полный цикл приложения до 0,002 с более быстрой скорости. Поэтому мне нужны обе ставки. Тем не менее, непрерывные состояния запускаются по определению в Simulink с более быстрой дискретной скоростью всего приложения! Это означает, что везде, где у меня есть непрерывные состояния, теперь они вынуждены работать на частоте 500 Гц, когда будет работать 25 Гц!

Есть ли способ заставить непрерывные состояния в цели xPC достичь скорости, которая не является самой быстрой в приложении? Или, в качестве альтернативы, есть ли способ позволить определенному блоку работать с большей скоростью, чем остальная часть приложения?

Ответы [ 3 ]

2 голосов
/ 04 сентября 2008

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

С Использование Simulink :

Непрерывные решатели используют числовые интеграция для вычисления модели непрерывные состояния в текущее время шаг из штатов в предыдущий раз шаги и производные состояния. Непрерывные решатели полагаются на модель блоки для вычисления значений дискретные состояния модели в каждый момент времени шаг.

Математики разработали широкий разнообразие численного интегрирования методы решения обычных дифференциальные уравнения (ОДУ), которые представляют непрерывные состояния динамические системы. Simulink обеспечивает обширный набор фиксированного шага и непрерывные решатели с переменным шагом, каждый реализация конкретного решения ODE метод (см. Решатели).

Дискретные решатели существуют главным образом для решать чисто дискретные модели. Oни вычислить следующий шаг моделирования времени для модели и ничего больше. Они делают не вычислять непрерывные состояния, и они полагаться на блоки модели для обновления дискретные состояния модели.

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

Чего вы пытаетесь достичь, замедляя непрерывные решатели? Это время моделирования / проблема производительности?

-Adam

0 голосов
/ 15 октября 2009

Действительно непрерывные вычисления невозможны в цифровом процессоре, таком как ваш компьютер.

Что MATLAB / Simulink подразумевает под «непрерывным», так это «я (динамически) попытаюсь угадать, какой размер дискретного шага достаточно мал, чтобы ошибка дискретизации в вашем приложении была очень мала».

Если вы уже знаете, зная ваше приложение, что 20 мс (50 Гц) будет достаточно малым, используйте дискретное значение - 50 Гц.

0 голосов
/ 04 сентября 2008

Я считаю, что это невозможно. Один из способов подойти к этому - заменить непрерывные состояния дискретными (возможно, с промежуточной частотой, скажем, 100 Гц) и скрестить пальцы, чтобы потеря точности была терпимой.

Возможно, можно как-то изолировать блок и запустить его отдельно с большей скоростью, но я не знаю.

...