Python控制系统仿真案例-RLC电路系统

文章目录

  • [1 问题描述](#1 问题描述)
  • [2 研究分析](#2 研究分析)
  • [3 建立系统的数学模型](#3 建立系统的数学模型)
  • [4 Python仿真程序](#4 Python仿真程序)
  • [5 仿真结果](#5 仿真结果)

1 问题描述

RLC电路是电子学中最基础也最重要的电路系统之一。它由电阻、电感和电容三大无源元件构成,因能产生振荡和谐振现象,常用于滤波、选频、阻抗匹配等。

如图所示是RLC电路系统,取 L = 1 H , C = 1 F L=1H,C=1F L=1H,C=1F,考虑系统在单位阶跃输入情况下,讨论系统不产生振荡时电阻R的取值,其中R的取值不大于 0.1 Ω 0.1Ω 0.1Ω。

2 研究分析

要求研究的问题是:当 L = 1 H , C = 1 F L=1H,C=1F L=1H,C=1F时,分析系统在输入作用 u r ( t ) = 1 ( t ) u_r(t)=1(t) ur(t)=1(t) 的作用下,要使响应不发生振荡,通过计算机仿真研究 R R R应在什么范围内取值。

3 建立系统的数学模型

(1)根据电学中的基尔霍夫定律,可写出原始方程:
L d i ( t ) d t + R i ( t ) + 1 C ∫ i ( t ) d t = u r ( t ) (1.1) L\frac{di(t)}{dt} + Ri(t)+\frac{1}{C}\int i(t)dt=u_r(t) \tag{1.1} Ldtdi(t)+Ri(t)+C1∫i(t)dt=ur(t)(1.1)

(2)式 ( 1.1 ) (1.1) (1.1) 中 i i i 是中间变量,它与输出有如下关系:

u c ( t ) = 1 C ∫ i ( t ) d t (1.2) u_c(t) = \frac{1}{C} \int i(t)dt \tag{1.2} uc(t)=C1∫i(t)dt(1.2)

(3)消去式 ( 1.1 ) (1.1) (1.1)、式 ( 1.2 ) (1.2) (1.2)的中间变量 i i i后,便得输入与输出的微分方程式:
L C d 2 u c ( t ) d t 2 + R C d u c ( t ) d t + u c ( t ) = u r ( t ) (1.3) LC\frac{d^2 u_c(t)}{dt^2} + RC \frac{du_c(t)}{dt} + u_c(t) = u_r(t) \tag{1.3} LCdt2d2uc(t)+RCdtduc(t)+uc(t)=ur(t)(1.3)

(4)将式 ( 1.3 ) (1.3) (1.3)转换成状态方程及输出方程形式:

x 1 ˙ ( t ) x 2 ˙ ( t ) \] = \[ 0 1 − R L − 1 L C \] \[ x 1 ( t ) x 2 ( t ) \] + \[ 0 1 L C \] u r ( t ) u c ( t ) = \[ 1 0 \] \[ x 1 ( t ) x 2 ( t ) \] (1.4) \\begin{bmatrix} \\dot{x_1}(t) \\\\ \\dot{x_2}(t) \\end{bmatrix} = \\begin{bmatrix} 0 \& 1 \\\\ -\\frac{R}{L} \& -\\frac{1}{LC} \\end{bmatrix} \\begin{bmatrix} x_1(t) \\\\ x_2(t) \\end{bmatrix} + \\begin{bmatrix} 0 \\\\ \\frac{1}{LC} \\end{bmatrix} u_r(t) \\\\ u_c(t)=\\begin{bmatrix} 1 \& 0 \\end{bmatrix}\\begin{bmatrix} x_1(t) \\\\ x_2(t) \\end{bmatrix} \\tag{1.4} \[x1˙(t)x2˙(t)\]=\[0−LR1−LC1\]\[x1(t)x2(t)\]+\[0LC1\]ur(t)uc(t)=\[10\]\[x1(t)x2(t)\](1.4) * 注:状态方程和输出方程的形式为: d x d t = A x + B u y = C x + D u \\frac{dx}{dt}=Ax+Bu \\\\ y=Cx+Du dtdx=Ax+Buy=Cx+Du     其中, x x x是状态向量, u u u是控制向量, y y y是被测信号, A A A、 B B B、 C C C和 D D D是常数矩阵。 (5)将第(4)步转换成离散的状态方程及输出方程,用于计算仿真及编程: \[ x 1 ( ( k + 1 ) T ) x 2 ( ( k + 1 ) T ) \] = \[ x 1 ( k T ) x 2 ( k T ) \] + \[ 0 1 − R L − 1 L C \] \[ x 1 ( k T ) x 2 ( k T ) \] T + \[ 0 1 L C \] u r ( k T ) T u c ( ( k + 1 ) T ) = x 1 ( ( k + 1 ) T ) (1.5) \\begin{bmatrix} x_1((k+1)T) \\\\ x_2((k+1)T) \\end{bmatrix} = \\begin{bmatrix} x_1(kT) \\\\ x_2(kT) \\end{bmatrix} + \\begin{bmatrix} 0 \& 1 \\\\ -\\frac{R}{L} \& -\\frac{1}{LC} \\end{bmatrix} \\begin{bmatrix} x_1(kT) \\\\ x_2(kT) \\end{bmatrix}T + \\begin{bmatrix} 0 \\\\ \\frac{1}{LC} \\end{bmatrix} u_r(kT)T \\\\ u_c((k+1)T)= x_1((k+1)T) \\tag{1.5} \[x1((k+1)T)x2((k+1)T)\]=\[x1(kT)x2(kT)\]+\[0−LR1−LC1\]\[x1(kT)x2(kT)\]T+\[0LC1\]ur(kT)Tuc((k+1)T)=x1((k+1)T)(1.5)     式中, T T T为采样周期。 * 连续方程离散化参考: ## 4 Python仿真程序 ```python import numpy as np import matplotlib.pyplot as plt # 设置字体为 SimHei(黑体) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 正常显示负号 L = 1 # 输入RLC电路的电感值 C = 1 # 输入RLC电路的电容值 R = float(input('请输入R的电阻值(Ω):')) # 输入R的电阻值(Ω) 0.1、0.25、0.3、1、3、6 t = 0 T = 0.001 # 设置系统采样时间T的值 A = np.array([[0, 1], [-R/L, -1/(L*C)]]) # 计算系统状态方程矩阵的值 B = np.array([[0], [1/(L*C)]]) tmax = 60 # 设置系统的仿真总时间tmax x = np.array([[0], [0]]) # 设置状态变量初值 Y = [0] # Y为记录输出 H = [t] # H用于记录t的值 while t < tmax: xs = x + (A @ x + B) * T # 计算离散状态方程 y = xs[0, 0] # 计算离散输出方程 t = t + T Y.append(y) H.append(t) # 记录y和t的值 x = xs plt.plot(H, Y, 'k') # 绘制输出曲线 plt.xlabel('时间 (s)') plt.ylabel('输出 y') plt.title('RLC电路响应') plt.grid(True) plt.show() ``` ## 5 仿真结果 | ![](https://i-blog.csdnimg.cn/direct/2c1177431d384cd98e99ef724d485674.png) | ![](https://i-blog.csdnimg.cn/direct/265e9e216a484b0b9acc628ae57cfee4.png) | |:--------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------:| | ![](https://i-blog.csdnimg.cn/direct/1a8ead5e5d954d0f9943cfb94f0d1ec5.png) | ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cf13908f6214458cbebfc326d52bc552.png) |

相关推荐
2401_8747325310 分钟前
Python Web爬虫入门:使用Requests和BeautifulSoup
jvm·数据库·python
TMT星球19 分钟前
从智能出行到智能家电,探路生态携智能空间全栈产品矩阵亮相AWE
大数据·人工智能·矩阵
平常心cyk32 分钟前
Python基础快速复习——集合和字典
开发语言·数据结构·python
阿钱真强道32 分钟前
34 Python 离群点检测:什么是离群点?为什么要做异常检测?
python·sklearn·异常检测·异常·离群点检测
AC赳赳老秦34 分钟前
OpenClaw关键词挖掘Agent配置(附SOP脚本,可直接复制使用)
java·大数据·开发语言·人工智能·python·pygame·openclaw
qq_4160187236 分钟前
数据分析与科学计算
jvm·数据库·python
深藏功yu名41 分钟前
Day24(进阶篇):向量数据库 Chroma_FAISS 深度攻坚 —— 索引优化、性能调优与生产级落地
数据库·人工智能·python·ai·agent·faiss·chroma
njidf1 小时前
趣味项目与综合实战
jvm·数据库·python
李昊哲小课1 小时前
PyMySQL完整教程
服务器·数据库·python·pymysql
sqyno1sky1 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python