用描述函数法分析非线性系统的稳定性与自激振荡

引言

在控制系统中,非线性系统的稳定性和自激振荡(self-oscillation)问题往往较线性系统更为复杂。为了分析这些问题,描述函数法(Describing Function Method)被广泛应用。描述函数法是一种近似分析工具,适用于弱非线性系统,能够预测系统在非线性元件的影响下是否会产生自激振荡。本文将介绍描述函数法的基本理论,并分析几种常见的非线性特性,如饱和特性、死区特性、间隙特性和继电器特性。

描述函数法的基本理论

描述函数法是一种基于频域分析的近似方法,用于分析具有非线性元件的反馈控制系统。描述函数 N ( A ) N(A) N(A) 是输入为正弦信号 r ( t ) = A sin ⁡ ( ω t ) r(t) = A\sin(\omega t) r(t)=Asin(ωt) 时,非线性元件输出信号的基频分量与输入信号幅值 A A A 的关系。

给定一个非线性元件,其输入输出关系为 y ( t ) = f ( r ( t ) ) y(t) = f(r(t)) y(t)=f(r(t)),则描述函数定义为:

N ( A ) = Y 1 ( A ) A N(A) = \frac{Y_1(A)}{A} N(A)=AY1(A)

其中, Y 1 ( A ) Y_1(A) Y1(A) 为输出信号中基频分量的复数幅值。

在描述函数法中,非线性系统的分析可以通过以下步骤进行:

  1. 将非线性系统分为线性部分 G ( s ) G(s) G(s) 和非线性部分 N ( A ) N(A) N(A)
  2. 对于给定的输入正弦信号 r ( t ) = A sin ⁡ ( ω t ) r(t) = A\sin(\omega t) r(t)=Asin(ωt),计算非线性元件的描述函数 N ( A ) N(A) N(A)
  3. 使用奈奎斯特稳定判据来分析闭环系统的稳定性和自激振荡。

常见非线性特性及其描述函数

1. 饱和特性

饱和特性常见于放大器或其他设备中,表示输出信号在一定范围内线性变化,但超过阈值时输出信号被限制在饱和值。

设饱和特性函数为:

y ( t ) = { k A sin ⁡ ( ω t ) ∣ A sin ⁡ ( ω t ) ∣ ≤ L L ⋅ sign ( A sin ⁡ ( ω t ) ) ∣ A sin ⁡ ( ω t ) ∣ > L y(t) = \begin{cases} kA\sin(\omega t) & |A\sin(\omega t)| \leq L \\ L \cdot \text{sign}(A\sin(\omega t)) & |A\sin(\omega t)| > L \end{cases} y(t)={kAsin(ωt)Lsign(Asin(ωt))Asin(ωt)LAsin(ωt)>L

描述函数为:

N ( A ) = 2 L π A 1 − ( L A ) 2 + 2 L π A sin ⁡ − 1 ( L A ) N(A) = \frac{2L}{\pi A} \sqrt{1 - \left(\frac{L}{A}\right)^2} + \frac{2L}{\pi A} \sin^{-1}\left(\frac{L}{A}\right) N(A)=πA2L1(AL)2 +πA2Lsin1(AL)

2. 死区特性

死区特性表示当输入信号的绝对值小于某一阈值时,输出为零;当输入超过该阈值时,输出才开始变化。

死区函数可以表示为:

y ( t ) = { 0 ∣ A sin ⁡ ( ω t ) ∣ ≤ D k ( A sin ⁡ ( ω t ) − D ⋅ sign ( A sin ⁡ ( ω t ) ) ) ∣ A sin ⁡ ( ω t ) ∣ > D y(t) = \begin{cases} 0 & |A\sin(\omega t)| \leq D \\ k(A\sin(\omega t) - D \cdot \text{sign}(A\sin(\omega t))) & |A\sin(\omega t)| > D \end{cases} y(t)={0k(Asin(ωt)Dsign(Asin(ωt)))Asin(ωt)DAsin(ωt)>D

描述函数为:

N ( A ) = k ( 1 − D A ) N(A) = k \left( 1 - \frac{D}{A} \right) N(A)=k(1AD)

3. 间隙特性

间隙特性表示当输入信号的绝对值在某一范围内时,输出信号为零;超出该范围时,输出信号与输入信号成比例变化。

描述函数为:

N ( A ) = 2 k π A [ ( A − D ) 2 − g 2 + g sin ⁡ − 1 ( g A ) ] N(A) = \frac{2k}{\pi A} \left[ \sqrt{(A - D)^2 - g^2} + g \sin^{-1}\left(\frac{g}{A}\right) \right] N(A)=πA2k[(AD)2g2 +gsin1(Ag)]

其中 g g g 是间隙宽度。

4. 继电器特性

继电器特性是一种典型的非线性特性,表示输出信号在两个定值之间切换,通常用于描述二位开关系统。

继电器特性函数为:

y ( t ) = { Y A sin ⁡ ( ω t ) > 0 − Y A sin ⁡ ( ω t ) < 0 y(t) = \begin{cases} Y & A\sin(\omega t) > 0 \\ -Y & A\sin(\omega t) < 0 \end{cases} y(t)={YYAsin(ωt)>0Asin(ωt)<0

描述函数为:

N ( A ) = 4 Y π A N(A) = \frac{4Y}{\pi A} N(A)=πA4Y

系统稳定性与自激振荡分析

考虑一个具有非线性元件的闭环反馈系统,其传递函数为 G ( s ) G(s) G(s)。应用描述函数法分析稳定性和自激振荡的步骤如下:

  1. 计算非线性元件的描述函数 N ( A ) N(A) N(A)
  2. 系统的特征方程为:

1 + G ( j ω ) N ( A ) = 0 1 + G(j\omega)N(A) = 0 1+G()N(A)=0

  1. 通过分析 G ( j ω ) G(j\omega) G() N ( A ) N(A) N(A) 的相位关系,判断系统是否存在满足特征方程的解(即自激振荡的条件)。
  2. 若系统满足 G ( j ω ) N ( A ) = − 1 G(j\omega)N(A) = -1 G()N(A)=1 的条件,则系统存在自激振荡。

Python代码示例

下面的代码演示了如何使用描述函数法分析一个简单非线性系统的自激振荡条件。

import numpy as np
import matplotlib.pyplot as plt

# 定义线性系统的传递函数G(jw)
def G(jw):
    return 1 / (jw**2 + 2*0.5*jw + 1)  # 二阶系统

# 定义非线性元件的描述函数N(A)
def N(A):
    Y = 1.0  # 继电器特性的输出
    return 4 * Y / (np.pi * A)

# 计算自激振荡的条件
A_values = np.linspace(0.1, 2, 500)
G_values = np.abs(G(1j))
N_values = N(A_values)
stability_condition = G_values * N_values

# 绘图
plt.figure(figsize=(10, 6))
plt.plot(A_values, stability_condition, label='|G(jω)N(A)|')
plt.axhline(1, color='red', linestyle='--', label='Stability Boundary (|G(jω)N(A)|=1)')
plt.xlabel('Amplitude A')
plt.ylabel('|G(jω)N(A)|')
plt.title('Stability Condition for Self-Oscillation')
plt.legend()
plt.grid(True)
plt.show()

在这里插入图片描述

代码解释

  • G(jw):定义了系统的频域传递函数,这是一个二阶系统。
  • N(A):定义了继电器特性的描述函数。
  • stability_condition:计算了稳定性条件 ∣ G ( j ω ) N ( A ) ∣ |G(j\omega)N(A)| G()N(A)
  • ∣ G ( j ω ) N ( A ) ∣ = 1 |G(j\omega)N(A)| = 1 G()N(A)=1 时,系统满足自激振荡条件。

结论

描述函数法是一种强大的工具,可以有效地分析弱非线性系统的稳定性和自激振荡。通过描述函数,可以将复杂的非线性问题简化为频域分析,从而在工程应用中预测系统的动态行为。

本文简单介绍了描述函数法的基本理论,推导了几种常见非线性特性的描述函数,并通过Python代码演示了自激振荡条件的分析。理解和应用描述函数法,对于设计和分析复杂控制系统至关重要。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐