class PID:
def init(self, p, i, d, set_value):
self.kp = p
self.ki = i
self.kd = d
self.setValue = set_value # 目标值
self.lastErr = 0 # 上一次误差
self.preLastErr = 0 # 临时存误差
self.errSum = 0 # 误差总和
# 位置式PID
def pidPosition(self, curValue):
err = self.setValue - curValue
dErr = err - self.lastErr
self.preLastErr = self.lastErr
self.lastErr = err
self.errSum += err
outPID = self.kp * err + (self.ki * self.errSum) + (self.kd * dErr)
return outPID