PID03

//模拟量比例转换公式为 (有效最高工程量*(当前采集/硬件精度))
void main(viod)
{
  //定义变量
  faloat 比例设定值=0.00; //设定的比例设定值值系数 范围 0.00 到 1.00 之间
  faloat 积分设定值=50; //设定的积分设定值值系数
  faloat 微分设定值=50; //设定的微分设定值值系数

  faloat 当前值
  faloat 当前误差; //当前误差
  faloat 上次误差; //上次误差
    
  faloat 积分值; //积分
  faloat 积分限幅值; //积分限幅

  faloat 输出值; //输出值
  faloat 输出限幅值 //输出值限幅

  //初始化参数
  比例设定值=p; //P赋值
  积分设定值=i; //I赋值
  微分设定值=d; //D赋值

  积分限幅值=积分最大值; //积分限幅赋值
  输出限幅值=输出最大值; //输出值限幅赋值

  while(1)
  {
    //5S更新周期
    Msdelay(5000);
    //更新数据
    当前误差 = 设定值-当前值;
    上次误差 = 当前误差:
    //计算比例
    比例 = 当前误差*比例设定值; //比例设定值
    //计算积分
    积分值 = 积分值+(当前误差*积分设定值); //积分设定值
    //计算微分
    微分 = (当前误差-上次误差)*微分设定值; //微分设定值

    //积分限幅
    if(积分值 > 积分限幅值) 积分值=积分限幅值;
    //输出值限幅
    if(输出值 > 输出限幅值) 输出值=输出限幅值;
    //汁算输出值
    输出值=比例+微分+积分值;
  }
}

误差=目标-当前值,

积分=误差*时间

微分=(误差-上一次误差)/时间

结果=P*误差+I*积分+D*微分

posted @ 2024-05-25 10:08  MaopaiJD  阅读(17)  评论(0)    收藏  举报