【过程控制系统】-实验辨识法下的参数辨识(3、4)

Posted by Orchid on May 27, 2025

基于阶跃响应的参数辨识

通过操作过程的调节阀,使过程的控制输入产生一个阶跃变化,将被控量随时间变化的响应曲线用记录仪或其它方法测试记录下来,再根据测试记录的响应曲线来求取过程输出与输入之间的数学关系。

一阶环节无时延(开环)

\[\begin{align} &\text{传递函数:} \quad G(s) = \frac{K}{\tau s +1} \\ &\text{阶跃响应:} \quad y(t) = KM[1-e^{-\frac{t}{\tau}}], \quad r(t) = M*1_{t \geq0} \end{align}\]
  • 作图法

    $K$ = 稳态增益;$\tau$ 为幅值 = 稳态幅值 * 63.2% 时的时间($1 - e^{-1} = 0.632$)

一阶环节有时延(开环)

\[\begin{align} &\text{传递函数:} \quad G(s) = \frac{K}{\tau s +1}e^{-\theta s} \\ &\text{阶跃响应:} \quad y(t) = \begin{cases} 0, t < \theta\\ KM[1-e^{-\frac{t-\theta}{\tau}}], t \geq \theta \end{cases} \quad, r(t) = M*1_{t \geq0} \end{align}\]
  • 两点法

    • 特殊两点法

      $y(\infty)\%$ 28.4 39.3 55 59.3 63.2 77.7 86.5
      time($t$) $\tau/3 + \theta$ $\tau/2 + \theta$ $0.8\tau + \theta$ $0.9\tau + \theta$ $\tau + \theta$ $1.5\tau + \theta$ $2\tau + \theta$

      取幅值为 28.4% 和 63.2% 对应的两个时刻 $t_1, t_2$: \(\begin{align} \theta &= 0.5(3t_2 - t_1) \\ \tau &= 1.5(t_2-t_1) \end{align}\)

    • 一般两点法

      选择任意两个时刻 $t_1, t_2$: \(\begin{cases} y^*(t_1) = 1 - e^{-\frac{t_1 - \theta}{\tau}} \\ y^*(t_2) = 1 - e^{-\frac{t_2 - \theta}{\tau}} \end{cases} \quad \Longrightarrow \quad \begin{cases} \tau = \frac{t_2 - t_1}{\ln[1 - y^*(t_1)] - \ln[1 - y^*(t_2)]} \\ \theta = \frac{t_2 \ln[1 - y^*(t_1)] - t_1 \ln[1 - y^*(t_2)]}{\ln[1 - y^*(t_1)] - \ln[1 - y^*(t_2)]} \end{cases}\) 可多取几组计算, 最后求平均值。

  • Log 法 \(y(t) = y_{\infty} \left(1 - e^{-(t-\theta)/\tau}\right) \implies \frac{y_{\infty} - y}{y_{\infty}} = e^{-(t-\theta)/\tau} \implies \ln\left(\frac{y_{\infty} - y}{y_{\infty}}\right) = \frac{\theta}{\tau} - \frac{t}{\tau} = -\frac{1}{\tau}(t - \theta)\)

    通过斜线与横轴焦点得到 $\theta$;通过斜线斜率得到 $\tau$。

  • 面积法

    1. 从 $A_0$ 求得平均驻留时间 $T_{ar}$ (这是一个什么玩意儿不用管,反正就是算出这么一个时间量) \(\begin{align*} T_{ar} &= \frac{A_0}{K} = \frac{\int_0^{\infty} [y(\infty) - y(t)] dt}{K} \\ &= \frac{\int_0^\theta y(\infty) dt + \int_\theta^{\infty} [y(\infty) - y(t)] dt}{K} \\ &= \frac{\int_0^\theta K dt + K \int_\theta^{\infty} [1 - (1 - e^{-(t-\theta)/\tau})] dt}{K} \\ &= \tau + \theta \\ \implies &\frac{A_0}{K} = \tau + \theta \end{align*}\)

    2. 然后计算 $[0, T_{ar}]$ 区间内的面积 $A_1$
      \(A_1 = \int_0^{T_{ar}} y(t) dt = \int_0^\tau K[1 - e^{-t/\tau}] dt = K\tau e^{-1}\)

    3. 求解得到 \(\begin{cases} \tau = \frac{A_1 e}{K} \\ \theta = \frac{A_0}{K} - \frac{A_1 e}{K} \end{cases}\)

二阶环节带时延(开环)

\[\begin{align} &\text{传递函数:} \quad G(s) = \frac{K}{(\tau_1 s +1)(\tau_2 s +1)}e^{-\theta s} \\ &\text{阶跃响应:} \quad y(t) = \begin{cases} 0, \quad t < \theta\\ MK \left[ \left(1 - \left(\frac{\tau_1}{\tau_1 - \tau_2}\right) e^{-(t-\theta)/\tau_1} - \left(\frac{\tau_2}{\tau_2 - \tau_1}\right) e^{-(t-\theta)/\tau_2} \right) \right], \quad t \geq \theta \end{cases} \quad, r(t) = M*1_{t \geq0} \end{align}\]
  • 作图法

    (说实话没看懂是怎么得到参数的)

高阶带时延(开环)(时域)

\[\begin{align} &\text{传递函数:} \quad \frac{Y(s)}{U(s)} = G(s) = \frac{b_1s^{n-1} + b_2s^{n-2} \cdots + b_{n-1}s + b_n}{s^n + a_1s^{n-1} + \cdots + a_{n-1}s + a_n} e^{-Ls} \\ & \text{微分方程:} \quad y^{(n)}(t) + a_1 y^{(n-1)}(t) + \cdots + a_{n-1} \dot{y}(t) + a_n y(t) = \\ & \quad \quad \quad \quad \quad b_1 u^{(n-1)}(t - L) + b_2 u^{(n-2)}(t - L) + \cdots + b_{n-1} \dot{u}(t - L) + b_n u(t - L) \end{align}\]

待辨识的参数:$a_1, a_2, \cdots a_n,b_1,b_2,\cdots, b_n$。

  • 最小二乘法

    首先,信号的微分量是无法得到的,但是积分量是可以得到的。因此,将时域信号做 n 次积分: \(\begin{align*} y(t) + a_1 \int_{[0,t]}^{(1)} y(t) + a_2 \int_{[0,t]}^{(2)} y(t) + \cdots + a_{n-1} \int_{[0,t]}^{(n-1)} y(t) + a_n \int_{[0,t]}^{(n)} y(t) \\ = b_1 \int_{[0,t]}^{(1)} u(t - L) + b_2 \int_{[0,t]}^{(2)} u(t - L) + \cdots + b_{n-1} \int_{[0,t]}^{(n-1)} u(t - L) + b_n \int_{[0,t]}^{(n)} u(t - L) \end{align*}\) 其中,有关 $y(t)$ 的量都是已知的,因为 $y(t)$ 可测,积分可算。有关 $u(t)$ 的量也都是已知的,因为假定是阶跃输入,积分也都是可以算的。时间区间 $[0,t]$ 也是人为选定的。因此未知参数只有待辨识的 $a_1, a_2, \cdots a_n,b_1,b_2,\cdots, b_n$。

    • n = 1 \(y(t) = -a_1 \int_0^t y(\tau) d\tau + hb_1(t - L) \\ \begin{cases} \gamma(t) = y(t) \\ \varphi(t)^T = [-\int_0^t y(\tau) d\tau \quad -h \quad th] \\ \theta = [a_1 \quad b_1L \quad b_1] \end{cases} \\ \implies \gamma(t) = \varphi(t)^T\theta + e\)

      \[\hat{\theta} = (\Psi^T \Psi)^{-1} \Psi^T \Gamma\\ \Psi = \begin{bmatrix} \varphi(t_1) \\ \varphi(t_2) \\ \vdots \\ \varphi(t_N) \end{bmatrix}, \quad \Gamma = \begin{bmatrix} \gamma(t_1) \\ \gamma(t_2) \\ \vdots \\ \gamma(t_N) \end{bmatrix}, \quad \begin{bmatrix} a_1 \\ b_1 \\ L \end{bmatrix} = \begin{bmatrix} \theta_1 \\ \theta_3 \\ \theta_2/\theta_3 \end{bmatrix}\]

高阶带时延(开环)(频域)

\[\begin{align} &\text{传递函数:} \quad \frac{Y(s)}{U(s)} = G(s) = \frac{b_1s^{n-1} + b_2s^{n-2} \cdots + b_{n-1}s + b_n}{s^n + a_1s^{n-1} + \cdots + a_{n-1}s + a_n} e^{-Ls} \\ &\text{幅频特性:} \quad |G(j\omega)| = \frac{|b_{m-1}(j\omega)^{m-1} + b_{m-2}(j\omega)^{m-2} + \cdots + b_0|}{|a_m(j\omega)^m + \cdots + a_1(j\omega) + 1|} \\ &\text{相频特性:} \quad \angle G(j\omega) = \angle [b_{m-1}(j\omega)^{m-1} + \cdots + b_0] - \angle [a_m(j\omega)^m + \cdots + a_1(j\omega) + 1] - L \cdot \omega \end{align}\]
  • 最小二乘法

    • n = 1 \(G(s) = \frac{b_0}{a_1s + 1} e^{-Ls} \quad \Rightarrow \quad \begin{cases} |G(j\omega)|^2 &= -|\omega \cdot G(j\omega)|^2 \cdot (a_1)^2 + (b_0)^2 \\ \angle G(j\omega) &= 0 - \text{atan}(a_1 \cdot \omega) - L \cdot \omega \end{cases}\)

      \[\gamma(\omega) = [\phi(\omega)]^T \cdot \theta \quad \implies \quad \begin{cases} \gamma(\omega) = |G(j\omega)|^2 \\ \phi(\omega) = [-|\omega \cdot G(j\omega)|^2 \quad 1]^T \\ \theta = [\theta(1) \quad \theta(2)]^T = [(a_1)^2 \quad (b_0)^2]^T \end{cases} \\ \eta(\omega) = \angle G(j\omega) + \text{atan}(a_1 \cdot \omega) - 0 \quad \implies \quad \eta(\omega) = -\omega \cdot L\]

基于继电测试的参数辨识

  • 辨识步骤

    1. 将系统切到以 relay 作为控制器的闭环系统

    2. 先使系统稳定, 然后系统输入增加5%,在 relay 环节的作用下输出最终呈现等幅振荡,即系统出现极限环(输入输出相位相差180度时)。

    3. 读取极限增益 $K_u = \frac{4h}{\pi a}$,极限频率 $w_u = \frac{2\pi}{P_u}$,其中 $P_u$ 是等幅振荡的周期。($K_u$ 和 $w_u$ 是模型拟合中的重要参数)

    4. Plant 时延 $L$ 可以从上述测试的初始响应中直接读到。而稳态增益 $K$ 可以通过阶跃响应得到。(也可以用$K_u$、$w_u$、$L$ 拟合 )

    5. 拟合模型(根据表格)

      拟合顺序:通过已知的 $L$ 拟合 $T$,再去拟合 $K_p$ (稳态增益,如果不用阶跃响应得到的话)

    6. Z-N法整定控制器参数

基于脉冲响应的参数辨识

  • 思想:直接从实验得到的脉冲响应数据中得到过程的传递函数模型
  • 难点:实际中理想脉冲函数很难实现,得用矩形脉冲输入替代,存在不可避免的误差

假设现在通过矩形脉冲输入,得到了脉冲响应曲线,接下来该怎么做。 \(\begin{align} g(s) &= \int_{0}^{\infty} e^{-st} g(t) dt, \quad e^{-st} = \sum_{j=0}^{\infty} \frac{(-st)^j}{j!} \\ \implies g(s) &= \int_{0}^{\infty} \sum_{j=0}^{\infty} \frac{(-st)^j}{j!} g(t) dt = \sum_{j=0}^{\infty} (-1)^j \frac{s^j}{j!} \int_{0}^{\infty} t^j g(t) dt \\ \text{令 } &m_j = \int_{0}^{\infty} t^j g(t) dt \text{ , 称为脉冲响应函数的第 j 阶矩} \\ \implies g(s) &= \sum_{j=0}^{\infty} (-1)^j \frac{s^j}{j!} m_j \end{align}\) 因此,只需求得脉冲响应的所有阶矩即可。这里采用采用Simpson方法进行近似(积分实际上做不到): \(\int_{x_{i-1}}^{x_i} f(x) dx \approx \frac{h}{3} \left[ f(x_{i-1}) + 4f\left(\frac{x_{i-1} + x_i}{2}\right) + f(x_i) \right]\) 其中,$x_i = a + ih, \quad i = 0, 1, \ldots, n; \quad h = \frac{b - a}{n}$ ,$a,b$ 是积分区间。应用这种方法可以得到: \(m_j = \begin{cases} \frac{\Delta t}{3} \left[ (t_0)^j g(0) + 4 \sum_{t=1}^{N/2} (t_{2i-1})^j g(2i-1) + 2 \sum_{t=1}^{N/2-1} (t_{2i})^j g(2i) + (t_N)^j g(N) \right], \quad j = 1, 2, \ldots \\ \frac{\Delta t}{3} \left[ g(0) + 4 \sum_{t=1}^{N/2} g(2i-1) + 2 \sum_{t=1}^{N/2-1} g(2i) + g(N) \right] , \quad j = 0 \end{cases}\) 同时,可以发现脉冲响应零阶矩和稳态增益的等价性: \(K = \lim_{s \to 0} g(s) = \lim_{s \to 0} \int_{0}^{\infty} e^{-st} g(t) dt = \int_{0}^{\infty} g(t) dt = m_0\) 用稳态增益来标准化传递函数,用零阶矩来标准化响应矩得到标准矩: \(g^*(s) = \frac{g(s)}{K} \\ \mu_j = \frac{m_j}{m_0} \\ g^*(s) = \sum_{j=0}^{\infty} (-1)^j \frac{s^j}{j!} \mu_j = 1 - \mu_1 s + \frac{\mu_2}{2} s^2 - \frac{\mu_3}{6} s^3 + \cdots\) 假设已知传递函数的模型: \(g^*(s) = \frac{1}{a_n s^n + a_{n-1} s^{n-1} + \cdots + a_1 s + 1} = 1 - \mu_1 s + \frac{\mu_2}{2} s^2 - \frac{\mu_3}{6} s^3 + \cdots\) 因此可以求出参数 $a_1,a_2,\ldots,a_n$。

  • 总结脉冲响应辨识流程:
    1. 通过实验的得到系统的脉冲响应
    2. 利用脉冲响应数据计算标准化的矩
    3. 假设一个近似的传递函数模型
    4. 利用传递函数与矩的关系,估计假设模型的未知参数