Создание настраиваемых моделей

В этом примере показано, как создать настраиваемые модели систем управления для использования с systune или looptune.

Фон

Можно настроить усиления и параметры своей системы управления с помощью systune или looptune. Чтобы использовать эти команды, необходимо создать настраиваемую модель системы управления, которая идентифицирует и параметрирует ее настраиваемые элементы. Это делается путем объединения числовых моделей LTI фиксированных элементов с параметрическими моделями настраиваемых элементов.

Использование предопределенных настраиваемых элементов

Можно использовать один из следующих «параметрических» блоков, чтобы смоделировать обычно встречающиеся настраиваемые элементы:

  • tunableGain: настраиваемый коэффициент усиления

  • tunablePID: настраиваемый ПИД-регулятор

  • tunablePID2: настраиваемый ПИД-регулятор с двумя степенями свободы

  • tunableTF: настраиваемая передаточная функция

  • tunableSS: настраиваемая модель пространства состояний.

Для примера создайте настраиваемую модель строения обратной связи/обратной связи Фигуры 1, где C является настраиваемым ПИД-регулятором и F является настраиваемой передаточной функцией первого порядка.

Фигура 1: Система управления с путями Feedforward и обратной связи

Сначала моделируйте каждый блок в блок-схеме, используя подходящие параметрические блоки для C и F.

G = tf(1,[1 1]); 
C = tunablePID('C','pid');  % tunable PID block
F = tunableTF('F',0,1);     % tunable first-order transfer function

Затем используйте connect построение модели общего блока. Чтобы определить, как соединяются блоки, пометьте входы и выходы каждого блока и смоделируйте суммирующие соединения с помощью sumblk.

G.u = 'u';  G.y = 'y';
C.u = 'e';  C.y = 'uC';
F.u = 'r';  F.y = 'uF';

% Summing junctions
S1 = sumblk('e = r-y');
S2 = sumblk('u = uF + uC');

T = connect(G,C,F,S1,S2,'r','y')
T =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 3 states, and the following blocks:
    C: Tunable PID controller, 1 occurrences.
    F: Tunable SISO transfer function, 0 zeros, 1 poles, 1 occurrences.

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

Это создает обобщенную модель пространства состояний T передаточной функции с обратной связью от r на y. Эта модель зависит от настраиваемых блоков C и F. Можно использовать systune для автоматической настройки коэффициентов ПИД и коэффициентов feedforward a,b с учетом ваших требований к эффективности. Использование showTunable чтобы увидеть текущее значение настраиваемых блоков.

showTunable(T)
C =
 
        1 
  Ki * ---
        s 

  with Ki = 0.001
 
Name: C
Continuous-time I-only controller.
-----------------------------------
F =
 
    10
  ------
  s + 10
 
Name: F
Continuous-time transfer function.

Взаимодействие с настраиваемыми параметрами

Можно настроить параметризацию настраиваемых элементов C и F путем взаимодействия с объектами C и F. Использование get чтобы просмотреть их список свойств.

get(C)
             Kp: [1x1 param.Continuous]
             Ki: [1x1 param.Continuous]
             Kd: [1x1 param.Continuous]
             Tf: [1x1 param.Continuous]
       IFormula: ''
       DFormula: ''
           Name: 'C'
             Ts: 0
       TimeUnit: 'seconds'
      InputName: {'e'}
      InputUnit: {''}
     InputGroup: [1x1 struct]
     OutputName: {'uC'}
     OutputUnit: {''}
    OutputGroup: [1x1 struct]
          Notes: [0x1 string]
       UserData: []

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

C.Kp
 
ans =
 
       Name: 'Kp'
      Value: 0
    Minimum: -Inf
    Maximum: Inf
       Free: 1
      Scale: 1
       Info: [1x1 struct]

 
1x1 param.Continuous
 

Установите соответствующие атрибуты, чтобы переопределить значения по умолчанию. Для примера можно зафиксировать постоянную времени Tf к значению 0,1

C.Tf.Value = 0.1;
C.Tf.Free = false;

Создание пользовательских настраиваемых элементов

Для настраиваемых элементов, не охваченных предварительно заданными блоками, перечисленными выше, можно создать собственную параметризацию в терминах элементарных реальных параметров (realp). Рассмотрим lowpass

F(s)=as+a

где коэффициент a настраивается. Чтобы смоделировать этот настраиваемый элемент, создайте действительный параметр a и определить F как передаточная функция, числитель и знаменатель которой являются функциями a. Это создает обобщенную модель пространства состояний F lowpass, параметризованного настраиваемым скаляром a.

a = realp('a',1);   % real tunable parameter, initial value 1
F = tf(a,[1 a])
F =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 1 states, and the following blocks:
    a: Scalar parameter, 2 occurrences.

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

Точно так же можно использовать действительные параметры для моделирования узкополосного фильтра

N(s)=s2+2ζ1ωns+ωn2s2+2ζ2ωns+ωn2

с настраиваемыми коэффициентами ωn,ζ1,ζ2.

wn = realp('wn',100);
zeta1 = realp('zeta1',1);   zeta1.Maximum = 1;    % zeta1 <= 1
zeta2 = realp('zeta2',1);   zeta2.Maximum = 1;    % zeta2 <= 1
N = tf([1 2*zeta1*wn wn^2],[1 2*zeta2*wn wn^2]);  % tunable notch filter

Можно также создать настраиваемые элементы с матричными параметрами. Для примера моделируйте контроллер на основе наблюдателя C(s) с уравнениями

dxdt=Ax+Bu+L(y-Cx),u=-Kx

и настраиваемые матрицы усиления K и L.

% Plant with 6 states, 2 controls, 3 measurements
[A,B,C] = ssdata(rss(6,3,2));

K = realp('K',zeros(2,6));
L = realp('L',zeros(6,3));

C = ss(A-B*K-L*C,L,-K,0)
C =

  Generalized continuous-time state-space model with 2 outputs, 3 inputs, 6 states, and the following blocks:
    K: Tunable 2x6 matrix, 2 occurrences.
    L: Tunable 6x3 matrix, 2 occurrences.

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

Включение требований к разомкнутому контуру

The systune команда принимает модель общей системы управления с обратной связью, подобную настраиваемой модели T построен в начале этого примера. Такие модели не легко поддерживают разомкнутый контур или спецификации без разомкнутого контура, такие как формы цикла и запасы устойчивости. Чтобы получить доступ к откликам без разомкнутого контура, вставьте AnalysisPoint блок, как показано на фигура.

Фигура 2: Блок точки анализа

The AnalysisPoint блок может использоваться, чтобы маркировать интересующие внутренние сигналы, а также местоположения, где, чтобы открыть циклы обратной связи и измерить отклики без разомкнутого контура. Этот блок оценивается до модуля усиления и не имеет никакого влияния на отклики модели. Для примера создайте модель с обратной связью T цикла обратной связи, показанного на фиг.2, где C является настраиваемым ПИД.

G = tf(1,[1 1]);
C = tunablePID('C','pid');
AP = AnalysisPoint('X');
T = feedback(G*C,AP);

Теперь можно использовать getLoopTransfer вычислить передаточную функцию (с отрицательной обратной связью) цикла, измеренную в местоположении «X». Обратите внимание, что эта передаточная функция цикла L=GC для цикла обратной связи, показанного на фиг.2.

L = getLoopTransfer(T,'X',-1);  % loop transfer at "X"
clf, bode(L,'b',G*C,'r--')

Figure contains 2 axes. Axes 1 with title From: X To: X contains 2 objects of type line. These objects represent L, untitled1. Axes 2 contains 2 objects of type line. These objects represent L, untitled1.

Можно также обратиться к местоположению «X» при указании форм целевого цикла или запасов устойчивости для systune. Затем заявка применяется к передаче цикла, измеренной в этом месте.

% Target loop shape for loop transfer at "X"
Req1 = TuningGoal.LoopShape('X',tf(5,[1 0]));

% Target stability margins for loop transfer at "X"
Req2 = TuningGoal.Margins('X',6,40);

В целом положения открытия цикла заданы в Location свойство AnalysisPoint блоки. Для одноканальных точек анализа имя блока используется как имя местоположения по умолчанию. Для многоканальных точек анализа индексы добавляются к наименованию блока, чтобы сформировать имена местоположений по умолчанию.

AP = AnalysisPoint('Y',2);  % two-channel analysis point
AP.Location
ans = 2x1 cell
    {'Y(1)'}
    {'Y(2)'}

Можно переопределить имена расположений по умолчанию и использовать более описательные имена, изменив Location свойство.

% Rename loop opening locations to "InnerLoop" and "OuterLoop".
AP.Location = {'InnerLoop' ; 'OuterLoop'};
AP.Location
ans = 2x1 cell
    {'InnerLoop'}
    {'OuterLoop'}

См. также

Похожие темы