Введение в ускорение моделей

Simulink ® Accelerator™ ускоряет выполнение вашей модели, создавая и компилируя код С Этот код С занимает место интерпретационного кода, который Simulink использует в режиме normal mode (то есть, когда Simulink ® не находится в режиме Accelerator). Simulink Accelerator генерирует код C из модели Simulink и вызывает функцию MATLAB ® mex, чтобы скомпилировать и динамически связать сгенерированный код с Simulink. Этот процесс генерации и компиляции кода происходит в первый раз, когда вы ускоряете модель и в любой момент, когда изменения модели являются достаточно значительными, чтобы потребовать повторной генерации (для примера, сложения блока).

Следующий пример использует модель slAccelDemoF14, чтобы проиллюстрировать использование Simulink Accelerator.

Измерение времени без ускорения

Откройте модель slAccelDemoF14 и установите время остановки равным 3000 секунд. Симулируйте модель и время, сколько времени это занимает, используя TIC/TOC.

modelName = 'slAccelDemoF14';
open_system(modelName)
set_param(modelName,'stoptime','3000')
tic
sim(modelName);
toc
Elapsed time is 10.224818 seconds.

Включение Accelerator

Чтобы активировать Simulink ® Accelerator, в редакторе Simulink, на вкладке Simulation, в разделе Simulate, выберите Accelerator. Можно также выдать set_param команда в командной строке MATLAB ®.

set_param(modelName,'SimulationMode','Accelerator')

Создание временной рабочей директории

Поскольку выполнение в ускоренном режиме создает некоторые файлы, сначала перейдите во временную область.

originalDir = pwd;
tempDir = tempname;
mkdir(tempDir)
cd(tempDir)

Создание ускоренной модели

Создайте ускоренную модель и симулируйте ее. При запуске в режиме Accelerator можно запустить модель, выбрав Выполнить на вкладке Simulation или запустив команду:

    sim(modelName)

в подсказку MATLAB. В любом случае прогресс генерации кода будет отображаться в командном окне MATLAB. Чтобы подавить отображение, перетащите команду sim внутрь evalc.

evalc('sim(modelName);');

Симуляция ускоренной модели

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

tic
sim(modelName);
toc
Elapsed time is 2.968566 seconds.

Изменение настраиваемого параметра и симуляция ускоренной модели

Измените значение одного из настраиваемых параметров в модели и снова симулируйте модель. Заметьте, что ускоренная версия модели не должна быть повторно сгенерирована, и поэтому симуляция все еще запускается быстрее в режиме Accelerated, чем в режиме normal mode.

modelWorkspace = get_param(modelName,'ModelWorkspace');
evalin(modelWorkspace,'Mw=Mw*2;')
tic
sim(modelName);
toc
Elapsed time is 2.853928 seconds.

Очистка

Закройте модель и удалите сгенерированные файлы.

bdclose(modelName)
clear([modelName,'_acc'])
cd(originalDir)
rmdir(tempDir,'s')

Похожие темы