Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursach_modsu.docx
Скачиваний:
1
Добавлен:
13.04.2025
Размер:
9.35 Mб
Скачать

5. Расчет передаточной функции и частотных характеристик динамической системы

1. Вывод матричной ПФ:

Имеем 𝐿{𝑥(𝑡)} = 𝑥(𝑠), 𝐿{𝑢(𝑡)} = 𝑢(𝑠), 𝐿{𝑦(𝑡)} = 𝑦(𝑠);

𝐿{𝑥̇(𝑡)} = 𝐿{𝐴𝑥(𝑡) + 𝐵𝑢(𝑡)} → 𝑠𝑥(𝑠) = 𝐴𝑥(𝑠) + 𝐵𝑢(𝑠)

(𝐼𝑠 − 𝐴)𝑥(𝑠) = 𝐵𝑢(𝑠) → 𝑥(𝑠) = (𝐼𝑠 − 𝐴) −1𝐵𝑢(𝑠);

𝐿{𝑦(𝑡)} = 𝐿{𝐶𝑥(𝑡) + 𝐷𝑢(𝑡)} → 𝑦(𝑠) = 𝐶𝑥(𝑠) + 𝐷𝑢(𝑠)

𝑦(𝑠) = 𝐶[ 𝐵𝑢(𝑠)] + 𝐷𝑢(𝑠) = [𝐶 𝐵 + 𝐷]𝑢(𝑠) = 𝑊(𝑠)𝑢(𝑠)

𝑊(𝑠) = 𝐶 𝐵 + D

2. Расчет матричной передаточной функции (ПФ) 𝑊(𝑠):

𝑊(𝑠) = = 𝐶 𝐵 + D

𝑊(𝑠) =

Расчет обратной матрицы:

=

=

𝑊(𝑠) =

Частотные характеристики системы представлены на рисунках 74, 75, 76 и 77:

Рисунок 74 – диаграмма Боде для выхода y1 относительно входа u1

Рисунок 75 – диаграмма Боде для выхода y1 относительно входа u2

Рисунок 76 – диаграмма Боде для выхода y2 относительно входа u1

Рисунок 77 – диаграмма Боде для выхода y2 относительно входа u2

Переходные характеристики системы представлены на рисунках 78, 79, 80 и 81:

26:

Рисунок 78 – график переходного процесса для Ф

Рисунок 79 – график переходного процесса для id

Рисунок 80 – график переходного процесса для

Рисунок 81 – график переходного процесса для y

Вывод:

В ходе выполнения данной части курсовой работы была определена матричная ПФ для линеаризованной модели (ПФ для каждого выхода от каждого входа) и переходные процессы от каждого входа к каждому выходу.

ЗАКЛЮЧЕНИЕ

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

В первую очередь была получена непрерывная функция, аппроксимирующая обратную кривую намагничивания на основе метода наименьших квадратов.

Были построены переходные процессы динамической системы с учетом изменения входного воздействия.

С использованием полученного в первом пункте нормированного полинома пятой степени, были исследованы статические режимы динамической системы при помощи метода Ньютона.

Сравнение переходных процессов в нелинейной и линеаризованной системах подтвердило корректность линеаризации при малых отклонениях.

Частотные характеристики показали, что коэффициенты передачи линеаризованной системы и рассчитанные через передаточную функцию сходятся с точностью до сотых. Система является устойчивой, а переходные процессы носят колебательный характер.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Мирошников А. Н., Румянцев С. Н. Моделирование систем управления технических средств транспорта: учеб. издание. СПб.: Элмор, 1999.

2. Моделирование электромеханических систем средствами MATLAB. Методические указания к курсовому расчету по дисциплине «Моделирование систем управления» / Сост.: О. Ю. Лукомская, А. Л. Стариченков, А. Г. Шпекторов,. СПб.: Изд-во СПбГЭТУ «ЛЭТИ», 2017. 40 с.

Приложение

(1)

clc

clear

Fin = 0.007;

FArray = 4000 * [0; 0.2; 0.4; 0.6; 0.8; 1.0; 1.2; 1.4; 1.6; 1.8]; % массив значений МДС для кривой намагничивания, А*вит

Fn = 4000; % нормировочная МДС

FArray_ = FArray / Fn; % массив значений нормированного маг. потока для кривой намагничивания

FiArray_ = [0; 0.3; 0.52; 0.67; 0.78; 0.86; 0.92; 0.96; 1.01; 1.02]; % массив значений нормированного магнитного потока для кривой намагничивания

FiArray = FiArray_ * Fin; % массив значений магнитного потока для кривой намагничивания, Вб

n = input('n=');

p = ApproximationCalculate(FiArray_, FArray_, n, 'F_(Ф_)', '', '');

% Построение графика с ненормированными значениями

PlotNonNormalizedGrafs(FiArray, FArray, p, Fin, Fn, 'F_(Ф_)', '', '');

function p = ApproximationCalculate(FiArray, FArray, n, TitleStr, XDimensionName, YDimensionName)

p = PolynomCalculate(FiArray, FArray, n);

FiArraymin = FiArray(1);

FiArraymax = FiArray(end);

FiArrayLineSpace = linspace(FiArraymin, FiArraymax);

FArrayApproximated = polyval(p, FiArrayLineSpace);

% Вычисление суммы квадратов невязок

FArrayApproximatedTable = polyval(p, FiArray);

residuals = FArray - FArrayApproximatedTable;

sumSquaredResiduals = sum(residuals.^2);

fprintf('Сумма квадратов невязок: %f\n', sumSquaredResiduals);

PlotGrafs(FiArray, FArray, FiArrayLineSpace, FArrayApproximated, TitleStr, XDimensionName, YDimensionName);

end

function p = PolynomCalculate(FiArray, FArray, n)

G = [];

for i = 1:2:n

Gi = FiArray.^i;

G = [G Gi];

end

C = inv(G' * G) * (G' * FArray);

pLength = n + 1;

p = zeros(1, pLength);

CLength = length(C);

for CIndex = 1:CLength

CIndexInversed = CLength - CIndex + 1;

pIndex = CIndex * 2 - 1;

p(pIndex) = C(CIndexInversed);

end

end

function PlotGrafs(FiArrayTable, FArrayTable, FiArrayApproximated, FArrayApproximated, TitleStr, XDimensionName, YDimensionName)

hold off

plot(FiArrayTable, FArrayTable, 'DisplayName', 'Табличная нормированная');

hold on

plot(FiArrayApproximated, FArrayApproximated, 'DisplayName', 'Аппроксимированная нормированная');

title(TitleStr, 'Interpreter', 'none')

xlabel(XDimensionName)

ylabel(YDimensionName)

grid on

legend('show')

end

function PlotNonNormalizedGrafs(FiArrayTable, FArrayTable, p, Fin, Fn, TitleStr, XDimensionName, YDimensionName)

figure;

hold off

plot(FiArrayTable, FArrayTable, 'DisplayName', 'Табличная ненормированная');

hold on

FiArrayLineSpace = linspace(FiArrayTable(1), FiArrayTable(end));

FArrayApproximated = polyval(p, FiArrayLineSpace / Fin);

plot(FiArrayLineSpace, FArrayApproximated * Fn, 'DisplayName', 'Аппроксимированная ненормированная');

title(TitleStr, 'Interpreter', 'none')

xlabel(XDimensionName)

ylabel(YDimensionName)

grid on

legend('show')

end

(2)

J = 0.12;

wn = 100;

Cm = 200;

potokn = 0.005;

In = 50;

Mvn = 70;

Lya=0.01;

Ucn = 220;

Uvn = 220;

Ce = 205;

ra = 0.3;

w = 4000;

rb = 145;

rv = 145;

Fn = (Ucn*w)/rv;

(3)

clear

clc

% Параметры

rv = 145;

r_ancor = 0.3;

vv = 4000;

L_ancor = 0.01;

Ce = 205;

Cm = 200;

J = 0.35;

Field_n = 0.007;

omega = 628;

i_n = 50;

Mvn = 70;

Uvn = 220;

Ucn = 220;

iv = Uvn / rv;

global a11 a21 a22 a23 a31 a32 pF

a11 = Uvn * vv / (rv * iv * vv);

a21 = Ce * omega * Field_n;

a22 = i_n * r_ancor;

a23 = Ucn;

a31 = Mvn;

a32 = Cm * Field_n * i_n;

pF = [1.1348 0 -1.2877 0 1.7620 0];

length = length(1.2:-0.2:0.2);

u_1 = [1.2:-0.2:0.2; ones(1, length); ones(1, length)];

x0 = [1, 1, 1]';

for i = 1:length

Fun(i, :) = newton('Fun_F', 'Fun_G', x0, u_1(:, i), 0.00001);

x0 = Fun(i, :)';

end

figure

subplot(2, 2, 1)

plot(u_1(1, :), Fun(:, 1))

grid minor

xlabel('u_в')

ylabel('Ф')

ylim([0.9 * min(Fun(:, 1)) 1.1 * max(Fun(:, 1))])

subplot(2, 2, 2)

plot(u_1(1, :), Fun(:, 2))

grid minor

xlabel('u_в')

ylabel('i')

ylim([0.9 * min(Fun(:, 2)) 1.1 * max(Fun(:, 2))])

subplot(2, 2, 3)

plot(u_1(1, :), Fun(:, 3))

grid minor

xlabel('u_в')

ylabel('\omega')

ylim([0.9 * min(Fun(:, 3)) 1.1 * max(Fun(:, 3))])

subplot(2, 2, 4)

plot(u_1(1, :), Fun(:, 1), u_1(1, :), Fun(:, 2), u_1(1, :), Fun(:, 3))

grid minor

xlabel('u')

ylabel('x')

legend('Ф', 'i', '\omega', 'location', 'best')

ylim([0 20])

% Повторение для других случаев

u_1 = [ones(1, length); 1.2:-0.2:0.2; ones(1, length)];

x0 = [1, 1, 1]';

for i = 1:length

Fun(i, :) = newton('Fun_F', 'Fun_G', x0, u_1(:, i), 0.0001);

x0 = Fun(i, :)';

end

figure

subplot(2, 2, 1)

plot(u_1(2, :), Fun(:, 1))

grid minor

xlabel('M_в')

ylabel('Ф')

ylim([0.9 * min(Fun(:, 1)) 1.1 * max(Fun(:, 1))])

subplot(2, 2, 2)

plot(u_1(2, :), Fun(:, 2))

grid minor

xlabel('M_в')

ylabel('i')

ylim([0.9 * min(Fun(:, 2)) 1.1 * max(Fun(:, 2))])

subplot(2, 2, 3)

plot(u_1(2, :), Fun(:, 3))

grid minor

xlabel('M_в')

ylabel('\omega')

ylim([0.9 * min(Fun(:, 3)) 1.1 * max(Fun(:, 3))])

subplot(2, 2, 4)

plot(u_1(2, :), Fun(:, 1), u_1(2, :), Fun(:, 2), u_1(2, :), Fun(:, 3))

grid minor

xlabel('u')

ylabel('x')

legend('Ф', 'i', '\omega', 'location', 'best')

u_1 = [ones(1, length); ones(1, length); 1.2:-0.2:0.2];

x0 = [1, 1, 1]';

for i = 1:length

Fun(i, :) = newton('Fun_F', 'Fun_G', x0, u_1(:, i), 0.0001);

x0 = Fun(i, :)';

end

figure

subplot(2, 2, 1)

plot(u_1(3, :), Fun(:, 1))

grid minor

xlabel('Uc')

ylabel('Ф')

ylim([0.9 * min(Fun(:, 1)) 1.1 * max(Fun(:, 1))])

subplot(2, 2, 2)

plot(u_1(3, :), Fun(:, 2))

grid minor

xlabel('Uc')

ylabel('i')

ylim([0.9 * min(Fun(:, 2)) 1.1 * max(Fun(:, 2))])

subplot(2, 2, 3)

plot(u_1(3, :), Fun(:, 3))

grid minor

xlabel('Uc')

ylabel('\omega')

ylim([0.9 * min(Fun(:, 3)) 1.1 * max(Fun(:, 3))])

subplot(2, 2, 4)

plot(u_1(3, :), Fun(:, 1), u_1(3, :), Fun(:, 2), u_1(3, :), Fun(:, 3))

grid minor

xlabel('u')

ylabel('x')

legend('Ф', 'i', '\omega', 'location', 'best')

function [x] = newton(F, G, x0, u, e)

y = feval(F, x0, u);

x = x0;

while (norm(y) > e)

gr = feval(G, x, u);

x = x - inv(gr) * y;

y = feval(F, x, u);

end

end

function G = Fun_G(x, u)

global a11 a21 a22 a23 a31 a32 pF

G1 = [-polyval(polyder(pF), x(1)) 0 0];

G2 = [a21 * x(3) -a22 a21 * x(1)];

G3 = [-a32 * x(2) -a32 * x(1) 0];

G = [G1; G2; G3];

end

function f = Fun_F(x, u)

global a11 a21 a22 a23 a31 a32 pF

f1 = a11 * u(1) - polyval(pF, x(1));

f2 = a21 * x(1) * x(3) - a22 * x(2) - a23 * u(3);

f3 = a31 * u(2) - a32 * x(1) * x(2);

f = [f1; f2; f3];

end

(4)

clc; clear all; close all;

%var2 исходные данные global r_v r_ya J c_e c_m omega_nom M_bnom U_cnom U_bnom i_gnom... w Potok_nom p p_der L_ya F_nom

rv = 145; %сопротивление возбуждения

r_ya = 0.3; %сопростивление якоря

L_ya = 0.01;

J = 0.35; %момент инерции

c_e = 205;

c_m = 200;

omega_nom = 100; %номинальная частота вращения

M_bnom = 470;

U_cnom = 220;

U_bnom = 220;

i_gnom = 50; %ток

w = 4000; %число витков

Potok_nom = 0.007; %номинальный поток

F_nom = U_bnom*w/r_v;

p = [0.2047 0 0.8352 0] %коэффициенты полинома

p_der = polyder(p);

U_c = 1;

U_b = 1;

M_b = 1;

x0 = [0.972; 6.9; 2.31]; %НУ

u0 = [U_b; M_b; U_c]; %Вход

t = 6 : 0.001 : 8;

u01 = [0*ones(size(t));0*ones(size(t)); 0*ones(size(t))];

x01 = [0;0;0];

[A, B, C, D] = fun_matrix(x0,u0);

[y,x] = lmsim(A, B, C, D, t, x01, u01);

x1 = x0(1,1) + x(1,:);

x2 = x0(2,1) + x(2,:);

x3 = x0(3,1) + x(3,:);

U_c = 1;

U_b = 1;

M_b = 1;

tf = 8; h = 0.001;

T = 0:h:tf;

x0_nel = [0;0;0];

x_nel = zeros(3, length(T));

u = [U_b; M_b;U_c];

rp_eq = @(x_nel,u) [(1/(w*Potok_nom))*(u(1)*U_bnom - polyval(p,x_nel(1))*F_nom*r_v/w);

(c_e*omega_nom*Potok_nom*x_nel(1)*x_nel(3)-i_gnom*r_ya*x_nel(2)- U_cnom*u(3))/(L_ya*i_gnom); (M_bnom*u(2)-c_m*Potok_nom*i_gnom*x_nel(1)*x_nel(2))/(J*omega_nom)];

x_nel(:,1) = x0_nel;

for i = 2 : length (T)

if T(i) >= 2 && (T(i) < 4)

u(3) = 1;

elseif T(i) >=4 && (T(i) < 6)

u(3) = 1;

elseif T(i) >= 6

u(3) = 1;

end

x_nel(:,i) = x_nel(:,i-1)+ h*rp_eq(x_nel(:,i-1),u);

end

figure(1)

plot(T, x_nel)

grid on

legend('Поток','i_g' ,'Угловая скорость');

xlabel("t, с")

ylabel("Ф, i_g, w")

figure(2);

plot(t,x);

grid on;

legend('Поток','Ток', 'Угловая скорость');

xlabel("t, с")

ylabel("Ф, i_г, w")

figure(3)

subplot(3,1,1)

plot(t,x1);

grid on;

xlabel("t, с");

ylabel("Ф");

hold on;

plot(T,x_nel(1,:),'--');

grid on;

legend('Линеаризованная','Нелинейная')

xlim([6 8])

subplot(3,1,2)

plot(t,x2);

grid on;

xlabel("t, с");

xlim([6 8])

ylabel("i_г");

hold on;

plot(T,x_nel(2,:),'--');

legend('Линеаризованная','Нелинейная')

grid on;

subplot(3,1,3)

plot(t,x3);

grid on;

xlabel("t, с");

xlim([6 8]);

ylabel("w");

hold on;

plot(T,x_nel(3,:),'--');

legend('Линеаризованная','Нелинейная')

grid on;

% roots = roots(poly(A));

% figure(4);

% plot(real(roots), imag(roots), "*");

% grid on;

(5)

% Задание матриц системы из примера

A = [-11.102, 0, 0;

662.7544, -30, 278.9;

-13.8, 1.944, 0];

B = [7.85, 0;

0, -440;

0, 13.43];

C = [0, 1, 0;

1, 0, 1];

D = [0, 0;

0, 0];

% Создание передаточной матрицы

W = tf(ss(A,B,C,D));

% Анализ полюсов и нулей

lmd = pole(W(1,1)); % Полюса системы

rts11 = roots(W.numerator{1,1}); % Нули W11

rts22 = roots(W.numerator{2,2}); % Нули W22

% Построение диаграмм Боде

figure(1);

subplot(2,2,1); bode(W(1,1)); grid on; title('Bode y_1/u_1');

subplot(2,2,2); bode(W(1,2)); grid on; title('Bode y_1/u_2');

subplot(2,2,3); bode(W(2,1)); grid on; title('Bode y_2/u_1');

subplot(2,2,4); bode(W(2,2)); grid on; title('Bode y_2/u_2');

% Построение переходных характеристик

figure(2);

subplot(2,2,1); step(W(1,1)); grid on; title('Step W11');

subplot(2,2,2); step(W(1,2)); grid on; title('Step W12');

subplot(2,2,3); step(W(2,1)); grid on; title('Step W21');

subplot(2,2,4); step(W(2,2)); grid on; title('Step W22');

Соседние файлы в предмете Моделирование систем управления