Можно встроить переменные MATLAB ® в базовую рабочую область с помощью команд MATLAB и использовать язык MATLAB для изменения их значений во время выполнения. В обычном режиме или в режиме ускорения Simulink ® переносит новые значения в моделируемую модель. Во внешнем режиме 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');