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*微分

浙公网安备 33010602011771号