102 lines
2.0 KiB
C
102 lines
2.0 KiB
C
/*
|
||
滑膜相关命令
|
||
*/
|
||
|
||
#pragma once
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include <stdint.h>
|
||
#include <string.h>
|
||
|
||
#include "component/user_math.h"
|
||
|
||
/* USER INCLUDE BEGIN */
|
||
|
||
/* USER INCLUDE END */
|
||
/* 趋近率选择(滑模面求导) */
|
||
typedef enum {
|
||
EXPONENT,
|
||
POWER,
|
||
TFSMC,
|
||
VELSMC,
|
||
EISMC
|
||
} Smc_mode;
|
||
|
||
typedef struct {
|
||
|
||
float tar_now;//当前目标值
|
||
float tar_last;//上一次目标值
|
||
float tar_differential;//目标值一阶导
|
||
float tar_differential_last;//上一次目标值一阶导
|
||
float tar_differential_second;//目标值二阶导
|
||
|
||
float now_get;//当前
|
||
|
||
|
||
// float p_error;//位置误差
|
||
float error;//速度误差(位置误差一阶导)
|
||
|
||
float error_integral;//误差积分
|
||
// float v_error_integral;//速度误差积分
|
||
float error_integral_max; //积分限幅
|
||
|
||
float error_eps; //误差精度
|
||
// float vol_error_eps; //误差精度
|
||
float error_last;
|
||
}Error;
|
||
|
||
typedef struct {
|
||
/* 输出限幅 */
|
||
float u_max;
|
||
float J;
|
||
float limit; //饱和函数上下限
|
||
|
||
/* 控制器的增益K */
|
||
float K;
|
||
|
||
/* 趋于o的速度 */
|
||
float c;
|
||
|
||
float c1; //EIsmc参数
|
||
float c2; //EIsmc参数
|
||
|
||
float p; //tfsmc参数,正奇数 p>q
|
||
float q; //tfsmc参数,正奇数
|
||
float beta; //tfsmc参数,正数
|
||
float epsilon; //ε噪声上限
|
||
}SlidingParam;
|
||
|
||
typedef struct {
|
||
|
||
float fun; //控制器输出
|
||
float u; //控制器输出
|
||
float s; //滑模面计算储存
|
||
SlidingParam *param;
|
||
SlidingParam *param_last;
|
||
Smc_mode mode;
|
||
Error position;
|
||
Error velocity;
|
||
|
||
|
||
float s1,s2,s3,s4;
|
||
|
||
|
||
|
||
}Sliding;
|
||
|
||
void SMC_Reset(Sliding *s);
|
||
void SMC_Init(Sliding *s,Smc_mode mode,SlidingParam *param);
|
||
void SMC_PErrorUpdate(Sliding *s,float target, float pos_now, float vol_now,float target_freq);
|
||
void SMC_VErrorUpdate(Sliding *s,float target,float vol_now,float target_freq);
|
||
float Smc_Calc(Sliding *s);
|
||
/* USER DEFINE BEGIN */
|
||
|
||
/* USER DEFINE END */
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif |