当前位置: 首页 > news >正文

自动控制:反馈控制

自动控制:反馈控制

反馈控制(Feedback Control)是一种在控制系统中通过测量输出信号,并将其与期望信号进行比较,产生误差信号,再根据误差信号调整输入来达到控制目标的方法。反馈控制是自动控制系统中最常见和最重要的控制策略之一,广泛应用于工业、自动化、机器人、航空航天等各个领域。

反馈控制的基本原理

反馈控制的基本原理可以概括如下:

  1. 测量输出:通过传感器或测量装置,实时测量系统的输出信号。
  2. 计算误差:将测量得到的输出信号与期望的参考信号进行比较,计算误差信号。
  3. 控制律:根据预先设计的控制律(如比例-积分-微分控制器,PID),计算控制输入。
  4. 施加控制输入:将计算得到的控制输入施加到系统中,以减小误差,使输出信号逐渐趋近期望值。

反馈控制系统的基本框图如下:

          +---------------------+|                     ||        系统         ||                     |+----------+----------+|v+---------+----------+|                    ||     传感器/测量     ||                    |+---------+----------+|v+----------+----------+|                     ||       误差计算       ||     e = r - y       ||                     |+----------+----------+|v+----------+----------+|                     ||       控制律         ||                     |+----------+----------+|v+----------+----------+|                     ||     控制输入 u       ||                     |+---------------------+

其中:

  • r r r 是期望的参考信号
  • y y y 是系统的实际输出信号
  • e e e是误差信号,即 e = r − y e = r - y e=ry
  • u u u 是控制输入信号

反馈控制的优点

  1. 稳定性:反馈控制能够自动调节系统的输入,使系统稳定在期望的输出值附近,即使存在扰动或参数变化。
  2. 鲁棒性:反馈控制对系统参数的不确定性和外界扰动具有较强的鲁棒性,能够在一定程度上克服模型的不准确性。
  3. 自动校正:反馈控制能够根据误差自动调整控制输入,使系统输出迅速趋近期望值。
  4. 广泛适用性:反馈控制适用于各种类型的系统,包括线性系统和非线性系统、时不变系统和时变系统。

常见的反馈控制策略

比例控制(P控制)

比例控制(Proportional Control, P控制)是一种最简单的反馈控制策略。它根据误差信号的比例调整控制输入。其控制律如下:

u ( t ) = K p ⋅ e ( t ) u(t) = K_p \cdot e(t) u(t)=Kpe(t)

其中, K p K_p Kp 是比例增益。

比例-积分-微分控制(PID控制)

PID控制是一种广泛应用的反馈控制策略,由比例控制、积分控制和微分控制三部分组成。其控制律如下:

u ( t ) = K p ⋅ e ( t ) + K i ∫ e ( t ) d t + K d ⋅ d e ( t ) d t u(t) = K_p \cdot e(t) + K_i \int e(t) \, dt + K_d \cdot \frac{d e(t)}{dt} u(t)=Kpe(t)+Kie(t)dt+Kddtde(t)

其中:

  • K p K_p Kp是比例增益
  • K i K_i Ki 是积分增益
  • K d K_d Kd 是微分增益
滑模控制(Sliding Mode Control, SMC)

滑模控制是一种处理非线性系统和不确定性系统的有效控制策略。它通过设计一个滑模面,并驱动系统状态达到并保持在该滑模面上,从而实现控制目标。

反馈控制的应用

反馈控制在工业和日常生活中有着广泛的应用。例如:

  • 温度控制:通过反馈控制,恒温器可以自动调节加热器的功率,使房间温度保持在设定值附近。
  • 速度控制:在电动机控制中,反馈控制能够根据速度传感器的反馈信号,调整电动机的输入电压或电流,使电动机的转速保持在期望值。
  • 自动驾驶:在自动驾驶系统中,反馈控制能够根据车辆的实际位置和速度,与预定的轨迹进行比较,调整转向角度和速度,使车辆沿着预定路线行驶。

Python代码示例

下面是一个简单的Python代码示例,演示反馈控制的基本原理。假设我们有一个简单的温度控制系统,通过反馈控制保持系统温度在期望值。

import numpy as np
import matplotlib.pyplot as plt# 定义系统参数
dt = 0.1  # 时间步长
t = np.arange(0, 10, dt)  # 时间数组
n = len(t)# 初始化状态变量
temperature = np.zeros(n)  # 系统温度
desired_temperature = np.ones(n) * 0  # 期望温度
external_disturbance = np.sin(t) * 10  # 外界扰动# 控制器参数
Kp = 2.0  # 比例增益
Ki = 1.0  # 积分增益
Kd = 0.5  # 微分增益# 初始化误差变量
e_prev = 0  # 上一时刻的误差
integral = 0  # 误差积分# 模拟系统
for i in range(1, n):# 计算误差e = desired_temperature[i] - temperature[i-1]# 误差积分integral += e * dt# 误差微分derivative = (e - e_prev) / dt# PID控制器u = Kp * e + Ki * integral + Kd * derivative# 更新系统温度temperature[i] = temperature[i-1] + (u + external_disturbance[i]) * dt# 更新上一时刻的误差e_prev = e# 绘制结果
plt.figure(figsize=(10, 4))
plt.plot(t, desired_temperature, label='Desired Temperature')
plt.plot(t, temperature, label='Actual Temperature')
plt.plot(t, external_disturbance, label='External Disturbance')
plt.xlabel('Time [s]')
plt.ylabel('Temperature')
plt.legend()
plt.title('Feedback Control for Temperature System')
plt.grid(True)
plt.show()

在这里插入图片描述

代码解释
  1. 系统参数和时间数组:定义了时间步长 dt 和时间数组 t,用来模拟系统在一段时间内的行为。
  2. 状态变量初始化:初始化了系统温度 temperature、期望温度 desired_temperature 和外界扰动 external_disturbance
  3. 控制器参数:定义了PID控制器的比例增益 Kp、积分增益 Ki 和微分增益 Kd
  4. 误差变量初始化:初始化了上一时刻的误差 e_prev 和误差积分 integral
  5. 系统模拟:通过迭代计算,在每个时间步长内根据PID控制律计算控制输入,并更新系统温度。
  6. 结果绘制:使用 matplotlib 绘制系统温度、期望温度和外界扰动的变化曲线。

结论

反馈控制是一种通过实时测量系统输出并根据误差调整输入的控制策略,能够有效地提高系统的稳定性、鲁棒性和控制精度。常见的反馈控制策略包括比例控制、比例-积分-微分控制(PID控制)和滑模控制。在实际应用中,反馈控制广泛用于温度控制、速度控制和自动驾驶等领域。结合Python代码示例,可以更直观地理解反馈控制的基本原理和实现方法。

http://www.lryc.cn/news/393653.html

相关文章:

  • sqlite 数据库 介绍
  • 【机器学习】机器学习重塑广告营销:精准触达,高效转化的未来之路
  • 常见的Java运行时异常
  • CANoe的capl调用Qt制作的dll
  • 论如何搭建属于自己的服务器?
  • 【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算
  • STMF4学习笔记RTC(天空星)
  • vue数组变化的侦测***
  • k8s-第十节-Ingress
  • webrtc gcc详解
  • Linux多进程和多线程(七)进程间通信-信号量
  • 【项目日记(一)】梦幻笔耕-数据层实现
  • ElementUI的中国省市区级联数据插件element-china-area-data
  • Kotlin算法:把一个整数向上取值为最接近的2的幂指数值
  • 简单且循序渐进地查找软件中Bug的实用方法
  • 基于springboot+vue+uniapp的高校宿舍信息管理系统小程序
  • (完整音频)DockerHub、OpenAI、GitCode,脱钩时代,我们该如何自处?
  • macos 10.15系统下载包,macOS Catalina for mac
  • uni.showShareMenu({}) 和 uni.showShareImageMenu({}) 的区别
  • Spring Boot logback 日志文件配置
  • 240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT 对话情绪识别
  • 图像处理调试软件推荐
  • Mybatis实现RBAC权限模型查询
  • 最短路算法——差分约束
  • Log4j日志框架讲解(全面,详细)
  • LeetCode 35, 242, 994
  • ctfshow-web入门-文件包含(web87)巧用 php://filter 流绕过死亡函数的三种方法
  • adb shell ps -T打印出来参数的含义,以及D,T,Z代表的状态含义是什么?
  • leetcode77组合——经典回溯算法
  • springcloud-alibba之FeignClient