exponenta event banner

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

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

Фон

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

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

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

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

  • tunurePID: настраиваемый контроллер PID

  • tunablePID2: Настраиваемый контроллер PID с двумя степенями свободы

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

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

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

Рис. 1: Система управления с каналами прямой и обратной связи

Сначала смоделировать каждый блок на блок-схеме, используя подходящие параметрические блоки для 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 для автоматической настройки усиления PID и коэффициентов передачи 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: []

Контроллер PID имеет четыре настраиваемых параметра 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). Рассмотрим фильтр нижних частот

F (s) = как + a

где коэффициент a настраивается. Чтобы смоделировать этот настраиваемый элемент, создайте вещественный параметр a и определите F как передаточную функцию, числитель и знаменатель которой являются функциями a. Это создает обобщенную модель состояния-пространства F фильтра нижних частот, параметризованного настраиваемым скаляром 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,

с перестраиваемыми коэффициентами

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

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

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 - перестраиваемый PID.

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

См. также

Связанные темы