(三) PID控制中的噪声过滤

news/2024/11/25 10:55:34/

在这里插入图片描述

在前面的章节里,我们谈到了积分环节由于执行器的物理限制导致的积分项Wind-up,通过设置饱和限幅器,选择性关闭积分环节来完成Wind-up问题。

今天我们要解决的问题就是微分环节可能存在的问题。通过传感器我们可以观测出一个被控量的大小,和前面说到的anti-windup一样,受到物理环境的限制,对于传感器而言,那就是噪声。

我们知道微分环节其实就是对误差的一个求导,几何意义就是斜率,斜率越大,表示控制系统受到的影响也越大。如果噪声变化量很大(或者说频率很大)系统将会受到很大的影响。

测量导致的噪声

传感器是会受到周围环境的干扰,它反映的通常不是实际值。比如:

  • Thermal noise
  • Shot noise
  • Flicker noise
  • Brust noise
  • Coupled noise
  • White noise

我们感兴趣的是他们是如何影响我们的系统的。虽然对于某些控制规律中,只要噪声是一个低幅度的,他可以看成是对系统无关紧要的影响,但对这次要讲的理想PID而言是不一定的。
在这里插入图片描述
上图,黄色的斜线代表了高低频率噪声的斜率,斜率越大,对微分项影响也越大,从而会影响我们整个控制的输出。或者你可以从代数角度来解释,因为所有信号都可以看成是无穷个正弦信号的组合:
n o i s e = y ( t ) = A sin ⁡ ( ω a t + ϕ a ) + B sin ⁡ ( ω b t + ϕ b ) + ⋯ noise=y(t)=A\sin(\omega_at +\phi_a)+B\sin(\omega_b t+\phi_b)+\cdots noise=y(t)=Asin(ωat+ϕa)+Bsin(ωbt+ϕb)+
为了简化问题,我们只考虑第一项:
y ( t ) = A sin ⁡ ( ω a + ϕ a ) y(t)=A\sin(\omega_a +\phi_a) y(t)=Asin(ωa+ϕa)
其中, A A A表示幅值, ω a \omega_a ωa角频率, ϕ \phi ϕ相角。

对其进行求导:
y ( t ) = A ⋅ ω a ⋅ sin ⁡ ( ω a + ϕ a + 9 0 ∘ ) y(t)=A\cdot\omega_a\cdot\sin(\omega_a+\phi_a+90^{\circ}) y(t)=Aωasin(ωa+ϕa+90)
只看幅值部分,有以下结论:

  • ω a > 1 r a d / s \omega_a> 1rad/s ωa>1rad/s 幅值变大
  • ω a < 1 r a d / s \omega_a<1rad/s ωa<1rad/s 幅值变小

可以画出以下图形:
在这里插入图片描述

随着角频率的增大,幅值也增大;反之,角频率越小,幅值也越小。我们想要的是设定一个合理的截断,降低其对微分项的影响。重新回到我们的PID图:
在这里插入图片描述
理想情况我们希望将所有噪声都分离出来,事实上不可能做到。索性的是,大多数噪声高幅值的通常具有较低频率,高频率的往往具有较低幅值。显然使用一个低通滤波器是合适的,比如说一阶低通滤波器。
在这里插入图片描述
设定一个截止频率,小于这个频率的都保留,大于这个频率的都过滤。这样的处理将会使得噪声对于我们的系统影响降低。

拉普拉斯变换

拉普拉斯域的传递函数含义
S微分
1/S积分
N/(S+N)截止频率为N rad/s低通滤波器

考虑一个低通滤波器:
10 S + 10 \frac{10}{S+10} S+1010
常数项10就是代表截止频率为 10 r a d / s 10 rad/s 10rad/s的一阶低通滤波器。不过我们也会写成其他形式:
N S + N = 1 1 N S + 1 = 1 τ S + 1 \frac{N}{S+N}=\frac{1}{\frac{1}{N}S+1}=\frac{1}{\tau S+1} S+NN=N1S+11=τS+11
因为频率的倒数是时间,所以这个 τ \tau τ也被称为时间常数。

OK!
在这里插入图片描述
这里再提一下,如果实现等价方法(积分反馈回路):
在这里插入图片描述
那么我们如何在这两种方法中选择呢?第一种方法逻辑清晰易懂,但是实现起来效率不高,第二种则是抽象,但是效率较高。

来看看matlab中simulink是如何使用的:

在这里插入图片描述
可以看出,Simulink中的微分项是:
D N 1 + N 1 s D\frac{N}{1+N\frac{1}{s}} D1+Ns1N
显然他不是一纯粹的微分环节,他是带了低通滤波,截止频率为 N N N.


http://www.ppmy.cn/news/85466.html

相关文章

KAFKA:如何做到1秒发布百万级条消息

即使顺序读写&#xff0c;过于频繁的大量小I/O操作一样会造成磁盘的瓶颈&#xff0c;所以KAFKA在此处的处理是把这些消息集合在一起批量发送&#xff0c;这样减少对磁盘IO的过度读写&#xff0c;而不是一次发送 单个消息。 另一个是无效率的字节复制&#xff0c;尤其是在负…

FreeRTOS(7)----事件组

1.事件位 当收到一条消息并且把这条消息处理掉以后就可以将某个位&#xff08;标志&#xff09;置1&#xff0c;当队列中没有消息需要处理的时候就可以将这个位&#xff08;标志&#xff09;置0 当把队列中的消息通过网络发送输出以后就可以将某个位&#xff08;标志&#xf…

Lesson13---人工神经网络(2)

13 人工神经网络&#xff08;2&#xff09; 多层神经网络-非线性分类问题多层神经网络的损失函数不是凸函数&#xff0c;很难计算解析解通常采用梯度下降法&#xff0c;得到数据解&#xff0c;梯度下降法可以用来求解函数极值问题 批量梯度下降随机梯度下降小批量梯度下降 1…

每日一题——四数之和(双指针解法)

每日一题 四数之和 注&#xff1a; 如果大家没做过题目两数之和、三数之和&#xff0c;强烈建议先去做做&#xff0c;也可以参考我之前写的博客&#xff0c;这样做这一题会事半功倍&#xff0c;且由于本题思路和三数之和十分类似&#xff0c;故对于解题思路&#xff0c;也不会…

关于Sql 中 on和where的粗略理解

先看到题&#xff1a;统计复旦用户8月练题情况 牛客中的 原地址 通过这个题我们来探讨where和on 描述 题目&#xff1a; 现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况&#xff0c;请取出相应明细数据&#xff0c;对于在8月份没有练习过的…

control_file_record_keep_time

control_file_record_keep_time 是一个参数&#xff0c;用于指定控制文件记录的保留时间。您可以通过以下步骤查看该参数的值&#xff1a; 登录到您的数据库服务器。 打开 SQL*Plus 或 SQL Developer 或任何其他 Oracle 数据库客户端工具。 连接到您的数据库实例。 运行以下…

手写单链表

手写单链表 参考代码一&#xff1a; 下面是手写单链表的 C 实现示例代码&#xff0c;包括节点的插入、删除和遍历等基本操作&#xff1a; #include <iostream>using namespace std;// 节点结构体 struct Node {int data;Node *next; };// 遍历链表并输出每个节点的值 …

2.VirtualBox安装CentOS 7

安装VirtualBox 到https://www.virtualbox.org/wiki/Downloads下载并且安装&#xff0c;请选择对应系统的版本进行安装&#xff0c;我是Mac OS。一路Next。 下载CentOS虚拟镜像 到https://www.osboxes.org/centos/下载CentOS的虚拟镜像。我下载的是CentOS 7&#xff0c;64bi…