Создание дискретного контроллера размещения полюса минимальной степени с помощью simulink

Я пытаюсь реализовать дискретный контроллер размещения полюсов минимальной степени в simulink. Я получил выражение для закона управления u(t) = T/R(u_c(t))-S/R(y(t)).

Где T (z) = t0 z ^2 + t1 z + t2,

S(z) = S0 z^2 + s1 z + s2 и

R(z) знак равно z^2 + r0 z + r1.

Но когда я реализую эти блоки в simulink, контроллер не работает, и выходной сигнал контроллера исчезает через 8 секунд. Я использую дискретный решатель в simulink с фиксированным шагом и временем выборки. Я пробовал использовать время выборки от 0,4 до 0,0001. Может кто-нибудь сказать мне, где я, кажется, ошибаюсь? Неизвестные параметры для установки: 0,5<=a<=2 и 6<=b<=10. Я преобразовываю объект непрерывного времени и эталонную модель в дискретную.

Модель объекта G(s) = b/s^2(s+a) и

эталонной моделью является G_m (s) = omega ^ 2 / ((tau s + 1) (s ^ 2 + 2zeta omega s + omega ^ 2)).

Когда я конвертирую их в дискретное время, я получаю

модель дискретного объекта G(z)=b0 z^2 + b1 z + b2/z^3 + a0 z^2 + a1 z + a2 и

дискретная эталонная модель = G_m(z)=b0_m z^2 + b1_m z + b2_m/z^3 + a0_m z^2 + a1_m z + a2_m
Опорный сигнал представляет собой прямоугольную волну

Заранее спасибо.

clc;
clear all;
close all;

% Variable values for the simulation
h = 0.01;
Freq = 0.05;
Amp = 1;

% Variable values for the Plant model
a = 0.5;
b = 6;
%a0_cl = 1;

% Variable values for the Reference model
tau = 0.01;
zeta = 0.7;   
omega = 1;

% Continuous Plant model
numPlant = [b];
denPlant = [1 a 0 0];

% Continuous Reference model
numRef = [omega^2/tau];
denRef = [1 (2*zeta*omega*tau+1)/(tau) ((omega^2)*tau)+(2*zeta*omega)/(tau) (omega^2/tau)];
%denRef = [1 2*zeta*omega*tau+1/tau omega^2*tau+2*zeta*omega/tau omega^2/tau];

% Continuous Transfer Functions
tfr = tf(numRef,denRef);
tfp = tf(numPlant,denPlant);

% Discrete Transfer Functions
dtf_p = c2d(tfp,h)
dtf_r = c2d(tfr,h)
zp = zpk(dtf_p)
zr = zpk(dtf_r)

% Discrete Plant model
[dis_numPlant, dis_denPlant] = tfdata(dtf_p);

% Denominator coefficients for the Plant model
plant_poles = dis_denPlant{1,1};
%a0 = plant_poles(1);
a0 = plant_poles(2);
a1 = plant_poles(3);
a2 = plant_poles(4);

% Numerator coefficients for the Plant model
plant_zeros = dis_numPlant{1,1}; 
b0 = plant_zeros(2);
b1 = plant_zeros(3);
b2 = plant_zeros(4);
 
% Discrete Reference model
[dis_numRef, dis_denRef] = tfdata(dtf_r);

% Denominator coefficients for the Reference model
ref_poles = dis_denRef{1,1};
%a0_m = ref_poles(1);
a0_m = ref_poles(2);
a1_m = ref_poles(3);
a2_m = ref_poles(4);

% Numerator coefficients for the Plant model
ref_zeros = dis_numRef{1,1}; 
b0_m = ref_zeros(2);
b1_m = ref_zeros(3);
b2_m = ref_zeros(4);

% Controller Parameters
r0 = b1/b0;
r1 = b2/b0;
s0 = (a0_m-a0)/b0;
s1 = (a1_m-a1)/b0;
s2 = (a2_m-a2)/b0;
%t0 = (b0_m)/b0;
%t1 = (b1_m)/b0;
%t2 = (b2_m)/b0;

Дискретный контроллер

Блок Simulink для получения / R

Блок Simulink для реализации T(Z)

Блок Simulink для реализации S(Z)

Вывод для выражений закона управления стр. 1

Вывод для выражений закона управления стр. 2

Весь блок simulink

0 ответов

Другие вопросы по тегам