Systèmes Embarqués F. Giamarchi – IUT de Nîmes – Département GEII Module ERII S
Systèmes Embarqués F. Giamarchi – IUT de Nîmes – Département GEII Module ERII S3 Initiation à la robotique Systèmes Embarqués Objectifs du cours Appréhender les spécificités des systèmes embarqués par rapport aux domaines de l’informatique industrielle. Découvrir les techniques de programmation liées aux systèmes embarqués (systèmes multitâches coopératifs, machine d’états). Utiliser les interfaces homme machines simples (IHM, Liaison série, Afficheurs LCD, supervision Labview). Tester des algorithmes de traitements simples. Aborder la notion de déverminage (Stop & Go, IHM). Application à une maquette robotique (Intelligence Artificielle). Généralités 2 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Systèmes Embarqués (S.E.) Différents secteurs industriels Télécoms (Smartphone, Internet) Aéronautique (Avions, Radar, Satellite) Automobile (GPS, ABS, ESP) Construction électrique (Systèmes de surveillance, Gestion électrique, contrôle d’accès) Transport ferroviaire Cartes à puce ( et RFID) Explosion des besoins : doublement du nombre d'objets intelligents et de la complexité embarquée tous les 2/3 ans Chaque industrie est confrontée à des contraintes spécifiques Mais les enjeux sont similaires Maîtrise des coûts Maîtrise de la complexité Pérennité des solutions développées Généralités 3 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Secteurs d’activités en France Généralités 4 1ères Assises Françaises du Logiciel Embarqué, 7 mars 2007 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Les besoins pour l’avenir L’embarqué a de l’avenir en France (Europe) Niveau ingénieur (ou Technicien spécialisé) mais avec une formation technologique pour la conception. Mais l’embarqué c’est aussi le test, la validation, la maintenance… Des entreprises ont du mal à recruter des techniciens dans l’embarqué. L’industrie a un énorme besoin en techniciens et ingénieurs pour les 20 prochaines années (besoin de renouvellement de leur personnel face aux nouvelles technologies) Une attente forte sur la recherche liée à la plus value apportée par la conception d’un système embarqué indissociable de son logiciel. Généralités 5 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Introduction aux systèmes embarqués Définition : « Embedded system» : tout système conçu pour résoudre un problème ou une tâche spécifique, mais n’est pas un ordinateur d’usage général. Utilisent généralement un microcontrôleur, combiné avec d’autres matériel et logiciel pour résoudre un problème de calcul spécifique. C’est un système électronique et informatique autonome ne possédant pas d’entrées-sorties standards. Le système matériel et l’application sont intimement liés et noyés dans le matériel et ne peuvent être discernables comme dans un PC. On dit que le système est enfoui (traduction de «embedded») dans une autre fonction. La conception de ces systèmes est fiable ( avion, système de freinage ABS) car ils sont conçus pour des applications uniques et qu’il n’est plus possible d’intervenir sur le logiciel ensuite. Généralités 6 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Introduction aux systèmes embarqués « Embarquement » d’un ordinateur Généralités 7 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Introduction aux systèmes embarqués Système embarqué typique Généralités 8 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Introduction aux systèmes embarqués Caractéristiques d’un système embarqué Fonctionnement en temps réel Réactivité : les opérations de calcul doivent être exécutées en réponse à un évènement extérieur (interruption matérielle). La plupart des systèmes sont « multirate », c’est-à-dire traitement des informations à différents rythmes. Faible encombrement, poids réduit, consommation minimisée (batterie) Environnement sévère (température, vibrations, variations d’alimentation, interférences HF, corrosion, eau, feu, radiations,…). Le système n’évolue pas dans un environnement contrôlé ( évolutions des caractéristiques des composants dans le temps). Sureté de fonctionnement (système opérationnel même lorsqu’un composant est défaillant). Beaucoup de systèmes embarqués sont fabriqués en grande série et doivent avoir des prix de revient faibles. Généralités 9 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Techniques de programmation Ne pas utiliser les fonctions de temporisations Utiliser des fonctions avec paramètres Découper une fonction longue en un diagramme d’états Programmation synchrone Généralités 10 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Ne pas utiliser les fonctions de temporisations Remplacer les fonctions de temporisations. Pourquoi ? Une temporisation ne fait rien d’autres qu’attendre ! Il n’est donc pas possible de faire deux actions indépendamment l’une de l’autre. Exemple : La temporisation de lumière d’un escalier Code : if (Bouton_Poussoir == 0) // Appui sur le bouton poussoir, fonctionne en logique inversée Del = 1; // La del s’éclaire Delay_ms (15000); // Temporisation de 15s Del = 0; // La del s’éteint Si on appuie sur un bouton, la lumière s’éclaire pendant 15s, puis s’éteint. Pendant ce temps, un autre appui n’a aucun effet. Il n’est donc pas possible d’allonger cette temporisation par un nouvel appui. Le système n’est pas redéclenchable. Généralités 11 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Remplacer les fonctions de temporisations Ne pas utiliser les fonctions de temporisations. Comment faire autrement ? En comparant une variable temps avec une constante choisie. Une routine d’interruption Timer incrémente une variable temps. A la place de la fonction de temporisation, on mémorise la variable temps dans une nouvelle variable « tempo ». Puis on compare la variable temps avec notre nouvelle variable tempo à laquelle on ajoute la durée de la temporisation voulue. Généralités 12 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Remplacer les fonctions de temporisations Ne pas utiliser les fonctions de temporisations. Code : // Var_1ms sera incrémentée dans la routine d’interruption toutes les millisecondes. long Tempo; // déclaration d’une variable de type 16 bits, afin de compter jusqu’à 65535 while (1) // Boucle infinie du programme { if (Bouton_Poussoir == 1) // Appui sur le bouton poussoir { Led = 1; // la Led s’éclaire Tempo = Var_1ms + 15000; // Enregistre la valeur actuelle de la variable temps dans la } // variable Tempo + la durée de la temporisation souhaitée if (Var_1ms == Tempo) // Test si la variable temps a atteint la tempo prévue Led = 0; // la Led s’éteint } Généralités 13 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Utilisation de fonctions avec paramètres Utiliser des fonctions avec paramètres. Une fonction permet de structurer une routine. Déclaration d’une fonction Code d’une fonction simple : void Fonction_A (void) { // Code de la fonction } Code d’une fonction qui attend deux paramètres de type entier: void Fonction_A (int parametre_A, int parametre_B) { // Code de la fonction } Code d’une fonction qui retourne un paramètre de typer entier: int Fonction_A (void) { Int Parametre; // Code de la fonction return (Parametre); } Généralités 14 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Diagramme d’états Ne pas écrire des routines trop longues. Pourquoi ? Une routine trop longue ne laisse pas de temps aux autres routines ! Il n’est donc pas possible de faire deux actions indépendamment l’une de l’autre (comme pour les fonctions de temporisations). Comment faire autrement ? En découpant la routine (tâche), en 2 ou plus d’états ou sous-tâches. Diagramme d’états (procédure à états positionnées, machine à variables d’états), sont utilisées lorsqu’une équation ou une alternative binaire ne peuvent pas être appliquée. Principe d’un Grafcet avec étapes et transitions. Généralités 15 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Diagramme d’états Exemple : x clignotements répétés (application des codes Erreur). Variables : Flag, Compteur Etat Led et Compteur Clignotement. La durée de l’état allumé est un multiple de la synchro, de même pour l’état éteint Activation d’un Flag associé Etat 0 : Test le flag d’activation Si = 0 On continue Si = 1 Led On, Remplit les 2 compteurs, Etat = 1 Etat 1 : Test le compteur Etat Led Si ≠ 0 Décrémente compt Etat Led, On continue Si = 0 Led Off, Remplit ce compteur, Etat = 2 Etat 2 : Test le compteur Etat Led Si ≠ 0 Décrémente compt Etat Led, On continue Si = 0 Décrémente compteur Clignotement Si = 0 Etat = 0 Si ≠ 0 Led On, Remplit le 1er compteur, Etat = 1 Généralités 16 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Diagramme d’états Exemple : Action sur choc détecté à l’avant d’un robot. Code : enum Etat {Attente, Recule, Tourne} Etat_Choc; void Choc (void) { switch (Etat_Choc) { case Attente: // Code pour l’état Attente { if (Choc != 0) { Etat_Choc = Recule; Mémoire = Choc; Tempo = Var_1ms + 500; } break; } case Recule: // Code pour l’état Recule { Cmd_Moteurs (-10,-10); if (Var_1ms == Tempo) Etat_Choc = Tourne; break; } case Tourne: // Code pour l’état Tourne { break; } } } Généralités 17 F. Giamarchi - IUT de Nîmes Systèmes Embarqués La programmation synchrone Système multitâche coopératif Utilisation d’une routine d’interruption pour synchroniser les tâches. Timer réglé sur 1ms Généralités 18 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Programmation performante Systèmes temps réel multi-tâches Intelligence Artificielle robuste Multiprocesseurs réduction de la taille du programme Basse fréquence autonomie Généralités 19 F. Giamarchi - IUT de Nîmes Systèmes Embarqués Lecture des entrées - sorties Nature des entrées Logique Analogique Par liaison type série Capteur virtuel par fusion d’entrées Deux uploads/Industriel/ cours-systemes-embarques.pdf
Documents similaires










-
97
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 14, 2021
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 1.7125MB