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