Структуры настройки параметров с языком MATLAB

Чтобы сократить количество переменных рабочей области, необходимо обеспечить и избежать конфликтов по совпадению имен, можно сгруппировать тесно связанные параметры в структуры (см., Организуют Связанные Определения Параметров блоков в Структурах (Simulink)).

В этом примере, первоначальной модели xpcosc имеет четыре параметра, которые среди них определяют форму выходной формы волны.

БлокПараметрПолевое выражение структурыНачальное значение

Signal Generator

Freq

spkp.sg_freq

20

Gain

Gain

spkp.g_gain

1000^2

Gain1

Gain

spkp.g1_gain

2*0.2*1000

Gain2

Gain

spkp.g2_gain

1000^2

Создайте структуру параметра

  1. Открытая модель xpcosc и сохраните копию в рабочую папку.

  2. Создать структуру параметра, в Командном окне 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
    
  3. Сделать структуру параметра настраиваемой на целевом компьютере:

    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

Замените параметры блоков на поля структуры параметра

  1. В Signal Generator блокируйте, замените значение параметра Frequency с spkp.sg_freq.

  2. В Gain блокируйте, замените значение параметра Gain с spkp.g_gain.

  3. В Gain1 блокируйте, замените значение параметра Gain с spkp.g1_gain.

  4. В Gain2 блокируйте, замените значение параметра Gain с spkp.g2_gain.

Настройки параметров в структуре параметра

  1. Создайте и загрузите модель на целевой компьютер.

    rtwbuild('xpcosc');
    tg = slrt('TargetPC1');
    load(tg,'xpcosc');
  2. Установите время остановки на inf.

    tg.StopTime = inf;
  3. Разверните Gain значение Gain1 блок из 200 к 800.

    start(tg);
    for g = 200 : 200 : 800
        setparam(tg, 'spkp.g1_gain', g);
        pause(1);
    end
    stop(tg);
  4. Постройте график результатов.

    time = tg.TimeLog;
    output = tg.OutputLog;
    plot(time, output);

Сохраните и загрузите структуру параметра

Сохранить структуру параметра spkp для дальнейшего использования введите:

save 'ex_slrt_osc_struct.mat', 'spkp'

Чтобы загрузить структуру параметра, когда вы откроете модель, добавьте load команда к PreLoadFcn 'callback'. Чтобы удалить структуру параметра из рабочей области, когда вы закроете модель, добавьте clear команда к CloseFcn 'callback'. Для получения дополнительной информации смотрите Коллбэки Модели (Simulink).

Похожие темы