Hopp til hovedinnhold
← Alle prosjekter
FullførtTTK4235 Tilpassede datasystemer · gruppearbeid · mars 2026

Heislab

Et styresystem i C for en fireetasjes heismodell, bygget etter V-modellen og testet mot en full kravspesifikasjon.

  • C
  • Embedded
  • Lab
Se koden på GitHub →

Prøv heisen

Trykk på knappene i hallen og i kabinen. Heisen følger samme regler som koden: LOOK-retningsvalg, tre sekunders dørtid, hindring forlenger døren og stoppknappen overstyrer alt.

Forenklet illustrasjon
1Etasje2Etasje3Etasje4Etasje

Tilstand

  1. Init
  2. Idle
  3. Moving
  4. DoorOpen
  5. Stop

Kabin

Opp / Ned

Etasje 4
Etasje 3
Etasje 2
Etasje 1

Hendelser

Init: heisen kjører ned til første etasje den finner.

    Mål

    Lage et sikkert og forutsigbart styresystem for en heis med fire etasjer: bestillinger fra hall og kabin, dørstyring, stoppknapp og hindringssensor.

    Løsning

    Utviklingen fulgte V-modellen: kravspesifikasjon og UML-diagrammer (tilstands-, klasse- og sekvensdiagram) først, deretter implementasjon. Koden er delt i tre moduler: elevio (maskinvarelaget), orders (bestillinger og retningsvalg med LOOK-algoritmen) og en tilstandsmaskin. Døren holdes åpen i tre sekunder, målt med clock_gettime(CLOCK_MONOTONIC), og stoppknappen har høyeste prioritet i alle tilstander.

    Resultat

    Alle kravpunkter i FAT-testen ble verifisert: oppstart (O1–O3), bestillinger (H1–H4), lys (L1–L6), dører (D1–D4), sikkerhet (S1–S7) og robusthet (R1–R3).

    Det jeg tok med meg

    • UML-diagrammene tvang fram eksplisitte valg om hvilke tilstandsoverganger som er lovlige, og sparte tid under implementasjonen.
    • Implementasjonen avslørte en designbrist: etasjeoppdateringen lå i tilstandshandlerne. Løsningen var å flytte den til toppen av hovedløkka, utenfor tilstandsmaskinen.
    • Tilstandsmaskinen gjør det enkelt å legge til tilstander, og bestillingsarrayet skalerer automatisk med antall etasjer.

    Arkitekturen i koden

    1. Knapper og sensorer

      Hall- og kabinknapper, stoppknapp, hindringssensor og etasjesensor.

    2. elevio (HAL)

      Maskinvarelaget: leser sensorer og styrer motor, lys og dør.

    3. Tilstandsmaskin

      Init, Idle, Moving, DoorOpen og Stop. Stopp har høyest prioritet.

    4. orders

      Lagrer bestillinger i et todimensjonalt array og velger retning med LOOK-algoritmen.

    5. Motor, lys og dør

      Det heisen faktisk gjør: kjører, tenner lamper og åpner døren.

    ↑↓ for å velge · Enter for å åpne · Esc for å lukke