一、实验目的

  1. 了解一、二阶系统阶跃响应及其性能指标与系统参数之间的关系。

  2. 学习单位阶跃响应性能指标的测试方法。

二、实验内容

  1. 建立一阶系统的模型,观测并记录时间常数T不同时的单位阶跃响应曲线,测定其调整时间(即过渡过程时间) ts。

  2. 建立二阶系统的数学模型,观测并记录不同阻尼比ζ时的单位阶跃响应曲线,测定其超调量Mp及过渡过程时间ts。

三、实验原理及实验设备

  1. 一阶系统

系统传递函数为:T(s)=K/(Ts+1)

在实验当中始终取K=1,取不同的时间常数T分别为:0.25、0.5、1.0。记录不同时间常数下单位阶跃响应曲线,测量并纪录其过渡过程时间ts,给出在时间常数不同时理论计算和实测的ts以及相应的阶跃响应曲线。

2.二阶系统

系统传递函数为:

img

在实验中始终取ωn=1弧度/秒,ξ取不同的值、分别为:0.25、0.5、0.707、1.0,观察并画出相应的单位阶跃响应曲线,测量超调量Mp,计算过渡过程时间ts。

PC机一台。

四、实验步骤

1、通过编写matlab程序,画出各种情况下系统的阶跃响应曲线,并在图中测量一阶系统在不同时间常数下的过渡过程时间ts以及二阶系统在阻尼比ξ取不同的值时的超调量Mp和过渡过程时间ts。

2、通过理论计算,算出一阶系统在不同时间常数下的过渡过程时间ts以及二阶系统在阻尼比ξ取不同的值时的超调量Mp和过渡过程时间ts。

五、实验结果

1、matlab绘制的系统的阶跃响应曲线如下图 1~2所示。

img

图 1 一阶系统的阶跃响应曲线<\center>

img

图 2 一阶系统的阶跃响应曲线<\center>

测量一阶系统在不同时间常数下的过渡过程时间ts以及二阶系统在阻尼比ξ取不同的值时的超调量Mp和过渡过程时间ts,如表 1~2所示。

表 1 测量一阶系统在不同时间常数下的过渡过程时间ts<\center>
序号 时间常数 T 过渡过程Ts / s
1 0.25 0.98
2 0.5 1.96
3 1.0 3.92
表 2 测量二阶系统在阻尼比ξ取不同的值时的超调量Mp和过渡过程时间ts<\center>
序号 阻尼比 ξ 超调量Mp Ts / s
1 0.25 44.4339% 14.12
2 0.5 16.3033% 8.08
3 0.707 4.3255% 5.97
4 1.0 0% 5.84

2、通过理论计算,算出一阶系统在不同时间常数下的过渡过程时间ts以及二阶系统在阻尼比ξ取不同的值时的超调量Mp和过渡过程时间ts,如表 3~4所示。

表 3 计算一阶系统在不同时间常数下的过渡过程时间ts<\center>
序号 时间常数 T 过渡过程Ts / s
1 0.25 1.00
2 0.5 2.00
3 1.0 4.00
表 4 计算二阶系统在阻尼比ξ取不同的值时的超调量Mp和过渡过程时间ts<\center>
序号 阻尼比 ξ 超调量Mp Ts / s
1 0.25 44.4344% 16.00
2 0.5 16.3034% 8.00
3 0.707 4.3255% 5.66
4 1.0 0% 4.00

六、结果分析

一阶系统的过渡过程时间随着时间常数T的增加成比例增加;二阶系统的超调量Mp和时间常数T随着阻尼比ξ的增加而减小,当阻尼比为1时,超调量最小为0。实验数据与测试结果存在误差,其可能的原因是:matlab计算时,自变量t的间隔比较大,使其得到的曲线与真实曲线之间存在差距。

七、收获、体会及建议

了解了一、二阶系统阶跃响应及其性能指标与系统参数之间的关系,学习了单位阶跃响应性能指标的测试方法。

附matlab代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
clc
clear all
syms s

K = 1;
t = 0:0.01:4;

% 一阶系统
Ts125 = K / (0.25 * s + 1);
Ys125 = Ts125 / s;
yt125 = ilaplace(Ys125);
yt125 = subs(yt125);

Ts15 = K / (0.5 * s + 1);
Ys15 = Ts15 / s;
yt15 = ilaplace(Ys15);
yt15 = subs(yt15);

Ts1 = K / (1 * s + 1);
Ys1 = Ts1 / s;
yt1 = ilaplace(Ys1);
yt1 = subs(yt1);

for i = 1:length(t)-1
if( (double(yt125(i))<=0.98) && (double(yt125(i+1))>=0.98))
ts125 = i/100
end
if( (double(yt15(i))<=0.98) && (double(yt15(i+1))>=0.98))
ts15 = i/100
end
if( (double(yt1(i))<=0.98) && (double(yt1(i+1))>=0.98))
ts1 = i/100
end
end

figure(1)
subplot(3,1,1)
plot(t,yt125)
title('一阶系统的阶跃响应曲线 - T = 0.25')
ylabel('y(t)');
xlabel('t');
grid on
axis([0 4 0 1.5]);
hold on
subplot(3,1,2)
plot(t,yt15)
title('一阶系统的阶跃响应曲线 - T = 0.5')
ylabel('y(t)');
xlabel('t');
grid on
axis([0 4 0 1.5]);
hold on
subplot(3,1,3)
plot(t,yt1)
title('一阶系统的阶跃响应曲线 - T = 1.0')
ylabel('y(t)');
xlabel('t');
grid on
axis([0 4 0 1.5]);
hold on

% 二阶系统
t = 0:0.01:20;
w = 1;

Ts225 = w*w / (s*s + 2*0.25*w*s + w*w);
Ys225 = Ts225 / s;
yt225 = ilaplace(Ys225);
yt225 = subs(yt225);

Ts25 = w*w / (s*s + 2*0.5*w*s + w*w);
Ys25 = Ts25 / s;
yt25 = ilaplace(Ys25);
yt25 = subs(yt25);

Ts27 = w*w / (s*s + 2*0.707*w*s + w*w);
Ys27 = Ts27 / s;
yt27 = ilaplace(Ys27);
yt27 = subs(yt27);

Ts2 = w*w / (s*s + 2*1*w*s + w*w);
Ys2 = Ts2 / s;
yt2 = ilaplace(Ys2);
yt2 = subs(yt2);

for i = 1:length(t)-1
if( (double(yt225(i))<=0.98) && (double(yt225(i+1))>=0.98))||( (double(yt225(i))>=1.02) && (double(yt225(i+1))<=1.02))
ts225 = i/100;
end
if( (double(yt25(i))<=0.98) && (double(yt25(i+1))>=0.98))||( (double(yt25(i))>=1.02) && (double(yt25(i+1))<=1.02))
ts25 = i/100;
end
if( (double(yt27(i))<=0.98) && (double(yt27(i+1))>=0.98))||( (double(yt27(i))>=1.02) && (double(yt27(i+1))<=1.02))
ts27 = i/100;
end
if( (double(yt2(i))<=0.98) && (double(yt2(i+1))>=0.98))||( (double(yt2(i))>=1.02) && (double(yt2(i+1))<=1.02))
ts2 = i/100;
end
end

Mp25 = roundn(double((max(yt225)-1)),-6)*100
ts225
Mp5 = roundn(double((max(yt25)-1)),-6)*100
ts25
Mp7 = roundn(double((max(yt27)-1)),-6)*100
ts27
Mp1 = roundn(double((max(yt2)-1)),-6)*100
ts2

figure(2)
subplot(4,1,1)
plot(t,yt225)
title('二阶系统的阶跃响应曲线 - ξ = 0.25')
ylabel('y(t)');
xlabel('t');
grid on
axis([0 20 0 1.5]);
hold on
subplot(4,1,2)
plot(t,yt25)
title('二阶系统的阶跃响应曲线 - ξ = 0.5')
ylabel('y(t)');
xlabel('t');
grid on
axis([0 20 0 1.5]);
hold on
subplot(4,1,3)
plot(t,yt27)
title('二阶系统的阶跃响应曲线 - ξ = 0.707')
ylabel('y(t)');
xlabel('t');
grid on
axis([0 20 0 1.5]);
hold on
subplot(4,1,4)
plot(t,yt2)
title('二阶系统的阶跃响应曲线 - ξ = 1.0')
ylabel('y(t)');
xlabel('t');
grid on
axis([0 20 0 1.5]);
hold on