В этом примере показано, как создать настраиваемые модели систем управления для использования с systune или looptune.
Можно настроить усиления и параметры своей системы управления с помощью systune или looptune. Чтобы использовать эти команды, необходимо создать настраиваемую модель системы управления, которая идентифицирует и параметрирует ее настраиваемые элементы. Это делается путем объединения числовых моделей LTI фиксированных элементов с параметрическими моделями настраиваемых элементов.
Можно использовать один из следующих «параметрических» блоков, чтобы смоделировать обычно встречающиеся настраиваемые элементы:
tunableGain: настраиваемый коэффициент усиления
tunablePID: настраиваемый ПИД-регулятор
tunablePID2: настраиваемый ПИД-регулятор с двумя степенями свободы
tunableTF: настраиваемая передаточная функция
tunableSS: настраиваемая модель пространства состояний.
Для примера создайте настраиваемую модель строения обратной связи/обратной связи Фигуры 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 для автоматической настройки коэффициентов ПИД и коэффициентов 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. Использование 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.
The systune команда принимает модель общей системы управления с обратной связью, подобную настраиваемой модели T построен в начале этого примера. Такие модели не легко поддерживают разомкнутый контур или спецификации без разомкнутого контура, такие как формы цикла и запасы устойчивости. Чтобы получить доступ к откликам без разомкнутого контура, вставьте AnalysisPoint блок, как показано на фигура.

Фигура 2: Блок точки анализа
The 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'}