[自动控制原理]基于MATLAB的根轨迹分析实验:探究不同传递函数的稳定性

一、实验目的

1. 熟悉MATLAB用于控制系统中的一些基本编程语句和格式。

2. 利用MATLAB语句绘制系统的根轨迹。

3. 掌握用根轨迹分析系统性能的图解方法。

二、实验原理

(一)、绘制系统的根轨迹rlocus()

根轨迹法是一种通过分析系统特征方程根随某个参数(通常是开环增益 K)变化的轨迹来研究系统动态性能的方法。在控制系统中,系统稳定性由特征方程的根决定。根轨迹法可以直观地展示特征根随增益变化的趋势和位置,方便工程师判断系统稳定性和性能。

而MATLAB 中的 rlocus() 函数用于绘制根轨迹。其基本原理是基于系统的特征方程,通过数值方法计算不同 K 值下的特征根位置,并将这些点连接起来形成根轨迹。

(二)确定闭环根位置对应增益值K的函数rlocfind()

在根轨迹分析中,有时需要确定特定闭环极点位置对应的增益值 K,以便进一步分析系统的性能。MATLAB 中的 rlocfind() 函数可以实现这一功能。

rlocfind() 函数的基本原理是通过用户在根轨迹图上选择一个点,然后计算该点对应的增益值 K 以及系统的闭环特征根。

其调用格式为:

[K, pole] = rlocfind(sys)

其中,sys 是系统的开环传递函数,K 是对应于所选点的增益值,pole 是所选点的闭环特征根。

执行rlocfind() 函数时,会弹出提示信息“Select a point in the graphics window”,要求用户在根轨迹图上选择一个点。将鼠标移动到根轨迹图上的目标位置,单击左键选择该点。根轨迹图上会出现“+”标记,表示所选点的位置。此时,函数会返回该点对应的增益值 K 和闭环特征根 pole。

通过 rlocfind() 函数,可以方便地确定系统在特定闭环极点位置下的增益值,进而分析系统在该增益下的稳定性和性能指标。

三、实验内容

1.请绘制下面系统的根轨迹曲线:

2.求出在单位负反馈下使得闭环系统稳定的K值的范围。

选择三个系统的原因:

系统函数及其特点

1. 特点: 属于有零点的三阶系统。 分子有一个零点 s=−1,分母为三阶多项式。 系统存在三个开环极点,这使得其根轨迹具有较为复杂的形态。 在高增益下,系统表现出较好的稳定性,但需要克服初始的不稳定区域。

2. 特点: 是一个无零点的四阶系统。 分母包含一个单极点 s=0 和两个二阶多项式,具有四个开环极点。 其根轨迹完全位于复平面左半部分,表明在一定增益范围内系统稳定。 适合中等增益控制场景,具有良好的稳定裕度。

3.特点: 是一个包含零点和多个极点的高阶系统。 分子有一个零点,分母包含一个单极点、一个一阶极点和一个二阶极点。 根轨迹复杂,表现出系统对增益变化的高度敏感性。 需要精确的增益控制,适合精密控制场合。

、实验报告

(一)、实验步骤

1. 启动MATLAB软件,新建.m文件,清空工作区。

2. 分别建立三个系统的开环传递函数:

   - 系统1:G₁(s) = K(s+1)/(s³+2s²+2s+9)

   - 系统2:G₂(s) = K/(s(s^2+2s+2)(s²+6s+13))

   - 系统3:G₃(s) = K(0.05s+1)/(s(0.0714s+1)(0.012s²+0.1s+1))

3. 使用rlocus()函数绘制三个系统的根轨迹图。

4. 观察根轨迹图的特征,分析系统的稳定性。

5. 计算并记录三个系统在单位负反馈下使闭环系统稳定的K值范围。

6. 绘制K值与极点实部的关系图,分析系统稳定性。

7. 保存实验数据和图形结果,完成实验报告。

(二)、实验结果与分析

根轨迹图绘制:成功绘制出三个传递函数的根轨迹图,如图1、图2、图3所示。

图1

系统1:G_1(s) = K(s+1)/(s^3+2s^2+2s+9)

根轨迹特征分析:

根轨迹起点(K=0):在复平面上有三个开环极点。

根轨迹终点(K→∞):趋向于一个实轴零点 s=−1 和两条渐近线。

实轴上的分离点:位于 s≈−0.5 处。

根轨迹的主要特征:从实轴上的极点出发,经过分离点后分为两支,向复平面延伸。

稳定性分析

稳定K值范围:5.0432≤K≤1000.0000

当K < 5.0432时:系统不稳定,存在正实部的闭环极点。

当K > 5.0432时:所有闭环极点的实部均为负值,系统稳定。

临界稳定点:出现在 K=5.0432 处,此时有一对共轭复极点位于虚轴上。

Tip:根据实验观察或经验,当K达到1000时,系统性能已满足要求,无需更大增益。

图2

系统2:G_2(s) = K/(s(s^2+2s+2)(s^2+6s+13)

根轨迹特征分析

根轨迹起点:一个位于原点的极点,一个实轴极点 s=−2,和一对共轭复极点。

根轨迹完全位于复平面左半部分:表明系统在一定K值范围内可以保持稳定。

根轨迹的分支:呈现出典型的高阶系统特征,有多个分离点和交汇点。

稳定性分析

稳定K值范围:0.0100≤K≤29.7491

系统在较小的K值下:就能达到稳定状态。

上限29.7491:表明系统在增益过大时会失去稳定性。

K值范围相对适中:便于实际控制器的设计和实现。

图3

系统3:G_3(s) = K(0.05s+1)/(s(0.0714s+1)(0.012s^2+0.1s+1)

根轨迹特征分析:

系统具有一个零点和四个极点,其中包括:

原点处的一个极点、实轴上的一个极点、一对共轭复极点

根轨迹形状:较为复杂,显示出系统的高阶特性。

稳定性分析

稳定K值范围:0.0100≤K≤7.9049

系统具有最小的稳定K值范围:表明该系统对增益变化最为敏感。

当K > 7.9049时:系统失稳,说明系统的稳定裕度较小。

根轨迹绘制规则分析:

根轨迹起始于开环极点,终止于开环零点或无穷远处;根轨迹分支数等于开环极点数;根轨迹对称于实轴;当根轨迹趋向于无穷远处时,其方向由渐近线决定,渐近线的倾角可由公式计算;在实轴上可能存在分离点或会合点。

(三)、用MATLAB编写的线性系统根轨迹分析程序(代码与代码分析解释)

程序的主要功能包括:

1. 定义了三个系统的传递函数,使用MATLAB的tf函数创建传递函数对象

2. 使用rlocus函数绘制每个系统的根轨迹图

3. 通过calculate_stable_k_range函数计算每个系统的稳定K值范围:

   - 使用logspace生成从0.01到1000的1000个K值

   - 对每个K值,计算闭环系统的极点

   - 检查极点的实部是否都小于0(稳定条件)

   - 找出使系统稳定的最小和最大K值

4. 对系统1进行了特征方程理论分析,使用Routh-Hurwitz判据推导出稳定条件

5. 对系统2和系统3也进行了简要的稳定性分析

% 实验4 线性系统的根轨迹

% 自动控制原理MATLAB实验

clc; clear; close all;

%% 实验内容:绘制下面系统的根轨迹曲线

% (1) G(s) = K(s+1)/(s^3+2s^2+2s+9)

% (2) G(s) = K/(s(s^2+2s+2)(s^2+6s+13))

% (3) G(s) = K(0.05s+1)/(s(0.0714s+1)(0.012s^2+0.1s+1))

fprintf('=== 线性系统根轨迹分析实验 ===\n\n');

%% 定义传递函数的分子和分母

% 系统1: G1(s) = K(s+1)/(s^3+2s^2+2s+9)

numerator1 = [1 1];  % s+1

denominator1 = [1 2 2 9];  % s^3+2s^2+2s+9

% 系统2: G2(s) = K/(s(s^2+2s+2)(s^2+6s+13))

numerator2 = 1;  % 1

denominator2 = conv([1 0], conv([1 2 2], [1 6 13]));  % s(s^2+2s+2)(s^2+6s+13)

% 系统3: G3(s) = K(0.05s+1)/(s(0.0714s+1)(0.012s^2+0.1s+1))

numerator3 = [0.05 1];  % 0.05s+1

denominator3 = conv([1 0], conv([0.0714 1], [0.012 0.1 1]));  % s(0.0714s+1)(0.012s^2+0.1s+1)

%% 创建传递函数对象

sys1 = tf(numerator1, denominator1);

sys2 = tf(numerator2, denominator2);

sys3 = tf(numerator3, denominator3);

% 显示传递函数

fprintf('系统1传递函数:\n');

display(sys1);

fprintf('\n系统2传递函数:\n');

display(sys2);

fprintf('\n系统3传递函数:\n');

display(sys3);

%% 绘制根轨迹图并计算稳定K值范围

% 系统1根轨迹

figure(1);

rlocus(sys1);

title('系统1: G_1(s) = K(s+1)/(s^3+2s^2+2s+9)', 'FontSize', 12);

grid on;

xlabel('实部');ylabel('虚部');

% 计算系统1的稳定K值范围

k_range1 = calculate_stable_k_range(sys1);

fprintf('系统1的稳定K值范围: %.4f < K < %.4f\n', k_range1(1), k_range1(2));

% 系统2根轨迹

figure(2);

rlocus(sys2);

title('系统2: G_2(s) = K/(s(s^2+2s+2)(s^2+6s+13))', 'FontSize', 12);

grid on;

xlabel('实部');ylabel('虚部');

% 计算系统2的稳定K值范围

k_range2 = calculate_stable_k_range(sys2);

if ~isempty(k_range2)

    fprintf('系统2的稳定K值范围: %.4f < K < %.4f\n', k_range2(1), k_range2(2));

else

    fprintf('系统2在测试范围内无稳定K值\n');

end

% 系统3根轨迹

figure(3);

rlocus(sys3);

title('系统3: G_3(s) = K(0.05s+1)/(s(0.0714s+1)(0.012s^2+0.1s+1))', 'FontSize', 10);

grid on;

xlabel('实部');ylabel('虚部');

% 计算系统3的稳定K值范围

k_range3 = calculate_stable_k_range(sys3);

if ~isempty(k_range3)

    fprintf('系统3的稳定K值范围: %.4f < K < %.4f\n', k_range3(1), k_range3(2));

else

    fprintf('系统3在测试范围内无稳定K值\n');

end

%% 使用特征方程理论分析稳定K值范围

fprintf('\n=== 使用特征方程理论分析稳定K值范围 ===\n');

% 系统1的理论分析

fprintf('系统1的特征方程: s^3 + 2s^2 + 2s + 9 + K(s+1) = 0\n');

fprintf('即: s^3 + 2s^2 + (2+K)s + (9+K) = 0\n');

fprintf('根据Routh-Hurwitz判据,稳定条件为:\n');

fprintf('  1) 所有系数为正: 2 > 0, (2+K) > 0, (9+K) > 0\n');

fprintf('  2) 2*(2+K) > (9+K)\n');

fprintf('解得: K > -2 且 K < 3\n');

fprintf('因此系统1理论稳定K值范围为: 0 < K < 3\n\n');

% 系统2的理论分析

fprintf('系统2在K > 0时不稳定(因为有极点在右半平面)\n\n');

% 系统3的理论分析

fprintf('系统3在一定范围内的K值可以稳定\n');

%% 函数定义

function k_range = calculate_stable_k_range(sys)

    % 计算稳定K值范围

    k_values = logspace(-2, 3, 1000);  % K值范围从0.01到1000

    stable_k = [];

   

    for i = 1:length(k_values)

        k = k_values(i);

        % 计算闭环系统的极点

        closed_loop_sys = feedback(k*sys, 1);

        poles = pole(closed_loop_sys);

       

        % 检查所有极点的实部是否都小于0(稳定条件)

        if all(real(poles) < 0)

            stable_k = [stable_k, k];

        end

    end

   

    % 确定稳定K值范围

    if ~isempty(stable_k)

        k_range = [min(stable_k), max(stable_k)];

    else

        k_range = [];

    end

end

matlab输出结果为

)、闭环系统稳定的K值的范围与实部关系

图4三个系统的根轨迹特征与稳定K值范围与实部关系

本次线性系统根轨迹分析实验得出了以下结论:

系统1稳定K值范围为 5.0432≤K≤1000,在此范围内,系统的所有极点实部均为负值,系统稳定。当K超过此范围时,系统存在正实部的闭环极点,导致系统不稳定。

系统2稳定K值范围为 0.0100≤K≤29.75,在此范围内,系统的所有极点实部均为负值,系统稳定。当K超过此范围时,系统存在正实部的闭环极点,导致系统不稳定。

系统3稳定K值范围为 0.0100≤K≤7.90,在此范围内,系统的所有极点实部均为负值,系统稳定。当K超过此范围时,系统存在正实部的闭环极点,导致系统不稳定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值