Увеличьте линеаризацию блока

В этом примере показано, как увеличить линеаризацию блока с дополнительной динамикой с временной задержкой, с помощью функции спецификации линеаризации блока.

  1. Откройте модель Simulink®.

    mdl = 'scdFcnCall';
    open_system(mdl)

    Эта модель включает непрерывный объект времени, Plant, и контроллер дискретного времени, Controller. D/A блок дискретизирует объект выход со временем выборки 0,1 с. External Scheduler блок инициировал контроллер, чтобы выполниться с тем же периодом, 0,1 с. Однако триггер имеет смещение 0,05 с относительно дискретизированного объекта выход. По этой причине контроллер не обрабатывает изменение в опорном сигнале до 0,05 с после того, как изменение произойдет. Это смещение вводит задержку 0,05 с в модель.

  2. (Необязательно) Линеаризуйте модель с обратной связью в рабочей точке модели, не задавая линеаризацию для Controller блок.

    io = getlinio(mdl);
    sys_nd = linearize(mdl,io);
    

    getlinio функция возвращает точки ввода и вывода линеаризации, которые уже заданы в модели.

  3. (Необязательно) Проверка результат линеаризации по оценке частотной характеристики.

    input = frest.Sinestream(sys_nd);
    sysest = frestimate(mdl,io,input);
    bode(sys_nd,'g',sysest,'r*',{input.Frequency(1),input.Frequency(end)})
    legend('Linearization without delay',...
         'Frequency Response Estimation','Location','SouthWest')
    

    Точная линеаризация не составляет задержку, введенную смещением выполнения контроллера. Существует несоответствие в результатах между линеаризовавшей моделью и предполагаемой моделью, особенно на более высоких частотах.

  4. Запишите функцию, чтобы задать линеаризацию Controller блокируйтесь, который включает задержку.

    Следующая функция конфигурирования задает линейную систему, которая равняется линеаризации блока по умолчанию, умноженной на задержку. Сохраните эту функцию конфигурирования в местоположение на вашем пути MATLAB®. (В данном примере функция уже сохранена как scdAddDelayFcn.m.)

    function sys = scdAddDelayFcn(BlockData)
    sys = BlockData.BlockLinearization*thiran(0.05,0.1);

    Вход к функции, BlockData, структура, которую программное обеспечение автоматически создает каждый раз, когда оно линеаризует блок. Когда вы задаете функцию конфигурирования линеаризации блока, программное обеспечение автоматически передает BlockData к функции. Поле BlockData.BlockLinearization содержит текущую линеаризацию блока.

    Эта функция конфигурирования аппроксимирует задержку как a thiran фильтр. Фильтр указывает на приближение дискретного времени дробной задержки 0,5 периодов выборки. (0,05 задержки с имеют время выборки 0,1 с).

  5. Задайте функцию конфигурирования scdAddDelayFcn как линеаризация для Controller блок.

    1. Щелкните правой кнопкой по Controller блокируйтесь и выберите Linear Analysis > Specify Selected Block Linearization.

    2. Установите флажок Specify block linearization using one of the following. Затем выберите Configuration Function из выпадающего списка.

    3. Введите имя функции scdAddDelayFcn в текстовом поле. scdAddDelayFcn не имеет никаких параметров, поэтому оставьте незаполненную таблицу параметров.

    4. Нажмите OK.

  6. Линеаризуйте модель с помощью заданной линеаризации блока.

    sys_d = linearize(mdl,io);
    

    Линейная модель sys_d линеаризация модели с обратной связью, которая составляет задержку.

  7. (Необязательно) Сравните линеаризацию, которая включает задержку с предполагаемой частотной характеристикой.

    bode(sys_d,'b',sys_nd,'g',sysest,'r*',...
         {input.Frequency(1),input.Frequency(end)})
    legend('Linearization with delay','Linearization without delay',...
         'Frequency Response Estimation','Location','SouthWest')

    Линейная модель, полученная с заданной линеаризацией блока теперь, составляет задержку. Эта линейная модель является поэтому намного лучшим соответствием к действительной частотной характеристике модели Simulink.

Смотрите также

|