HPM SDK
HPMicro Software Development Kit
hpm_smc.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 #ifndef HPM_SMC_H
8 #define HPM_SMC_H
9 
10 #if defined(__cplusplus)
11 extern "C" {
12 #endif /* __cplusplus */
13 
25 typedef struct hpm_smc_pll_para {
26  float theta_last;
27  float err;
28  float speedout;
29  float theta;
30  float kp;
31  float ki;
32  float max_i;
33  float min_i;
34  float max_o;
35  float min_o;
36  float mem;
37  float theta0;
38  float loop_in_sec;
39  void (*func_getspd)(void *str);
41 
42 #define BLDC_CONTROL_SMC_PLL_PARA_DEFAULTS {0, 0, 0, 0,\
43  0, 0, 0, 0,\
44  0, 0, 0, 0, 0,\
45  NULL}
46 
51 typedef struct hpm_mcl_para {
52  float zero;
53  float ksmc;
54  float filter_coeff;
55  float *ualpha;
56  float *ubeta;
57  float *ialpha;
58  float *ibeta;
59  float ialpha_mem;
60  float ibeta_mem;
61  float alpha_cal;
62  float zalpha_cal;
63  float beta_cal;
64  float zbeta_cal;
66  void (*func_smc)(void *str);
68 
69 #define BLDC_CONTROL_SMC_PARA_DEFAULTS {0, 0, 0, NULL, NULL,\
70  NULL, NULL, 0, 0, 0,\
71  0, 0, 0,\
72  NULL,\
73  NULL}
74 
81 
88 
97 
106 void hpm_mcl_smc_loop(BLDC_CONTROL_FOC_PARA *par, hpm_mcl_para_t *smc, hpm_smc_pll_para_t *pll, uint8_t *is_smc_enable);
107 
108 #if defined(__cplusplus)
109 }
110 #endif /* __cplusplus */
111 
117 #endif
118 
float hpm_mcl_smc_pll(hpm_mcl_para_t *par, hpm_smc_pll_para_t *pll)
Phase-locked loop filtering of angles after smc processing.
Definition: hpm_smc.c:66
void hpm_mcl_smc_pos_cal(hpm_mcl_para_t *par)
Sliding mode control function.
Definition: hpm_smc.c:25
void hpm_mcl_smc_loop(BLDC_CONTROL_FOC_PARA *par, hpm_mcl_para_t *smc, hpm_smc_pll_para_t *pll, uint8_t *is_smc_enable)
smc current loop
Definition: hpm_smc.c:102
struct hpm_mcl_para hpm_mcl_para_t
sliding mode control(SMC)
void hpm_mcl_smc_const_cal(hpm_motor_para_t *par)
Calculation of sliding mode control static parameters.
Definition: hpm_smc.c:60
struct hpm_smc_pll_para hpm_smc_pll_para_t
smc phase locked loop parameters
foc control
Definition: hpm_bldc_define.h:234
sliding mode control(SMC)
Definition: hpm_smc.h:51
float * ualpha
Definition: hpm_smc.h:55
float beta_cal
Definition: hpm_smc.h:63
float filter_coeff
Definition: hpm_smc.h:54
void(* func_smc)(void *str)
Definition: hpm_smc.h:66
float * ibeta
Definition: hpm_smc.h:58
float * ialpha
Definition: hpm_smc.h:57
float ialpha_mem
Definition: hpm_smc.h:59
hpm_motor_para_t * i_motorpar
Definition: hpm_smc.h:65
float alpha_cal
Definition: hpm_smc.h:61
float zbeta_cal
Definition: hpm_smc.h:64
float ibeta_mem
Definition: hpm_smc.h:60
float zalpha_cal
Definition: hpm_smc.h:62
float * ubeta
Definition: hpm_smc.h:56
float zero
Definition: hpm_smc.h:52
float ksmc
Definition: hpm_smc.h:53
Motor related structure definition. Parameters that need to be initialized follow this rule Naming ru...
Definition: hpm_bldc_define.h:107
smc phase locked loop parameters
Definition: hpm_smc.h:25
float min_o
Definition: hpm_smc.h:35
float kp
Definition: hpm_smc.h:30
void(* func_getspd)(void *str)
Definition: hpm_smc.h:39
float max_i
Definition: hpm_smc.h:32
float theta_last
Definition: hpm_smc.h:26
float speedout
Definition: hpm_smc.h:28
float theta
Definition: hpm_smc.h:29
float ki
Definition: hpm_smc.h:31
float theta0
Definition: hpm_smc.h:37
float err
Definition: hpm_smc.h:27
float loop_in_sec
Definition: hpm_smc.h:38
float min_i
Definition: hpm_smc.h:33
float mem
Definition: hpm_smc.h:36
float max_o
Definition: hpm_smc.h:34