typedef struct
{
float Kp,Ki,Kd;
float Target;
float Current;
float Error[3];
float DeadZone;
float Output;
float Increment;
float OutputUpper;
float OutputLower;
} PID_TypeDef;

void PID_Calculate(PID_TypeDef *Data)
{
float Inc, P, I, D, Err;

Err = Data->Target - Data->Current;

Data->Error[0] = Data->Error[1];
Data->Error[1] = Data->Error[2];
Data->Error[2] = (Abs_float(Err) > Data->DeadZone) * Err;

P = Data->Kp*(Data->Error[2]-Data->Error[1]);
I = Data->Ki*(Data->Error[2]);
D = Data->Kd*(Data->Error[2]-2*Data->Error[1]+Data->Error[0]);
Inc = (P+I+D);

Data->Increment = Inc;

Data->Output += Inc;
Data->Output = Min_float(Data->Output, Data->OutputUpper);
Data->Output = Max_float(Data->Output, Data->OutputLower);
}

void PID_Clear(PID_TypeDef *Data)
{
Data->Current = 0;
Data->Target = 0;

Data->Error[0] = 0;
Data->Error[1] = 0;
Data->Error[2] = 0;

Data->Increment = 0;
Data->Output = 0;
}

最新文章

  1. 出售一套Unity + Lua热更新框架代码
  2. ArcGis 字段计算表达式写法注意事项
  3. 用WP_Query自定义WordPress 主循环
  4. mysql5.1版本 my.cnf中复制的配置不起作用
  5. 40免费的 jQuery & CSS3 图片热点特效
  6. 【学习笔记】【C语言】字符串数组
  7. Virtualizing WrapPanel VS toolkit:WrapPanel
  8. 增量与位置PID
  9. HDU 3289 Cat VS Dog (二分匹配 求 最大独立集)
  10. (转)STL
  11. java 吞吐量
  12. python学习之路-12
  13. Node学习——开篇
  14. BZOJ 3620: 似乎在梦中见过的样子 [KMP 暴力]
  15. 查询优化--ORDER BY查询优化
  16. 框架-thrift-zookeeper-kafka
  17. POJ 3460 Booksort(算竞进阶习题)
  18. Android的Fragment中的互相通信-桥梁activity
  19. AngularJS之前端解析excel文件
  20. 【转】C#解析Json Newtonsoft.Json

热门文章

  1. 题解 Trie 但是你要最小化它的节点数量
  2. Linux centos 代替方案: Rocky Linux (centos作者)
  3. Centos 7.x系统下忘记用户登录密码,重置密码的方法
  4. Vulhub 漏洞学习之:Discuz
  5. LeetCode-432 全O(1)的数据结构
  6. pat乙级1023 组个最小数
  7. hdu-2544 最短路(SPFA)
  8. lg9019题解
  9. vue3 打开页面input框自动获得焦点
  10. MSF内网信息收集