被控对象为时滞传递涵数 在对象的输出端加幅值为0.01的随机信号n(k)。采样时间为20ms.低通滤波器为: PID控制参数为:kc=0.30;ki=0.0055;TD=140 用完全微分算法仿真实现
时间: 2024-06-07 18:06:48 浏览: 103
保证能控性和能观性的采样方式
根据题意,我们可以列出被控对象的数学模型:
$$
y(k) = 0.3679y(k-1) + 0.2645y(k-2) + 0.3681u(k-2)
$$
其中,$y(k)$ 表示被控对象在时刻 $k$ 的输出,$u(k)$ 表示在时刻 $k$ 的控制输入,两者均为实数。由于我们需要在输出端加入一个随机信号 $n(k)$,因此可以将控制输入修改为 $u(k) = u_c(k) + 0.01n(k)$,其中 $u_c(k)$ 为控制器的输出。
接下来,我们需要设计一个 PID 控制器,其传递函数为:
$$
G_c(s) = K_c\left(1 + \frac{1}{T_is} + T_ds\right)
$$
其中 $K_c$,$T_i$,$T_d$ 分别表示比例、积分、微分部分的参数。根据题目给出的 PID 控制参数,我们可以得到:
$$
K_c = 0.30,\quad T_i = \frac{K_c}{k_i} = 54.5455,\quad T_d = \frac{T_d}{K_c} = 466.6667
$$
我们采用完全微分算法(也称为 Euler 前向法)进行数值仿真。根据该算法,可以得到控制器的离散形式为:
$$
u_c(k) = u_c(k-1) + K_c\left(e(k) - e(k-1) + \frac{T_s}{T_i}e(k) + T_d\frac{e(k) - 2e(k-1) + e(k-2)}{T_s}\right)
$$
其中 $e(k) = r(k) - y(k)$ 表示误差信号,$r(k)$ 表示参考信号。由于题目没有给出参考信号,我们可以将其设为一个阶跃信号,即 $r(k) = 1$ 当 $k \geq 0$,否则 $r(k) = 0$。此外,$T_s = 0.02$s 表示采样时间。
最后,我们需要在控制输入 $u(k)$ 上加入一个低通滤波器,以去除高频噪声。该滤波器的一阶传递函数为:
$$
G_f(s) = \frac{1}{1 + Ts}
$$
其中 $T = 0.2s$ 表示滤波器的时间常数。将其离散化后,可以得到:
$$
u(k) = \frac{T}{T + Ts}u(k-1) + \frac{T}{T + Ts}u_c(k) - \frac{T_s}{T + Ts}u_c(k-1)
$$
综上所述,我们可以得到完整的控制系统如下:
$$
\begin{aligned}
e(k) &= r(k) - y(k) \\
u_c(k) &= u_c(k-1) + K_c\left(e(k) - e(k-1) + \frac{T_s}{T_i}e(k) + T_d\frac{e(k) - 2e(k-1) + e(k-2)}{T_s}\right) \\
u(k) &= \frac{T}{T + Ts}u(k-1) + \frac{T}{T + Ts}u_c(k) - \frac{T_s}{T + Ts}u_c(k-1) \\
y(k) &= 0.3679y(k-1) + 0.2645y(k-2) + 0.3681u(k-2) + n(k)
\end{aligned}
$$
其中 $T_s = 0.02$s,$T = 0.2$s,$K_c = 0.30$,$T_i = 54.5455$,$T_d = 466.6667$。
现在我们可以使用 Python 对该系统进行数值仿真。下面是完整的代码实现:
阅读全文