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

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

Фон

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

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

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

  • tunableGain: Настраиваемое усиление

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

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

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

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

Например, создайте настраиваемую модель настройки feedforward/обратной связи рисунка 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 автоматически настроить коэффициенты ПИД и коэффициенты прямого распространения 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.

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

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

Рисунок 2: аналитический блок точки

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--')

Можно также обратиться к местоположению "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'}

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

Похожие темы