В этом примере показано, как создать настраиваемые модели систем управления для использования с systune или looptune.
Вы можете настроить коэффициенты усиления и параметры вашей системы управления с помощью systune или looptune. Чтобы использовать эти команды, необходимо создать настраиваемую модель системы управления, которая идентифицирует и параметризует ее настраиваемые элементы. Это делается путем объединения числовых моделей LTI фиксированных элементов с параметрическими моделями перестраиваемых элементов.
Для моделирования часто встречающихся настраиваемых элементов можно использовать один из следующих «параметрических» блоков:
tunureGain: настраиваемое усиление
tunurePID: настраиваемый контроллер PID
tunablePID2: Настраиваемый контроллер PID с двумя степенями свободы
tunureTF: настраиваемая передаточная функция
tunureSS: настраиваемая модель состояния-пространства.
Например, создайте настраиваемую модель конфигурации передачи/обратной связи по фиг.1, где является настраиваемым ПИД-контроллером, а является настраиваемой функцией передачи первого порядка.

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