收藏 分销(赏)

增量式PID控制C语言代码.doc

上传人:精*** 文档编号:1362629 上传时间:2024-04-24 格式:DOC 页数:4 大小:19.87KB 下载积分:5 金币
下载 相关 举报
增量式PID控制C语言代码.doc_第1页
第1页 / 共4页
增量式PID控制C语言代码.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
增量式PID控制C语言代码 增量式PID控制公式: 上面△u(k)是控制量增量,“增量式PID”就是直接以这个增量进行控制。 至于参数的整定,根据响应的情况调,比如,响应慢了,我就增大kp,或者减小kd,超调大了,就减小kp或增大点kd,这个规律你可以看看PID三个参数的作用:) //////////////////////////////////////////////////////////////// // 定义PID参数结构体 /////////////////////////////////////////////////////////////// typedef struct PID {              //结构体定义         int  SetPoint            //设定值         int  Proportion;         // Proportion 比例系数         int  Integral;            // Integral   积分系数         int  Derivative;          // Derivative  微分系数         int  LastError;          // Error[-1]  前一拍误差         int  PreError;           // Error[-2]  前两拍误差 } PID; main() {   PID vPID;                        //定义结构变量名 PIDInit ( &vPID );                 //Initialize Structure vPID.Proportion = 10;             //Set PID Coefficients     vPID.Integral   = 10;             // Set PID Integral   vPID.Derivative = 10;             // Set PID Derivative   vPID. SetPoint =                 //根据实际情况设定   while(1) {        Verror=Measure();               //得到AD的输出值        Error =vPID. SetPoint- Verror;   //与设定值比较,得到误差值 tempi=PIDCal(&vPID, Error;        laser.Value+=tempi;          // Value与Num[2]为共同体,共同体名laser LASERH=laser.Num[0]; LASERL=laser.Num[1];   } } /////////////////////////////////////////////////////////////////////// //Title:PID参数初始化 //Description: Proportion="0" //           Integral=0 //           LastError=0 //Input: PID的P、I控制常数和之前的误差量(PID *pp) //Return: ////////////////////////////////////////////////////////////////////// void PIDInit (PID *pp)                     //PID参数初始化,都置0    {                                                 memset ( pp,0,sizeof(PID)); //memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。 // memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数, //第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。 //其函数原型为: void *memset(void*,int,unsigned); //头文件<string.h>    } /////////////////////////////////////////////////////////////////////// //Title:增量式PID算法程序 //Description:给出一个误差增量 //Input: PID的P、I控制常数和之前的误差量(PID *pp)& 当前误差量(ThisError) //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->Proportion*pError + pp->Integral*iError+pp->Derivative*dError;  //增量     //存储误差用于下次运算     pp->PreError  = pp->LastError;     pp->LastError = ThisError;     return ((int)(templ>>8)); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服