标题:
焊机PI调节程序,请大家看看有问题吗这样写
[打印本页]
作者:
c03131401
时间:
2017-11-8 08:45
标题:
焊机PI调节程序,请大家看看有问题吗这样写
double ref = 0; //设置参数 最大5V 对应512 1V对应102
double feb = 0; //采样反馈 最大5V 对应512 1V对应102
int pwm_var = 0; //PID调整量
int PWM_out = 0; //PWM输出量
int index =0 ;
int abs (int j); //绝对值函数定义
double Uo = 0;
double Ek = 0; //定义当前偏差值
double Ek1 = 0; //定义上一次偏差值
double Ei = 0;
double Ed = 0;
#define Kp 0.4 //PID调节的比例常数
#define Ti 0.05 //PID调节的积分常数
#define Td 0.02 //PID调节的微分时间常数
#define T 0.02 //采样周期
#define A 0
//原0.02 0.005 0
#define Kpp 0.15//0.02//0.05//0.02//0.04//0.08//Kp * ( 1 + (T / Ti) + (Td / T) ) // 0.96
#define Ki 0.04//0.01/*0.01*//*0.005*///*(-Kp) * ( 1 + (2 * Td / T ) ) // -1.2 //0.02-0.024// 0.016
#define Kd 0 //0.01//0.02//0//0.002//0.01///*0*/*Kp * Td / T //0.01对应-0.004 // 0.4 //0.025-0.01//
#define N 10
#define uint8 char
#define Emin 10 //误差的阀值即0.1V,避免误差较小时频繁调节引起震荡
#define Umax 180//8//6//25//100 //调整值上限,防止积分饱和
#define Umin 10//-8//-6//-25//-100 //调整值下限,防止积分饱和
#define Pmax 300//200//84 //输出值上限
#define Pmin -100//75//10 //输出值下限
//----------------------PID执行程序---------------------------------------------
//-----------------------PID试行 ----------------------------------------------
void pid_ctrl(void)
{ int index;
Ek = ref - feb; // 差值运算 误差=给定-反馈
if( (Ek <= Emin)&&(Ek >=-10) ) // 误差的阀值小于10(即0.1V)
{
pwm_var = 0; // PID执行增量等于0 不加减
}
if( feb>Pmax ) // 反馈值的阀值大于最大300 即3V
{
if(abs(Ek)>100) // 误差绝对值大于100 即1V
{
index=0; //取消积分环节
}
else //否则
{
index=1; //加入积分环节
if(Ek>0) //如果反馈值>0
{
Ei+=Ek; //积分项累积负值
}
}
}
else if( feb<Pmin) //如果反馈值小于最小值-100 即-1V
{
if(abs(Ek)>80) //如果误差绝对值>80 即0.8V
{
index=0; //取消积分环节
}
else //否则
{
index=1; //加入积分环节
if(Ek<0) //如果误差值<0
{
Ei+=Ek; //累计负的积分值
}
}
}
else //否则
{
if(abs(Ek)>30) //如果误差绝对值>200
{
index=0; //取消积分项
} else //否则
{
index=1; //加入积分项
Ei+=Ek; //累计积分值
}
}
Uo = Kpp*Ek + Ki*Ei*index + Kd*(Ek-Ek1); //PID增量计算
Ek1= Ek;
pwm_var = Uo*1.0;
PWM_out =PWM_out+pwm_var;
if(PWM_out > Umax ){PWM_out = Umax ; } //输出值最大限幅512 约5V
if(PWM_out < Umin ){PWM_out = Umin ; } //输出最小限制
CCAP1H=CCAP1L = 255- PWM_out; //输出PWM暂空比 最大5V
}
作者:
963852赛威
时间:
2019-7-10 19:12
怎么联系你怎么联系你呀
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1