Projet

Général

Profil

« Précédent | Suivant » 

Révision 230

Ajouté par maporte3 il y a plus de 6 ans

Fin de la séance 3
passage de la piste Bleu et Verte
Mauvaise réception su le saut de la piste rouge
Corrigé l'asservissement des roue (l'oscillation) et utilisé le marqeur pour passer correctement le saut.

Voir les différences:

branch/porte/Emb_App.tws
[GENERAL_DATA]
[BREAKPOINTS]
[OPEN_WORKSPACE_FILES]
"E:\tp_info6_2018_porte\tp_info6\bsp\periph.c"
"E:\tp_info6_2018_porte\tp_info6\bsp\radiocommande.c"
"E:\tp_info6_2018_porte\tp_info6\bsp\uart0.c"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\crt0mr.a30"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\Debug\mr308.inc"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c"
[WORKSPACE_FILE_STATES]
"E:\tp_info6_2018_porte\tp_info6\Emb_App\Debug\mr308.inc" 100 100 1430 351 0 2
"E:\tp_info6_2018_porte\tp_info6\Emb_App\Debug\mr308.inc" 0 0 1430 351 0 4
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg" 0 0 1426 347 0 0
"E:\tp_info6_2018_porte\tp_info6\Emb_App\crt0mr.a30" -8 -30 1596 539 1 3
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c" 50 50 1430 351 0 1
"E:\tp_info6_2018_porte\tp_info6\bsp\periph.c" 100 100 1430 351 0 4
"E:\tp_info6_2018_porte\tp_info6\Emb_App\crt0mr.a30" 125 125 1430 351 0 2
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c" -8 -30 1596 539 1 1
"E:\tp_info6_2018_porte\tp_info6\bsp\radiocommande.c" 25 25 1430 351 0 5
"E:\tp_info6_2018_porte\tp_info6\bsp\uart0.c" 150 150 1430 351 0 3
[LOADED_PROJECTS]
"EmbM32C87App"
[END]
branch/porte/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff0042
RESET=ff0044
branch/porte/Emb_App/SessionM32C_E8a_system.hsf
"{55384715-F881-421C-A548-D7D1ABE158E1}PDMRWndInstanceKey0" "{WK_00000001_PDMR}EmbM32C87AppSessionM32C_E8a_system"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "0"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "0"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000044"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000004044"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000020"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000512"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000FF054A"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000FF056F"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000FFF800"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000B36"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "000000000000086E"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000001"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000E60"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "0000000000000886"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000004044"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000"
......
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_33" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_34" "000000000000036A"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_35" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000004"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000009"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000B6A"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000003"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000E82"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000512"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000"
......
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH" "c,buff,n,rx,flag,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "Distance, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "Somme_ErreurRoues, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "Bord_defaut, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "Delta_Erreur, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "Info_capteur, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "ErreurRoues, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "Bord_defaut, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "5"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "3"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200"
......
[WINDOW_POSITION_STATE_DATA_VD3]
[WINDOW_POSITION_STATE_DATA_VD4]
[WINDOW_Z_ORDER]
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\crt0mr.a30"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c"
"E:\tp_info6_2018_porte\tp_info6\bsp\radiocommande.c"
"E:\tp_info6_2018_porte\tp_info6\Emb_App\Debug\mr308.inc"
"E:\tp_info6_2018_porte\tp_info6\bsp\periph.c"
"E:\tp_info6_2018_porte\tp_info6\bsp\uart0.c"
[TARGET_NAME]
"M32C E8a SYSTEM" "" 0
[STATUSBAR_STATEINFO_VD1]
......
[FLASH_DETAILS]
"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" ""
[BREAKPOINTS]
"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 94889256 1 "{00000000-0000-0000-C000-000000000046}" ""
"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 93847448 1 "{00000000-0000-0000-C000-000000000046}" ""
[END]
branch/porte/Emb_App/programme_principal_etud.c
//'I'/73/Ox49 : D?finition du nom du v?hicule. Doit d?buter par le caract?re '#' et entraine le chargement de la configuration de piste
// correspondant au nom du v?hicule si le nom se termine par '*'
unsigned int Angle_T=0;//prend la valeur de l'angle au temps t-1
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;
/*-------------------------------------- Variables ----------------------------------------*/
unsigned int Angle_T=0; //prend la valeur de l'angle au temps t-1
unsigned int Consigne_T=500; //Consigne de l'angle de la tourelle
unsigned int valeur=0; //valeur transmise corrig?
//Variables pour l'asserivssement des roues, de la vitesse et du telemetre
unsigned int Somme_Erreur=0, Erreur=0, Delta_Erreur=0, Erreur_pre=0;
unsigned int ErreurRoues=0, ErreurRouesPre=0, Delta_ErreurRoues=0,Somme_ErreurRoues=0;
int Kp=1.5, Kpr=2; //Param?tre des PID tourelle et roues
int Ki=4, Kir=30;
int Kd=1.5, Kdr=1;
int Kpt=1, Kpr=2; //Param?tre des PID tourelle et roues
int Kit=4, Kir=40;
int Kdt=1.5, Kdr=1;
int i;
unsigned int Vitesse_final=35, Vitesse_commande=5, Distance;
unsigned int Angle_R=0; //Angle des roues
unsigned int Vitesse_final=40, Vitesse_virage=25, Distance;
unsigned int Angle_R=0, distance_bord=660; //Angle des roues
unsigned int Info_capteur;
unsigned int Bord_defaut=0, Distance_pre=660;
unsigned int Bord_defaut=0, ecart=400;
void Asserv_T(){
......
Somme_Erreur+=Erreur;
if(Angle_T!=Consigne_T)
valeur=Kp*Erreur+Kd*Delta_Erreur+(1/Ki)*Somme_Erreur;//correction de l'angle par handler cyclique de la tourelle
valeur=Kpt*Erreur+Kdt*Delta_Erreur+(1/Kit)*Somme_Erreur;//correction de l'angle par handler cyclique de la tourelle
}
void Asserv_R(){
......
CanFrame demande;
CanFrame reponse;
dly_tsk(1500);
while(1){
comm.data.id='D'; //Commande de l'angle des roues
......
comm.data.val=Angle_R;
snd_dtq (CanTx,comm.msg);//Envoi de la commande
dly_tsk(4);
dly_tsk(1);
}
}
void Asserv_R_hc(){
ErreurRouesPre=ErreurRoues;
ErreurRoues=660-Distance;
ErreurRoues=distance_bord-Distance;
Delta_ErreurRoues=ErreurRoues-ErreurRouesPre;
Somme_ErreurRoues+=ErreurRoues;
if(Distance != 660 && Bord_defaut == 0)
if(Distance != distance_bord && Bord_defaut == 0)
Angle_R=-1*(Kpr*ErreurRoues+Kdr*Delta_Erreur+(1/Kir)*Somme_ErreurRoues);//correction de l'angle par handler cyclique des roues
}
......
CanFrame comm;
CanFrame demande;
CanFrame reponse;
dly_tsk(3000);
while(1){
dly_tsk(3000);
comm.data.id='V'; //Commande de l'angle des roues
comm.data.id='V'; //Commande de la vitesse des roues motrices
comm.data.rtr=0;
//Rampe de vitesse au d?marrage
for(i=0;i++;Vitesse_final < Vitesse_commande){
/* for(i=0;i++;Vitesse_final < Vitesse_commande){
comm.data.val=Vitesse_final-Vitesse_commande+i;
snd_dtq (CanTx,comm.msg); //Envoi de la commande de vitesse
snd_dtq (CanTx,comm.msg); //Envoi de la commande de vitesse
dly_tsk(100);
}
}*/
//if(Info_capteur == ){
if(Info_capteur == 0x560 && Bord_defaut == 0){ // Commande de vitesse pour les lignes droites (dernier capteur detecte = vert).
comm.data.val=Vitesse_final;
snd_dtq (CanTx,comm.msg);//Envoi de la commande de vitesse
snd_dtq (CanTx,comm.msg); // Envoi de la commande de vitesse
}
else{ // Ralentissement en cas de virage (selon valeur capteur)
comm.data.val=Vitesse_virage;
snd_dtq (CanTx,comm.msg);
}
dly_tsk(200);
dly_tsk(10);
}
}
......
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique sur les donnees du dernier capteur touch?.
Info_capteur=periph[ADDR('C')].val>>4; // contient la valeur de retour du simulateur sur le dernier capteur touch?.
dly_tsk(200);
dly_tsk(100);
}
......
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique sur la distance mesure par le telemetre.
Distance=periph[ADDR('U')].val; // contient la valeur de retour du simulateur sur la distance mesur? par le telemetre.
if(Distance > 660+300){
if(Distance > distance_bord+ecart || Distance < distance_bord-ecart){
Bord_defaut=1;
}
else if(Distance < 660-300){
Bord_defaut=1;
}
else{
Bord_defaut=0;
}
Distance_pre=Distance;
}
dly_tsk(10);
}

Formats disponibles : Unified diff