电机控制——PID基础

本文来讲一下PID调节器。

在实际的系统中,因为摩擦、阻力等外界因素的存在,系统的实际输出与我们期望的输出通常存在误差,PID的目的就是调节系统的实际输出,使其更快更稳地贴近期望输出

PID模块被周期性的调用,模块的输入是实际输出与期望输出之间的误差值,模块的输出是一个补偿,这个补偿输入给系统,使得系统的输出增大或减小,逐步贴近期望输出。

这里需要注意一下,系统的输出不可能阶跃性的增加,是需要时间的,比如车辆提速、水位升高等。PID模块通过控制系统的输入,使得系统的输出在一个PID周期内增加所期望的补偿值。其实可以理解为PID输入给系统的是一个加速度,或输出曲线增长的斜率。

P —— 比例调节

PID中的P是比例调节,就是每次将误差值乘以一个比例系数(后文称为P),输入给系统。比如,期望输出是10,当前系统输出是2,那么误差是8,假设P是0.5,那么补偿就是8*0.5=4,输入给系统,系统输出变成6。下一个调节周期中,误差变为4,补偿变为2,系统输出变为8。以此类推,我们可以知道系统输出最终会无限接近于期望输出。且比例系数越大,调节速度越快。

上述系统是一个理想系统,即我们输入的补偿是多少,输出就增加多少。该系统中输入函数x(t)是一个单位阶跃函数,输出函数y(t)是对输入参数x在0-t时段内的定积分,反之则是输入参数x是y(t)的导数,即斜率,这个从后面的曲线中也可以看出来。y(t)是一个斜坡函数,所以系统的传递函数H(s) = Y(s) / X(s) = (1/s²) / (1/s) = 1/s,用simulink建模如下:
在这里插入图片描述
设置PID运行周期为1S,PID模块中参数P设置为0.5,运行结果如下,红色是期望输出,黄色是PID计算得到的补偿,蓝色是系统实际输出。我们可以看到PID的输出是系统输出曲线的斜率。
在这里插入图片描述
P越大,系统输出收敛的越快,下图P=0.8:
在这里插入图片描述

把P设置为1,运行结果如下,也就是说一个PID周期直接把系统输出调节到了期望输出:
在这里插入图片描述
当P大于1的时候,系统输出就会出现震荡,下图为P=1.5:
在这里插入图片描述
当P大于等于2时,系统就无法进入稳定状态,下图为P=2.1:
在这里插入图片描述

但是实际系统中会存在阻力和误差,比如在一个PID调节周期内,摩擦等因素会使系统的输出降低1,还是用上面的例子,P设置为0.5,当系统的输出 ≥ 8的时候,PID输出的补偿就会 ≤ 1,即输入给系统的补偿量小于系统在一个周期内的损耗,这时系统的输出将永远也无法达到预期的输出10,只会稳定在8附近。这个就叫稳态误差,只有P的调节器无法消除稳态误差,P的作用是能使输出快速向期望输出靠拢。

我们在simulink中创建上述存在摩擦的系统,摩擦使系统的输出降低1,可以看作是系统始终有一个-1的输入(理想系统为y = x,损耗为y = -1,两者相加即 y = x - 1),所以修改模型如下,在系统的输入上叠加一个值为-1的常量:
在这里插入图片描述
仿真结果如下,我们可以看到系统输出最终稳定在8附近:
在这里插入图片描述
把叠加的输入改为-2,系统稳定在6附近;
在这里插入图片描述

I —— 积分调节

要想消除稳态误差,就要用到PID中的I了,I是指积分,是把前面所有的误差值加起来,再乘以一个系数,作为一个补偿输入给系统。也就是说只要误差不为0,那么PID计算得到的补偿值就会持续增大,直到误差为0,所以I调节器能消除稳态误差。

我们将PID控制器的参数设置如下:
在这里插入图片描述
仿真结果如下:
在这里插入图片描述
可以看到稳态误差被消除了,但出现了振荡,I系数越大,稳态误差消除得越快,但振荡可能会更大,下图是把I设置为0.2的仿真结果:
在这里插入图片描述

D —— 微分调节

如何解决引入I之后导致的振荡问题呢,就要用到PID中的D了,D是指微分,误差的微分就是误差变化的快慢,当系统输出逐渐接近期望输出的时候,误差的变化率总是越来越小的,把这个变化率乘以微分系数D,再叠加到补偿上,能使系统输出在前期快速增加,在接近期望输出的时候增加的更慢,从而达到抑制振荡的效果。我们下面看一个更复杂一点的系统模型:
在这里插入图片描述
PID模块参数先设置如下,不加微分补偿:
在这里插入图片描述
仿真结果如下:
在这里插入图片描述
再把参数D设置为0.5,仿真结果如下,可以看到振荡被很好地抑制了:
在这里插入图片描述
但是微分调节在实际工作中并不常用,因为微分调节在实际应用中往往会引入噪声,导致系统不稳定。通常只用到PI两个调节器。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue接入高德地图获取经纬度

&#x1f90d;step1:高德地图开放平台&#xff0c;根据指引注册成为高德开放平台开发者&#xff0c;并申请 web 平台&#xff08;JS API&#xff09;的 key 和安全密钥; &#x1f90d;step2:在html引入安全密钥&#xff08;获取经纬度用&#xff0c;不然会报错&#xff09; <…

FFmpeg 基础模块:容器相关的 API 操作

目录 AVFormat 模块 AVFormat 前处理部分 AVFormat 读写处理部分 小结 思考 FFmpeg 目录中包含了 FFmpeg 库代码目录、构建工程目录、自测子系统目录等&#xff0c;具体内容如下&#xff1a; 现在你知道 FFmpeg 的源代码目录中都包含了哪些内容&#xff0c;在之后使用 FFm…

手撕各种排序

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;掌握每种排序的方法&#xff0c;理解每种排序利弊…

SMT求解器Q3B——在WSL上的Docker配置

SMT求解器Q3B——在WSL上的Docker配置 1、配置wsl下的Docker2、在github上下载Q3B3、更换配置文件4、安装docker镜像5、运行Docker容器6、编译Q3B7、使用Q3B 1、配置wsl下的Docker WSL 2 上的 Docker 远程容器入门 2、在github上下载Q3B Q3B下载地址 3、更换配置文件 下载…

【SpringMVC篇】详解SpringMVC入门案例

&#x1f38a;专栏【SpringMVC】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f38d;SpringMVC简介⭐优点 &#x1f33a;SpringMVC入门…

详解TCP三次握手(建立连接)和四次握手(释放连接)

VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…

Typora-Drake主题

关于Typora-Drake主题的小调整 下载安装 下载地址&#xff1a;Drake (typora.io) 点击下载跳转GitHub,下载该主题 下载完成安装主题 打开主题文件夹&#xff0c;把下载的zip全部加压丢进去重启Typora Drake主题样式小调整 打开主题文件夹&#xff0c;找到Drake.css文件&am…

多线程 - 线程池

线程池 相关的背景知识 线程池存在的意义: 使用进程来实现并发编程,效率太低了,任务太重了,为了提高效率,此时就引入了线程,线程也叫做“轻量级进程”,创建线程比创建进程更高效;销毁线程比销毁进程更高效;调度线程比调度进程更高效…此时,使用多线程就可以在很多时候代替进程…

HomeView/主页 的实现

1. 创建数据模型 1.1 创建货币模型 CoinModel.swift import Foundation// GoinGecko API info /*URL:https://api.coingecko.com/api/v3/coins/markets?vs_currencyusd&ordermarket_cap_desc&per_page250&page1&sparklinetrue&price_change_percentage24…

2023中考满分多少 中考总分数展示

中考总分根据地区而不同&#xff0c;以下是各地区总分数展示&#xff1a; 大部分地区的中考总分为750分&#xff0c;包括语文150分、数学150分、英语150分&#xff08;其中听力测试30分&#xff09;、思想品德与历史合卷共150分&#xff0c;物理与化学合卷共150分。 安徽中考…

Qt打开ui文件经常报错

报错如下&#xff1a; 解决方法&#xff1a; 最后设置成默认值 即可

强化学习------Qlearning算法

简介 Q learning 算法是一种value-based的强化学习算法&#xff0c;Q是quality的缩写&#xff0c;Q函数 Q(state&#xff0c;action)表示在状态state下执行动作action的quality&#xff0c; 也就是能获得的Q value是多少。算法的目标是最大化Q值&#xff0c;通过在状态state下…