PID位置式与增量式的原理
发布时间:2024-11-22
PID算法可以说是在自动控制原理中比较经典的一套算法,在现实生活中应用的比较广泛。大学参加过电子竞赛的朋友都应该玩过电机(或者说循迹小车),我们要控制电机按照设定的速度运转,PID控制在其中起到了关键的作用。什么是PID
PID原理
PID算法简单代码
PID 控制算法可以分为位置式 PID 和增量式 PID 控制算法。两者的区别:(1)位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大;(2)增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。(3)由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。下面给出公式直接体现的C语言源代码(请结合项目修改源代码):1.位置式PIDfloat Ek; //当前误差 float Ek1; //前一次误差 e(k-1) float Ek2; //再前一次误差 e(k-2) float LocSum; //累计积分位置}PID_LocTypeDef;
/************************************************函数名称 :PID_Loc功 能 :PID位置(Location)计算参 数 :SetValue ------ 设置值(期望值) ActualValue --- 实际值(反馈值) PID ----------- PID数据结构返 回 值 :PIDLoc -------- PID位置作 者 :strongerHuang*************************************************/float PID_Loc(float SetValue, float ActualValue, PID_LocTypeDef *PID){ float PIDLoc; //位置
PID->Ek = SetValue - ActualValue; PID->LocSum += PID->Ek; //累计误差
PIDLoc = PID->Kp * PID->Ek + (PID->Ki * PID->LocSum) + PID->Kd * (PID->Ek1 - PID->Ek);
PID->Ek1 = PID->Ek; return PIDLoc;}
2.增量式PID
float Ek; //当前误差 float Ek1; //前一次误差 e(k-1) float Ek2; //再前一次误差 e(k-2)}PID_IncTypeDef;
/************************************************函数名称 :PID_Inc功 能 :PID增量(Increment)计算参 数 :SetValue ------ 设置值(期望值) ActualValue --- 实际值(反馈值) PID ----------- PID数据结构返 回 值 :PIDInc -------- 本次PID增量(+/-)作 者 :strongerHuang*************************************************/float PID_Inc(float SetValue, float ActualValue, PID_IncTypeDef *PID){ float PIDInc; //增量
PID->Ek = SetValue - ActualValue; PIDInc = (PID->Kp * PID->Ek) - (PID->Ki * PID->Ek1) + (PID->Kd * PID->Ek2);
PID->Ek2 = PID->Ek1; PID->Ek1 = PID->Ek; return PIDInc;}
展开全文
其他新闻
- 好的PLC程序要达到这6个标准! 2024-11-22
- 西门子PLC代理商-广东省PLC代理商 2024-11-22
- 西门子PLC代理商-伺服电机驱动代理商 2024-11-22
- 西门子广东伺服电机代理商 2024-11-22
- 分布式伺服系统的优势 2024-11-22
- 伺服电机与PLC协同控制的实现方法 2024-11-22
- 伺服电机工作原理 2024-11-22
- 伺服电机的使能信号及其相关问题 2024-11-22
- 动图看电机原理,过瘾! 2024-11-22
- 机械设计中电机负载的计算方法汇总 2024-11-22