Report on Elevator Project

543 vues

Publié le

just another simulator of elevator in C++ oriented component

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
543
Sur SlideShare
0
Issues des intégrations
0
Intégrations
15
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Report on Elevator Project

  1. 1. Elevator Architecture des syst`mes embarqu´s e e Caner Candan - caner@candan.fr 6 mars 2011R´sum´ e e Commen¸ons par un rappel des objectifs attendus du c Load samplerapport : – pr´senter un graphe d’´tats illustrant tous les pro- e e Loop on all t(x) cessus n´cessaire au fonctionnement de l’ascenseur, e – cr´er un simulateur d’ascenseur en langage C/C++. e Next t(x) ?Elevator Le projet est un simulateur d’ascenseurd´velopp´ en C++. N’ayant pas eu le temps d’´tudier e e eune impl´mentation de “SystemC”, un design a tout de e Manage simultaniousmˆme ´tait ´labor´ afin de g´n´raliser les diff´rents com- e e e e e e e calls to elevatorposants que compte le projet. Le langage offrant des (Ordered or UpDown)routines de g´n´ricit´, il est ainsi possible d’interchan- e e eger certain processus. Ce qui rend le simulateur plusrobuste. Next call ?1 Graphe d’´tats e Move elevator (Temporized or not) De mani`re g´n´rale, le diagramme d’´tats d´finit l’en- e e e e esemble des ´tats couvert par un syst`me quelconque. Les e eparam`tres, du syst`me, peuvent ˆtre modifi´s lors d’un e e e e Change elevatorchangement d’´tat. Nous pr´sentons le graphe d’´tats du e e e positionsimulateur Elevator en figure 1. Change call state2 Les composants Figure 1 – Graphe d’´tats e Comme nous le disions, le simulateur Elevator est dot´ ed’un design intuitif. On peut ainsi distinguer plusieursfamilles de composants au sein du projet. Ci-dessous uneliste non-exhaustive de composants d´taill´s. e e Move Ce composant g`re les appels simultan´s ` e e a l’ascenseur puis d´l`gue son d´placement vers une autre ee e famille de composant OneMove. Ci-dessous une liste deElevator Ce composant repr´sente l’ascenseur en ses composants. elui mˆme. Il est possible d’int´grer plusieurs types e ed’ascenseurs en partant des plus simples aux pluscomplexes. Ci-dessous la liste des ascenseurs. – OrderedMove, ce gestionnaire de mouvement effec- tue les d´placements ` travers les ´tages demand´s e a e e – EasyElevator, un simple ascenseur. Il se limite ` a de mani`re ordonn´e. e e l’enregistrement de sa position. – UpDownMove, une variante effectuant des – OpenCloseElevator, une variante dot´ d’une porte e d´placements, en premier lieu, vers le haut puis e a ` ouvrir et fermer. vers le bas. Il est possible de produire l’inverse. 1
  2. 2. 4 ´ L’EXECUTION 2OneMove Ce composant effectue le d´placement Code 2 Exemple de code du simulateur assemblant ed’un ´tage initial vers un ´tage cible. Ci-dessous la liste diff´rents types de composants e e edes ses composants. int main(void) – DummyOneMove, un simple d´placeur d’ascenseur. { e ScheduleSampler sampler("hard1.sdl"); – TemporizedOneMove, une variante qui calcule la EasyElevator elevator; distance entre l’´tage de d´part et d’arriv´e et tem- e e e TemporizedOneMove onemove; porise le d´placement. Il est possible de d´finir le e e UpDownMove move(elevator, onemove); temps de d´placement n´cessaire par pas d’´tage. e e e Scheduler scheduler(move); scheduler(sampler()); }ScheduleSampler Ce composant permet la lectured’un fichier contenant le sc´nario ` jouer par le si- e amulateur. Nous pr´sentons dans le code 1 un exemple ed’´chantillon. e Par d´faut Certains param`tres ne sont pas d´finit e e e dans le code, ils restent toutefois d´finit avec des va- eCode 1 Exemple de fichier de sc´nario ex´cutable par leurs par d´faut, comme le pas de temps de d´placement e e e ele simulateur Elevator du composant TemporizedOneMove qui est d´finit par e d´faut ` 1 seconde. De mˆme pour la position initiale de e a e0 10 20 -50 l’ascenseur d´finit ` l’´tage 0 par d´faut. e a e e-70 0 0 0 0-9-8 4 L’ex´cution e-7-6 -5 -4 -3 -2 -1 Le code 3 illustre des r´sultats d’ex´cution obtenus e e avec le mˆme ´chantillon pr´sent´ dans le code 1. e e e e Sur les premi`res lignes des r´sultats, apparaˆ un rap- e e ıt pel du sc´nario qui va ˆtre jou´ par le simulateur Ele- e e e Chaque ligne du fichier repr´sente un temps t et ` vator, chaque ligne repr´sentant une unit´ de temps t. e a e echaque temps t il est possible de faire des appels simul- Commence alors la simulation. Comme nous utilisons letan´s ` l’ascenseur. e a composant UpDownMove, nous pouvons confirmer, par les r´sultats, que la simulation commence ` parcourir les e aScheduler Il existe une composante principale du ´tages sup´rieurs demand´s. Puis apr`s avoir parcourut e e e esimulateur, il s’agit du Scheduler qui utilise l’ensemble tous les ´tages sup´rieurs, le simulateur s’attaque aux e edes composants cit´s pr´c´demment ` travers un jeu de e e e a ´tages inf´rieurs. Les points interm´diaires entre ´tage e e e eparam´trage, y compris le sc´nario ` jouer, et lance la e e a sont g´n´r´s par le composant TemporizedOneMove pour e eesimulation. Ci-dessous la liste de ses composants. indiquer les coˆts en pas de temps entre deux ´tages. u e – LoopScheduler, juste une variante ex´cutant le e 5 Conclusion sc´nario en boucle. e Le simulateur Elevator a ´t´ con¸u de mani`re ` ee c e a s’abstraire des sp´cifications du syst`me. Un langage e e3 L’assemblage plus appropri´, comme “SystemC”, aurait sˆrement e u apport´ un mod`le plus optimal. Toutefois nous avons e e L’assemblage consiste ` regrouper les diff´rents com- a e vu, ` travers le design, qu’il est possible, en ayant aposants pr´sent´s et former le simulateur souhait´. e e e une approche composant, d’interchanger les diff´rents e processus de notre syst`me. eExemple d’assemblage des composants Le code Ainsi libre ` chacun de concevoir de nouveaux com- a2 donne un exemple d’assemblage des composants pour posants pour enrichir le simulateur avec de nouvellesformer le simulateur. fonctionnalit´s. L’ensemble du code du simulateur e Ce code illustre l’utilisation par le simulateur d’un n’´tant pas toute ` fait g´n´rique, il reste des zones e a e e´chantillon de sc´nario “hard1.sdl” 1 , d’un ascenseure e dans le code que l’on peut encore abstraire.simple, d’une temporisation des d´placements de l’as- ecenseur, d’un gestionnaire de d´placement privil´giant e e Ce papier suit les termes de la licence “GNU Freeles d´placements vers le haut puis vers le bas puis fina- e Documentation License 1.3” et peut ˆtre librement element d’une ex´cution du sc´nario. e e t´l´charg´ 2 , utilis´ et modifi´. ee e e e 1. Pr´sent´ dans le code 1 e e 2. https ://github.com/canercandan/elevator
  3. 3. 5 CONCLUSION 3Code 3 R´sultats obtenus apr`s une ex´cution du si- e e emulateur$> ./elevator samples/hard1.sdl///// Scheduling /////t(0) = -50 0 10 20t(1) = -70 0t(2) = -9t(3) = -8t(4) = -7t(5) = -6 -5 -4 -3 -2 -1//////////////////////upper asked levels: .......... 10 .......... 20lower asked levels: .................... 0.................................................. -50upper asked levels: .................................................. 0lower asked levels: ...................................................................... -70upper asked levels: ............................................................. -9lower asked levels:upper asked levels: . -8lower asked levels:upper asked levels: . -7lower asked levels:upper asked levels: . -6 . -5 . -4 . -3 .-2 . -1lower asked levels:

×