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