mpctool
|
00001 00004 #ifndef MPC_BASE_H 00005 #define MPC_BASE_H 00006 #include "mc04types.h" 00007 00008 typedef float64_t real_t; 00011 struct mpc_conf { 00012 uint32_t in_iter; 00013 uint32_t ex_iter; 00014 uint32_t warmstart; 00015 }; 00018 struct mpc_qpx { 00019 real_t *HoL; 00020 real_t *gxoL; 00021 real_t *E; 00022 real_t *u_lb; 00023 real_t *u_ub; 00024 real_t *zx_lb; 00025 real_t *zx_ub; 00026 uint32_t HOR_INPUTS; 00027 uint32_t HOR_STCONSTRS; 00028 }; 00030 struct mpc_sys { 00031 real_t *Ad; 00032 real_t *Bd; 00033 real_t *Ad_T; 00034 real_t *Bd_T; 00035 real_t *dt; 00036 }; 00038 struct mpc_wmx { 00039 real_t *Q; 00040 real_t *R; 00041 real_t *P; 00042 }; 00044 struct mpc_fgm { 00045 real_t *u_0; 00046 real_t *gxoL; 00047 real_t *groL; 00048 uint32_t *j_in; 00049 real_t *HoL; 00050 real_t *GoL; 00051 real_t *u_lb; 00052 real_t *u_ub; 00053 real_t *nu; 00054 uint32_t HOR; 00055 uint32_t STATES; 00056 uint32_t INPUTS; 00057 uint32_t HOR_INPUTS; 00058 uint32_t HOR_STATES; 00059 }; 00061 struct mpc_alm { 00062 struct mpc_fgm *fgm; 00063 real_t *l_0; 00064 real_t *zx_lb; 00065 real_t *zx_ub; 00066 uint32_t *i_ex; 00067 real_t *mu; 00068 real_t *E; 00069 real_t *Kx_Ai; 00070 real_t *e_lb; 00071 real_t *e_ub; 00072 real_t *Linv; 00073 uint32_t STATES; 00074 uint32_t STCONSTRS; 00075 uint32_t HOR_INPUTS; 00076 uint32_t HOR_STCONSTRS; 00077 }; 00079 struct mpc_ctl { 00080 struct mpc_conf *conf; 00081 struct mpc_qpx *qpx; 00082 struct mpc_sys *sys; 00083 struct mpc_wmx *wmx; 00084 struct mpc_alm *alm; 00085 real_t *u_opt; 00086 real_t *l_opt; 00087 real_t *u_ref; 00088 real_t *x_ref; 00089 real_t *u_ini; 00090 real_t *l_ini; 00091 }; 00093 #endif /* MPC_BASE_H */