PID算法C语言编程.pdf

上传人:b****1 文档编号:3175790 上传时间:2022-11-19 格式:PDF 页数:5 大小:308.42KB
下载 相关 举报
PID算法C语言编程.pdf_第1页
第1页 / 共5页
PID算法C语言编程.pdf_第2页
第2页 / 共5页
PID算法C语言编程.pdf_第3页
第3页 / 共5页
PID算法C语言编程.pdf_第4页
第4页 / 共5页
PID算法C语言编程.pdf_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PID算法C语言编程.pdf

《PID算法C语言编程.pdf》由会员分享,可在线阅读,更多相关《PID算法C语言编程.pdf(5页珍藏版)》请在冰豆网上搜索。

PID算法C语言编程.pdf

472732787PID编程1/5PID的C语言编程自从计算机进入控制领域以来,用数字计算机代替模拟计算机调节器组成计算机控制系统,不仅可以用软件实现PID控制算法,而且可以利用计算机的逻辑功能,使PID控制更加灵活。

数字PID控制在生产过程中是一种最普遍采用的控制方法,在机电、冶金、机械、化工等行业中获得了广泛的应用。

将偏差的比例P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器。

PID控制分为模拟控制分为模拟PID控制器和数字控制器和数字PID控制器控制器模拟模拟PID控制控制:

模拟模拟PID控制系统框图控制系统框图模拟模拟PID控制控制的微分方程的微分方程472732787PID编程2/5因为微机只能处理数字信号不能处理模拟信号,所以要把模拟PID控制转换成数字PID,这就需要把模拟PID的参数离散化模拟模拟PID控制规律的离散化控制规律的离散化数字数字PID控制控制:

数字PID算法有两种常用的基本类型:

位置型、增量型。

增量型增量型PID控制控制增量式增量式PID控制原理控制原理简化后的简化后的增量式增量式PID控制原理控制原理472732787PID编程3/5472732787PID编程4/5PID程序程序清单清单/定义定义PID参数参数#defineVV_KPVALUE3/比例比例#defineVV_KIVALUE40/积分积分#defineVV_KDVALUE3/微分微分#defineVV_MAX10000/返回的最大值返回的最大值,是是pwm的周期值的周期值#defineVV_MIN0/#defineVV_DEADLINE0X08/速度速度PID,设置死区范围,设置死区范围/*/PID算法算法/*typedefstructPID/定义数法核心数据定义数法核心数据signedintvi_Ref;/速度速度PID,速度设定值,速度设定值Velocitysignedintvi_FeedBack;/速度速度PID,速度反馈值,速度反馈值m*50signedlongvi_PreError;/速度速度PID,前一次,速度误差,前一次,速度误差,vi_Ref-vi_FeedBacksignedlongvi_PreDerror;/速度速度PID,前一次,速度误差之差,前一次,速度误差之差,d_error-PreDerror;unsignedintv_Kp;/速度速度PID,Ka=Kpunsignedintv_Ki;/速度速度PID,Kb=Kp*(T/Ti)unsignedintv_Kd;/速度速度PID,signedlongvl_PreU;/电机控制输出值电机控制输出值PID;staticPIDsPID;/PIDControlStructurestaticPID*sptr=&sPID;voidPIDInit(void)sptr-vi_Ref=Velocity;/速度设定值速度设定值sptr-vi_FeedBack=X;/速度反馈值速度反馈值sptr-vi_PreError=0;/前一次,速度误差前一次,速度误差,vi_Ref-vi_FeedBacksptr-vi_PreDerror=0;/前一次,速度误差之差,前一次,速度误差之差,d_error-PreDerror;472732787PID编程5/5sptr-v_Kp=VV_KPVALUE;sptr-v_Ki=VV_KIVALUE;sptr-v_Kd=VV_KDVALUE;sptr-vl_PreU=0;/电机控制输出值电机控制输出值/pidvoidspeed_pid(intv)signedlongerror,d_error,dd_error;/error=(signedlong)(sptr-vi_Ref-sptr-vi_FeedBack);/偏差计算偏差计算d_error=error-sptr-vi_PreError;dd_error=d_error-sptr-vi_PreDerror;sptr-vi_PreError=error;/存储当前偏差存储当前偏差sptr-vi_PreDerror=d_error;/储存当前误差之差储存当前误差之差sptr-vl_PreU+=(signedlong)(sptr-v_Kp*d_error+sptr-v_Ki*error+sptr-v_Kd*dd_error);/速度速度PID计算计算if(sptr-vl_PreU=VV_MAX)/速度速度PID,防止调节最高溢出,防止调节最高溢出sptr-vl_PreU=VV_MAX;elseif(sptr-vl_PreUvl_PreU=VV_MIN;elsereturn(sptr-vl_PreU);/返回预调节占空比返回预调节占空比

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1