位置式PID算法的C语言代码
2015-08-05 01:13
274 查看
typedef struct{ float limit; //输出限幅 float target; //目标量 float feedback; //反馈量 float Kp; float Ki; float Kd; float eSum; float e0; //当前误差 float e1; //上一次误差 }PIDType; #define max(a, b) (a>b? a:b) #define min(a, b) (a<b? a:b) #define range(x, a, b) (min(max(x, a), b)) float pid_pos_update(PIDType *p) { float pe, ie, de; float out=0; //计算当前误差 p->e0 = p->target - p->feedback; //误差积分 p->eSum += p->e0; //误差微分 de = p->e0 - p->e1; pe = p->e0; ie = p->eSum; p->e1 = p->e0; out = pe*(p->Kp) + ie*(p->Ki) + de*(p->Kd); //输出限幅 out = range(out, -p->limit, p->limit); return out; }
相关文章推荐
- 静态数组实现循环队列 c语言
- C++学习笔记——继承与派生(二)
- C语言去除字符串空格
- zz:用C语言编写Windows服务程序的五个步骤 分享到: QQ空间 新浪微博
- zz: C++后台服务程序开发模式
- iOS开发分分钟搞定C语言 —— 总结
- C++中max_element和min_element
- C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅰ部分
- C/C++经典算法精华整理(1)-求一个数的二进制类型中1(或0)的个数
- c++第一季测试题
- C/C++语法知识精华整理(1)-左值与右值、变量与常量、 define与const、Printf特点、补码与阶码、位运算等
- C语言:从表尾到到表头逆向创建链表,反转链表
- C++一行字符串处理
- c++ 迭代器与下标访问效率问题
- c++ 计算程序运行时间
- 深入理解C++中的初始化
- C语言实现链队列代码
- 10、C语言和设计模式(迭代器模式)
- C语言的基本类型
- 9、C语言和设计模式(抽象工厂模式)