【自控原理】Matlab仿真——标准二阶系统时域响应可视化

本文探讨了一阶二阶系统的动态行为,通过传递函数推导和MATLAB中的controltoolbox,分析了不同阻尼比下系统的阶跃响应、冲激响应和加速度响应特性。通过示例展示了如何使用lsim函数模拟复杂输入信号,如单位加速度响应。
摘要由CSDN通过智能技术生成

这是我晚上睡不着觉随手敲的,许多纰漏,不严谨不细致,就当抛砖引玉,有问题(无论是我有还是你有)欢迎在评论区交流(.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;

加速度响应
在这里插入图片描述

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值