资源简介
PI控制算法是控制系统中常用的简单有效的方法,用C语言实现数字PI软件算法,适用于各类嵌入式系统中
代码片段和文件信息
/**
******************************************************************************
* @file : PI_Controller.c
* @author : wind
* @version:1.0.0
* @date :20150418
* @brief :
******************************************************************************
*/
/* ---------------------------------------------------------------------------*/
/************声明和定义,通常放在头文件中********/
typedef struct
{
int SetValue; //设置值
int An; //当前误差e(n)的系数,=kp+ki
int Bn_1; //前一项误差e(n-1)的系数,= -kp
int Limit; //限制最大最小值
int Errorn_1; //e(n-1)
int DeltaUn; //输出增量△u(n);
int Un_output; //输出值 u(n)
}PI_Typedef;
void PI_StructInit(PI_Typedef *PI_Structint Kpint Kiint limit);
void PI_Controller(PI_Typedef *PI_Structint NewInputint *Output);
/*****************************************************************/
void PI_StructInit(PI_Typedef *PI_Structint Kpint Kiint limit)
{
PI_Struct->SetValue = 0;
PI_Struct->An = Kp+Ki;
PI_Struct->Bn_1 = -Kp;
PI_Struct->Limit = limit;
PI_Struct->DeltaUn = 0;
PI_Struct->Errorn_1 = 0;
}
void PI_Controller(PI_Typedef *PI_Structint NewInputint *Output)
{
int Errorn =0;
Errorn = PI_Struct->SetValue - NewInput;//计算e(n)
PI_Struct->DeltaUn = (PI_Struct->An)*Errorn+(PI_Struct->Bn_1)*(PI_Struct->Errorn_1);//计算增量
PI_Struct->Errorn_1 = Errorn;//保存误差e(n)作为下一次计算的e(n-1)
//限制增量的范围
if(PI_Struct->DeltaUn > PI_Struct->Limit)
{PI_Struct->DeltaUn = PI_Struct->Limit;}
else if(PI_Struct->DeltaUn < -PI_Struct->Limit)
{PI_Struct->DeltaUn = -PI_Struct->Limit;}
PI_Struct->Un_output += PI_Struct->DeltaUn; //计算输出u(n)=u(n-1)+△u(n)并保存作下一次运算
*Output = PI_Struct->Un_output;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1787 2015-04-18 21:54 PI_Controller.c
文件 15663 2015-04-18 21:50 PID.docx
----------- --------- ---------- ----- ----
17450 2
- 上一篇:VegaPrime_MFC
- 下一篇:画直角坐标系
评论
共有 条评论