Можно встроить MATLAB® переменные в базовом рабочем пространстве с командами MATLAB и языком MATLAB использования, чтобы изменить их значения во время выполнения. В режиме Connected IO или режиме Accelerator, Simulink® передает новые значения модели, которая симулируется. В режиме Run in Kernel 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 единичных интервалах. Ключевые show изменения фигуры.
Val == 30
Val == 90
Val == 180
Остановка выполнения.
set_param(model,'SimulationCommand','stop');