Чтобы уменьшить количество переменных рабочей области, которые вы должны поддерживать и избегать конфликтов по совпадению имен, можно сгруппировать тесно связанные параметры в структуры. См. «Организация определений параметров связанных блоков в структурах».
В этом примере исходная модель slrt_ex_osc
имеет четыре параметра, которые определяют форму выхода волны.
Блок | Параметр | Структурное выражение поля | Начальное значение |
---|---|---|---|
| Freq |
|
|
| Gain |
|
|
| Gain |
|
|
| Gain |
|
|
Эта процедура группирует некоторые тесно связанные параметры в структуры.
Откройте slrt_ex_osc
модели и сохраните копию в рабочую папку.
Чтобы создать структуру параметров, в MATLAB® Командное окно, введите:
kp = struct(... 'sg_freq', 20, ... 'g2_gain',1000^2, ... 'g1_gain', 2*0.2*1000, ... 'g_gain',1000^2)
kp = struct with fields: sg_freq: 20 g2_gain: 1000000 g1_gain: 400 g_gain: 1000000
Чтобы сделать структуру параметра настраиваемой на целевом компьютере:
spkp = Simulink.Parameter(kp);
spkp.StorageClass = 'ExportedGlobal';
spkp.Value
ans = struct with fields: sg_freq: 20 g2_gain: 1000000 g1_gain: 400 g_gain: 1000000
Чтобы сохранить структуру параметра spkp
для дальнейшего использования введите:
save 'slrt_ex_osc_struct.mat', 'spkp'
Чтобы загрузить структуру параметра, когда вы откроете модель, добавьте a load
команду в PreLoadFcn
коллбэк. Чтобы удалить структуру параметра из рабочей области, когда вы закроете модель, добавьте clear
команду в CloseFcn
коллбэк. Для получения дополнительной информации см. Раздел «Обратные коллбэки модели».
В Signal Generator
блокируйте, замените значение параметра Frequency на spkp.sg_freq
.
В Gain
блокируйте, замените значение параметра Gain на spkp.g_gain
.
В Gain1
блокируйте, замените значение параметра Gain на spkp.g1_gain
.
В Gain2
блокируйте, замените значение параметра Gain на spkp.g2_gain
.
Если вы не завершили шаги в Create Parameter Structure, Replace Block Parameters with Parameter Structure Fields, и Save and Load Parameter Structure, можно начать с использования завершенной модели.
Чтобы открыть модель, в Командном Окне MATLAB, введите:
open_system(fullfile(matlabroot, 'toolbox', 'slrealtime', ... 'examples', 'slrt_ex_osc_struct')); load(fullfile(matlabroot, 'toolbox', 'slrealtime', ... 'examples', 'slrt_ex_osc_struct.mat'));
Создайте и загрузите модель на целевой компьютер.
slbuild('slrt_ex_osc_struct'); tg = slrealtime('TargetPC1'); load(tg,'slrt_ex_osc_struct');
Установите время остановки равным inf
.
setStopTime(tg,inf);
Протяните Gain
значение Gain1
блок из 200
на 800
.
start(tg); for g = 200 : 200 : 800 setparam(tg, 'spkp.g1_gain', g); pause(1); end stop(tg);
Просмотрите сигналы в Данные моделирования Inspector.
Simulink.sdi.view;