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−LC1x1(t)x2(t)+0LC1ur(t)uc(t)=10x1(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−LC1x1(kT)x2(kT)T+0LC1ur(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 仿真结果

相关推荐
xywww1683 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
夜雪一千8 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python
能有时光9 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
_Jimmy_9 小时前
Python 协程库如何使用以及有哪些使用场景
python
aqi009 小时前
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
人工智能·python·大模型·ai编程·ai应用
第一程序员10 小时前
Rust Agent 子进程执行:Command 之前,先定义输入和超时
python·rust·github
skywalk816310 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
weixin_BYSJ198710 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
EQUINOX112 小时前
【论文阅读】| MoCo精读
论文阅读·人工智能·python·深度学习·机器学习
用户83562907805112 小时前
使用 Python 自动化 Excel 公式和函数:完整指南
后端·python