int SetPoint// 设定目标 Desired value
int Proportion// 比例常数 Proportional Const
int Integral// 积分常数 Integral Const
int Derivative// 微分常数 Derivative Const
unsigned int LastError// Error[-1]
unsigned int PrevError// Error[-2]
unsigned int SumError// Sums of Errors
// double Lastout //上次输出
unsigned int E1 // e1>e2
unsigned int E2 //
int Pmax//上限
int Pmin//下限
} PID
/*====================================================================================================
PID计算部分,遇限消弱积分PID防饱和,积分分离算法实现
=====================================================================================================*/
int PIDCalc( PID *pp, unsigned int NextPoint )
{
int dError,
Error
Error = pp->SetPoint - NextPoint //偏差
if (Error<=-pp->E1) return (pp->Pmin) //饱和
else if (Error>=pp->E1)
return (pp->Pmax)
else
{
dError = pp->LastError - pp->PrevError// 当前微分
pp->PrevError = pp->LastError
pp->LastError = Error
if (Error>=pp->E2||Error<=-pp->E2) //分离
return (pp->Proportion * Error // 比例项
+ pp->Derivative * dError )//PD,考虑限幅
else //位置式
{
pp->SumError += Error // 积分
return (pp->Proportion * Error // 比例项
+ pp->Integral * pp->SumError // 积分项
+ pp->Derivative * dError // 微分项 //PID
)
}
}
}
1. 添加F28335.GEL, 文件路径:C:\CCStudio_v3.3\cc\gel\F28335.gel;2. 添加C:\CCStudio_v3.3\MyProjects\WDPT_STEP(DSP)10\Source\DSP2833x_CodeStartBranch.asm文件,此文件负责上电后程序执行顺序跳转的;
3. 修改工程的build option,将LINKER中的Autoinit参数改成:Run-Time Autoinitial;
4. 添加DSP281x_Headers_nonBIOS.cmd文件,用于将DSP28头文件中的外设结构与存储器地址对应起来;
5. 向工程中添加C:\CCStudio_v3.3\MyProjects\WDPT_STEP(DSP)10\F28335.cmd文件,它是用于flash烧写的CMD文件,用于替换原有的用于RAM中调试的28335_RAM_lnk.cmd文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)