slTuner ИнтерфейсДля настройки системы управления по расписанию усиления необходимо сделать модель Simulink ® линеаризованной для массива моделей LTI, соответствующих различным рабочим условиям, которые являются точками проектирования. Таким образом, после получения семейства линейных моделей растений, как описано в разделе Модели растений для настройки контроллера усиления, необходимо связать его с slTuner интерфейс с моделью Simulink. Для этого используется подстановка блоков. slTuner заменить подсистему установки модели массивом линейных моделей. Этот процесс создает семейство настраиваемых моделей с замкнутым контуром в пределах slTuner интерфейс.
Предположим, что имеется массив линейных моделей растений, полученных в каждой рабочей точке расчетной сетки. В наиболее простом случае выполняются следующие условия:
Линейные модели в массиве точно соответствуют подсистеме установки в модели.
Кроме элементов, которые требуется настроить, в модели ничего другого не зависит от переменных планирования.
Для модели Simulink mdl содержащий подсистему установки Gи массив линейной модели Garr , которая представляет растение в сетке точек проектирования, следующие команды создают slTuner интерфейс:
BlockSubs = struct('Name','mdl/G','Value',Garr); st0 = slTuner('mdl',{'Kp','Ki'},BlockSubs);
st0 содержит семейство линейных моделей с замкнутым контуром, каждая из которых линеаризована в точке проектирования и каждая с соответствующим линейным растением, вставленным для G. Если 'Kp'и 'Ki' являются спецификациями усиления, которые требуется настроить (например, таблицы поиска), их можно параметризовать с помощью настраиваемых поверхностей усиления, как описано в разделе Параметризация спецификаций усиления, и настроить их.
В других случаях линеаризованный массив моделей установки может не соответствовать подсистеме установки в модели Simulink. Или, возможно, потребуется заменить другие части модели, которые изменяются в зависимости от рабочих условий. В таких случаях требуется больше осторожности при построении правильной подстановки блоков. В следующих разделах освещается несколько таких случаев.
Рассмотрим, например, модель следующей иллюстрации.

Эта модель имеет внутренний контур с регулятором пропорционального усиления. Контроллер представлен таблицей подстановки Kp_in и блок продуктов prod. Внешний контур включает в себя PI-контроллер с пропорциональными и интегральными коэффициентами усиления, представленными таблицами поиска. Kp и Ki. Все графики усиления зависят от одной и той же переменной планирования alpha.
Предположим, что требуется настроить расписание усиления внутреннего контура Kp_in при разомкнутом внешнем контуре. С этой целью получается массив линейных моделей G_in из входных данных u к продукции {q,alpha}. Этот массив модели имеет неправильные размеры ввода-вывода для использования в качестве подстановки блоков для G. Поэтому надо «подушечку» G_in с дополнительным выходным измерением.
Garr = [0; G_in]; BlockSubs1 = struct('Name','mdl/G','Value',Garr);
Кроме того, можно снять весь эффект внешнего контура, заменив блок изменяющегося ПИД-контроллера системой, которая линеаризуется до нуля при всех рабочих условиях. Поскольку этот блок имеет три входа, замените его системой нуля с 3 входами и одним выходом.
BlockSubs2 = struct('Name','mdl/Varying PID Controller','Value',ss([0 0 0]));
При таких замещениях блоков следующие команды создают slTuner интерфейс, который можно использовать для настройки графика усиления внутреннего контура.
st0 = slTuner('mdl','Kp_in'); st0.BlockSubstitutions = [BlockSubs1; BlockSubs2];
Посмотрите пример Угловой Контроль за Уровнем в автопилоте HL-20 для другого случая, в котором несколько элементов кроме самого завода заменены заменой блока.
Далее предположим, что вы уже настроили расписание усиления внутреннего контура и получили массив Kp_in_tuned, значений Kp_in которые соответствуют каждой расчетной точке (каждое значение alpha при котором вы линеаризовали растение). Предположим также, что у вас есть новый Garr это полный завод из u кому {y,q,alpha} линеаризуют с закрытым настроенным внутренним контуром. Чтобы настроить графики усиления внешнего контура, необходимо заменить блок продукта массивом Kp_in_tuned. Важно отметить, что вы заменяете точку впрыска, блок продукта. prod, а не таблицу подстановки Kp_in. Замена блока изделия эффективно преобразует его в переменный коэффициент усиления. Кроме того, необходимо обнулить первый вход блока продукта, чтобы удалить эффект таблицы поиска. Kp_in.
prodsub = [0 ss(Kp_in_tuned)]; BlockSubs1 = struct('Name','mdl/prod','Value',prodsub); BlockSubs2 = struct('Name','mdl/G','Value',Garr); st0 = slTuner('mdl',{'Kp','Ki'}); st0.BlockSubstitutions = [BlockSubs1; BlockSubs2];
На следующей иллюстрации части модели показан другой сценарий, в котором может потребоваться заменить блоки, изменяющиеся в зависимости от переменной планирования. Предположим, что переменная планирования alphaи где-то в вашей модели, сигнал u получает, разделенный на alpha.

Обеспечить, чтобы slTuner правильно линеаризует этот блок при всех значениях alpha в конструкторской сетке необходимо заменить ее массивом линейных моделей, по одной для каждой alpha значение. Этот блок эквивалентен отправке u через коэффициент усиления 1/alpha:

Таким образом, можно использовать следующую замену блоков в slTuner интерфейс, где alphagrid является массивом alpha значения в точках проектирования.
divsub = ss[(1/alphagrid), 0] BlockSubs = struct('Name','mdl/div-by-alpha','Value',divsub); st0.BlockSubstitutions = [st0.BlockSubstitutions; BlockSubs]
Каждая запись в массиве модели divsub делит свой первый вход на соответствующую запись в alphagridи обнуляет второй вход. Таким образом, эта замена дает желаемый результат. y = u/alpha.
Иногда имеющийся линейный массив модели не является точной заменой детали модели, которую требуется заменить. Например, рассмотрим следующую иллюстрацию подсистемы с тремя входами и одним выходом.

Предположим, что имеется массив линеаризованных моделей Garr соответствующие G. Можно настроить подстановку блоков для всей подсистемы G_full путем построения модели подстановки, которая воспроизводит эффект усреднения трех входных данных следующим образом:
Gsub = Garr*[1/3 1/3 1/3]; BlockSubs = struct('Name','mdl/G_full','Value',Gsub);
Иногда можно устранить несоответствие в размерах ввода-вывода путем заполнения входов или выходов нулями, как показано в разделе Множественные подстановки блоков. В других случаях может потребоваться выполнить арифметику другой модели с помощью таких команд, как series, feedback, или connect построить подходящую замену.
Если завод в модели Simulink представлен системой LPV, при создании slTuner интерфейс для настройки графиков усиления. slTuner не может считывать массив линейной модели непосредственно из системного блока LPV. Однако для подстановки блока можно использовать массив линейной модели, указанный в блоке, если он соответствует точкам проектирования, для которых выполняется настройка. Например, предположим, что ваш завод является системным блоком LPV, LPVPlant, который задает массив модели PlantArray. Можно настроить подстановку блоков для LPVPlant следующим образом:
BlockSubs = struct('Name','mdl/LPVPlant','Value',PlantArray);
slTuner(Проект управления Simulink)