程序:
#include <stdio.h>
/*-----------------------------------------------定义结构体*/
typedef struct
{
float Kp; //比例常数
float Ki; //积分常数
float Kd; //微分常数
float KiSec_Inner; //积分区间内边界
float KiSec_Width; //积分区间宽度
float err; //本次误差
float err_last; //上次误差
float PIDI; //累积误差
float PID_Out; //输出量
} MyPID;
/*-----------------------------------------------初始化结构体*/
MyPID nowPID = { 0.5,//P 比例
10,//I 积分
0,//D 微分
0,0,0,0,0,0 };//初始化PID结构体
/*-----------------------------------------------在PID函数里调用结构体*/
float PID_Controller(MyPID* PID, float set_Aim, float now_Aim)
{
if (set_Aim != 0)//如果目标为0,则不计算
{
PID->err = set_Aim - n