1、典型环节的微分方程、传递函数
2、Matlab代码
main.m
% 控制系统典型环节
%
包括比例、积分、微分、延迟、惯性、震荡六个环节
%% 1、比例环节
dt = 0.1; %时间步长
t = 0:dt:2*pi;
x = sin(t);
%单位正弦输入
x(1:10) = 0; x(11:end) = 1;
%单位阶跃输入
k = 2; % 增益系数
y = proportional_system(k,
x);
figure(1);
plot(t, x, 'ro-', t, y,
'bo-');
grid on;
xlim([0 6]);
legend('Input X', 'Output
Y');
title('Proportional
System');
%% 2、积分环节
dt = 0.1; %时间步长
t = 0:dt:2*pi;
x = sin(t);
%单位正弦输入
x(1:10) = 0; x(11:end) = 1;
%单位阶跃输入
y = integral_system(x,
dt);
figure(2);
plot(t, x, 'ro-', t, y,
'bo-');
grid on;
xlim([0 6]);
legend('Input X', 'Output
Y');
title('Integral
System');
%% 3、微分环节
dt = 0.1; %时间步长
t = 0:dt:2*pi;
x = sin(t);
%单位正弦输入
x(1:10) = 0; x(11:end) = 1;
%单位阶跃输入
y = derivative_system(x,
dt);
figure(3);
plot(t, x, 'ro-', t, y,
'bo-');
grid on;
xlim([0 6]);
legend('Input X', 'Output
Y');
title('Derivative
System');
%% 4、延迟环节
dt = 0.1; %时间步长
t = 0:dt:2*pi;
x = sin(t);
%单位正弦输入
x(1:10) = 0; x(11:end) = 1;
%单位阶跃输入
delay_t = 1; %延迟时间
y = delay_system(x, delay_t,
dt);
figure(4);
plot(t, x, 'ro-', t, y,
'bo-');
grid on;
xlim([0 6]);
legend('Input X', 'Output
Y');
title('Delay
System');
%% 5、惯性环节
dt = 0.1; %时间步长
t = 0:dt:2*pi;
x = sin(t);
%单位正弦输入
x(1:10) = 0; x(11:end) = 1;
%单位阶跃输入
tao = 0.5; %时间常数
y = inertial_system(x, tao,
dt);
figure(5);
plot(t, x, 'ro-', t, y,
'bo-');
grid on;
xlim([0 6]);
legend('Input X', 'Output
Y');
title('Inertial
System');
%% 6、震荡环节
dt = 0.1; %时间步长
t = 0:dt:2*pi;
x = sin(t);
%单位正弦输入
x(1:10) = 0; x(11:end) = 1;
%单位阶跃输入
tao = 0.5; %时间常数
zeta = 0.2; %阻尼比
y = oscillating_system(x, tao,
zeta, dt);
figure(6);
plot(t, x, 'ro-', t, y,
'bo-');
grid on;
xlim([0 6]);
legend('Input X', 'Output
Y');
title('Oscillating
System');
---
proportional_system.m
function y =
proportional_system(x, k)
% 比例环节
% 输入: x 系统输入
% 输入: k 增益系数
% 输出: y 系统输出
y = k * x;
---
integral_system.m
function y = integral_system(x,
dt)
% 积分环节
% 输入: x 系统输入
% 输入: dt 时间步长
% 输出: y 系统输出
L = length(x);
y = zeros(1, L);
y(1) = x(1) * dt;
for i = 2:L
end
---
derivative_system.m
function y =
derivative_system(x, dt)
% 微分环节
% 输入: x 系统输入
% 输入: dt 时间步长
% 输出: y 系统输出
L = length(x);
y = zeros(1, L);
y(1) = 0;
for i = 2:L
end
---
delay_system.m
function y = delay_system(x,
delay_t, dt)
% 延迟环节
% 输入: x 系统输入
% 输入: delay_t 延迟时间
% 输入: dt 时间步长
% 输出: y 系统输出
L = length(x);
y = zeros(1, L);
delay_t = delay_t /
dt;
for i = 1:L
end
---
inertial_system.m
function y = inertial_system(x,
tao, dt)
% 惯性环节
% 输入: x 系统输入
% 输入: tao 时间常数
% 输入: dt 时间步长
% 输出: y 系统输出
L = length(x);
y = zeros(1, L);
tao = tao / dt;
for i = 2:L
end
---
oscillating_system.m
function y =
oscillating_system(x, tao, zeta, dt)
% 震荡环节
% 输入: x 系统输入
% 输入: tao 时间常数
% 输入: zeta 阻尼比系数
% 输入: dt 时间步长
% 输出: y 系统输出
L = length(x);
y = zeros(1, L);
tao = tao / dt;
for i = 3:L
end
|
|