首次提交

This commit is contained in:
2026-05-17 21:07:34 +08:00
commit bc5bd0c72e
1493 changed files with 1059050 additions and 0 deletions

67
A-APPlication/PID.h Normal file
View File

@@ -0,0 +1,67 @@
#ifndef __PID_H__
#define __PID_H__
typedef struct
{
float Need_Value;//预期值
float Now_Value;//当前值
float OUT;//总输出
float OUT_Min;//输出限幅下限
float OUT_Max;//输出限幅上限
float Ek;//本次误差
float Ek_Last;//上一次误差
float Ek_Sum;//误差积分
float Kp;//Kp
float Ki;//Ki
float Kd;//Kd
float Ek_Del;//误差差分
float Ek_Min;//误差为0阈值下限
float Ek_Max;//误差为0阈值上限
float P_OUT;//比例输出
float I_OUT;//积分输出
float D_OUT;//微分输出
}PID_PositionInitTypedef;//位置式PID参数结构体
typedef struct
{
float Need_Value;//预期值
float Now_Value;//当前值
float Ek;//本次误差
float Ek_Last;//上一次误差
float Ek_Last2;//上两次误差
float Ek_Min;//误差为0阈值下限
float Ek_Max;//误差为0阈值上限
float Kp;//Kp
float Ki;//Ki
float Kd;//Kd
float P_OUT;//比例输出
float I_OUT;//积分输出
float D_OUT;//微分输出
float OUT;//总输出
float OUT_Min;//输出限幅下限
float OUT_Max;//输出限幅上限
}PID_IncrementalInitTypedef;//增量式PID参数结构体
void PID_PositionStructureInit (PID_PositionInitTypedef* PID_InitStructure,float NeedValue); //位置式PID初始化结构体
void PID_PositionSetParameter (PID_PositionInitTypedef* PID_InitStructure,float kp,float ki,float kd); //位置式PID设置参数
void PID_PositionSetEkRange (PID_PositionInitTypedef* PID_InitStructure,float ek_low,float ek_up); //位置式PID设置误差为0阈值
void PID_PositionSetOUTRange (PID_PositionInitTypedef* PID_InitStructure,float out_low,float out_up); //位置式PID设置输出限幅
void PID_PositionSetNeedValue (PID_PositionInitTypedef* PID_InitStructure,float NeedValue);
void PID_PositionClean (PID_PositionInitTypedef* PID_InitStructure); //位置式PID清理
void PID_PositionCalc (PID_PositionInitTypedef* PID_InitStructure,float NowValue); //位置式PID计算
void PID_PositionCalc_Motor (PID_PositionInitTypedef* PID_InitStructure,float NowValue);
void PID_IncrementalStructureInit (PID_IncrementalInitTypedef* PID_InitStructure,float NeedValue); //增量式PID初始化结构体
void PID_IncrementalSetParameter (PID_IncrementalInitTypedef* PID_InitStructure,float kp,float ki,float kd); //增量式PID设置参数
void PID_IncrementalSetEkRange (PID_IncrementalInitTypedef* PID_InitStructure,float ek_low,float ek_up); //增量式PID设置误差为0阈值
void PID_IncrementalSetOUTRange (PID_IncrementalInitTypedef* PID_InitStructure,float out_low,float out_up); //增量式PID设置输出限幅
void PID_IncrementalCalc (PID_IncrementalInitTypedef* PID_InitStructure,float NowValue); //增量式PID计算
#endif