运动控制 PID算法

文章目录

  • 一、自动控制简介
    • 1.1 开环控制系统
    • 1.2 闭环控制系统
    • 1.3 电机速度闭环控制系统
  • 二、PID算法
    • 2.1 比例
      • 2.1.1 静态误差
    • 2.2 积分
    • 2.3 微分环节
    • 2.4 位置式PID
    • 2.5 增量式PID

一、自动控制简介

自动控制系统是使用自动控制装置对关键控制参数进行自动控制,使它在收到外界干扰偏离正常状态时,能够自动的调节到目标范围内。

1.1 开环控制系统

输出只受到输入控制,没有反馈回路,控制精度和抗干扰能力差,例如家用风扇。

1.2 闭环控制系统

在开环控制系统的基础上引入反馈回路,利用输出和输入值的偏差进行控制,避免偏离预定目标,例如温室大棚。

1.3 电机速度闭环控制系统

二、PID算法

PID是Propotional、Integral、Differential 的首字母缩写,它是结合比例,积分,微分的一种自动控制算法。
本质是根据比例,积分,微分的函数关系进行计算,运算结果用于输出控制。
在这里插入图片描述

2.1 比例

u k = K p ⋅ e k u_k = K_p \cdot e_k uk=Kpek

  • uk 输出
  • Kp 比例系数
  • ek 偏差
  • Kp 越大,系统响应越快,越快到达目标值。
  • Kp 过大会使系统产生过大的超调和震荡,导致系统的稳定性变差。
  • 仅有比例环节无法消除静态误差
    在这里插入图片描述

成比例的反应控制系统的偏差信号,uk与输入偏差ek成正比,用来减小系统的偏差。

2.1.1 静态误差

系统趋于稳定时,实际和目标之间的偏差。产生原因是输出被外界干扰抵消。

假设温室大棚的目标温度设定为30°C,但由于某些外部因素(如天气变化、设备老化等)导致大棚内的实际温度偏离了目标温度。此时,温度控制系统启动比例控制来尝试将温度调整回目标值。

  1. 初始状态:
    • 目标温度(setpoint):30°C
    • 实际温度(initial state):25°C
    • 静态误差(error):30°C - 25°C = 5°C
  2. 比例控制作用:
    • 假设比例系数(Kp)为0.5(这只是一个示例值,实际应用中会根据系统特性进行调整)。
    • 控制输出(u)为比例系数乘以静态误差,即u = 0.5 * 5°C = 2.5°C。
  3. 系统响应:
    • 控制输出作用于系统,尝试将温度提升2.5°C。然而,由于系统本身的惯性和外部干扰的存在,实际温度可能不会立即上升到27.5°C(25°C + 2.5°C),而是会上升到一个略低于这个值的温度,比如27°C。
  4. 静态误差仍然存在:
    • 在这个新的稳态下,静态误差变为30°C - 27°C = 3°C,虽然比初始的5°C有所减小,但仍然存在。

这个例子清楚地展示了比例控制无法消除静态误差的原因:

  • 比例控制只根据当前的静态误差来调整控制输出,而没有考虑误差的历史积累或未来的变化趋势。
  • 因此,当系统受到持续的外部干扰或存在内部惯性时,比例控制可能无法将系统精确地调整到目标状态,而是会在一个接近目标值但略有偏差的状态下稳定下来。

2.2 积分

u k = K p ⋅ e k + K i ∑ j = 0 k e j u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j uk=Kpek+Kij=0kej

  • uk 输出
  • Ki 积分系数
  • Kp 比例系数
  • ek k时刻的误差
  • Σe 误差的积分

积分环节实际上是对误差进行累加的过程。当系统存在持续误差时,积分项会累积这些误差,并通过调整输出逐渐减小误差,直到偏差为零。这种机制使得系统能够更精确地达到并维持设定值。

以温度控制系统为例,假设目标温度设定为50℃。在只有比例控制的情况下,如果系统因为外部干扰(如热量散失)导致温度偏离目标值,比例控制只能根据当前的误差来调整加热功率,但无法完全消除由于外部干扰造成的误差累积。而引入积分环节后,控制系统会对历次误差进行累加,并根据累加的误差值来逐步调整加热功率,从而消除由于外部干扰造成的误差累积,使系统更精确地稳定在目标温度。

对于惯性较大的系统,系统的响应速度相对较慢,无法立即跟上积分环节的快速调整,从而导致系统输出超出预期,产生超调震荡。

积分系数Ki的影响:

  • Ki过大:当Ki设置得过大时,积分作用会相对较弱。这意味着系统对误差的累积速度较慢,虽然可以更快地消除静差,但也可能导致系统对误差的敏感度降低,响应速度变慢。在某些情况下,过大的Ki还可能导致系统出现振荡现象。
  • Ki过小:当Ki设置得过小时,积分作用会相对较强。这会导致系统对误差的累积速度较快,虽然可以更有效地消除静差,但也可能使系统响应过度,产生不必要的振荡。此外,过小的Ki还可能导致系统无法稳定地维持在设定值附近。

2.3 微分环节

u k = K p ⋅ e k + K i ∑ j = 0 k e j + K d ( e k − e k − 1 ) u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j + K_d(e_k - e_{k-1}) uk=Kpek+Kij=0kej+Kd(ekek1)

微分环节的作用是根据偏差的变化率来进行控制,它能够预测偏差的未来趋势。微分作用有助于提高系统的动态性能,具体表现为:

  • 加快系统的响应速度:微分项能够预测误差的变化趋势,提前作出调整,从而加快系统的响应速度。
  • 减小超调和振荡:通过预测误差的变化,微分项可以在误差达到峰值之前进行调整,从而有效减小超调和振荡。
  • 增加系统稳定性:微分项还有助于减小高频噪声对系统的影响,提高系统的稳定性。然而,需要注意的是,过大的微分作用可能导致系统对噪声过于敏感,产生不必要的调整。

以温度控制系统为例,假设我们希望将房间的温度保持在设定值。当房间的实际温度低于设定值时,控制系统会启动加热器来升温。如果仅使用比例(P)和积分(I)环节进行控制,系统可能会出现超调和振荡现象,即温度超过设定值后再回落,如此反复。

此时,如果我们引入微分(D)环节,系统就能够预测温度的变化趋势。当系统检测到温度正在迅速上升时,微分项会立即产生一个控制作用,减小加热器的输出功率,从而避免温度超过设定值。这样,系统就能够更平稳地过渡到稳态,提高控制精度和稳定性。

2.4 位置式PID

u k = K p ⋅ e k + K i ∑ j = 0 k e j + K d ( e k − e k − 1 ) u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j + K_d(e_k - e_{k-1}) uk=Kpek+Kij=0kej+Kd(ekek1)

位置式PID 特点:

  • uk 直接对应输出(例如位置),如果计算出现异常,对结果影响非常大。
  • 全量计算,需要对偏差进行累加,计算量较大。
  • 在不带积分部件中效果很好,例如电机伺服阀,温控系统等。

2.5 增量式PID

  • 先写出位置式PID公式
    u k = K p ⋅ e k + K i ∑ j = 0 k e j + K d ⋅ ( e k − e k − 1 ) u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j + K_d \cdot(e_k - e_{k-1}) uk=Kpek+Kij=0kej+Kd(ekek1)
  • 把K-1带入上述公式中,得到如下公式
    u k − 1 = K p ⋅ e k − 1 + K i ∑ j = 0 k − 1 e j + K d ⋅ ( e k − 1 − e k − 2 ) u_{k-1} = K_p \cdot e_{k-1} + K_i \sum_{j=0}^{k-1} e_j + K_d \cdot(e_{k-1} - e_{k-2}) uk1=Kpek1+Kij=0k1ej+Kd(ek1ek2)
  • 使用第一个公式减去第二个公式得到∆u
    ∆ u k = K p ⋅ ( e k − e k − 1 ) + K i ⋅ e k + K d ⋅ ( e k − 2 ⋅ e k − 1 + e k − 2 ) ∆u_k = K_p \cdot (e_k - e_{k-1}) + K_i \cdot e_k + K_d \cdot (e_k - 2 \cdot e_{k-1} + e_{k-2}) uk=Kp(ekek1)+Kiek+Kd(ek2ek1+ek2)

增量式PID特点:

  • 增量式PID计算的是相对于上一次输出等增量,即: u k = u k − 1 + ∆ u k u_k = u_{k-1} + ∆u_k uk=uk1+uk
  • 只与最近三次的偏差有关,计算出错对系统影响较小。
  • 计算量小,实时性好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/910059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch实现transformer语言模型

转载自&#xff1a;| 03_language_model/02_Transformer语言模型.ipynb | 从头训练Transformer语言模型 |Open In Colab | Transformer语言模型 本节训练一个 sequence-to-sequence 模型&#xff0c;使用pytorch的 nn.Transformer <https://pytorch.org/docs/master/nn.ht…

C语言例题练手(1)

前几篇博客的内容已经涉及了C语言的部分语法知识&#xff0c;我们可以尝试做一些编程题&#xff0c;或者换一种说法就是可以写出什么样的程序以此来解决一些问题。 题目来自牛客网https://www.nowcoder.com和C语言菜鸟教程C 语言教程 | 菜鸟教程 数值计算 【例1】带余除法计…

Spring AI 核心概念

SpringAI 核心概念 1. Models2. Prompts3. Prompt Templates4. Embeddings5. Tokens6. Structured Output7. Bringing Your Data & APIs to the AI Model7.1 Retrieval Augmented Generation7.2 Function Calling 1. Models AI 模型是用于处理和生成信息的算法&#xff0c…

http请求响应详解

http介绍 http协议&#xff1a; Http”协议称为是“超文本传输协议”&#xff08;HTTP-Hypertext transfer protocol&#xff09;。它定义了浏览器怎么向万维网服务器请求万维网文档&#xff0c;以及服务器怎么样把文档传送给浏览器。 https协议&#xff1a; 传统的HTTP协议…

直播系统搭建教程安装说明

需要安装的软件(宝塔【软件商店】中查找安装): 1.PHP7.0 ~ PHP7.3 需要安装的扩展:(宝塔【PHP管理】【安装扩展】中安装) *PDO PHP Extension * MBstring PHP Extension * CURL PHP Extension * Mylsqi PHP Extension * Redis PHP Extension * fileinfo PHP Extension …

redis7学习笔记

文章目录 1. 简介1.1 功能介绍1.1.1 分布式缓存1.1.2 内存存储和持久化(RDBAOF)1.1.3 高可用架构搭配1.1.4 缓存穿透、击穿、雪崩1.1.5 分布式锁1.1.6 队列 1.2 数据类型StringListHashSetZSetGEOHyperLogLogBitmapBitfieldStream 2. 命令2.1 通用命令copydeldumpexistsexpire …

51c~C语言~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12428240 一、C语言和C的区别 ​ C语言虽说经常和C在一起被大家提起&#xff0c;但可千万不要以为它们是一个东西。现在我们常用的C语言是C89标准&#xff0c;C是C99标准的。C89就是在1989年制定的标准&#xff0c;如今最新…

【论文解读】EdgeYOLO:一种边缘实时目标检测器(附论文地址)

论文地址&#xff1a;https://arxiv.org/pdf/2302.07483 这篇文章的标题是《EdgeYOLO: An Edge-Real-Time Object Detector》&#xff0c;由中国北京理工大学的Shihan Liu、Junlin Zha、Jian Sun、Zhuo Li和Gang Wang共同撰写。这篇论文提出了一个基于最新YOLO框架的高效、低复…

基于SSM的企业管理系统(源码+lw+调试+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【MyBatis源码】CacheKey缓存键的原理分析

文章目录 Mybatis缓存设计缓存KEY的设计CacheKey类主体CacheKey组成CacheKey如何保证缓存key的唯一性 Mybatis缓存设计 MyBatis 每秒过滤众多数据库查询操作&#xff0c;这对 MyBatis 缓存键的设计提出了很高的要求。MyBatis缓存键要满足以下几点。 无碰撞&#xff1a;必须保证…

Mac M1 Docker创建Rocketmq集群并接入Springboot项目

文章目录 前言Docker创建rocketmq集群创建rocketmq目录创建docker-compose.yml新增broker.conf文件启动容器 Springboot 接入 rocketmq配置maven依赖修改appplication.yml新增消息生产者新增消费者测试发送消息 总结 前言 最近公司给配置了一台mac&#xff0c;正好有时间给装一…

pycharm小游戏贪吃蛇及pygame模块学习()

由于代码量大&#xff0c;会逐渐发布 一.pycharm学习 在PyCharm中使用Pygame插入音乐和图片时&#xff0c;有以下这些注意事项&#xff1a; 插入音乐&#xff1a; - 文件格式支持&#xff1a;Pygame常用的音乐格式如MP3、OGG等&#xff0c;但MP3可能需额外安装库&#xf…

使用Rust实现http/https正向代理

相关库的安装 利用vcpkg安装openssl库 vcpkg install openssl:x64-windows并设置openssl库位置的环境变量 $Env:OPENSSL_DIR"D:/vcpkg/packages/openssl_x64-windows/"安装openssl软件&#xff0c;因为需要利用openssl生成自签名证书 Cargo依赖 [dependencies] …

基于MATLAB的运动车辆跟踪检测系统

一、课题介绍 本设计为基于MATLAB的运动车辆跟踪检测系统。带有一个GUI界面&#xff0c;可以读取高速路车流视频&#xff0c;读取视频信息&#xff0c;并且统计每辆车经过左车道还是右车道&#xff0c;车速和平均速度检测&#xff0c;以及某一帧下的车流密度&#xff0c;以及最…

微深节能 环形运动机械定位控制系统 格雷母线

微深节能的环形运动机械定位控制系统中的格雷母线是一种高精度、无磨损的非接触式位置检测系统&#xff0c;特别适用于环形运动机械的定位控制。该系统主要由格雷母线、天线箱、电气柜等关键部件组成&#xff0c;其核心在于格雷母线这一特殊的编码线。 格雷母线的工作原理是通过…

【359】基于springboot的智慧草莓基地管理系统

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本智慧草莓基地管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?

以下是使用 Python 的爬虫技术获取淘宝天猫商品价格信息的两种常见方法&#xff1a; 方法一&#xff1a;使用 Selenium 一、环境准备&#xff1a; 安装 selenium 库&#xff1a;在命令行中运行 pip install selenium。下载浏览器驱动&#xff1a;如 ChromeDriver&#xff08;确…

定时任务——xxl-job原理与实现

摘要 本文详细介绍了分布式任务调度平台xxl-job的原理与实现。xxl-job以其开发迅速、学习简单、轻量级和易扩展的特性被广泛使用。文章概述了xxl-job的核心特性&#xff0c;包括任务的CRUD操作、动态调度、高可用性、弹性扩容缩容、丰富的触发策略、调度过期策略、阻塞处理策略…

TDengine 签约蘑菇物联,改造通用设备工业互联网平台

在当前工业互联网迅猛发展的背景下&#xff0c;企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出&#xff0c;尤其是由这些设备组成的公辅能源车间&#xff0c;亟需更高效的解决方案来提升设备运行效率&#xff0c;降低能源消耗。为此&a…

【业务】支付总结和GP支付功能测试

背景 我个人支付相关内容测试很少&#xff08;不是你想接什么业务就能接到&#xff0c;都是各方利益博弈以后结果&#xff09;&#xff0c;有些内容也是听听技术会议&#xff0c;看看其他qa的xmind通过只言片语里面做个总结。 支付类型 直连支付 概述&#xff1a;提供支付接…