Ontwerp een Lift Systeem

sep 29, 2021
admin
Nishant Sharma

Volg

9 jun, 2018 – 6 min read

Softwareontwerp voor een liftsysteem

Aangezien de meeste ontwikkelaars tijdens hun loopbaan aan enkele modules hebben gewerkt, is het moeilijk voor hen om een volledig ontwerp van een software te begrijpen en te implementeren, maar ik denk dat iedereen het kan leren!

Note: Voor iOS interview vragen, check deze link – Top iOS Interview Vragen die je moet voorbereiden in 2018

Paneel: Vertel me ontwerp voor een lift systeem.

Jij: Volg onderstaande aanpak om te identificeren of panel is geïnteresseerd in klasse ontwerp en de relatie of geïnteresseerd in backend zoals het lijkt Dit is een vrij brede vraag.

Van de applicatie ontwikkelaar perspectief, moeten we de klassen en de relatie, klasse diagrammen & Sequence flow te vertellen. We weten allemaal dat de tijd schaars is tijdens een technische discussie en soms is het moeilijk wat de andere man van ons verwacht.

In het algemeen perspectief, kan het mogelijk zijn dat uw panel is geïnteresseerd in backend ontwerpen, zodat je nodig hebt om met hem te verduidelijken, wat verwachten ze van je?

Een momentopname van het liftbesturingssysteem

Onze lift heeft de basisfunctie die alle liftsystemen hebben, zoals op en neer bewegen, deuren openen en sluiten, en natuurlijk, passagiers oppikken.

De lift wordt verondersteld te worden gebruikt in een gebouw met verdiepingen genummerd van 1 tot MaxFloor, waarbij de eerste verdieping de lobby is. Er zijn auto (Lift) oproepknoppen in de auto die overeenkomen met elke verdieping. Voor elke verdieping, behalve de bovenste en de lobby, zijn er twee oproepknoppen voor de hal die de passagiers kunnen oproepen om naar boven of beneden te gaan. Er is slechts één oproepknop voor de benedenhal op de bovenste verdieping en één oproepknop voor de bovenhal in de lobby. Wanneer de auto op een verdieping stopt, gaan de deuren open en wordt de lantaarn die de huidige richting aangeeft verlicht, zodat de passagiers de huidige rijrichting van de auto kunnen leren kennen. De auto beweegt snel tussen de verdiepingen, maar moet vroeg genoeg kunnen afremmen om bij een gewenste verdieping te stoppen. Om de veiligheid van het systeem te garanderen, wordt de noodrem geactiveerd en wordt de auto gedwongen te stoppen onder onveilige omstandigheden.

Alle systemen hebben te maken met menselijke of geautomatiseerde actoren die het systeem voor een bepaald doel gebruiken, en zowel de mens als de actoren verwachten dat het systeem zich op voorspelbare wijze gedraagt.

Figuur 1: Use Case Diagram van het liftsysteem

Er zijn zeven use-cases die zijn gebaseerd op de huidige vereisten van het liftsysteem, zoals weergegeven in figuur 1:

  • Process Car/Lift Calls: Deze use case omvat verschillende scenario’s, die in detail zullen worden beschreven in latere secties van dit document. Deze scenario’s omvatten dat de lift lift/auto-oproepen van de passagiers ontvangt, het licht van de lift/auto-oproepknoppen in- of uitschakelt, het record van lift/auto-oproepen bijwerkt dat in de systeembesturingsonderdelen is opgeslagen, enz.
  • Verwerking Hal-oproepen: Vergelijkbaar met de verwerking van lift-/autooproepen, omvat deze use case dat de lift haloproepen van de passagiers ontvangt, het licht van de haloproepknoppen aan- of uitzet, het register van haloproepen bijwerkt dat in de systeembesturingsonderdelen is opgeslagen, enz.
  • De liftkooi verplaatsen/stopzetten: De belangrijkste functie van een lift zal het veranderen van de rijsnelheid omvatten, hoe de beslissing van stop te nemen, en rijrichtingen van de liftkooi.
  • Indicating Moving Direction: De lift zou dit mechanisme moeten hebben om de passagiers de huidige bewegende richting van de kooi te laten weten zodat de passagier zou kunnen beslissen of om de kooi in te gaan of niet.
  • Aanwijzende kooipositie: Op dezelfde manier moet de lift de passagiers laten weten of zijn/haar bestemmingsverdieping is bereikt, zodat de passagier kan besluiten de kooi te verlaten.
  • Deuren openen/sluiten: De lift moet in staat zijn om de deuren te openen en te sluiten zodat de passagiers in en uit de kooi kunnen stappen. De functionele gebieden van deze use case moeten ook de passagiers in staat stellen om de deuren om te keren wanneer de deuren sluiten en de passagier in de kooi wil stappen.
  • Trigger Emergency Brake: Er is een veiligheidsmechanisme in de liftkooi om ervoor te zorgen dat een onveilige toestand niet tijdelijk wordt gegenereerd.

Met zoveel begrip van het liftsysteem, kunnen we beginnen met het identificeren van de klassen die nodig zijn om een systeem te ontwerpen.

Identificeren van klassen/objecten:

  • ElevatorControl: Het centrale besturingsobject in het liftsysteem. ElevatorControl communiceert en bestuurt alle andere objecten in het systeem.
  • Deur: Er zijn twee deuren in het systeem, het “god” object – de ElevatorControl – geeft opdracht de deuren te openen en te sluiten.
  • Auto/Lift: De auto wordt bestuurd om op en neer te gaan (in verschillende snelheden), om stops te maken op verdiepingen wanneer dat nodig is.
  • Knop: De klasse ElevatorControl bestuurt ook de knop-klasse, die twee subklassen CarCallButton en HallCallButton verder veralgemeent. Het besturingsobject communiceert met de Button-objecten, krijgt de informatie of een knop is ingedrukt en regelt op zijn beurt de verlichting van Button-lampjes.
  • Indicator: Er zijn twee soorten indicators in het systeem, de CarPositionIndicator en de CarDirectionIndicator (d.w.z. de CarLantern). De indicators worden bestuurd om de informatie over de huidige positie en de rijrichting van de liftkooi weer te geven.
  • Veiligheid: Wanneer zich een noodsituatie voordoet, geeft de ElevatorControl opdracht aan de Safety

Controller klassen:

  • DoorControl bestuurt de actie van DoorMotor. DoorMotor kan worden gecommandeerd om te openen, te sluiten, of een deur om te keren.
  • DriveControl bestuurt de liftaandrijving, die fungeert als de hoofdmotor die de liftkooi op en neer beweegt, en stopt op verdiepingen wanneer dat nodig is.
  • LantaarnControl zijn er in het aantal van twee, CarPositionIndicator en de CarDirectionIndicator.
  • HallButtonControl bestaat in paren op elke verdieping, waar de ene de omhoog HallCallButton bestuurt en de andere omlaag. De HallButtonControl accepteert hall call knop controles en geeft feedback aan hall call lights.
  • CarButtonControl is er een voor elke verdieping en alle lokaliseren in de lift / auto. De CarButtonControl accepteert CarCallButton oproepen en is verantwoordelijk voor het aan/uitzetten van de corresponderende lift/auto oproeplichten.
  • CarPositionIndicator geeft waarde aan de CarPositionIndicator zodat de passagiers de huidige positie van de lift/auto kunnen weten.
  • Dispatcher bestuurt niet de daadwerkelijke lift componenten, maar is wel belangrijk in het software systeem. Er is één “Dispatcher” voor elke lift/kooi, die als hoofdtaak heeft het berekenen van de richting en de bestemming van de lift/kooi, alsmede het handhaven van de openingstijd van de deuren. De dispatcher heeft interactie met bijna alle besturingsobjecten in het systeem, met uitzondering van LanternControl.

Figuur 2: Klassendiagram – de software-architectuurweergave

Hoop dat alles tot nu toe goed gaat, laten we alles nu begrijpen met behulp van enkele sequentiediagrammen.

Sequence flow

Het is misschien moeilijk om dit mondeling uit te leggen, maar als u duidelijk begrijpt hoe het werkt, kunt u enkele sequentiediagrammen tekenen en proberen de flow met enkele voorbeelden parallel uit te leggen.

  1. Process hall calls : Er zijn twee scenario’s voor deze use-case:
    1.1 de lift beweegt in dezelfde richting als de bestemming van de passagier.
    1.2 de lift beweegt in de tegenovergestelde richting als de bestemming van de passagier.

Figuur 3: 1.1&1.2 – Hall Call Service

2. Verplaatsen/Stoppen van de auto:

Figuur 4: Verplaatsen van de auto van Snel naar Langzaam en dan naar Stop

3. De rijrichting aangeven:

Figuur 5: De rijrichting aangeven

4. De noodrem activeren: Er zijn vijf scenario’s voor deze use-case:

1. Als de auto de opdracht krijgt om te stoppen, maar niet op de gewenste hoogte tot stilstand komt, wordt de noodrem geactiveerd.

2. Als de auto de opdracht krijgt om te rijden, maar niet beweegt, wordt de noodrem geactiveerd.

3. Als de deuren worden bevolen om te openen wanneer de auto stopt op een verdieping, maar de deuren gaan niet open, zal de noodrem worden geactiveerd.

4. Als de deuren worden geopend wanneer de auto rijdt, zal de noodrem worden geactiveerd.

5.

5. Als de liftkooi blijft rijden wanneer de takelwegbegrenzing is bereikt, wordt de noodrem in werking gesteld.

Ik zal slechts één sequentieschema laten zien voor geval 5.

Figuur 6: Noodrem – De lift blijft rijden wanneer de liftweglimiet is bereikt

Ik verwacht dat de meeste dingen zich in uw geheugen zullen nestelen en gemakkelijk te onthouden en uit te leggen zijn. Voor backend-ontwerp, volg de serie Systeemontwerp

Hoop dat de uitleg u bevalt. Voor meer ontwerp vragen, gelieve te wachten en volg me.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.