PID控制算法C语言.doc

PID控制算法C语言.doc

ID:59253495

大小:35.00 KB

页数:8页

时间:2020-09-08

PID控制算法C语言.doc_第1页
PID控制算法C语言.doc_第2页
PID控制算法C语言.doc_第3页
PID控制算法C语言.doc_第4页
PID控制算法C语言.doc_第5页
资源描述:

《PID控制算法C语言.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PID控制算法位置型公式u(k)=Kp((err(k))+T/Ti∑err(j)+Td/T(err(k)-err(k-1)))T/Ti即为KiTd/T即为Kd#include#includeusingnamespacestd;struct{floatsetnum;floatactualnum;floaterr;floatlasterr;floatkp,ki,kd;floatcontrolmachine;floatsumerr;}pid;voidPID(){pid.setnum=0.0;pid.actualnum=0.0;pi

2、d.err=0.0;pid.lasterr=0.0;pid.controlmachine=0.0;pid.sumerr=0.0;pid.kp=0.2;pid.ki=0.015;pid.kd=0.2;}floatrealizepid(floatnum){pid.setnum=num;pid.err=pid.setnum-pid.actualnum;pid.sumerr+=pid.err;pid.controlmachine=pid.kp*pid.err+pid.ki*pid.sumerr+pid.kd*(pid.err-pid.lasterr);pid.laste

3、rr=pid.err;pid.actualnum=pid.controlmachine*1.0;returnpid.actualnum;}intmain(){PID();intcount=0;while(count<1000){floatnum;num=realizepid(200.0);printf("%f",num);count++;}return0;}增量型公式:Δu(k)=Kp(err(k)-err(k-1))+Kierr(k)+Kd(err(k)-2err(k-1)+err(k-2))#include#include

4、.h>#includeusingnamespacestd;struct{floatsetnum;floatactualnum;floaterr;floatnexterr;floatlasterr;floatkp,ki,kd;floatcontrolmachine;floatsumerr;}pid;voidPID(){pid.setnum=0.0;pid.actualnum=0.0;pid.err=0.0;pid.nexterr=0.0;pid.lasterr=0.0;pid.controlmachine=0.0;pid.sumerr=0.0;

5、pid.kp=0.2;pid.ki=0.015;pid.kd=0.2;}floatrealizepid(floatnum){pid.setnum=num;pid.err=pid.setnum-pid.actualnum;pid.sumerr+=pid.err;floatincrementnum=pid.kp*(pid.err-pid.nexterr)+pid.ki*pid.err+pid.kd*(pid.err-2*pid.nexterr+pid.lasterr);pid.actualnum+=incrementnum;pid.lasterr=pid.nexte

6、rr;pid.nexterr=pid.err;returnpid.actualnum;}intmain(){PID();intcount=0;while(count<1000){floatnum;num=realizepid(200.0);printf("%f",num);count++;}return0;}积分分离:消除静差,减少偏差积累#include#include#include#includeusingnamespacestd;struct{floatsetnum;float

7、actualnum;floaterr;floatnexterr;floatlasterr;floatkp,ki,kd;floatcontrolmachine;floatsumerr;}pid;voidPID(){pid.setnum=0.0;pid.actualnum=0.0;pid.err=0.0;pid.nexterr=0.0;pid.lasterr=0.0;pid.controlmachine=0.0;pid.sumerr=0.0;pid.kp=0.2;pid.ki=0.04;pid.kd=0.2;}floatrealizepid(floatnum){in

8、tindex;pid.s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。