基于Simulink的根轨迹分析法进行系统稳定性分析

目录

基于Simulink的根轨迹分析法进行系统稳定性分析

1. 背景介绍

1.1 项目背景

1.2 系统描述

1.3 应用场景

2. 系统架构设计

2.1 系统框图

3. Simulink仿真模型步骤

3.1 创建Simulink模型

3.2 添加模块

3.2.1 阶跃输入模块

3.2.2 比例控制器模块

3.2.3 被控对象模块

3.2.4 反馈模块

3.2.5 输出显示模块

3.2.6 数据记录模块

3.3 连接模块

3.4 设置仿真参数

3.5 绘制根轨迹图

4. 系统稳定性分析

4.1 观察根轨迹图

4.2 调整控制器增益 KK

5. 示例代码片段

6. 结束语


 

基于Simulink的根轨迹分析法进行系统稳定性分析


1. 背景介绍

1.1 项目背景

在控制系统设计中,系统的稳定性是首要考虑的因素之一。根轨迹分析法是一种通过研究闭环系统特征方程的根随某一参数(如增益 KK)变化而变化的方法,用于判断系统的稳定性。通过绘制根轨迹图,可以直观地分析闭环系统的极点分布,从而评估系统的稳定性。

本项目旨在通过MATLAB/Simulink平台,使用根轨迹分析法对一个典型控制系统的稳定性进行全面分析。我们将以一个包含比例控制器的闭环系统为例,通过调整控制器增益 KK,观察根轨迹的变化,并根据根轨迹分析法判断系统的稳定性。

1.2 系统描述

假设待控对象为一个典型的一阶惯性环节:

G(s)=Kτs+1G(s)=τs+1K​

其中:

  • KK 是系统的增益。
  • ττ 是系统的惯性时间常数。

通过引入比例控制器,目标是使闭环系统的根轨迹满足以下要求:

  • 所有闭环极点位于复平面的左半平面,确保系统稳定。
  • 根据根轨迹分析法优化控制器增益 KK。

主要目标是:

  • 使用Simulink搭建包含比例控制器的闭环控制系统。
  • 绘制系统的根轨迹图。
  • 根据根轨迹分析法判断系统的稳定性。

1.3 应用场景

  • 工业自动化:如温度控制、压力控制。
  • 机器人控制:如关节运动控制。
  • 汽车工程:如巡航控制系统和自动驾驶中的路径跟踪控制。

2. 系统架构设计

2.1 系统框图

整个系统可以分为以下几个模块:

  1. 输入信号模块:提供阶跃信号作为输入。
  2. 比例控制器模块:用于调节系统输出。
  3. 被控对象模块:模拟待控对象的一阶惯性环节。
  4. 反馈模块:将系统输出反馈至比例控制器形成闭环控制。
  5. 输出显示模块:用于显示系统的阶跃响应曲线。

系统框图如下所示:

 

深色版本

阶跃输入 → 比例控制器 → 被控对象 → 输出显示 → 反馈 → 比例控制器

3. Simulink仿真模型步骤

3.1 创建Simulink模型

  1. 打开MATLAB并新建一个Simulink模型文件。
  2. 定义模型名称为RootLocusAnalysis
 

matlab

深色版本

modelName = 'RootLocusAnalysis';
new_system(modelName);
open_system(modelName);

3.2 添加模块

3.2.1 阶跃输入模块

添加一个“Step”模块作为输入信号。

 

matlab

深色版本

add_block('simulink/Sources/Step', [modelName '/Step_Input']);
set_param([modelName '/Step_Input'], 'StartTime', '0'); % 设置阶跃开始时间为0秒
set_param([modelName '/Step_Input'], 'FinalValue', '1'); % 设置阶跃幅值为1

3.2.2 比例控制器模块

添加一个“Gain”模块作为比例控制器。

 

matlab

深色版本

add_block('simulink/Math Operations/Gain', [modelName '/Proportional_Controller']);
set_param([modelName '/Proportional_Controller'], 'Gain', '1'); % 初始增益K=1

3.2.3 被控对象模块

添加一个“Transfer Fcn”模块来定义一阶惯性环节。

 

matlab

深色版本

add_block('simulink/Continuous/Transfer Fcn', [modelName '/Plant']);
set_param([modelName '/Plant'], 'Numerator', '[1]');
set_param([modelName '/Plant'], 'Denominator', '[5 1]'); % 设置τ=5, K=1

3.2.4 反馈模块

添加一个“Sum”模块用于实现反馈。

 

matlab

深色版本

add_block('simulink/Math Operations/Sum', [modelName '/Feedback_Sum']);
set_param([modelName '/Feedback_Sum'], 'Inputs', '|+-'); % 设置为减法运算

3.2.5 输出显示模块

添加一个“Scope”模块用于显示阶跃响应曲线。

 

matlab

深色版本

add_block('simulink/Sinks/Scope', [modelName '/Output_Scope']);

3.2.6 数据记录模块

添加一个“To Workspace”模块将输出数据保存到MATLAB工作区。

 

matlab

深色版本

add_block('simulink/Sinks/To Workspace', [modelName '/Data_Logger']);
set_param([modelName '/Data_Logger'], 'VariableName', 'outputData');
set_param([modelName '/Data_Logger'], 'SaveFormat', 'Array');

3.3 连接模块

将各个模块按照系统框图连接起来。

 

matlab

深色版本

% 连接阶跃输入到反馈求和模块
add_line(modelName, '/Step_Input/1', '/Feedback_Sum/1', 'autorouting', 'on');

% 连接比例控制器到被控对象
add_line(modelName, '/Proportional_Controller/1', '/Plant/1', 'autorouting', 'on');

% 连接被控对象到输出显示
add_line(modelName, '/Plant/1', '/Output_Scope/1', 'autorouting', 'on');

% 连接被控对象到数据记录器
add_line(modelName, '/Plant/1', '/Data_Logger/1', 'autorouting', 'on');

% 连接反馈求和模块到比例控制器
add_line(modelName, '/Feedback_Sum/1', '/Proportional_Controller/1', 'autorouting', 'on');

% 连接被控对象输出到反馈求和模块
add_line(modelName, '/Plant/1', '/Feedback_Sum/2', 'autorouting', 'on');

3.4 设置仿真参数

设置仿真时间为10秒。

 

matlab

深色版本

set_param(modelName, 'StopTime', '10'); % 设置仿真时间为10秒
save_system(modelName); % 保存模型

3.5 绘制根轨迹图

在MATLAB中绘制系统的根轨迹图,并分析系统的稳定性。

 

matlab

深色版本

% 定义开环传递函数
s = tf('s');
G = 1 / (5 * s + 1); % 被控对象传递函数

% 绘制根轨迹图
rlocus(G);

% 添加网格和标题
grid on;
title('Root Locus Analysis');
xlabel('Real Axis');
ylabel('Imaginary Axis');

% 分析稳定性
[K, poles] = rlocfind(G); % 使用鼠标选择感兴趣的点
disp('闭环极点:');
disp(poles);

4. 系统稳定性分析

4.1 观察根轨迹图

通过根轨迹图观察闭环系统的极点分布:

  • 如果所有闭环极点均位于复平面的左半平面,则系统稳定。
  • 如果存在闭环极点位于复平面的右半平面,则系统不稳定。

4.2 调整控制器增益 KK

通过调整比例控制器的增益 KK,观察根轨迹的变化,并找到使系统稳定的增益范围。

例如,将增益 KK 设置为2:

 

matlab

深色版本

set_param([modelName '/Proportional_Controller'], 'Gain', '2'); % 设置增益K=2

重新运行仿真并观察阶跃响应曲线。


5. 示例代码片段

以下是一个完整的基于Simulink的根轨迹分析法进行系统稳定性分析的仿真模型搭建过程。

 

matlab

深色版本

% Step 1: Define model name and create a new system
modelName = 'RootLocusAnalysis';
new_system(modelName);
open_system(modelName);

% Step 2: Add Step Input
add_block('simulink/Sources/Step', [modelName '/Step_Input']);
set_param([modelName '/Step_Input'], 'StartTime', '0');
set_param([modelName '/Step_Input'], 'FinalValue', '1');

% Step 3: Add Proportional Controller
add_block('simulink/Math Operations/Gain', [modelName '/Proportional_Controller']);
set_param([modelName '/Proportional_Controller'], 'Gain', '1');

% Step 4: Add Plant Model
add_block('simulink/Continuous/Transfer Fcn', [modelName '/Plant']);
set_param([modelName '/Plant'], 'Numerator', '[1]');
set_param([modelName '/Plant'], 'Denominator', '[5 1]');

% Step 5: Add Feedback Sum
add_block('simulink/Math Operations/Sum', [modelName '/Feedback_Sum']);
set_param([modelName '/Feedback_Sum'], 'Inputs', '|+-');

% Step 6: Add Output Scope
add_block('simulink/Sinks/Scope', [modelName '/Output_Scope']);

% Step 7: Add Data Logger
add_block('simulink/Sinks/To Workspace', [modelName '/Data_Logger']);
set_param([modelName '/Data_Logger'], 'VariableName', 'outputData');
set_param([modelName '/Data_Logger'], 'SaveFormat', 'Array');

% Step 8: Connect Blocks
add_line(modelName, '/Step_Input/1', '/Feedback_Sum/1', 'autorouting', 'on');
add_line(modelName, '/Proportional_Controller/1', '/Plant/1', 'autorouting', 'on');
add_line(modelName, '/Plant/1', '/Output_Scope/1', 'autorouting', 'on');
add_line(modelName, '/Plant/1', '/Data_Logger/1', 'autorouting', 'on');
add_line(modelName, '/Feedback_Sum/1', '/Proportional_Controller/1', 'autorouting', 'on');
add_line(modelName, '/Plant/1', '/Feedback_Sum/2', 'autorouting', 'on');

% Step 9: Set Simulation Parameters
set_param(modelName, 'StopTime', '10');
save_system(modelName);

% Step 10: Draw Root Locus
s = tf('s');
G = 1 / (5 * s + 1); % 被控对象传递函数
rlocus(G); % 绘制根轨迹图
grid on;
title('Root Locus Analysis');
xlabel('Real Axis');
ylabel('Imaginary Axis');

% Step 11: Analyze Stability
[K, poles] = rlocfind(G); % 使用鼠标选择感兴趣的点
disp('闭环极点:');
disp(poles);

6. 结束语

通过这个项目文档,我们详细介绍了如何在Simulink中通过根轨迹分析法进行系统稳定性分析。希望这个示例能够帮助读者更好地理解和应用根轨迹分析技术,并为相关领域的研究和开发提供有价值的参考。如果需要进一步的优化或扩展,可以根据具体的应用需求进行相应的调整和改进。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蘑菇二号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值