python 增量式pid
时间: 2023-11-28 13:45:36 浏览: 93
以下是Python中增量式PID的实现方法:
```python
class DeltaPID:
def __init__(self, setpoint, initial_value, Kp, Ki, Kd, dt):
self.setpoint = setpoint
self.last_error = self.setpoint - initial_value
self.Kp = Kp
self.Ki = Ki * dt
self.Kd = Kd / dt
self.dt = dt
self.integral = 0
def update(self, current_value):
error = self.setpoint - current_value
self.integral += error * self.Ki
derivative = (error - self.last_error) * self.Kd
output = self.Kp * error + self.integral + derivative
self.last_error = error
return output
def fit_and_plot(self, n):
import matplotlib.pyplot as plt
import numpy as np
y = np.zeros(n)
u = np.zeros(n)
y[0] = self.setpoint
for k in range(1, n):
u[k - 1] = self.update(y[k - 1])
y[k] = y[k - 1] + u[k - 1]
plt.plot(y, label='Output')
plt.plot(u, label='Input')
plt.legend()
plt.show()
```
这里我们定义了一个名为DeltaPID的类,它包含了增量式PID的所有必要参数和方法。在初始化函数中,我们传入了设定值、初始值、比例系数、积分系数、微分系数和采样时间。在update函数中,我们计算了误差、积分项、微分项和输出,并更新了上一次的误差。在fit_and_plot函数中,我们使用matplotlib库绘制了输出和输入的图形。
为了演示如何使用DeltaPID类,我们可以运行以下测试代码:
```python
pid = DeltaPID(100, -80, 0.5, 0.2, 0.1, 0.001)
pid.fit_and_plot(150)
```
这将创建一个DeltaPID对象,并使用fit_and_plot方法运行150个采样点的模拟。
阅读全文