exponenta event banner

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

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

  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 содержит текущую линеаризацию блока.

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

  5. Укажите функцию конфигурации scdAddDelayFcn в качестве линеаризации для Controller блок.

    1. Щелкните правой кнопкой мыши Controller и выберите «Линейный анализ» > «Задать линеаризацию выбранного блока».

    2. Установите флажок Задать линеаризацию блока (Specify block linearization), используя один из следующих флажков. Затем в раскрывающемся списке выберите Configuration Function.

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

    4. Нажмите кнопку ОК.

  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.

См. также

|