Чтобы сократить количество переменных рабочей области, необходимо обеспечить и избежать конфликтов по совпадению имен, можно сгруппировать тесно связанные параметры в структуры. Смотрите Организуют Связанные Определения Параметров блоков в Структурах.
В этом примере, первоначальной модели slrt_ex_osc имеет четыре параметра, которые определяют форму выходной формы волны.
| Блок | Параметр | Полевое выражение структуры | Начальное значение |
|---|---|---|---|
| Freq |
| 20 |
| Gain |
| 1000^2 |
| Gain |
| 2*0.2*1000 |
| Gain |
| 1000^2 |
Открытая модель 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.Valueans =
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 'callback'. Чтобы удалить структуру параметра из рабочей области, когда вы закроете модель, добавьте a clear команда к CloseFcn 'callback'. Для получения дополнительной информации смотрите Коллбэки Модели.
В Signal Generator блокируйте, замените значение параметра Frequency с spkp.sg_freq.
В Gain блокируйте, замените значение параметра Gain с spkp.g_gain.
В Gain1 блокируйте, замените значение параметра Gain с spkp.g1_gain.
В Gain2 блокируйте, замените значение параметра Gain с spkp.g2_gain.
Если вы не завершились, шаги в Создают Структуру Параметра, Параметры блоков Замены с Полями Структуры Параметра, и Сохраняют и Структура Параметра Загрузки, можно запустить при помощи завершенной модели. Чтобы открыть модель, в командном окне MATLAB, введите:
open_system(fullfile(matlabroot, 'toolbox', 'slrealtime', ... 'examples', 'slrt_ex_osc_struct')); load(fullfile(matlabroot, 'toolbox', 'slrealtime', ... 'examples', 'slrt_ex_osc_struct.mat'));
Создайте и загрузите модель на целевой компьютер.
rtwbuild('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);
Просмотрите сигналы в Инспекторе Данных моделирования.
Simulink.sdi.view;