Concevoir un système d’ascenseur

Sep 29, 2021
admin
Nishant Sharma

Follow

Jun 9, 2018 – 6 min lu

.

Conception logicielle pour un système d’ascenseur

Comme la plupart des développeurs ont travaillé sur certains modules au cours de leur carrière, il est difficile pour eux de comprendre et de mettre en œuvre une conception complète pour un logiciel, mais je crois que tout le monde peut apprendre !!

Note : Pour les questions d’entretien iOS , consultez ce lien – Top iOS Interview Questions You Must Prepare In 2018

Panel : S’il vous plaît dites-moi la conception pour un système d’ascenseur.

Vous : Suivez l’approche ci-dessous pour identifier si le panel est intéressé par la conception de la classe et sa relation ou intéressé par le backend comme il semble C’est une question assez large.

Du point de vue du développeur d’applications, nous devrions dire les classes et sa relation, les diagrammes de classe &Flux de séquence. Nous connaissons tous le manque de temps lors d’une discussion technique et parfois son difficile ce que l’autre gars attend de nous.

Dans une perspective générale, il est possible que votre panel soit intéressé par la conception de backend donc vous devez clarifier avec lui, ce qu’ils attendent de vous ?

Un instantané du système de contrôle de l’ascenseur

Notre ascenseur a la fonction de base que tous les systèmes d’ascenseur ont, comme monter et descendre, ouvrir et fermer les portes, et bien sûr, prendre des passagers.

L’ascenseur est censé être utilisé dans un bâtiment ayant des étages numérotés de 1 à MaxFloor, où le premier étage est le hall. Il y a des boutons d’appel de cabine(Ascenseur) dans la cabine correspondant à chaque étage. Pour chaque étage, à l’exception du dernier étage et du hall d’entrée, il y a deux boutons d’appel de hall que les passagers peuvent appeler pour monter et descendre. Il n’y a qu’un bouton d’appel de hall descendant au dernier étage et un bouton d’appel de hall montant dans le hall. Lorsque la voiture s’arrête à un étage, les portes s’ouvrent et la lanterne de la voiture indiquant la direction actuelle de la voiture est allumée afin que les passagers puissent connaître la direction actuelle de la voiture. La voiture se déplace rapidement entre les étages, mais elle doit être capable de ralentir suffisamment tôt pour s’arrêter à l’étage souhaité. Afin de certifier la sécurité du système, le frein d’urgence sera déclenché et la voiture sera forcée de s’arrêter dans toutes les conditions dangereuses.

Tous les systèmes interagissent avec des acteurs humains ou automatisés qui utilisent le système dans un certain but, et l’homme et les acteurs s’attendent à ce que le système se comporte de manière prévisible.

Figure 1 : Diagramme de cas d’utilisation du système d’ascenseur

Il existe sept cas d’utilisation basés sur l’exigence actuelle du système d’ascenseur, comme le montre la figure 1:

  • Traiter les appels de cabine/ascenseur : Ce cas d’utilisation comprend plusieurs scénarios, qui seront décrits en détail dans les sections ultérieures de ce document. Ces scénarios comprennent que l’ascenseur reçoit des appels d’ascenseur/de cabine des passagers, allume ou éteint la lumière des boutons d’appel d’ascenseur/de cabine, met à jour l’enregistrement des appels d’ascenseur/de cabine stockés dans les parties de contrôle du système, etc.
  • Traiter les appels de hall : Semblable au traitement des appels d’ascenseur/de cabine, ce cas d’utilisation comprend que l’ascenseur reçoit les appels de hall des passagers, allume ou éteint la lumière des boutons d’appel de hall, met à jour l’enregistrement des appels de hall dans les parties de contrôle du système, etc.
  • Déplacer/arrêter la cabine : La fonction principale d’un ascenseur comprendra le changement de la vitesse de conduite, la façon de prendre la décision d’arrêt, et les directions de conduite de la cabine.
  • Indiquer la direction de déplacement : L’ascenseur devrait avoir ce mécanisme pour permettre aux passagers de connaître la direction actuelle de la cabine afin que le passager puisse décider d’entrer dans la cabine ou non.
  • Indiquer la position de la cabine : De même, l’ascenseur devrait permettre aux passagers de savoir si son étage de destination est atteint, de sorte que le passager puisse décider de quitter la cabine.
  • Ouvrir/fermer les portes : L’ascenseur doit être capable d’ouvrir et de fermer les portes pour que les passagers puissent entrer et sortir de la cabine. Les zones fonctionnelles de ce cas d’utilisation doivent également permettre aux passagers de faire des inversions de porte lorsque les portes se ferment et que le passager veut entrer dans la cabine.
  • Déclencher le frein d’urgence : Il existe un mécanisme de sécurité dans la cabine pour s’assurer qu’un état dangereux n’est pas généré de manière transitoire.

Avec cette grande compréhension du système d’ascenseur, nous pouvons commencer à identifier les classes requises il pour concevoir un système.

Identification des classes/objets:

  • ElevatorControl : L’objet de contrôle central dans le système d’ascenseur. ElevatorControl communique et contrôle tous les autres objets du système.
  • Porte : Il y a deux portes dans le système, l’objet « dieu » – l’ElevatorControl – commande l’ouverture et la fermeture des portes.
  • Voiture/ascenseur : La voiture est commandée pour monter et descendre (à différentes vitesses), pour faire des arrêts aux étages lorsque cela est nécessaire.
  • Bouton : La classe ElevatorControl contrôle également la classe bouton, qui généralise encore deux sous-classes CarCallButton et HallCallButton. L’objet de contrôle communique avec les objets Bouton, obtient l’information si un bouton est pressé et à son tour contrôle l’illumination des lumières du Bouton.
  • Indicateur : Il existe deux types d’indicateurs dans le système, le CarPositionIndicator et le CarDirectionIndicator (c’est-à-dire la CarLantern). Les indicateurs sont contrôlés pour montrer les informations sur la position actuelle et la direction de déplacement de la cabine.
  • Sécurité : Chaque fois qu’une urgence se produit, l’ElevatorControl commande les classes Safety

Controller:

  • DoorControl contrôle l’action de DoorMotor. DoorMotor peut être commandé pour ouvrir, fermer, ou faire une inversion de porte.
  • DriveControl contrôle l’entraînement de l’ascenseur, qui agit comme le moteur principal déplaçant la cabine vers le haut et vers le bas, et s’arrêtant aux étages lorsque cela est nécessaire.
  • LanternControl sont au nombre de deux, CarPositionIndicator et le CarDirectionIndicator.
  • HallButtonControl existe en paire à chaque étage, où l’un contrôle le HallCallButton Up et l’autre Down. Le HallButtonControl accepte les commandes d’appui sur les boutons d’appel de hall ainsi que donne une rétroaction aux lumières d’appel de hall.
  • CarButtonControl est un pour chaque étage et tous localiser dans l’ascenseur / cabine. Le CarButtonControl accepte les appels CarCallButton et est chargé d’allumer/éteindre les lumières d’appel d’ascenseur/de cabine correspondantes.
  • CarPositionIndicator donne une valeur au CarPositionIndicator afin que les passagers puissent connaître la position actuelle de l’ascenseur/de la cabine.
  • Dispatcher ne contrôle pas les composants réels de l’ascenseur, mais il est important dans le système logiciel. Il y a un Dispatcher pour chaque ascenseur/voiture, dont la fonction principale est de calculer la direction de déplacement cible et la destination de l’ascenseur/voiture, ainsi que de maintenir le temps d’ouverture des portes. Le Dispatcher interagit avec presque tous les objets de contrôle du système, à l’exception de LanternControl.

Figure 2 : Diagramme de classe – la vue de l’architecture logicielle

J’espère que tout va bien jusqu’à maintenant, comprenons tout avec certains des diagrammes de séquence.

Flux de séquence

Il peut être difficile d’expliquer verbalement mais si vous comprenez clairement comment cela va fonctionner, vous pouvez dessiner quelques diagrammes de séquence et essayer d’expliquer le flux avec quelques exemples en parallèle.

  1. Appels de hall de processus : Il y a deux scénarios pour ce cas d’utilisation :
    1.1 l’ascenseur se déplace vers la même direction que la destination du passager.
    1.2 l’ascenseur se déplace vers la direction opposée à la destination du passager.

Figure 3 : 1.1&1.2 – Service d’appel du hall

2. Déplacer/arrêter la voiture:

Figure 4 : Déplacement de la voiture de rapide à lent puis à l’arrêt

3. Indiquer la direction du mouvement :

Figure 5 : Indiquer la direction du mouvement

4. Déclencher le frein d’urgence : Il existe cinq scénarios pour ce cas d’utilisation :

1. Si la voiture est commandée pour s’arrêter mais qu’elle ne s’arrête pas à un étage souhaité, le frein d’urgence sera déclenché.

2. Si la voiture est commandée pour se déplacer mais qu’elle ne se déplace pas, le frein d’urgence sera déclenché.

3. Si on commande l’ouverture des portes lorsque la voiture s’arrête à un étage, mais que les portes ne s’ouvrent pas, le frein d’urgence sera déclenché.

4. Si les portes s’ouvrent lorsque la voiture se déplace, le frein d’urgence sera déclenché.

5. Si la voiture continue à avancer lorsque la limite de la voie de levage est atteinte, le frein d’urgence sera déclenché.

Je ne montrerai qu’un seul diagramme de séquence pour le cas 5.

Figure 6 : Frein d’urgence – L’ascenseur continue d’avancer lorsque la limite de la voie de palan est atteinte

Je m’attends à ce que la plupart des choses deviennent des images dans votre esprit et soient faciles à retenir ainsi qu’à expliquer. Pour la conception du backend, veuillez suivre la série de conception du système

J’espère que vous aimez l’explication. Pour plus de questions sur la conception, s’il vous plaît attendez et suivez-moi.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.