已知单位负反馈控制系统的开环传递函数为:Go(S)=K/(s(0.1s+1)(0.001s+1)),设计串联校正装置,使校正后系统满足:Kv=100(1/s),ts小于0.05s,超调量小于30%,裕角大于45°
时间: 2023-12-03 13:46:20 浏览: 464
单位负反馈系统的校正装置设计说明.pdf
5星 · 资源好评率100%
首先,我们需要计算出开环传递函数的静态误差常数Kv。由于这是一个单位负反馈系统,我们可以使用公式Kv=lims->0(s*Go(s))来计算Kv,得到Kv=1/0.1=10(1/s)。
接下来,我们需要设计串联校正装置,以满足要求。由于我们需要控制系统的超调量、上升时间和裕度角,我们可以采用PID控制器进行串联校正。
首先,我们可以使用根轨迹法分析系统的稳定性和裕度角。根据给定的开环传递函数,我们可以绘制出根轨迹图:
```python
import numpy as np
import matplotlib.pyplot as plt
import control
# 开环传递函数
G = control.tf([1], [0.1, 1, 0.001, 1, 0])
# 绘制根轨迹
rlist, klist = control.rlocus(G, kvect=np.linspace(0, 1000, 10000))
plt.plot(np.real(rlist), np.imag(rlist))
plt.xlabel('Real Axis')
plt.ylabel('Imaginary Axis')
plt.title('Root Locus')
plt.grid()
plt.show()
```
根据根轨迹图,我们可以看到系统的极点都在左半平面,因此系统是稳定的。此外,我们可以找到满足裕度角大于45°的增益范围,即K=80到120。
接下来,我们可以使用频率响应法设计PID控制器。由于我们需要控制系统的超调量和上升时间,我们可以选择经典的比例-积分-微分(PID)控制器。根据频率响应法,我们需要根据系统的幅频特性和相频特性来选择合适的PID参数。
首先,我们可以绘制出系统的幅频特性和相频特性:
```python
# 绘制幅频特性和相频特性
w, mag, phase = control.bode(G, dB=True, Hz=True, deg=True, Plot=False)
plt.subplot(2, 1, 1)
plt.semilogx(w, mag)
plt.ylabel('Magnitude (dB)')
plt.grid()
plt.subplot(2, 1, 2)
plt.semilogx(w, phase)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Phase (deg)')
plt.grid()
plt.show()
```
根据幅频特性和相频特性,我们可以选择PID参数。根据经验公式,我们可以选择比例增益Kp=0.4*K,积分时间常数Ti=0.5/ts,微分时间常数Td=0.125*ts。
```python
# 选择PID参数
K = 100
Kp = 0.4 * K
ts = 0.05
Ti = 0.5 / ts
Td = 0.125 * ts
# 设计PID控制器
C = control.tf([Kp*Td, Kp, Kp/Ti], [1, 0])
C = control.minreal(C)
# 计算校正后系统的开环传递函数和闭环传递函数
Go_c = C * G
Gc = control.feedback(Go_c)
```
最后,我们可以检查校正后系统是否满足要求。首先,我们可以计算校正后系统的静态误差常数Kv,确保其等于100(1/s)。
```python
# 计算校正后系统的静态误差常数Kv
Kv_c = control.dcgain(Gc * 1/s)
print('Kv_c:', Kv_c)
```
然后,我们可以绘制校正后系统的单位阶跃响应,检查其上升时间和超调量是否满足要求。
```python
# 绘制校正后系统的单位阶跃响应
t, y = control.step_response(Gc)
plt.plot(t, y)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Step Response')
plt.grid()
plt.show()
# 计算校正后系统的上升时间和超调量
tr = control.rise_time(Gc)
Mp = control.peak_response(Gc)
print('tr:', tr)
print('Mp:', Mp)
```
最后,我们可以计算校正后系统的相角裕度和增益裕度,确保其大于45°。
```python
# 计算校正后系统的相角裕度和增益裕度
gm, pm, sm, wg, wp, ws = control.margin(Go_c)
print('gm:', gm)
print('pm:', pm)
```
如果校正后系统满足所有要求,则可以将PID控制器实现到实际系统中。
阅读全文