---
url: /cybernetics/cybernetics-1/index.md
---
## Part 0 绪论

**工程控制并不是在操纵物理量，而是在构造一个人为的信息闭环系统.**

## Part 1 动态系统

控制理论的研究对象是动态系统（Dynamic System）. 动态系统是指状态随时间变化的系统，其特点为系统的状态变量（State Variable）是时间的函数.

在光滑的平面上对一辆质量为 $m$ 的小车施加一个随时间变化的外力 $u\_{(t)}$，这便构成了一个动态系统. 其中，小车的位移 $x\_{(t)}$ 是此系统的状态变量，它是时间的函数.

它随时间的变化率是其对时间 $t$ 的导数 $\dfrac{\mathrm{d}x\_{(t)}}{\mathrm{d}t}$，这也代表了小车的速度.

而速度随时间的变化率为 $\dfrac{\mathrm{d}^2 x\_{(t)}}{\mathrm{d}t^2}$，代表小车的加速度. 根据牛顿第二定律，得到
$$
u\_{(t)} = m \frac{\mathrm{d}^2 x\_{(t)}}{\mathrm{d}t^2}
$$

在这个动态系统中，将外力 $u\_{(t)}$ 定义为系统的输入（Input），将小车位移 $x\_{(t)}$ 定义为系统的输出（Output）. 上式说明给定的系统输入（即作用在小车上的外力 $u\_{(t)}$）将通过影响小车的加速度和小车的速度，最终影响系统的输出（小车的位移 $x\_{(t)}$）.

先讲线性时不变系统（Linear Time Invariant System）. 其中，线性指系统的输入与输出是线性映射的，符合叠加原理（Superposition Principle）.

如果一个线性系统在输入 $u\_{1(t)}$ 的作用下，输出是 $x\_{1(t)}$；在输入 $u\_{2(t)}$ 的作用下，输出是 $x\_{2(t)}$. 那么当输入为 $a u\_{1(t)} + b u\_{2(t)}$（其中 $a$ 和 $b$ 是常数）时，系统的输出等于 $a x\_{1(t)} + b x\_{2(t)}$.

时不变性是指如果系统的输入信号延迟了时间 $T$，那么系统的输出也会延迟时间 $T$.

系统在输入 $u\_{1(t)}$ 作用下的输出是 $x\_{1(t)}$. 那么在延迟 $T$ 之后的输入 $u\_{1(t-T)}$ 作用下，系统的输出是 $x\_{1(t-T)}$. 一般情况下，时不变系统的数学表达式中都是常数系数（系数不是时间的函数）.

线性时不变系统必须同时满足上面两个性质.

> (1).
> $$
> a \frac{\mathrm{d}^2 x\_{(t)}}{\mathrm{d}t^2} + b \frac{\mathrm{d}x\_{(t)}}{\mathrm{d}t} + c\_{(t)} x\_{(t)} = u\_{(t)}
> $$
> 该系统为线性时变系统，因为参数 $c\_{(t)}$ 随时间变化.
>
> (2).
> $$
> a \frac{\mathrm{d}^2 x\_{(t)}}{\mathrm{d}t^2} + b \frac{\mathrm{d}x\_{(t)}}{\mathrm{d}t} + \sin x\_{(t)} = u\_{(t)}
> $$
> 该系统为非线性时不变系统，其中非线性项为 $\sin x\_{(t)}$，而 $\sin x\_{1(t)} + \sin x\_{2(t)} \neq \sin(x\_{1(t)} + x\_{2(t)})$.
>
> (3).
> $$
> a \frac{\mathrm{d}^2 x\_{(t)}}{\mathrm{d}t^2} + b \frac{\mathrm{d}x\_{(t)}}{\mathrm{d}t} + c x\_{(t)} = u\_{(t)}
> $$
> 该系统为线性时不变系统.

需要说明的是，从严格意义上讲，时不变系统是不存在的，因为“人不能两次踏进同一条河流”.

但在大部分工程情况下，在系统分析的时间区间内，参数是恒定的或者是缓慢变化的.

对于非线性的系统，一般可以做线性化处理.

## Part 2 控制系统

通过研究动态系统的数学模型和系统表现，可以得到在给定输入 $u\_{(t)}$ 作用下的系统响应（Response，即系统在输入 $u\_{(t)}$ 作用下的输出 $x\_{(t)}$）. 当掌握了动态系统输入与输出的关系之后，就可以设计控制器来调节动态系统的输入，使得系统的输出按照预期的目标响应.

一般而言，控制系统（Control System）由控制器（Controller）和动态系统组成. 控制器会根据参考值（Reference）$r\_{(t)}$ 来决定控制量，即动态系统的输入 $u\_{(t)}$. 这种简单的控制方式称为开环（Open Loop）控制. 当系统的全部信息可知且准确时，开环控制可以完美地达成控制目标.

在小车控制中，如果数学式准确无误，那么就可以根据参考目标 $r\_{(t)}$ 设计作用在小车上的控制量 $u\_{(t)}$，使得小车的实际位移 $x\_{(t)}$ 与 $r\_{(t)}$ 保持一致. 但如果系统的输入输出模型不够准确，或者系统存在扰动，例如在上述例子中，如果有物体掉落在小车内使其质量发生改变，那么开环控制器将无法提供准确的控制量 $u\_{(t)}$，也就无法保障系统输出与目标值 $r\_{(t)}$ 一致.

在实际应用场景中，扰动无处不在，而且完美的数学模型几乎是不存在的，因此开环控制大多只能应用在简单的、对精度要求不高的场景中.

如果希望精确地控制系统，则需要使用闭环（Closed Loop）控制系统，它与开环控制的最大区别是，在闭环控制中会测量系统的输出，并将其反馈（Feedback）到输入端与参考值进行比较. 参考值与实际系统输出的差称为误差（Error），控制器将根据误差调整控制量. 闭环控制系统可以实现高精度的控制，同时补偿由于外界扰动及系统建模不准而引起的偏差.
