Можно встраивать MATLAB® переменные в базовом рабочем пространстве с командами MATLAB и с помощью языка MATLAB изменяют свои значения во время выполнения. В режиме normal или Accelerator, Simulink® переносит новые значения в моделируемую модель. Во режиме external mode Simulink переносит новые значения в приложение реального времени, которое работает в процессе режима ядра.
В данном примере ваша цель состоит в том, чтобы минимизировать звонок в передаточной функции. Для улучшенной производительности у вас есть встроенные параметры блоков. Когда вы входите в параметры блоков, параметры появляются как нетронутые константы в сгенерированном коде. Чтобы сделать отдельный параметр настраиваемым, используйте переменный MATLAB с классом памяти, отличным от Auto
для хранения параметра в памяти.
Можно постоянно хранить объекты параметров и другие внешние данные в словаре данных.
Эта процедура использует модель передаточной функции квадратной волны sldrtex_inlined
. Чтобы открыть эту модель, в Командном Окне MATLAB, введите:
open_system(docpath(fullfile(docroot,'toolbox',... 'sldrt','examples','sldrtex_inlined')))
Сначала установите ядро Simulink Desktop Real-Time™ и cd
в рабочую папку.
Откройте sldrtex_inlined
и блок Scope.
model = 'sldrtex_inlined'; open_system(fullfile(docroot, 'toolbox', 'sldrt', 'examples', model)); scname = [model '/Scope']; open_system(scname)
В базовом рабочем пространстве создайте объект параметра, сконфигурированный для хранения параметра как глобальной переменной.
Dmp = Simulink.Parameter([1 70 10000]);
Dmp.StorageClass='ExportedGlobal';
Замените Transfer Fcn параметров блоков Denominator
с объектом параметра.
xfername = [model '/Transfer Fcn']; set_param(xfername,'Denominator','Dmp');
Начните выполнение с исходного Dmp
значение переменных.
set_param(model,'StopTime','Inf'); set_param(model,'SimulationMode','external') set_param(model,'SimulationCommand','connect') set_param(model,'SimulationCommand','start')
Протяните Dmp
переменная от 30
на 180
по 30
.
for Val = 30 : 30 : 180 Dmp.Value = [1 Val 10000]; set_param(model,'SimulationCommand','update') pause(2.0) end
Блок Scope показывает изменения с интервалами 30 единиц. Рисунки показывают ключевые изменения.
Val == 30
Val == 90
Val == 180
Остановите выполнение.
set_param(model,'SimulationCommand','stop');