如何为PID控制的微分方程制作低通滤波器?

问题描述

因此,我正在尝试在python中为正确的PID系统建模,但是如果我向信号(通过传感器)添加一些噪声,则D项将开始反应过度。我知道这很普遍,人们使用低通滤波器对其进行了修复,但我不知道如何实现。

所以首先我对温度有一个简单的逻辑增长函数

time = np.arrange(0.,maxtime,dt)
for t in time:
    temperature = temperature + temperature*50*dt*(1-temperature/150)

现在,我导入随机信号,并在信号中添加一些噪声(假设这是由不完善的现实生活中的传感器引起的):

    temperature = temperature + random.randint(-1,1)/10

我没有PID的完整代码,但说我们的系统只能冷却温度,而不能加热温度,那么我会遇到这样的事情:

    if (P+I+D < 0):
        temperature = temperature + dt*(P+I+D)

问题是系统对产生的额外噪声有很多反应,我需要一种解决方法。我对D项进行编码的方式是这样的(其中Kd是导数的常数:

    D = ((prevIoUstemperature - temperature) / dt)*Kd 

请注意,我在D项中不要使用误差,因为否则它将对所需温度的突然变化产生极大的反应,因此,我们的导数常数可能需要为负值才能抵消系统的影响。

我的问题是,是否有一种方法可以阻止导数对噪声的过度反应。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)