Улучшить запуск модели Simulink из m-файла - PullRequest
2 голосов
/ 05 марта 2012

Сейчас у меня есть файл xm, который запускает модель y.mdl с помощью команды sim ('y').Параметры решателя из y.mdl не могут быть изменены, и все элементы в модели являются обязательными.Диагностических предупреждений нет.Все работает гладко. Выходные данные модели являются значением (параметры не изменяются во времени, области не видны ...).Просто двойное значение.Мне даже не нужно открывать модель.Вопрос: Есть ли способ улучшить производительность xm?

Заранее спасибо,

Джон

1 Ответ

1 голос
/ 05 марта 2012

Если все, что требуется, это выполнить модель с помощью команды sim, я бы сказал, что это будет кандидатом на создание S-функции.Если у вас есть набор инструментов Real Time Workshop, вы можете щелкнуть правой кнопкой мыши подсистему верхнего уровня, выбрать Real-Time Workshop, а затем Generate S-Function.Это создаст модель S-функции, которую вы можете сохранить как библиотеку и использовать в файле y.mdl вместо блока верхнего уровня.Этот метод будет генерировать и компилировать C-код, который будет выполняться намного быстрее, чем исходная модель.

Если вам нужно инициализировать определенные параметры, вы можете использовать маску Simulink и Simulink.Parameter.Сначала создайте подсистему, которую вы хотите смоделировать.Затем замаскируйте подсистему, щелкнув правой кнопкой мыши по подсистеме и нажав Mask Subsystem.Любой параметр, который вы хотите изменить, должен быть сопоставлен с маской.Итак, если в вашей модели 3 переменные, a, b и c.В редакторе масок перейдите на вкладку параметров и введите данные, подобные следующим:

Mask Editor

Затем в рабочей области введите Simulink.Parameter s для своих переменных:

a_var = Simulink.Parameter;
a_var.Value = 42;
b_var = Simulink.Parameter;
b_var.Value = 4;
c_var = Simulink.Parameter;
c_var.Value = 2;

Конечно, любое нужное вам значение - точное, скалярное, массивное, матричное и т. Д. Затем введите эти имена переменных в маску подсистемы:

Enter Mask Data

Затем, когда выщелкните правой кнопкой мыши, чтобы превратить в S-функцию, вы получите:

RTW Screen

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

evalin('base','a_var.Value = 22')

Это не мой любимый метод, но он работает.Надеюсь, это приведет вас туда, куда вам нужно.

...