ParaMge_Common.h
4.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#ifndef __PARAMGE_COMMON_H__
#define __PARAMGE_COMMON_H__
#include "stdint.h"
#include "MGE_Hal.h"
#include "PID_Gen.h"
#include "math_utils.h"
//================== Storage Status ===================
// 储存状态 - 1没有储存 2储存损坏 3储存有效
// 1和2可以看成一种
// 当设备第一次使用时,应为 1没有储存
// 第一次保存后,储存状态应从 没有储存->储存有效
// 当状态未1或2时,所有读取的数据应全为0,同时返回错误信息
typedef enum
{
__PARAMGE_DEF_STORAGE_STA_NONE = 1, //没有储存
__PARAMGE_DEF_STORAGE1_STA_BROKEN, //储存1损坏
__PARAMGE_DEF_STORAGE2_STA_BROKEN, //储存2损坏
__PARAMGE_DEF_STORAGE_STA_VAILD, //储存有效
} __PARAMGE_DEF_STORAGE_STA;
typedef enum
{
__PARAMGE_DEF_SAVE_STA_FAIL = 1, //保存失败
__PARAMGE_DEF_SAVE_STA_SAVING, //保存中
__PARAMGE_DEF_SAVE_STA_SUCCEED, //保存成功
} __PARAMGE_DEF_SAVE_STA;
//=======================GenPID========================
typedef enum
{
__PARAMGE_INDEX_GENPID_ANGPID = 0, // GenPID 参数索引 - 角度PID
__PARAMGE_INDEX_GENPID_VELPID, // GenPID 参数索引 - 速度PID
} __PARAMGE_INDEX_GENPID;
/// @brief 通用PID 内容
typedef struct
{
GenPID_CONFIG config;
} __PARAMGE_TEMP_GENPID;
//======================= KPF =========================
typedef enum
{
__PARAMGE_INDEX_KPF_VEL = 0, // 电机速度卡尔曼滤波
__PARAMGE_INDEX_KPF_ANG, // 电机角度卡尔曼滤波
__PARAMGE_INDEX_KPF_SSMQ, // ?
__PARAMGE_INDEX_KPF_PMOTANG, // P轴电机角度卡尔曼滤波
} __PARAMGE_INDEX_KPF;
typedef struct
{
KFP_CONFIG config;
} __PARAMGE_TEMP_KPF;
//======================= INIF =========================
typedef enum
{
__PARAMGE_INDEX_INTF_0 = 0, // 窗口滤波参数组0
__PARAMGE_INDEX_INTF_1, // 窗口滤波参数组1
} __PARAMGE_INDEX_INIF;
typedef struct
{
uint32_t inter_Range; // 窗口滤波参数
} __PARAMGE_TEMP_INTF;
//======================= MGE/MOT =========================
typedef enum
{
__PARAMGE_DEF_MGE_CALI_STA_BAD = 0xA0, // 磁编码器校准状态 - 未校准
__PARAMGE_DEF_MGE_CALI_STA_GOOD = 0xAA, // 磁编码器校准状态 - 已校准
} __PARAMGE_DEF_MGE_CALI_STA;
//WARN: 电机校准状态目前使用BMCL中的 NONE,S1,S2的配置。有空再改
typedef enum
{
__PARAMGE_DEF_MOT_CALI_STA_CALIBRATING = 0x01, // 电机校准状态 - 校准中
__PARAMGE_DEF_MOT_CALI_STA_ODD = 0x02, // 电机校准状态 - 校准异常
__PARAMGE_DEF_MOT_CALI_STA_GOOD = 0x03, // 电机校准状态 - 校准成功
__PARAMGE_DEF_MOT_CALI_STA_BAD = 0x04, // 电机校准状态 - 校准失败
} __PARAMGE_DEF_MOT_CALI_STA;
typedef enum
{
__PARAMGE_INDEX_MOT_P = 0x01, // 电机轴参数索引 - pitch轴
__PARAMGE_INDEX_MOT_R = 0x02, // 电机轴参数索引 - roll轴
__PARAMGE_INDEX_MOT_Y = 0x03, // 电机轴参数索引 - yaw轴
} __PARAMGE_INDEX_MOT;
typedef struct
{
// MGE Part
__PARAMGE_DEF_MGE_CALI_STA mge_Calibration; // mge 校准状态
int8_t mge_direction; // mge 方向
float mge_absOffset; // mge 绝对偏移
float mge_mot_eleAngleOffset; // mge 电角度零电位偏移
// Motor Part
__PARAMGE_DEF_MOT_CALI_STA mot_Calibration; // Motor 校准状态
float mot_FOC_Udc; // Motor 总线电压
float mot_FOC_ULimitOnUdc; // Motor 总线限制电压
uint32_t mot_FOC_PP; // Motor 极对数
float mot_LimitAngle_S; // Motor 限位小端角度
float mot_LimitAngle_B; // Motor 限位大端角度
float mot_CenterAngle; // Motor 电机中心角度
} __PARAMGE_TEMP_MOT;
// 通用电机结构体
typedef struct
{
__PARAMGE_TEMP_GENPID angle_PID;
__PARAMGE_TEMP_GENPID Vel_PID;
__PARAMGE_TEMP_MOT motDevSetting;
__PARAMGE_TEMP_INTF interFilter;
__PARAMGE_TEMP_INTF interFilter1;
__PARAMGE_TEMP_KPF kfp_velP;
__PARAMGE_TEMP_KPF kfp_angP;
__PARAMGE_TEMP_KPF kfp_ssmq;
__PARAMGE_TEMP_KPF kfp_motAngP;
} _PARAMGE_CONFIG_MOTCOM;
#endif