⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pid.c

📁 MS320F2812 Sci驱动程序
💻 C
字号:
/*============================================
File Name  : pid.cpp
Description: pid controller
Version	   : 0.1 that is debug version
Author     : he hai long
Date       : 10/22/2003
==============================================*/

#include "pid.h"

void PidInit(struct PidData *data)
{
	data->States.P = 0;
	data->States.I = 0;
	data->States.D = 0;
	data->States.yold = 0;
	data->Par.K = 4.4;
	data->Par.Ti = 0.4;
	data->Par.Td = 0.2;
	data->Par.Tt = 10;
	data->Par.N = 10;
	data->Par.b = 1;
	data->Par.ulow = -1;
	data->Par.uhigh = 1;
	data->Par.h = 0.03;
	data->Par.bi = data->Par.K*data->Par.h/data->Par.Ti;
	data->Par.ar = data->Par.h/data->Par.Tt;
	data->Par.bd = data->Par.K*data->Par.N*data->Par.Td/(data->Par.Td+data->Par.N*data->Par.h);
	data->Par.ad = data->Par.Td/(data->Par.Td+data->Par.N*data->Par.h);
}

void PidCalculateOutput(struct PidData *data)
{
	//Proportional part
	data->States.P = data->Par.K*(data->Par.b*data->Signals.uc-data->Signals.y);
	//Derivative part
	data->States.D = data->Par.ad*data->States.D
		-data->Par.bd*(data->Signals.y-data->States.yold);
	//calculate control signal
	data->Signals.v = data->States.P+data->States.I+data->States.D;
	//handle actuator limitations
	if(data->Signals.v < data->Par.ulow)
	{
		data->Signals.u = data->Par.ulow;
	}
	else if(data->Signals.v > data->Par.uhigh)
	{
		data->Signals.u = data->Par.uhigh;
	}
	else
	{
		data->Signals.u = data->Signals.v;
	}
}
void PidUpdateStates(struct PidData *data)
{
	//integral part
	data->States.I = data->States.I+
		data->Par.bi*(data->Signals.uc-data->Signals.y)+
		data->Par.ar*(data->Signals.u-data->Signals.v);
	data->States.yold = data->Signals.y;
}


void PidReset(struct PidData *data)
{
	data->States.P = 0;
	data->States.I = 0;
	data->States.D = 0;
	data->States.yold = 0;
}

/*============================================
	no more
=============================================*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -