В этом примере показано, как создать настраиваемые модели систем управления для использования с systune или looptune.
Можно настроить усиления и параметры системы управления с systune или looptune. Чтобы использовать эти команды, необходимо создать настраиваемую модель системы управления, которая идентифицирует и параметрирует ее настраиваемые элементы. Это сделано путем объединения числовых моделей LTI фиксированных элементов с параметрическими моделями настраиваемых элементов.
Можно использовать один из следующих "параметрических" блоков, чтобы смоделировать настраиваемые элементы, с которыми обычно сталкиваются:
tunableGain: Настраиваемое усиление
tunablePID: Настраиваемый ПИД-регулятор
tunablePID2: Настраиваемый ПИД-регулятор с двумя степенями свободы
tunableTF: Настраиваемая передаточная функция
tunableSS: Настраиваемая модель в пространстве состояний.
Например, создайте настраиваемую модель настройки feedforward/обратной связи рисунка 1 где настраиваемый ПИД-регулятор и настраиваемая передаточная функция первого порядка.

Рисунок 1: система управления с путями Feedforward и обратной связи
Первая модель каждый блок в блок-схеме, с помощью подходящих параметрических блоков для и .
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. Используйте 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 из фильтра 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.
Точно так же можно использовать действительные параметры, чтобы смоделировать фильтр метки
с настраиваемыми коэффициентами .
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
Можно также создать настраиваемые элементы параметрами с матричным знаком. Например, смоделируйте основанный на наблюдателе контроллер уравнениями
и настраиваемые матрицы усиления и .
% 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, где настраиваемый ПИД.
G = tf(1,[1 1]); C = tunablePID('C','pid'); AP = AnalysisPoint('X'); T = feedback(G*C,AP);
Можно теперь использовать getLoopTransfer вычислить (отрицательная обратная связь) передаточную функцию цикла, измеренную в местоположении "X". Обратите внимание на то, что эта передаточная функция цикла для обратной связи рисунка 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'}