#include "pmsm_state.h"
#include "cmd_proc.h"
-#define MAX_DUTY 170
+
#define PID_P 0.3
-#define PID_P_S 0.3
+#define PID_P_S 0.7
#define PRIOR_KERN 50
#define PRIOR_HIGH 49
*/
inline void spd_pid(){
int duty_tmp;
- duty_tmp = PID_P*(rps.desired_pos - (int32_t)data.pozice);
+ duty_tmp = PID_P_S*(rps.desired_spd - rps.speed);
if (duty_tmp>MAX_DUTY){
rps.duty=MAX_DUTY;
}else if (duty_tmp<-MAX_DUTY){
}else{ /*index je v poradku*/
comIndDist(); /*vypocet vzdalenosti indexu*/
}
+
/* pocitame sirku plneni podle potreb rizeni*/
- if (rps.pos_reg_ena){
+ if (rps.pos_reg_ena){ /*pozicni rizeni*/
pos_pid();
+ }else if(rps.spd_reg_ena){ /*rizeni na rychlost*/
+ spd_pid();
}
+
/* sirka plneni prepoctena na jednotlive pwm */
if (rps.index_ok && rps.commutate){
/*simple_ind_dist_commutator(rps.duty);*/