PID算法原理分析及优化

news2024/11/17 9:34:20

今天为大家介绍一下经典控制算法之一的PID控制方法。PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。

在大学期间,参加的智能汽车竞赛中就使用到了PID经典控制算法,对于智能小车的调试更加的方便。

一、PID原理

PID控制方法将偏差的比例(proportional)、积分(integral)、微分(derivative)通过线性组合构成控制量,对被控对象进行控制。

常规的PID控制系统如图所示:

系统的输入r(t)为控制量的目标输出值,输出y(t)为控制量的实际输出值,e(t)为输出量目标值与实际值的偏差量,PID算法的调控是基于e(t)进行的。

比例调节是基于实际值与目标值的偏差量进行线性调节, 在系统中表现为Kpe(t),Kp为比例增益。

比例增益Kp越大调节作用越激进,输入输出的微小偏差都会造成很大的调节动作;相反的Kp越小调节作用越保守,即使输入输出差异很大系统的调节效果都不太明显。

积分调节是利用历史偏差量的累计对系统输出进行调节,在系统种表示为:

积分调节的意义是消除系统的稳态误差。积分增益Ki越大系统的稳态误差消除的越快,Ki越小系统的稳态误差越不易消除,系统的调节精度越差。但是Ki过大会在响应过程产生较大超调,导致积分饱和现象的产生。

微分调节是基于偏差量的变化速率(偏差求导)对系统输出进行调节,在系统种表示为:

微分调节主要起到阻尼的作用,抑制超调。微分增益Kd越大,系统的稳定性越好,调节过程中曲线波动越小。但是Kd若设置过大会使得系统的调节时间增长,抗干扰性减弱。

偏差值在经过三种调节作用后会产生一个控制量u(t),u(t)将通过执行单元控制输出。系统将利用采样单元将输出反馈给输入端进行偏差量计算。

常规PID控制系统中u(t)与e(t)之间的函数关系如下:

分别调节Kp、Ki、Kd参数对PID控制系统性能的影响如下表所示:

二、数字PID控制

随着计算机技术发展,目前多以微控制器或计算机为运算核心,利用软件程序来实现PID控制和校正,也就是数字PID控制。常用的数字PID控制方法有:位置式PID、增量式PID以及步进式PID等。

01

位置式PID

由于计算机的运算是离散的,要想实现数字PID控制首先需要将连续函数进行离散化。

我们用误差的累加替代积分运算,用误差的差分代替微分运算,可得:

其中k为采样序列号(k=0,1,2,3......),e(k)为第k次采样时的误差值,e(k-1)为第k-1次采样时的误差值u(k)为第k次采样时控制量的输出值。在位置式PID中输出u(k)直接控制待控制对象,u(k)的值和控制对象是一一对应的关系。

从式2可以看出,位置式PID需要计算第k次和k-1次的误差,控制器会对偏差进行累加,这样会使得系统的运算量变大,占用内存过多,给计算机带来负担。

同时,控制器的每次输出u(k)都和过去的状态有关,u(k)的大幅变化会导致执行机构的状态大幅变化,系统抗干扰能力差。

为了改善这些问题,有学者提出了数字PID的另外一种实现方法——增量式PID。

02

增量式PID

增量式PID的输出是对被控对象的增量∆u(k),而不是实际的控制量大小。

其中a0=kp+ki+kd, a₁=-Kp-2kd,a₂=kd。

从上式可以看出增量式PID跟k时刻、k-1时刻、k-2时刻的偏差都有关系,但是不会对偏差进行累积,所以相比位置式PID的计算量要小,也不会跟过去的偏差有关联,所以控制系统的稳定性好。

03

步进式PID

当PID系统的设定值发生较大的突变时,系统很容易产生超调,影响其稳定性。为了避免阶跃信号带来的不利影响,有学者提出了步进式PID。

步进式PID不对阶跃信号进行直接响应,而是按照设定的步进规则逐渐增加设定值,使得信号逐步靠近目标值,这样被控对象运行平稳,避免了因突变带来的超调。

这种方法并未改变PID算法结构本身,而是对设定值进行步进处理,使其不产生突变。步进处理方法有很多种,最为常见的是建立一个线性变化函数,确定变化步长,当检测到目标值发生变化后按照步长逐步调整设定值。

Ys=Yn+kT

其中Ys为设定目标值,Yn为当前目标值,T为步长,k为变化系数。当检测到目标值增加时k=1,当目标值不变时k=0,当目标值减小时k=-1。

步进式PID虽然可以减少阶跃信号带来的干扰,但是也会让系统的响应速度变慢,可以调节步长来平衡两者之间的关系。步长越小运行越稳定,系统响应速度越慢,反之亦然。

三、PID算法优化

01

积分饱和优化处理

若系统持续存在一个方向的偏差时,PID控制器的输出由于积分作用不断累加而增大,从而导致控制器输出产生超调进入饱和区。

当系统出现反向偏差时,由于输出饱和而不能对反向的偏差进行快速响应,这种现象称为积分饱和。

常用抑制PID积分饱和方法有: 积分分离法、遇限削弱积分法以及变速积分法等。

//积分分离法

当系统检测到偏差e(k)较大时,取消积分环节,当被控量接近给定值时,误差减小,此时恢复积分环节。这样既不影响控制器的动态性能,又能避免出现严重超调或持续振荡现象。

//变速积分法

根据系统的偏差e(k)大小对积分速度进行调整,当e(k)绝对值很大时减慢积分速度,当e(k)绝对值很小时加快积分速度。在积分饱和时减小积分时间可以达到抑制积分饱和的效果,增强系统的适应性。

//遇限削弱积分法:

当检测到控制量u(k)进入饱和区时不再进行积分项累加,而执行削弱积分的运算。这样不会产生过多的超调量,当需要反向调节时能较快地响应,避免输出长时间停留在饱和区。

02

微分项优化处理

PID算法中微分项与偏差的变化速率有关。如果系统存在频率较高的干扰或突变等情况时,微分项的数值会不断跳变,使控制过程产生系统振荡,影响控制系统的稳定性。

常用的微分环节优化方法如下:

//微分先行

微分项对测量值产生的偏差起作用,而不是对设定值起作用。这样可以避免设定值的变化而产生较大的调节波动,抑制高频干扰引起的系统振荡。

//不完全微分

不完全微分是在微分作用后引入一阶惯性环节,使得在偏差作阶跃式变化时产生的微分调节量,以一种较为平缓的方式输出。这样在不减小微分调节作用的前提下,降低因为偏差突变产生的波动。

//受控微分法

受控量微分PID算法是对控制器的输出值进行微分,而不是对系统响应的实际输出值进行微分,可避免由于系统设定值频繁变化或执行器的振荡产生的系统响应超调量过大。

03

串级PID

所谓串级PID,就是采用多个PID控制器串联工作,外环控制器的输出作为内环控制器的设定值,由内环控制器的输出去操纵外环控制器,从而实现外环被控量的控制效果。串级PID能够有效改善控制质量,在过程控制中应用广泛。

控制系统以外环控制器为主导,保证外环主变量稳定为目的,两个控制器协调一致,互相配合。外环控制器按负荷和操作条件的变化不断纠正内环控制器的设定值,使内环控制器的设定值适应负荷和操作条件的变化。

在电机控制中串级PID十分常见,常用的位置环+速度环+电流环控制结构如图。

在PID控制方法中P、I、D是三种不同的调节作用,在实际应用时可根据需求对三种调节作用进行灵活组合,这也是PID控制方法的魅力所在,它的结构决定了它在实际应用中的多样性与灵活性。

本篇主要从PID原理、数字PID实现方式以及算法优化方面进行了简单介绍,希望能够对大家学习PID算法有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WordPress站点如何实现发布文章即主动推送到神马搜索引擎?

平时boke112百科很少关注到神马搜索引擎,近日有站长留言想要实现WordPress站点发布文章就主动推送到神马搜索引擎,而且推送成功就自动添加一个自定义字段,以防重复推送。 登录进入神马站长平台后才知道神马也有一个API推送功能,不…

33.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-游戏登录数据包分析利用

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:32.网络数据分析…

【Spring框架】单元测试:JUnit

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

LeetCode 79 单词搜索

题目描述 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是…

基于飞凌嵌入式i.MX6ULL核心板的电梯智能物联网关方案

电梯是现代社会中不可或缺的基础性设施,为人们的生产生活提供了很大的便捷。我国目前正处于城镇化的快速发展阶段,由此带动的城市基础设施建设、楼宇建设、老破小改造等需求也让我国的电梯行业处在了一个高速增长期。截至2023年年底,中国电梯…

每日算法之盛最多的水

算法题如下: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你…

【JS】如何避免输入中文拼音时触发input事件

现有一段代码&#xff0c;监听input事件。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" con…

Vscode与Cmake搭配配置opencv使用

vscode与Cmake基本使用 下载插件 CtrlShiftp打开VSCode的指令面板&#xff0c;然后输入cmake:q&#xff0c;VSCode会根据输入自动提示&#xff0c;然后选择CMake: Quick Start选择编译器根据提示输入项目名称选择可执行文件编译项目 方式一&#xff1a;执行命令cd build cmake…

Gitlab的流水线任务【实现每小时自动测试 dev分支的更新】

背景 在现代软件开发实践中&#xff0c;持续集成&#xff08;Continuous Integration, CI&#xff09;是确保代码质量和快速响应软件缺陷的关键策略。GitLab 提供了强大的 CI/CD 功能&#xff0c;允许开发者自动化测试和部署流程。本文将介绍如何设置 GitLab 流水线计划任务&a…

VMware 虚拟机安装 CentOS Stream 9【图文详细教程】

系统需要开启虚拟化 VMware Pro 17 安装&#xff1a;https://www.yuque.com/u27599042/ccv8wh/ztmn0vkg3iimqyed CentOS Stream 9 镜像下载 https://www.centos.org/centos-stream/根据你电脑的操作系统类型&#xff0c;选择点击下载 创建虚拟机 在 VMware 中&#xff0c;…

智能网联汽车终端T-BOX应用方案

随着5G时代的到来&#xff0c;汽车智能化、网联化程度的不断提高&#xff0c;车载终端T-BOX作为车辆与云端的信息交互点&#xff0c;扮演着重要的角色。T-BOX的升级换代也为人们的出行实现了很多便利&#xff0c;同时也带来了极大的信息安全挑战&#xff0c;必须严格保证其数据…

每日五道java面试题之springboot篇(二)

目录&#xff1a; 第一题. 你如何理解 Spring Boot 配置加载顺序&#xff1f;第二题. Spring Boot 中如何解决跨域问题 ?第三题. 什么是 CSRF 攻击&#xff1f;第四题. 比较一下 Spring Security 和 Shiro 各自的优缺点 ?第五题. bootstrap.properties 和 application.proper…

STM32利用标准库实现串口接收数据

先看下本次实验的结果吧&#xff1a; 这次的代码是在上个文章代码的基础上有一些更改而来的&#xff0c;具体更改了何处来看看图吧&#xff1a; 总共就更改了这些内容&#xff0c;就实现了单片机的串口发送接收的功能&#xff0c;看起来还是很简单的吧&#xff01; 剩下就是主…

同步服务器操作系统公网仓库到本地02--搭建http内网仓库源 _ 麒麟KOS _ 统信UOS _ 中科方德 NFSCNS

原文链接&#xff1a;同步服务器操作系统公网仓库到本地02 —搭建http内网仓库源| 麒麟KOS | 统信UOS | 中科方德 NFSCNS Hello&#xff0c;大家好啊&#xff01;继之前我们讨论了如何同步服务器公网仓库到本地服务器之后&#xff0c;今天我们将进入这个系列的第二篇文章——通…

软件架构和基于架构的软件开发方法知识总结

一、软件架构定义 软件架构为软件系统提供了一个结构、行为和属性的高级抽象 软件架构是一种表达&#xff0c;使软件工程师能够&#xff1a; &#xff08;1&#xff09;分析设计在满足所规定的需求方面的有效性 &#xff08;2&#xff09;在设计变更相对容易的阶段&#xff0c;…

【LeetCode】升级打怪之路 Day 27:回溯算法 — 单词拆分问题

今日题目&#xff1a; 140. 单词拆分 II139. 单词拆分 参考文章&#xff1a;回溯算法&#xff1a;单词拆分 今天主要做了两道单词拆分的问题&#xff0c;都是需要使用回溯算法来解决&#xff0c;第一个题目难度不大&#xff0c;第二个题目需要在“剪枝”上多做一些功夫&#xf…

总线--通信的“道路“

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;前面讲了CPU和内存&#xff0c;那么CPU 从我们的键盘、鼠标接收输入信号&#xff0c;向显示器输出信号&#xff0c;这之间究竟是怎么通信的呢&#xff1f;换句话说&#xff0c;计算机是用什么样的方式来完成&#xff0c;CPU…

【工具使用】VScode如何设置中文环境

操作步骤 1.1 安装中文插件 1.2 设置为中文&#xff0c;然后重启 按照插件的使用方法介绍设置中文&#xff1a; 按下“CtrlShiftP”组合键以显示“命令面板”&#xff1a; 输入“dispaly”&#xff0c;选择“Configure Display Language”&#xff1a; 选择“中文简体” …

第十五届蓝桥杯嵌入式模拟考试I

第十五届蓝桥杯嵌入式模拟考试I 时隔多日&#xff0c;蓝桥杯比赛将之&#xff0c;听老师说还有模拟题这个东西(以前从没听说过)&#xff0c;不模拟不知道&#xff0c;一模拟吓一跳&#xff0c;废话不多说直接上图&#xff0c;这是只做编程题的得分满分85,剩下的几分我实在拿不…

C语言:数据在内存中的存储

目录 一、 整数在内存中的存储二、 大小端字节序和字节序判断1.什么是大小端2.为什么有大小端3.练习(1)练习1(2)练习2(3)练习3(4)练习4(5)练习5(6)练习6 三、 浮点数在内存中的存储1.练习2.浮点数的存储(1) 浮点数存的过程(2)浮点数取的过程 3.题目解析 一、 整数在内存中的存储…