改进初学者的PID-测量的比例介绍

最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址:http://brettbeauregard.com/blog/2017/06/introducing-proportional-on-measurement/

 

已经有相当长的一段时间了,但我终于更新了Arduino PID库。我添加的是一个几乎未知的功能,但我认为这将是对爱好者社区的利好。它被称为 "测量的比例" (简称 PonM)。

1、为什么你应该关心

有一些进程被称为“集成进程”。在这些过程中,PID的输出控制输入的变化率。在工业中,这些只占所有过程的一小部分,但在业余爱好领域,这些家伙无处不在:真空低温烹饪、线性幻灯片和3D打印机挤出机温度控制都是这类过程的例子。

这些过程令人沮丧的是,使用传统的 PI 或 PID 控制,它们会超过设定值。不是有时,而是总是:

如果你不知道这件事,这可能会让你抓狂。您可以永远调整调优参数,超调仍然存在;基础数学就是这样。测量的比例改变了基础数学。因此,在不发生超调的情况下,可以找到一组调优参数:

超调仍然可以肯定,但这并非不可避免。有了 PonM 和正确的整定参数,那个低温烹饪或线性滑块就可以直接延伸到设定值,而不是超过设定值。

2、那么什么是测量的比例呢?

与基于测量的微分类似,PonM 改变了比例项所关注的内容。比例项采用PID 输入的当前值代替偏差进行计算。

基于偏差的比例:

基于测量的比例:

与基于测量的微分不同,它对性能的影响是巨大的。对于 DonM,微分项仍然有相同的作用:抵制急剧的变化,从而抑制由P和I比例测量驱动的振荡,另一方面,从根本上改变比例项的作用。它不是像I一样的驱动力,而是像 D 一样成为阻力的力量。这意味着,对于PonM,一个更大的 Kp 将使您的控制器更加保守。

3、很好。但这如何消除超调呢?

要理解这个问题并修复它,看看不同的项以及它们对整个PID输出的贡献是很有帮助的。下面是对使用传统 PID 的集成进程 (真空低温烹饪) 的设定值更改的响应:

需要注意的两大事项是:

  1. 当我们处于设定值时,积分项是总体输出的唯一贡献者。
  2. 即使起点和终点的设定值不同,输出也会返回到相同的值。此值通常称为“平衡点“:导致0输入斜率的输出。对于真空低温烹饪来说,这相当于足够的热量来补偿周围的热损失。

在这里,我们可以看到为什么会发生超调,而且总是会发生。当设定值第一次更改时,偏差将导致积分项的增长。为了使进程在新的设定值保持稳定,输出将需要返回到平衡点。要做到这一点,唯一的办法就是积分项收缩。发生这种情况的唯一方法是负误差,只有在超过设定值时才会发生。

4PonM改变了游戏规则

下面是使用基于测量的比例 (和相同的调谐参数) 控制的相同的真空低温烹饪:

在这里,您应该注意到:

  1. P项现在提供了一个阻力。输入越高,它就负的越多。
  2. P项在新的设定值变为零之前,它会一直有值。

关键是P项不会返回到0。这意味着I项不必单独返回到平衡点。P和I一起可以将输出返回到平衡点,而无需收缩I项。因为它不需要收缩,所以不存在超调。

5、如何在新的 PID 库中使用它

如果您已准备好尝试 "测量的比例",并且安装了最新版本的PID库,则设置它是相当容易的。使用 PonM 的主要方法是在重载构造函数中指定它:

如果要在运行时在 PonM 和 PonE 之间切换,则 "设置" 函数也会重载:

您只需要在需要切换时调用重载方法。否则,您可以使用常规的设置调整功能,它将记住您的选择。

欢迎关注:

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

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

相关文章

改进初学者的PID-测量的比例编码

最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址:http://brettb…

PID:我应该何时计算积分项?

最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址:http://brettb…

Arduino PID自整定库

最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址:http://brettb…

LwIP应用开发笔记之二:LwIP无操作系统UDP服务器

前面我们已经完成了LwIP协议栈基于逻辑的基本移植,在这一节我们将以RAW API来实现UDP服务器。 1、UDP协议简述 UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,处于传输层…

LwIP应用开发笔记之三:LwIP无操作系统UDP客户端

前一节我们实现了基于RAW API的UDP服务器,在接下来,我们进一步利用RAW API实现UDP客户端。 1、UDP协议简述 UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,处…

LwIP应用开发笔记之四:LwIP无操作系统TFTP服务器

前面我们已经实现了UDP的回环客户端和回环服务器的简单应用,接下来我们实现一个基于UDP的简单文件传输协议TFTP。 1、TFTP协议简介 TFTP是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端…

LwIP应用开发笔记之五:LwIP无操作系统TCP服务器

前面我们实现了UDP服务器及客户端以及基于其上的TFTP应用服务器。接下来我们将实现同样广泛应用的TCP协议各类应用。 1、TCP简述 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由…

LwIP应用开发笔记之六:LwIP无操作系统TCP客户端

上一篇我们基于LwIP协议栈的RAW API实现了一个TCP服务器的简单应用,接下来一节我们来实现一个TCP客户端的简单应用。 1、TCP简述 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议&a…

LwIP应用开发笔记之七:LwIP无操作系统HTTP服务器

前面我们实现了TCP服务器和客户端的简单应用,接下来我们实现一个基于TCP协议的应用协议,那就是HTTP超文本传输协议。 1、HTTP协议简介 超文本传输协议(Hyper Text Transfer Protocol),简称HTTP,是一种基于…

LwIP应用开发笔记之八:LwIP无操作系统HTTP客户端

前面我们实现了TCP服务器和客户端的简单应用,接下来我们实现一个基于TCP协议的应用协议,那就是HTTP超文本传输协议 1、HTTP协议简介 超文本传输协议(Hyper Text Transfer Protocol),简称HTTP,是一种基于T…

LwIP应用开发笔记之九:LwIP无操作系统TELNET服务器

前面我们已经实现了基于RAW API的TCP服务器和客户端,也在此基础上实现了HTTP应用。接下来我们实现一个基于TCP的Telnet服务器应用。 1、Telnet协议简介 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了…

在ARM Cortex-M上实现FreeRTOS性能计数器

说明:本文翻译自Erich Styger的文章《Implementing FreeRTOS Performance Counters on ARM Cortex-M》,文章的权属属于原作者。 当使用像FreeRTOS这样的RTOS时,迟早要问一个问题:每个任务花费多少时间?基于Eclipse的M…

STM32学习及开发笔记八:采用主从计时器实现精确脉冲输出

脉冲信号用于设备控制是非常常见的,但在一些情况下,我们希望精确的控制脉冲的数量以实现对运动的精确控制。实现的方式也许有多种多样,但使用计时器来实现此类操作是人们比较容易想到的。 1、原理概述 我们知道在STM32平台上,使…

外设驱动库开发笔记0:EPD总体设计

在产品开发过程中,不可避免需要使用很多外部的元件及传感器,这些元器件也许是板载的,也许是板外的,但不管怎样,为其开发驱动程序都是必须的。每次都需要为这些元器件编写驱动程序。但每次重复编写调试很麻烦&#xff0…

外设驱动库开发笔记1:AD56xx系列DAC驱动

DAC在我们的项目中经常使用到,而使用最多的就是AD56xx系列,包括有单通道的AD5662、双通道的AD5623和AD5663、以及四通道的AD5624和AD5664等。出于方便复用的原因,我们设计并实现AD56xx系列DAC的驱动。 1、功能概述 AD56xx系列DAC属于nanoDA…

外设驱动库开发笔记2:AD8400系列数字电位器驱动

一些时候我们需要在系统使用过程中改变某些电路电阻值以达到改变设定的目的,这时候我们就会使用电位器。在我们使用数字控制电路时多选择数字电位器。在这一篇我们就来设计AD8400系列数字电位器的驱动。 1、功能概述 AD8400/AD8402/AD8403分别是单通道/双通道/四通…

外设驱动库开发笔记3:AD527x系列数字电位器驱动

在一些时候我们需要使用精度更高的数字电位器来实现我们的应用。我们经常使用AD527x系列数字电位器来实现这类应用。在通常情况下,AD527x系列数字电位器完全能够满足要求。为了减少重复工作,在这里我们将分系并实现AD527x系列数字电位器的驱动。 1、功能…

PID控制器改进笔记之一:改进PID控制器之参数动态调整

前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器。这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性能和灵活性。所以在这篇中我们来讨论改进…

外设驱动库开发笔记4:AD9833函数发生器驱动

很多时候我们需要输出某种函数信号,如方波、三角波、正弦波等,但想要获得这样的函数信号,不论是硬件电路还是软件实现,却并不是一件简单的事情。不过AD9833这类函数生成芯片可以简化这方面的操作,这一节我们就来设计并…

PID控制器改进笔记之二:改进PID控制器之手自动切换

前面我们发布了一系列PID控制器相关的文章,包括经典PID控制器以及参数自适应的PID控制器。这一系列PID控制器虽说实现了主要功能,也在实际使用中取得了良好效果,但还有很多的细节部分可以改进以提高性能和灵活性。所以在这篇中我们来讨论改进…