下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言 PID 演示程序 #include <string.h> #include<stdio.h> typedef struct PIDdouble Command; /输入指令 double Proportion; /比例系数 double Integral; /积分系数 double Derivative; /微分系数 double preErr;/ 前一拍误差double sumErr; /误差累积 PID;double PIDCale(PID *p,double feedback)double dErr,Err;Err=p->Command-feedb
2、ack; /当前误差 p->sumErr+=Err;/误差累加dErr=Err-p->preErr; / 误差微分 p->preErr=Err;return(p->Proportion*Err /比例项+p->Derivative*dErr/微分项+p->Integral*p->sumErr); /积分项void PIDInit(PID *p)memset(p,0,sizeof(PID); / 初始化typedef struct motordouble lastY;double preY;double lastU;double preU;motor;v
3、oid motorInit(motor *m)memset(m,0,sizeof(motor);double motorCal(motor *m,double u)doubley=1.9753*m->lastY-0.9753*m->preY+0.00003284*u+0.00006568*m->lastU+0.00003284*m->preU; 二阶系统m->preY=m->lastY;m->lastY=y;m->preU=m->lastU;m->lastU=u;return y;void mai n()FILE *fp=fope n
4、("data.txt","w+");PID sPID;motor m_motor;int k=0;double u;double y=0;PIDI nit(&sPID);sPID.Proportio n=2;sPID.Derivative=1;sPID.I ntegral=0.00001;sPID.Comma nd=10;motorI nit(&m _motor);while(k<=1000)? fprin tf(fp,"%d 设定值=%f 被控量=%f 偏差=%f 控制量 =%fn",k,sPID.Comma
5、nd,y,sPID.Comma nd-y,u);u=PIDCale(&sPID,y);y=motorCal(&m_motor,u);k+;prin tf("%fn",y);fclose(fp);增量式PID控制C语言代码增量式PID控制C语言代码/定义PID参数结构体/ / typedefstruct PID int int intintintintSetPoi nt Proporti on; In tegral; Derivative; LastError; PreError;结构体定义/设定值/ Proportion/ Integral/ Derivat
6、ive比例系数 积分系数 微分系数/ Error-1前一拍误差/ Error-2前两拍误差 PID;mai n()PIDPIDInit ( &vPID ); vPID.Proportion = 10; vPID.I ntegral = 10; vPID.Derivative = 10; vPID. SetPoi nt =vPID;/定义结构变量名/Initialize Structure /Set PID Coefficients / Set PID Integral / Set PID Derivative /根据实际情况设定while(1) Verror=Measure();Err
7、or =vPID. SetPoint- tempi=PIDCal(&vPID, Error; laser.Value+=tempi;/Verror;得到AD的输出值/与设定值比较,得到误差值Value与Num2为共同体,共同体名laserLASERH=laser.NumO;LASERL=laser.Num1;/Title:PID参数初始化/Descripti on: Proporti on="0"/In tegral=0/LastError=0/Input: PID的P、I控制常数和之前的误差量(PID *pp)/Return:/void PIDInit (PID
8、*pp)/PID 参数初始化,都置 0 memset ( pp,0,sizeof(PID);memset()的函数,它可以一字节一字节地把整个数组设置为一个指定的值。/ memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参 数,/第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。/其函数原型为:void *memset(void*,int,unsigned);/ 头文件 <stri ng.h>/Title:增量式PID算法程序/Description:给出一个误差增量/Input: PID的P、I控制常数和之前的误差量(PI
9、D *pp)&当前误差量(This Error)/Return:误差增量 templ/int PIDCal( PID *pp, int ThisError )增量式PID算法(需要控制的不是控制量的绝对值,而是控制量的增量)int pError,dError,iError;long templ;pError = ThisError-pp->LastError;iError = ThisError;dError = ThisError-2*(pp->LastError)+pp->PreError;/增量计算templ=pp->Proporti on *pError+ pp->ln tegra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考物理总复习专题十电磁感应第2讲法拉第电磁感应定律、自感、涡流练习含答案
- 广东省阳东广雅学校高二信息技术 三维动画制作教案
- 2024年学年七年级语文下册 第二单元 告别抒怀 第4课《告别昨天的我》教案2 新疆教育版
- 2024-2025学年高中化学 第3章 第2节 课时3 铁的重要化合物教案 新人教版必修1
- 2024年届九年级历史上册 第5课 为争取“民主”“共和”而战教案2 北师大版
- 2023六年级数学上册 二 比和比例 测量旗杆高度教案 冀教版
- 2023六年级数学下册 三 解决问题的策略第三课时 解决问题的策略(练习课)教案 苏教版
- 文书模板-中医师承关系合同书
- 高考地理一轮复习第十二章环境与发展第一节环境问题与可持续发展课件
- 生活水泵房管理制度
- 2024-2030年中国净菜加工行业产销量预测及未来发展潜力分析报告
- 中国苯酐(PA)行业前景动态及投资盈利预测研究报告(2024-2030版)
- 专题13.6 等腰三角形(精练)(专项练习)(培优练)(学生版) 2024-2025学年八年级数学上册基础知识专项突破讲与练(人教版)
- 文书模板-《电力工程验收与评价表》
- 非新生儿破伤风诊疗规范(2024年版)解读
- 2024至2030年中国硅灰数据监测研究报告
- 2024-2025学年第一学期初二物理期中考试卷
- 微测网题库完整版行测
- 多图中华民族共同体概论课件第十一讲 中华一家与中华民族格局底定(清前中期)根据高等教育出版社教材制作
- 生涯发展报告 (修改版)
- 求职能力展示
评论
0/150
提交评论