Параметризация графиков усиления

Как правило, системы управления с запланированным усилением в Simulink® используйте интерполяционные таблицы или блоки MATLAB Function, чтобы задать значения усиления как функцию от переменных планирования. Для настройки вы заменяете эти блоки параметрическими поверхностями усиления. A parametric gain surface является расширением базиса-функции, коэффициенты которого настраиваются. Для примера можно смоделировать изменяющуюся во времени k усиления (t) как кубический полином t:

k (<reservedrangesplaceholder5>) = <reservedrangesplaceholder4> 0 + <reservedrangesplaceholder3> 1 <reservedrangesplaceholder2> + <reservedrangesplaceholder1> 2 <reservedrangesplaceholder0>2 + <reservedrangesplaceholder1> 3 <reservedrangesplaceholder0>3.

Здесь k 0,..., k 3 являются настраиваемыми коэффициентами. Когда вы параметрируете запланированные усиления таким образом,systune может настроить коэффициенты поверхности усиления для достижения ваших целей управления при репрезентативном наборе условий работы. Для приложений, где коэффициент усиления изменяется плавно с переменными планирования, этот подход предоставляет явные формулы для коэффициентов усиления, которые программное обеспечение может записывать непосредственно в блоки MATLAB Function. Когда вы используете интерполяционные таблицы, этот подход позволяет вам настроить несколько коэффициентов, а не многие отдельные записи интерполяционной таблицы, резко сокращая количество параметров и обеспечивая плавность переходов между рабочими точками.

Базис функции

В контроллере, запланированном по расписанию усиления, запланированные усиления являются функциями переменных планирования, σ. Для примера запланированный по усилению ПИ-контроллер имеет форму:

C(s,σ)=Kp(σ)+Ki(σ)s.

Настройка этого контроллера требует определения функциональных форм Kp (σ) и Ki (σ), которые дают лучшую производительность системы в рабочей области значений σ значений. Однако настройка произвольных функций затруднена. Поэтому необходимо либо рассматривать значения функции только в конечном наборе точек, либо ограничивать общность самих функций.

В первом подходе вы выбираете набор проекта точек, σ и настраиваете коэффициент усиления Kp и Ki независимо в каждой точке проекта. Получившийся набор значений усиления хранится в интерполяционной таблице, управляемой переменными планирования, σ. Недостатком этого подхода является то, что настройка может привести к по существу различным значениям для соседних проектных точек, вызывая нежелательные переходы при переходе от одной рабочей точки к другой.

Кроме того, можно смоделировать усиления как сглаживающие функции σ, но ограничить общность таких функций с помощью определенных расширений базиса функций. Например, предположим, σ является скалярной переменной. Можно смоделировать Kp (σ) как квадратичную функцию σ:

Kp(σ)=k0+k1σ+k2σ2.

После настройки этот параметрический коэффициент усиления может иметь профиль, такой как следующий (конкретная форма кривой зависит от настроенных значений коэффициентов и области значений σ):

Или предположим, что σ состоит из двух переменных планирования, α и V. Затем можно смоделировать Kp (σ) как билинейную функцию α и V:

Kp(α,V)=k0+k1α+k2V+k3αV.

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

Для настройки графиков усиления с systune, вы используете parametric gain surface, которая является конкретным расширением коэффициента усиления в базисных функциях σ:

K(σ)=K0+K1F1(n(σ))++KMFM(n(σ)).

Базисные функции F 1,..., FM выбраны пользователем и фиксированы. Эти функции работают с n (σ), где n является функцией, которая масштабирует и нормализует переменные планирования до интервала [-1,1] (или интервала, который вы задаете). Коэффициенты расширения, K 0,..., KM, являются настраиваемыми параметрами поверхности усиления. K 0,..., KM могут быть скаляром или оценены в матрице, в зависимости от ввода-вывода размера K усиления (σ). Выбор функции базиса является зависимым от задачи, но в целом сначала попробуйте полиномиальные расширения низкого порядка.

Настраиваемые поверхности усиления

Используйте tunableSurface команда для создания настраиваемой модели поверхности усиления, дискретизированной по сетке проекта точек (σ значения). Например, рассмотрим коэффициент усиления с билинейной зависимостью от двух переменных планирования, α и V:

Kp(α,V)=K0+K1α+K2V+K3αV.

Предположим, что α является углом падения, который колеблется от 0 ° до 15 °, а V - это скорость, которая колеблется от 300 м/с до 700 м/с. Создайте сетку проекта точек, которые охватывают эти области значений. Эти проектные точки должны совпадать со значениями параметров, при которых вы дискретизируете свое изменяющееся или нелинейное объект. (См. Модели объекта управления для настройки контроллера по расписанию усиления .)

[alpha,V] = ndgrid(0:5:15,300:100:700);
domain = struct('alpha',alpha,'V',V);

Задайте базисные функции для параметризации этой поверхности, α, V и αV. tunableSurface команда ожидает, что базисные функции будут организованы как вектор функций двух входных переменных. Для выражения базовых функций можно использовать анонимную функцию.

shapefcn = @(alpha,V)[alpha,V,alpha*V];

В качестве альтернативы используйте polyBasis, fourierBasis, или ndBasis чтобы сгенерировать базисные функции столько переменных планирования, сколько вам нужно.

Создайте настраиваемую поверхность с помощью проекта точек и базисных функций.

Kp = tunableSurface('Kp',1,domain,shapefcn);

Kp является настраиваемой моделью поверхности усиления. tunableSurface параметризирует поверхность как:

Kp(α,V)=K¯0+K¯1α¯+K¯2V¯+K¯3α¯V¯,

где

α¯=α7.57.5,V¯=V500200.

Поверхность выражается в терминах нормированных переменных, α¯,V¯[1,1]2 а не с точки зрения α и V. Эта нормализация, которая tunableSurface выполняет по умолчанию, улучшает кондиционирование оптимизации, выполненной systune. При необходимости можно изменить масштабирование и нормализацию по умолчанию. (См. tunableSurface).

Второй входной параметр в tunableSurface задает начальное значение постоянного коэффициента, K 0. По умолчанию K 0 является усилением, когда все переменные планирования находятся в центре их областей значений.tunableSurface берёт ввод-вывод размеры поверхности усиления из K 0. Поэтому можно создать настраиваемые усиления с учетом массивов, предоставив массив для этого входа.

Karr = tunableSurface('Karr',ones(2),domain,shapefcn);

Karr является матрицей 2 на 2, в которой каждая запись является билинейной функцией переменных планирования с независимыми коэффициентами.

Настраиваемое усиление с двумя независимыми переменными планирования

Этот пример показывает, как смоделировать скалярное усиление K с билинейной зависимостью от двух переменных планирования. Вы делаете это путем создания сетки проекта точек, представляющих независимую зависимость двух переменных.

Предположим, что первая переменная α является углом падения, который колеблется от 0 до 15 степени, а вторая переменная V является скоростью, которая колеблется от 300 до 600 м/с. По умолчанию нормированные переменные:

x=α-7.57.5,y=V-450150.

Поверхность усиления моделируется как:

K(α,V)=K0+K1x+K2y+K3xy,

где K0,...,K3 являются настраиваемыми параметрами.

Создайте сетку проектных точек (α, V), которые линейно разнесены в α и V. Эти проектные точки являются переменными планирования, используемыми для настройки коэффициентов поверхности усиления. Они должны соответствовать значениям параметров, при которых вы определили объект.

[alpha,V] = ndgrid(0:3:15,300:50:600);

Эти массивы, alpha и V, представляют независимое изменение двух переменных планирования, каждая из которых через свою полную область значений. Поместите их в структуру, чтобы задать расчетные точки для настраиваемой поверхности.

domain = struct('alpha',alpha,'V',V);

Создайте базисные функции, которые описывают билинейное расширение.

shapefcn = @(x,y) [x,y,x*y];  % or use polyBasis('canonical',1,2)

В массиве, возвращенном shapefcnбазисные функции:

F1(x,y)=xF2(x,y)=yF3(x,y)=xy.

Создайте настраиваемую поверхность усиления.

K = tunableSurface('K',1,domain,shapefcn);

Можно использовать настраиваемую поверхность в качестве параметризации для блока интерполяционной таблицы или блока MATLAB Function в модели Simulink. Или используйте команды соединения моделей, чтобы включить его в качестве настраиваемого элемента в систему управления, смоделированную в MATLAB. После настройки коэффициентов можно изучить полученную поверхность усиления с помощью viewSurf команда. В данном примере вместо настройки вручную установите коэффициенты ненулевые значения и просмотрите результат усиления.

Ktuned = setData(K,[100,28,40,10]);
viewSurf(Ktuned)

Figure contains an axes. The axes with title Gain K(alpha,V) contains an object of type surface.

viewSurf отображает поверхность усиления как функцию от переменных планирования для областей значений значений, заданных domain и хранится в SamplingGrid свойство поверхности усиления.

Настраиваемые поверхности в Simulink

В вашей модели Simulink вы моделируете графики усиления с помощью блоков интерполяционной таблицы, блоков MATLAB Function или блоков Matrix Interpolation, как описано в Модели Gain-Scheduled Системы управления в Simulink. Чтобы настроить эти поверхности усиления, используйте tunableSurface чтобы создать поверхность усиления для каждого блока. В slTuner интерфейс с моделью, назначьте каждую спецификацию усиления как блок для настройки и установите ее параметризацию на соответствующую поверхность усиления. Для образца, rct_CSTR модель включает в себя ПИ-контроллер с запланированным усилением, Concentration controller подсистема, в которой коэффициент усиления Kp и Ki изменяются с помощью переменной планирования Cr.

Чтобы настроить интерполяционные таблицы Kp и Ki, создайте настраиваемую поверхность для каждой. Предположим, что CrEQ является вектором проекта точек и что вы ожидаете, что усиления изменятся квадратично с Cr.

TuningGrid = struct('Cr',CrEQ);
ShapeFcn = @(Cr) [Cr , Cr^2];

Kp = tunableSurface('Kp',0,TuningGrid,ShapeFcn);
Ki = tunableSurface('Ki',-2,TuningGrid,ShapeFcn);

Предположим, что у вас есть массив Gd линеаризации подсистемы объекта, CSTR, в каждой из проекта точек CrEQ. (См. Модели объекта управления для настройки контроллера по расписанию усиления). Создайте slTuner интерфейс, который заменяет этот массив подсистемой объекта управления и определяет два блока интерполяционной таблицы для настройки.

BlockSubs = struct('Name','rct_CSTR/CSTR','Value',Gd);
ST0 = slTuner('rct_CSTR',{'Kp','Ki'},BlockSubs);

Наконец, используйте настраиваемые поверхности, чтобы параметризовать интерполяционные таблицы.

ST0.setBlockParam('Kp',Kp);
ST0.setBlockParam('Ki',Ki);

Когда вы настраиваете STO, systune настраивает коэффициенты настраиваемых поверхностей Kp и Ki, так что каждая настраиваемая поверхность представляет настроенное соотношение между Cr и коэффициент усиления. Когда вы записываете настроенные значения обратно в блок для валидации, setBlockParam автоматически генерирует настроенные данные интерполяционной таблицы путем вычисления настраиваемых поверхностей в точках останова, заданных в соответствующих блоках.

Для получения дополнительной информации об этом примере смотрите Gain-Scheduled Control of a Chemical Reactor.

Настраиваемые поверхности в MATLAB

Для системы управления, смоделированной в MATLAB®, используйте настраиваемые поверхности, чтобы создать более сложные элементы управления, запланированные по усилению, такие как ПИД-регуляторы, фильтры или контроллеры пространства состояний. Например, предположим, что вы создаете две поверхности усиления Kp и Ki использование tunableSurface. Следующая команда создает настраиваемое ПИ-контроллер по расписанию усиления.

C0 = pid(Kp,Ki);

Точно так же предположим, что вы создаете четыре матричные поверхности усиления A, B, C, D. Следующая команда создает настраиваемый контроллер запланированного по усилению пространства состояний.

C1 = ss(A,B,C,D);

Затем вы включаете запланированный по усилению контроллер в обобщенную модель всей вашей системы управления. Например, предположим G - массив моделей вашего объекта, выбранных в проектных точках, которые заданы в Kp и Ki. Затем следующая команда создает настраиваемую модель планируемой по усилению одноконтурной системы управления ПИД.

T0 = feedback(G*C0,1);

Когда вы соединяете настраиваемую поверхность с другими моделями LTI, полученная модель является массивом настраиваемых обобщенных genss модели. Точки проекта в настраиваемой поверхности определяют размерности массива. Таким образом, каждая запись в массиве представляет систему с соответствующим значением переменных планирования. The SamplingGrid свойство массива сохраняет эти точки проекта.

T0 = feedback(G*Kp,1)
T0 =

  4x5 array of generalized continuous-time state-space models.
  Each model has 1 outputs, 1 inputs, 3 states, and the following blocks:
    Kp: Parametric 1x4 matrix, 1 occurrences.

Type "ss(T0)" to see the current value, "get(T0)" to see all properties, and
"T0.Blocks" to interact with the blocks.

Получившаяся обобщенная модель имеет настраиваемые блоки, соответствующие поверхностям усиления, используемым для создания модели. В этом примере система имеет одну поверхность усиления Kp, который имеет четыре настраиваемых коэффициента, соответствующих K 0, K 1, K 2 и K 3. Поэтому настраиваемый блок является векторнымrealp параметр с четырьмя значениями.

Когда вы настраиваете систему управления с systuneпрограмма настраивает коэффициенты для каждой из проектных точек, заданных в настраиваемой поверхности.

Для примера, иллюстрирующего весь рабочий процесс в MATLAB, смотрите раздел «Настройка контроллера в MATLAB» в Gain-Scheduled Control of a Chemical Reactor.

См. также

Похожие темы