这是我晚上睡不着觉随手敲的,许多纰漏,不严谨不细致,就当抛砖引玉,有问题(无论是我有还是你有)欢迎在评论区交流(.w.)
标准二阶系统的组成框图
传递函数推导:
G ( s ) = ω n 2 s 2 + 2 ζ ω n s H ( s ) = 1 G(s) = \frac{\omega_n^2}{s^2+2\zeta\omega_ns} \qquad H(s)=1 G(s)=s2+2ζωnsωn2H(s)=1
by框图化简,闭环传递函数为
ϕ c l = G ( s ) 1 + G ( s ) H ( s ) = ω n 2 s 2 + 2 ζ ω n s + ω n 2 \phi_{cl}=\frac{G(s)}{1+G(s)H(s)}=\frac{\omega_n^2}{s^2+2\zeta\omega_ns+\omega_n^2} ϕcl=1+G(s)H(s)G(s)=s2+2ζωns+ωn2ωn2
不同阻尼比 ζ \zeta ζ下的poles分布
matlab仿真
经典信号的时域响应
注意想使用matlab仿真的话需要拥有matlab的control toolbox(好像是这个名字),我们这里使用step阶跃响应的代码作为演示。
如果想要尝试其他输入信号,找到代码中step(sys)这一句。修改成其他输入信号对应的函数就行了:
control toolbox中给出了一些经典的响应函数
- 冲激响应:impulse(sys)
- 阶跃响应:step(sys)
- 频率响应:bode(sys)
% 定义二阶系统的参数
zeta_values = [0.1, 0.5, 0.707, 1, 1.2]; % 阻尼比
omega_n = 2; % 自然频率
% 绘制不同阻尼比下的单位阶跃响应
figure;
hold on; % 开启绘图保持
for i = 1:length(zeta_values)
zeta = zeta_values(i);
% 构建二阶系统的传递函数
numerator = 1;
denominator = [1, 2*zeta*omega_n, omega_n^2];
sys = tf(numerator, denominator);
% 绘制单位阶跃响应
step(sys);
end
hold off; % 关闭绘图保持
% 添加图标题和轴标签
title('Unit Step Response of Second Order Systems with Different Damping Ratios');
xlabel('Time');
ylabel('Response');
% 添加图例
legend('\zeta = 0.1 欠阻尼', '\zeta = 0.5 欠阻尼', ...
'\zeta = 0.707 欠阻尼--工程最佳值', '\zeta = 1 临界阻尼', '\zeta = 1.2 过阻尼');
阶跃响应:
冲激响应:
频率响应:(这个我还看不懂xd)
更复杂的reference?
如果想要实现一些更加复杂的reference, 比如单位斜坡、单位加速度响应,或者更加复杂,可以使用lsim(),like this:
[num, den] = ...; % 系统系数
sys = tf(num, den);
u = ...; % 输入信号
y = lsim(sys, u, t); % 计算零状态响应
y = lsim(sys, u, t, initial_conditions); % 计算完全响应
其中,initial_conditions是一个包含系统初始状态的向量
要是使用lsim的话就要创建时间向量来生成对应输入的信号了
比如说我们来一个,单位加速度响应:
% 定义二阶系统的参数
zeta_values = [0.1, 0.5, 0.707, 1, 1.2]; % 阻尼比
omega_n = 2; % 自然频率
% 创建时间向量
t = 0:0.01:5; % 假设我们观察时间为5秒,步长为0.01秒
% 初始化图形
figure;
% 计算并绘制不同阻尼比下的加速度响应
for i = 1:length(zeta_values)
zeta = zeta_values(i);
% 创建二阶系统的传递函数
numerator = 1;
denominator = [1, 2*zeta*omega_n, omega_n^2];
sys = tf(numerator, denominator);
% 生成单位加速度信号(抛物线函数)
u = t.^2;
% 计算加速度响应
y = lsim(sys, u, t);
% 绘制响应
plot(t, y, 'DisplayName', ['\zeta = ' num2str(zeta_values(i))]);
hold on;
end
% 设置图形标题和轴标签
title('Acceleration Response of Second Order Systems with Different Damping Ratios');
xlabel('Time (s)');
ylabel('Response');
% 添加图例
legend('show');
% 关闭绘图保持
hold off;
加速度响应: