
clc
clear all
close all
%%
t_max = 20;
l = 1;
m = 0.1;
M = 0.1;
g = 9.81;
%Начальные условия:
yp0 = 0;
y0 = 1;
xp0 = 0;
x0 = 0;
%% Автономная система:
st = sim("sim1.slx");
data = st.both;
data = data';
time = st.time;
plot(time, data(1,:), 'LineWidth', 1.5, 'Color','red');
grid on;
hold on
plot(time, data(2,:), 'LineWidth', 1.5, 'Color','blue');
xlabel('t')
ylabel ('x, \theta')
legend('Pendulum', 'Cart');
%%
[A, B, C, D] = linmod2('sim1');
E = eig(A)
%%
l = 1; m = 0.1; M = 0.1;
[A,B,C,D] = linmod2('sim1');
eig(A);
[num,den]=ss2tf(A,B,C,D);
plant=tf(num,den);
num=[2 0 19.62];
den=[1 0 -11.772 0 0];
zpk(plant)
%%
eig(A);
p = [-0.5, -0.1, -2, -3.4310]';
K = place(A, B, p);
eig(A - B*K);
rank(obsv(A,C));
%Наблюдатель должен работать быстрее
po = 5*p;
L = place(A',C',po)'
%Динамический регулятор:
[Ar, Br, Cr, Dr] = reg(A, B, C, D, K, L);
controller = ss(Ar, Br, Cr, Dr);
%Проверим устойчивость системы
sysc=feedback(plant,controller);
eig(sysc)
%%
y0 = 0.2;
yp0 = 0;
x0 = 0;
xp0 = 0;
t_max = 20;
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 1);
%% Найдем предел по начальному отклонению
figure
y0 = 0.1;
yp0 = 0;
x0 = 0;
xp0 = 0;
t_max = 20;
for i = linspace(0.2257, 0.2275, 10)
y0 = i;
y0
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 1);
grid on;
hold on
end
%%
y0max = 0.225;
%%
figure
y0 = y0max;
x0 = 0;
t_max = 30;
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 2);
hold on
plot(st.time, st.both(:,1)', 'LineWidth', 2);
legend('Маятник', 'Картека');
grid on
hold off
%% Найдем предел по начальному положению каретки
figure
y0 = 0;
yp0 = 0;
x0 = 0;
xp0 = 0;
t_max = 20;
for i = linspace(0.0860, 0.0870, 10)
x0 = i;
x0
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 1);
grid on;
hold on
end
%%
x0max = 0.0864;
%%
figure
x0 = x0max;
t_max = 30;
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 2);
hold on
plot(st.time, st.both(:,1)', 'LineWidth', 2);
legend('Маятник', 'Картека');
grid on
hold off
%%
clear all
close all
%%
t_max = 20;
l = 1;
m = 0.1;
M = 0.1;
g = 9.81;
%Начальные условия:
yp0 = 0;
y0 = 1;
xp0 = 0;
x0 = 0;
%% Автономная система:
st = sim("sim1.slx");
data = st.both;
data = data';
time = st.time;
plot(time, data(1,:), 'LineWidth', 1.5, 'Color','red');
grid on;
hold on
plot(time, data(2,:), 'LineWidth', 1.5, 'Color','blue');
xlabel('t')
ylabel ('x, \theta')
legend('Pendulum', 'Cart');
%%
[A, B, C, D] = linmod2('sim1');
E = eig(A)
%%
l = 1; m = 0.1; M = 0.1;
[A,B,C,D] = linmod2('sim1');
eig(A);
[num,den]=ss2tf(A,B,C,D);
plant=tf(num,den);
num=[2 0 19.62];
den=[1 0 -11.772 0 0];
zpk(plant)
%%
eig(A);
p = [-0.5, -0.1, -2, -3.4310]';
K = place(A, B, p);
eig(A - B*K);
rank(obsv(A,C));
%Наблюдатель должен работать быстрее
po = 5*p;
L = place(A',C',po)'
%Динамический регулятор:
[Ar, Br, Cr, Dr] = reg(A, B, C, D, K, L);
controller = ss(Ar, Br, Cr, Dr);
%Проверим устойчивость системы
sysc=feedback(plant,controller);
eig(sysc)
%%
y0 = 0.2;
yp0 = 0;
x0 = 0;
xp0 = 0;
t_max = 20;
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 1);
%% Найдем предел по начальному отклонению
figure
y0 = 0.1;
yp0 = 0;
x0 = 0;
xp0 = 0;
t_max = 20;
for i = linspace(0.2257, 0.2275, 10)
y0 = i;
y0
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 1);
grid on;
hold on
end
%%
y0max = 0.225;
%%
figure
y0 = y0max;
x0 = 0;
t_max = 30;
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 2);
hold on
plot(st.time, st.both(:,1)', 'LineWidth', 2);
legend('Маятник', 'Картека');
grid on
hold off
%% Найдем предел по начальному положению каретки
figure
y0 = 0;
yp0 = 0;
x0 = 0;
xp0 = 0;
t_max = 20;
for i = linspace(0.0860, 0.0870, 10)
x0 = i;
x0
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 1);
grid on;
hold on
end
%%
x0max = 0.0864;
%%
figure
x0 = x0max;
t_max = 30;
st = sim("sim2.slx");
plot(st.time, st.both(:,2)', 'LineWidth', 2);
hold on
plot(st.time, st.both(:,1)', 'LineWidth', 2);
legend('Маятник', 'Картека');
grid on
hold off
%%
Соседние файлы в папке Курсовая работа