Projet

Général

Profil

« Précédent | Suivant » 

Révision 70

Ajouté par maporte3 il y a plus de 6 ans

Correction des asservissement PID pour les roues et modification des delay dans les taches

Voir les différences:

branch/porte/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff0038
RESET=ff003c
branch/porte/Emb_App/programme_principal_etud.c
unsigned int Consigne_T=500; //Consigne de l'angle de la tourelle
unsigned int valeur=0; //valeur transmise corrig?
unsigned int Somme_Erreur=0, Erreur=0, Delta_Erreur=0, Erreur_pre=0;
int Kp=1.5, Kpr=1;
int Ki=4;
int Kp=1.5, Kpr=1.6;
int Ki=4, Kir=10;
int Kd=1.5, Kdr=1;
unsigned int Vitesse=10,Distance;
unsigned int Vitesse=30,Distance;
unsigned int Angle_R=0;
unsigned int ErreurRoues=0, ErreurRouesPre=0, Delta_ErreurRoues=0;
unsigned int ErreurRoues=0, ErreurRouesPre=0, Delta_ErreurRoues=0,Somme_ErreurRoues=0;
void Asserv_T(){
......
comm.data.val=Angle_R;
snd_dtq (CanTx,comm.msg);//Envoi de la commande
dly_tsk(100);
dly_tsk(5);
}
}
......
CanFrame reponse;
while(1){
dly_tsk(3000);
dly_tsk(2600);
comm.data.id='V'; //Commande de l'angle des roues
comm.data.rtr=0;
comm.data.val=Vitesse;
......
void Asserv_R_hc(){
// ErreurRouesPre=ErreurRoues;
ErreurRouesPre=ErreurRoues;
ErreurRoues=660-Distance;
// Delta_ErreurRoues=ErreurRoues-ErreurRouesPre;
Delta_ErreurRoues=ErreurRoues-ErreurRouesPre;
Somme_ErreurRoues+=ErreurRoues;
if(Distance!=660)
Angle_R=-ErreurRoues;
Angle_R=-Kpr*ErreurRoues+Kdr*Delta_Erreur+(1/Kir)*Somme_ErreurRoues;
}
void main()

Formats disponibles : Unified diff