В этом примере показано, как создать настраиваемые модели систем управления для использования с 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'}