锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Python代码实现PID控制

时间:2022-10-24 22:30:02 5kp90a直插二极管

PID主要位置和增量两种类型

1、位置式

在这里插入图片描述

你必须提前安装matplotlib这个库,这个库可以非常清楚的绘制数据的曲线图。如果不装的话可以返回一个列表

import matplotlib.pyplot as plt   class Pid():  """这里定义了一个关于PID的类"""     def __init__(self, exp_val, kp, ki, kd):         self.KP = kp         self.KI = ki         self.KD = kd         self.exp_val = exp_val         self.now_val = 0         self.sum_err = 0         self.now_err = 0         self.last_err = 0      def cmd_pid(self):         self.last_err = self.now_err         self.now_err = self.exp_val - self.now_val         self.sum_err  = self.now_err         # 这一块是严格按照公式写的         self.now_val = self.KP * (self.exp_val - self.now_val) \                           self.KI * self.sum_err   self.KD * (self.now_err - self.last_err)         return self.now_val   pid_val = [] #对pid初始化,目标值是1000 ,p=0.1 ,i=0.15, d=0.1 my_Pid = Pid(1000, 0.1, 0.15, 0.1) # 然后循环100次将数量存入数组 for i in range(0, 100):     pid_val.append(my_Pid.cmd_pid()) plt.plot(pid_val) plt.show() 

2、增量式

这就是离散化 PID 从公式可以看出,增量表达结果与最近三个偏差有关,大大提高了系统的稳定性。应注意的是,最终的输出结果应该是u(K) 增量调节值;

import matplotlib.pyplot as plt   class Pid():     def __init__(self, exp_val, kp, ki, kd):         self.KP = kp         self.KI = ki         self.KD = kd         self.exp_val = exp_val         self.now_val = 0         self.now_err = 0         self.last_err = 0         self.last_last_err = 0         self.change_val = 0      def cmd_pid(self):         self.last_last_err = self.last_err         self.last_err = self.now_err         self.now_err = self.exp_val - self.now_val         self.change_val = self.KP * (self.now_err - self.last_err)   self.KI * \             self.now_err   self.KD * (self.now_err - 2 * self.last_err                                         self.last_last_err)         self.now_val  = self.change_val         return self.now_val   pid_val = [] my_Pid = Pid(1000000, 0.1, 0.15, 0.1) for i in range(0, 30):     pid_val.append(my_Pid.cmd_pid()) plt.plot(pid_val) plt.show() 

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章