PID控制c程序

上传人:人*** 文档编号:491491732 上传时间:2023-12-11 格式:DOC 页数:2 大小:37KB
返回 下载 相关 举报
PID控制c程序_第1页
第1页 / 共2页
PID控制c程序_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《PID控制c程序》由会员分享,可在线阅读,更多相关《PID控制c程序(2页珍藏版)》请在金锄头文库上搜索。

1、至于参数的整定,根据响应的情况调,比如,响应慢了,我就增大kp,或者减小kd,超调大了,就减小kp或增大点kd,这个规律你可以看看PID三个参数的作用:)/定义PID参数结构体typedefstructPID?结构体定义?i nt?SetPoi nt? 设定值?i nt?Proporti on ;?/Proportion比例系数?i nt? In tegral;?/ In tegral?积分系数?int?Derivative;?/Derivative?11微分系数?int?|astFrrcr;?FrrOr-1?|前一拍误差?int?PreError;?/Error-2?11前两拍误差PID;m

2、ai n()?PIDvPID??定义结构变量名1PIDI nit(&vPID);?/l ni tializeStructurevPID.Proportio n=10;?/SetPIDCoefficie nts?vPID.I ntegral?=10;?/SetPIDI ntegral?vPID.Derivative=10;?/SetPIDDerivative?vPID SetPcint=?根据实际情况设定?while?Verror=Measure();?/得到AD的输出值?Error=vPID.SetPoi nt-Verror;?/与设定值比较,得到误差值tempi=PIDCal(&vPID,E

3、rror;?laser.Value+=tempi;?/Value与 Num2为共同体,共同体名laserLASERH=laser.NumO;LASERL=laser.Num1;?/Title:PID参数初始化/Descriptio n:Proportio n=0/? In tegral=0/?LastError=0/Input:PID 的P、I控制常数和之前的误差量( PID*pp)/Return:voidPIDI ni t(PID*pp)?/PID参数初始化,都置0 ?memset(pp,O,sizeof(PID);/memset()的函数,它可以一字节一字节地把整个数组设置为一个指定的值

4、/memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数,(字节数,不是元素个数/第二个参数是设置数组每个字节的值,第三个参数是数组的长度 / 其函数原型为:void*memset(void* , int , unsigned);/ 头文件 ?/Title:增量式PID算法程序/Descriptio n:给岀一个误差增量/ In put:PID的P、I控制常数和之前的误差量(PID*pp ) &当前误差量(ThisError )/Return:误差增量templ/in tPIDCal(PID*pp,i ntThisError)?/增量式PID算法(需要控制的不是控制量的绝对值,而是控制量的增量)?i ntpError,dError,iError;lon gtempl;?pError=ThisError-pp-LastError;?iError=ThisError;/增量计算增量?templ=pp-Proporti on *pErro r+pp-I ntegral*iErro r+pp-Derivative*dError;?/存储误差用于下次运算 ?pp-PreError?=pp-LastError;?pp-LastError=ThisError;?retur n(i nt)(templ8);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号