SOFTDRINKAUTOMATSTYRING



Relaterede dokumenter
Fag: Projekt E1PRJ1 Emne: Kravspecifikation Softdrink-Automat Gruppe: 6 Dato: 10. april 2003 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob

Projekt E1PRJ1 Emne: Strukturering Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Jacob Nielsen, Klaus Eriksen,

Kravspecifikation For. Gruppen

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

SOFTDRINKAUTOMATSTYRING

Secure O matic. Gruppe 5 2. SEMESTERPROJEKT. Udgave. Accepttest-specifikation

UML-Light (Note: UML-Light T133, ver. 2004) Finn Overgaard Hansen, IHA

Dansk Mink Papir. Teknisk brugermanual

Svane Electronic Universal timer med 2 relæer og 18 funktioner hver 1

Fag: Projekt E1PRJ1 Emne: Testdokumentation Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob

Accepttest Specifikation For. Gruppen

Software Dokumentation

Brugervejledning for Senge- og dørvagt PIR2003

FSystem beskrivelse PAR 200 CLOCK

DC-Motor Controller. Brugermanual

STYRING FOR STOKERFYR

Smartbox, Brugermanual Montageanvisning Denne folder skal altid opbevares ved produktet!

Betjeningsvejledning. til. Vandudvejning. system

Bredbånds-TV. Brugervejledning. ComX brugervejledning version 4.0

Programmering af trådløse modtagere (RF)

Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag

FH2000S BYGAS BETJENINGSVEJLEDNING

TX electronic controller

Svendeprøve Projekt Tyveri alarm

Svane Electronic Timer universal med 8 funktioner 1

TDC HomeBox ADSL. Installationsvejled ning til dig med bredbåndstelefoni og alm. telefonstik

Bias Reducing Operating System - BROS -

KOMPONENT BESKRIVELSE

Kom godt igang med Inventar registrering

X88MV. Manual Version 1.26

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

BRUGERVEJLEDNING KMR 1000

Side 2 CS 9452 Brugervejledning. Afsnit Navn Side. 1 Ordforklaring (terminologi) 3. 3 Betjeningsknapper og -lamper 6

IDAP manual Analog modul

2 Tilbage ( ) 3 OK (OK) 4 Op (p)

NMT - /40, 60, 80 NMT ER - /40, 60, 80 EGHN SMART - /60

TDC HomeBox VDSL. Installationsvejled ning til dig med telefoni og bredbånd

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.

BRUGERVEJLEDNING CP-508LCD ALARMCENTRAL

UML til kravspecificering

Betjeningsvejledning IQ Control panel

TRUST 100MB SPEEDSHARE USB ADAPTER

Bruger manual AGAM kontrolboks

PARAGON SUPER II. Betjeningsvejledning

GT2000 GT2000. Brugervejledning

Automatisk Vandingssystem

Tillæg til manual. Centraliserede transportsystemer. med TP 177 micro. Serial No... ISO DK LT nr.: Rev. 01

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

X88S. SMS fjernstyring til sommerhuse

1. At afhjælpe eventuelle alarmer fra anlægget. 2. Bestille syre inden syretanken er tom anlægget kommer med en blød alarm i god tid.

Multilog - 5HS ver.2. 5 Kanals universal datalogger. ninasoft

Pakkens indhold. Ordliste. Powerline Adapter

SunFlux Varenr.: 03104

L P. Komfort / Alarm system Installationsvejledning. Tekniske data, symbol forklaringer

Viditronic NDVR Quick Guide. Ver. 2.0

Manual til PRO DK180

Struktureret system udvikling Minimodul 2: Kravspecifikation og accepttest

Indstilling af trådløst netværk

Secure O matic. Gruppe 5 2. SEMESTERPROJEKT. Udgave. Testspecifikation

LISA 2 System til faringsovervågning

CANSAT & ARDUINO step by step

PLC - programmering af sekventielt projekt

K 5406A. Digital HFI/HPFI tester. El-nr

Projekt: I4PRJ4 Dato: 18/ Titel: Kravspecifikation for Danish Rox

Svane Electronic Timer universal med 8 funktioner 1

BRUGERVEJLEDNING VER.

Digital positioner type RE 3446

GammaSpektrometer. Quick-start Guide. Indhold. Quick-start Guide Side 1 af 7. A Klargøring. 1. Udpakning og opstilling 2. Software

Arduino Programmering

Arkitekturdokument for Cruise Control

Bruger manual for SW 3.06

VentilationAlarm EP1 ES 966

SSI GSM PORT kontrol brugervejledning. SSI GSM PORT brugervejledning V1.2

Vejledning til udviklingsprocessen for projekt 2

Svane Electronic Universal timer med 4 relæer og et valg af 18 funktioner hver 1. 4 kanals timer med 18 funktioner

Brugervejledning PBS Flexi Mobil

Automatisering Af Hverdagen

Brugermanual for styreskab Master Chain 4.0

Microcontroller, Arduino

Automatisk Vandingssystem


SPEED-Commander Frekvensomformer. Program Nr. 05 Ver. 5.17a. Fortløbende en-vejs positionering

Alle dip 1 7 sættes til On for at opnå stand-alone operation fra PC.

SET BRUGERVEJLEDNING FLTA IDRIFTSÆTTELSE. Ledningsnet. Placering af FLAN-antennen V2.2 ( ) 1 (9)

MANUAL FANTRONIC 20AMP. TRIAC SLAVEENHED FOR VENTILATION VER:FAN 1.1 SKIOLD GØR EN FORSKEL!

SeeTool - KNX løsninger til

INSTALLATIONS GUIDE. Air 4920 Trådløst access point FIBERBREDBÅND TV TELEFONI

Brugervejledning for. Telenor Dialer

Automatisk Vandingssystem

S26 MOTOR Original brugermanual

Quick Setup Guide SB168-ES og LS9 Dansk version

X88. X88 er en GSM/SMS baseret fjernstyring med: 8 indgange 8 relæudgange Mulighed for temperaturføler

Opsætning af xcon og Logix Controller

UniLock System 10. Manual til T550 Secure Radiomodtager og håndsender. Version 2.0 Revision

Teknisk datablad Brandautomatik

IR32C: Elektronisk digital termostat med afrimningskontrol for køle-/ frostanlæg med drift inden for lave temperaturområder.

WEA-Base Brugervejledning til vejetransmitter

NORDISK CONTROL A/S. FUNKTIONSBESKRIVELSE AF PORTSTYRING NC X 400V 50Hz

Transkript:

SOFTDRINKAUTOMATSTYRING PROJEKT DOKUMENTATION GRUPPE 4. SEMESTER PROJEKT VED INGENIØRHØJSKOLEN I ÅRHUS EIT-AFD. 22. DECEMBER 2004 Projektvejleder: Orla Linde Johansen Søren Olesen Søren Rasmussen Runar Birgir Gislason Stud nr.: 0487 Stud nr.: 02288 Stud nr.: 03233 Robert John Guilford Jonas Hove Jakobsen Rune Søe-Knudsen Stud nr.: 03294 Stud nr.: 04758 Stud nr.: 03207

INDHOLDSFORTEGNELSE KRAVSPECIFIKATION FOR SOFTDRINKAUTOMATSTYRING (SDS)... 6.0. VERSIONSHISTORIE... 7.0.2 GODKENDELSESFORMULAR... 7. INDLEDNING... 8.. FORMÅL... 8..2 REFERANCER... 8..3 LÆSEVEJLEDNING... 8.2 GENEREL BESKRIVELSE... 9.2. SYSTEMBESKRIVELSE... 9.2.. SYSTEMOVERSIGT... 9.2..2 AKTØR-KONTEKST DIAGRAM....2..3 AKTØRBESKRIVELSER....2.2 SYSTEMETS FUNKTIONER... 3.2.2. USE CASE DIAGRAM... 3.2.3 SYSTEMETS BEGRÆNSNINGER... 3.2.4 SYSTEMETS FREMTID... 4.2.5 BRUGERPROFIL... 4.2.6 KRAV TIL UDVIKLINGSFORLØBET... 4.2.7 OMFANG AF KUNDELEVERANCE... 4.2.8 FORUDSÆTNINGER... 4.3 FUNKTIONELLE KRAV - USECASES... 5.3. USE CASE : FREMSTIL DRINK... 5 3.. TILLÆG TIL USECASE... 6.3.2 USE CASE 2: OVERVÅG TEMPERATUR... 7.3.3 USE CASE 3: KONFIGURER AUTOMAT... 8.4 EKSTERNE GRÆNSEFLADE KRAV... 9.4. BRUGER-GRÆNSEFLADE... 9.4.2 HARDWARE-GRÆNSEFLADE... 9.4.3 KOMMUNIKATIONS-GRÆNSEFLADE... 20.4.4 SOFTWARE-GRÆNSEFLADE... 20.5 KRAV TIL SYSTEMETSYDELSE... 2.6 KVALITETSFAKTORER... 2.7 DESIGN KRAV... 2.8 ANDRE KRAV... 2.8. MYNDIGHEDSKRAV... 2.8.2 ØVRIGE KRAV... 2.9 DELLEVERINGER... 22.0 BILAG... 23.0. INTRODUKTION TIL USE CASE TEKNIKKEN... 23.0.2 KUNDEOPLÆG... 25.0.3 BILAG DIGITAL CONNECTOR... 26.0.4 BILAG ANALOG CONNECTOR... 27

2 SYSTEMARKITEKTURDESIGN...28 2. GENERAL SYSTEMBESKRIVELSE... 28 2.3 EKSTERNE GRÆNSEFLADER... 28 3 DESIGNDOKUMENTATION...29 3. SOFTWAREDESIGN... 29 3.. KLASSEDIAGRAM... 29 3..2 TILSTANDSDIAGRAM FOR KLASSEN SOFTDRINKSTYRING... 30 3..3 SEKVENSDIAGRAMMER... 3 3..3. USE CASE - FREMSTIL DRINK.... 3 2.4.3.2 USE CASE 2 - OVERVÅG TEMPERATUR... 32 3..3.3 USE CASE 3 - KONFIGURER AUTOMAT... 33 3..4 KLASSEBESKRIVELSER... 34 3..4. SOFTDRINKSTYRING... 34 3..4.2 KONFIGUERINGSPARAMETRE... 35 3..4.3 TEMPERATUROVERVAAGER... 36 3..4.4 TIMER... 36 3..4.5 AUTOMATBRUGERINTERFACE... 37 3..4.6 KONTROLPANEL... 37 3..4.7 KONFIGUERINGSSWITCH... 37 3..4.8 KOPTRANSPORTENHED... 38 3..4.9 STATUSPANEL... 38 3..4.0 TEMPERATURDISPLAY... 39 3..4. TEMPERATURSENSOR... 39 3..4.2 DOSERINGSENHED... 40 3..4.3 INPUTOUTPUT... 4 3..4.4 AD52... 4 3.2 HARDWAREDESIGN (HW)... 42 3.2. BLOKDIAGRAM (KLASSEDIAGRAM)... 42 3.2.2 HARDWARE DIAGRAMMER... 43 3.2.2. BLOKDIAGRAM... 43 3.2.2.2 ANALOGCONNECTOR... 44 3.2.2.3 DIGITALCONNECTOR... 45 3.2.2.4 KONFIGSWITCHHW... 46 3.2.2.5 KONTROLPANELHW... 47 3.2.2.6 MOTORSTYRINGHW... 48 3.2.2.7 PCCONNECTOR... 49 3.2.2.8 STATUSPANELHW... 50 3.2.2.9 TEMPERATURDISPLAYHW... 5 3.2.2.0 TEMPERATURMAALINGSHW... 52 3.2.3 BESKRIVELSE AF FUNKTIONSBLOKKENES DESIGN... 53 3.2.3. MOTORSTYRINGSHW... 53 3.2.3.2 TEMPERATURMÅLINGSHW... 54 3.2.3.3 KONTROLPANELHW... 54 3.2.3.4 DIGITALCONNECTOR... 54 3.2.3.5 ANALOGCONNECTOR... 54 3.2.3.6 STATUSPANELHW... 55 3.2.3.7 KONFIGSWITCHHW... 55 3.2.3.8 PCCONNECTOR... 55 3.2.4 OVERVEJELSER... 56 3.2.4. TEMPERATURMÅLINGSHW... 56 3.2.4.2 PRINT... 57 2

4 IMPLEMENTERINGSDOKUMENTATION...58 4. SOFTWARE... 58 4.. SOFTDRINKSTYRINGS KLASSE... 58 4..2 INPUT/OUTPUT KLASSEN... 58 4..3 DOSERINGS KLASSE... 59 4..3. UDREGNING... 59 4.2 HARDWARE... 62 4.2. UDREGNINGER... 62 4.2.. CLOCK GENERATOREN... 62 4.2..2 KONFIGSWITCHHW... 65 4.2..3 KONTROLPANELHW... 66 4.2..4 MOTORSTYRINGHW... 67 4.2..5 STATUSPANELHW... 70 4.2..6 TEMPERATURMAALINGSHW... 7 4.2..7 FORSYNINGS STABILISERING TIL TEMPERATURHW... 8 4.2..8 TEMPERATURDISPLAYHW... 82 5 TESTDOKUMENTATION...83 5. GENERELT OM INSTRUMENTER... 83 5.. HM 80... 83 5..2 JOFRA ITC 55A... 83 5..3 METERMAN 37XR... 83 5.2 ENHEDSTEST... 83 5.2. SOFTWARE... 83 5.2.. AUTOMATBRUGERINTERFACE... 83 5.2..2 INPUTOUTPUT... 84 5.2..3 KONFIGURERINGSSWITCH... 84 5.2..4 DOSERINGSENHED... 85 5.2..5 KONFIGURERINGSPARAMETRE... 86 5.2..6 KOPTRANSPORTENHED... 87 5.2..7 STATUSPANEL... 87 5.2..8 TEMPERATURDISPLAY... 88 5.2..9 TEMPERATUROVERVAAGER... 88 5.2..0 TEMPERATURSENSOR... 88 5.2.. TIMER... 89 5.2..2 KONTROLPANEL... 89 5.2.2 HARDWARE... 90 5.2.2. CLOCK GENERATOR. TEST... 90 5.2.2.2 CLOCK GENERATOR 2. TEST... 9 5.2.2.3 MOTORSTYRING... 92 5.2.2.4 TEMPERATUR HARDWARE... 93 5.2.2.5 STATUSPANEL... 94 5.3 INTEGRATIONSTESTS... 95 5.3. INTEGRATIONSTEST NR. PRINT... 95 5.3.2 INTEGRATIONSTEST NR. 2 SOFTWARE... 97 5.3.3 INTEGRATIONSTEST NR. 3... 98 5.3.4 INTEGRATIONSTEST NR. 4... 00 5.3 ACCEPTTEST... 02 5.3. USECASE... 02 5.3.2 TEST AF VÆSKEDOSERING... 03 5.3.3 UNDTAGELSER FRA NORMAL SCENARIO... 08 5.3.4 USECASE 2... 0 5.3.5 USECASE 3... 3

6 BILAG...6 6. C++ INTERFACE TIL HUMUSOFT AD 52 I/O KORT... 6 6.. SOFTWARE DRIVER... 6 6..2 DATABLAD... 8 6..3 DATABLAD 2... 33 6.2 PIN NUMRE PÅ AD52/PRINTET... 34 6.2 AKTIVITETS DIAGRAMMER... 35 6.2. AUTOMATBRUGERINTERFACE... 35 6.2. DOSERINGSENHED... 38 6.2.3 INPUTOUTPUT... 40 6.2.4 KONFIGURERINGSPARAMETRE... 42 6.2.5 KONFIGURERINGSSWITCH... 43 6.2.6 KONTROLPANEL... 43 6.2.7 KOPTRANSPORTENHED... 44 6.2.8 SOFTDRINKSTYRING... 45 6.2.8. USECASE... 46 6.2.8.2 USECASE 2... 53 6.2.8.3 USECASE 3... 54 6.2.9 STATUSPANEL... 57 6.2.0 TEMPERATURDISPLAY... 57 6.2. TEMPERATUROVERVAAGER... 58 6.2.2 TEMPERATURSENSOR... 58 6.2.3 TIMER... 59 6.3 SOFTWARE KODE... 60 6.3. AD52DRV... 60 6.3.. HEADER... 60 6.3..2 SOURCE... 6 6.3.2 AUTOMATBRUGERINTERFACE... 64 6.3.2. HEADER... 64 6.3.2.2 SOURCE... 65 6.3.3 DOSERINGSENHED... 68 6.3.3. HEADER... 68 6.3.3.2 SOURCE... 69 6.3.4 INPUTOUTPUT... 7 6.3.4. HEADER... 7 6.3.4.2 SOURCE... 72 6.3.5 KONFIGURERINGSPARAMETRE... 74 6.3.5. HEADER... 74 6.3.5.2 SOURCE... 75 6.3.6 KONFIGURERINGSSWITCH... 77 6.3.6. HEADER... 77 6.3.6.2 SOURCE... 78 6.3.7 KONTROLPANEL... 79 6.3.7. HEADER... 79 6.3.7.2 SOURCE... 80 6.3.8 KOPTRANSPORTENHED... 8 6.3.8. HEADER... 8 6.3.8.2 SOURCE... 82 6.3.9 SOFTDRINKSTYRING... 83 6.3.9. HEADER... 83 4

6.3.9.2 SOURCE... 84 6.3.0 STATUSPANEL... 89 6.3.0. HEADER... 89 6.3.0.2 SOURCE... 90 6.3. TEMPERATURDISPLAY... 92 6.3.. HEADER... 92 6.3..2 SOURCE... 93 6.3.2 TEMPERATUROVERVAAGER... 94 6.3.2. HEADER... 94 6.3.2.2 SOURCE... 95 6.3.3 TEMPERATURSENSOR... 96 6.3.3. HEADER... 96 6.3.3.2 SOURCE... 97 6.3.4 TIMER... 98 6.3.4. HEADER... 98 6.3.4.2 SOURCE... 99 6.4 DATAOPSAMLING VANDDOSERING... 200 6.5 MANUAL... 202 6.6 PRINT LAYOUT OG KOMPONENTER... 204 6.7 KOMPONENTER... 205 6.7. OPERATIONSFORSTÆRKER LM74C... 205 6.7.2 TRANSISTOR BC547B... 22 6.7.4 DIODE (TEMPERATURFØLER) N448... 26 6.7.4 DOBBELT NOR GATE 74HC02... 220 6.7.5 TRIBBEL NAND GATE 74HC0... 225 6.7.6 DOBBELT D-FLIPFLOP... 230 7. REFERENCER... 252 5

Projekt: Softdrink Dato: 29.06.2004 Titel: Kravspecifikation for SoftDrinkautomatStyring (SDS) Softdrink Company A/S 6

Versionshistorie Ver. Dato Initialer Beskrivelse.0 29.06.2004 FOH Use Case baseret kravspecifikaiton for. semesterprojekt på IHA Godkendelsesformular Forfatter(e): Finn Overgaard Hansen Godkendes af: Projektnummer: Dokument-id: (filnavn) Salgschef S.F.Drinksen, Automatdistributøren A/S Direktør P.J.Petersen, Softdrink Company A/S..\Softdrink-Kravspec-V.0.doc Antal sider: 20 Kunde: Automatdistributøren A/S Ved underskrivelse af dette dokument accepteres det af begge parter, som værende kravene til udviklingen af det ønskede system. Sted og dato: Århus den 30.06.2004 Århus den 29.06.2004 S.F.Drinksen <kunde underskrift> P.J.Petersen <leverandør underskrift> 7

. INDLEDNING. Formål Denne kravspecifikation definerer kravene til et softdrinkautomatstyringssystem kaldet SoftDrinkautomatStyring (SDS). Specifikationen definerer kravene til systemet, der skal implementeres vha. software og hardware. SDS systemet skal styre en eksisterende doseringsmekanik, der kan fremstille drinks bestående af vand og saft i et givet blandingsforhold. Systemet udvikles til firmaet Automatdistributøren A/S (AD) repræsenteret ved salgschef S.F.Drinksen. Systemet udvikles af firmaet Softdrink Company A/S (SC). Denne specifikation indgår som en del af aftalen mellem Automatdistributøren A/S og Softdrink Company A/S. Ændringer til denne specifikation skal være godkendt af både AD og SC..2 Referencer Denne kravspecifikation er baseret på følgende dokument: Kundeoplæg fra firmaet Automatdistributøren vedlagt som bilag. UML: Unified Modeling Language (www.omg.org/uml).3 Læsevejledning Kapitel 2. beskriver de generelle krav, der gælder for udviklingen af SDS-systemet. Kapitel 3. definerer de funktionelle krav, der er beskrevet ved hjælp af Use Case Teknikken. Som bilag er vedlagt en kort introduktion til Use Case teknikken. Kapitel 4.-6. Specificerer de ikke funktionelle krav til systemet. Kapitel 7. beskriver de ufravigelige designkrav, der skal overholdes ved realiseringen af systemet. Kapitel 9. specificerer et antal delleveringer af systemet. Som bilag findes der en introduktion til Use Case teknikken, det oprindelige kundeoplæg samt en detaljeret beskrivelse af de to HW connectorer og deres signaler. 8

2. GENEREL BESKRIVELSE 2. Systembeskrivelse 2.. Systemoversigt Figur. Oversigt over doseringsmekanikken Figur viser den eksisterende doseringsmekanik, der består af: - Vandbeholder med magnetventil og temperaturføler - Saftbeholder med magnetventil - Driverkredsløb og transformatorer til ventilerne - Betjeningspanel med lysdioder, trykknapper og display. - Mekanisk fremføring af kopholder med positionsdetektorer for kop i holder, startposition og doseringsposition. Fremføringen styres af en stepmotor med motordriverkredsløb. Betjeningspanelet består af et antal lysdioder, der skal vise softdrinkautomatens status samt et display der skal vise temperaturen i vandbeholderen. Derudover er der fire betjeningstaster, hvoraf de to kaldet START og RESET skal styres vha. SDS. De to øvrige betjeningstaster er fast forbundet til de tilhørende ventiler og benyttes ikke af SDS. 9

RESET Figur 2. Betjeningspanelet på doseringsmekanikken Som et yderligere krav til dette projekt er det overordnede hardwaredesign af SDS systemet fastlagt som beskrevet på Figur 3. Det anførte elektronikkort skal udvikles som en del af SDS projektet. SDS - Hardware Windows PC «PC bus» PC I/O Interface kort Elektronikkort Digitalesignaler «Fladkabel 26polet» Analogesignaler «Fladkabel 26polet» Doseringsmekanik Figur 3. Oversigt over hardwarekonfigurationen for softdrinkautomaten 0

2..2 Aktør-kontekst diagram Følgende diagram viser et aktør-kontekst diagram for softdrinkstyringssystemet med de aktører, der logisk kommunikerer med systemet. De enkelte aktører er kort beskrevet i næste afsnit. Diagrammet beskriver vha. aktørerne en oversigt over de eksterne enheder som det ønskede SDS system skal interface til. VandVentil SaftVentil KontrolPanel SoftDrinkautomat- Styring (SDS) KopTransportEnhed StatusPanel Temperatur Føler Temperatur Automatejer Display Figur 4. Aktør-kontekstdiagram for SDS 2..3 Aktørbeskrivelser Her følger en beskrivelse af de enkelte aktører, der repræsenterer grænsefladen til det SDS system, der ønskes udviklet. De præcise specifikationer af grænsefladerne til aktørerne findes i kapitel 4. Aktør navn: Automatejer Beskrivelse: Automatejeren foretager opstart og vedligeholdelse af automaten

Aktør navn: Kontrolpanel Beskrivelse: Der eksisterer et kontrolpanel, hvormed kunden kan betjene systemet. Automatejeren kan dog også benytte dette panel. Kunden betjener softdrinkautomaten vha. kontroltasterne START og RESET. Aktør navn: Statuspanel Beskrivelse: Der eksisterer et statuspanel med et fast defineret antal lysdioder. Dette benyttes primært af automatejeren for at checke om automaten fungerer korrekt. Aktør navn: Koptransportenhed Beskrivelse: Denne aktør repræsenterer den stepmotor og tilhørende styring, der bringer kopholderen fra startpositionen til doseringspositionen samt de tilhørende positionsdetektorer. Der detekteres for hhv. startposition, doseringsposition samt om der er en kop i kopholderen. Aktør navn: Temperaturføler Beskrivelse: Aktøren repræsenterer den temperatursensor, der er anbragt i vandbeholderen. Aktør navn: Temperaturdisplay Beskrivelse: Aktøren repræsenterer et analogt display med tilhørende elektronik, der anvendes til at vise temperatur af vandet i vandbeholderen. Aktør navn: Vandventil Beskrivelse: Aktøren repræsenterer den ventil med tilhørende elektronik, der åbner og lukker for vandet fra vandbeholderen. Aktør navn: Saftventil Beskrivelse: Aktøren repræsenterer den ventil med tilhørende elektronik, der åbner og lukker for saften fra saftbeholderen. 2

2.2 Systemets funktioner Systemets funktioner, de funktionelle krav, er fundet og beskrevet vha. Use Case teknikken. De følgende diagrammer viser systemets funktioner udtrykt som Use Cases. Formålet med disse diagrammer er at give et overblik over funktionaliteten i det system, der skal udvikles. Hver af de på diagrammerne viste Use Cases er detaljeret specificeret i kapitel 3. 2.2. Use Case diagram VandVentil SaftVentil KontrolPanel Fremstil drink KopTransportEnhed SoftDrinkautomatstyring (SDS) StatusPanel Konfigurer automat Overvåg temperatur Temperatur føler Automatejer Temperatur Display StatusPanel Figur 5. Use Case diagram for SDS SDS systemets hovedfunktion er beskrevet vha. Use Casen Fremstil drink, der er den funktion som kunden primært har adgang til via KontrolPanelet. Use Casen Overvåg temperatur muliggør at man kan overvåge vandets temperatur med mulighed for manuelt, at sænke temperaturen ved at hælde koldt vand i vandbeholderen. Use Casen Konfigurer automat giver mulighed for, at automatejeren kan indstille automatens forskellige parametre. 2.3 Systemets begrænsninger Systemet er begrænset til kun at håndtere plastickrus, med et væskevolumen på 80 ml for en normalt fyldt kop. 3

2.4 Systemets fremtid Systemet forventes senere at skulle udbygges med niveaumålere for måling af væskestanden i begge beholdere. Styringen baseres i første omgang på en PC med et IO indstikskort, men dette forventes i fremtiden at skulle erstattes af en microcontroller for derved at kunne nedsætte prisen på softdrinkautomatsystemet Systemet forventes i fremtiden at skulle udbygges med en betalingsenhed. 2.5 Brugerprofil De normale bruger af systemet er kunder, der forventes at kunne anvende automaten ud fra en kort forklaring på frontpladen. Kunderne anvender udelukkende kontrolpanelet til at styre softdrinkautomaten. Automatejeren skal kunne betjene en computer, hvor SDS programmet opstartes og kunne foretage indtastninger af konfigureringsparametrene. 2.6 Krav til udviklingsforløbet Det ønskede system ønskes udviklet vha. objektorienterede design, programmeret i C++ og dokumenteret vha. en delmængde af UML notationen (Unified Modeling Language). 2.7 Omfang af kundeleverance Første udgave af brugervejledningen skal leveres til AD, når kravspecifikationen er godkendt. Efter at SDS systemet er afleveret til AD, udleveres følgende dokumentation til AD: - designdokumentation - programdokumentation med kildetekst. - installationsvejledning - brugervejledning Denne dokumentation leveres på papirform samt på CD-ROM. Kildeteksten til programmer leveres både på papirform og på CD-ROM. 2.8 Forudsætninger Det forudsættes at IHA s doseringsmekanik som vist på Figur er tilgængelig for udviklingsgruppen i nødvendigt omfang under udviklingsforløbet samt at gruppen fra projektets start til slut konstant har en IHA doseringssimulator til sin disposition. 4

3. FUNKTIONELLE KRAV USE CASES 3. Use Case : Fremstil drink Mål: Denne use case gør det muligt for kunden at fremstille en drink, der består af saft og vand i et forudbestemt blandingsforhold. Normalt scenario:. Kunden aktiverer START tasten på kontrolpanelet. 2. Systemet validerer at kopholderen er i startposition, at der er en kop i kopholderen, at vandets temperatur er <=MAX_TEMP, at der er MINIMUM_VAND ml i vandbeholderen og MINIMUM_SAFT ml i saftbeholderen (se konstanternes værdiområde i Use Case 3). [kopholderen er ikke i startposition] [ingen kop i kopholderen] [vandets temperatur >MAX_TEMP] [for lidt vand i vandbeholderen] [for lidt saft i saftbeholderen] 3. Systemet starter koptransporten, der kører kopholderen frem til doseringspositionen og aktiverer statuslampen FREM på statuspanelet under fremkørslen. 4. Systemet aktiverer lampen POS.DOS på statuspanelet når doseringspositionen nås. 5. Systemet beregner saft- og vandmængden ud fra doseringsforholdet del saft til X dele vand (se Use Case 3 Konfigurer automat). Påfyldingsvolumen er for den valgte koptype: 80 ml ±0%. Doseringsforholdet :X skal have en nøjagtighed på ±0%. 6. Systemet doserer den beregnede saftmængde ved at aktivere statuslampen SAFT på statuspanelet og dermed også saftventilen. [koppen fjernes fra kopholderen] 7. Systemet doserer den beregnede vandmængde ved at aktivere statuslampen VAND på statuspanelet og dermed også vandventilen. [koppen fjernes fra kopholderen] 8. Systemet aktiverer koptransporten, der kører saftholderen tilbage til startpositionen og aktiverer statuslampen TILBAGE på statuspanelet under tilbagekørslen. 9. Systemet aktiverer statuslampen POS.START på statuspanelet når startpositionen nås. Systemet nedjusterer den tilbageværende vandmængde og saftmængde med den doserede mængde vand og saft. Undtagelser: Trin 3-7 - Kunden aktiverer kontroltasten RESET: Evt. igangværende fremkørsel eller dosering afbrydes og de tilhørende statuslamper på knappanelet slukkes, hvorefter der fortsættes ved pkt. 8. Kopholderen er ikke i startposition: Kopholderen køres tilbage til startpositionen, hvorefter Use Casen afsluttes. Ingen kop i kopholderen: Udskriv fejlmeddelelsen Manglende kop i kopholderen på skærmen, hvorefter Use Casen afsluttes. Vandets temperatur >MAX_TEMP: Udskriv fejlmeddelelsen For høj vandtemperatur på skærmen, hvorefter Use Casen afsluttes. For lidt vand i vandbeholderen: 5

Udskriv fejlmeddelelsen For lidt vand i vandbeholderen påfyld vand indtil max.grænsen og genstart systemet, hvorefter use casen afsluttes. For lidt saft i saftbeholderen: Udskriv fejlmeddelelsen For lidt saft i saftbeholderen påfyld saft indtil max.grænsen og genstart systemet, hvorefter use casen afsluttes. Koppen fjernes fra kopholderen: Stop doseringen af vand og saft og udskriv fejlmeddelelsen Stop pga. manglende kop aktiver RESET tasten. Systemet afventer at kunden aktiverer RESET kontroltasten, hvorefter Use Casen fortsætter ved pkt. 8. 3.. TILLÆG TIL USECASE Til Softdrink Compagny A/S, Ændringsordre. Automatdistributøren A/S har konstateret en uhensigtsmæssighed ved fremstilling af flere softdrinks efter hinanden. Hvis ikke koppen fjernes efter første fremstilling, løber koppen over ved næste fremstilling. Derfor skal følgende funktion tilføjes automaten og indarbejdes i kravspecifikationen: Koppen skal være fjernet før en ny drink kan fremstilles i automaten. Med venlig hilsen S.F.Drinksen S.F.Drinksen, Automatdistributøren A/S 6

3.2 Use Case 2: Overvåg temperatur Mål: Denne use case måler og viser kontinuert temperaturen i vandbeholderen og indikerer hvis temperaturen er for høj. Normalt scenario: Så længe systemet er tændt:. Systemet indlæser en værdi, der repræsenterer temperaturen fra temperaturføleren 2. Systemet validerer den indlæste værdi [fejl i indlæst værdi] 3. Systemet skalerer temperaturen til grader celcius med en nøjagtighed indenfor ±0,5 4. Systemet udlæser temperaturen til displayet 5. Systemet tester om temperaturen er > MAX_TEMP er dette tilfældet tændes lampen Væske alarm i statuspanelet ellers slukkes lampen. Undtagelser: Fejl i indlæst værdi: Der udlæses 0 til displayet lampen Væske alarm slukkes. 7

3.3 Use Case 3: Konfigurer automat Mål: Denne use case gør det muligt ved opstart af systemet at ændre SDS systemets defaultværdier. Normalt scenario:. Automatejeren vælger ved opstart af systemet konfigurering vha. en indbygget konfigureringskontakt. 2. Systemet giver mulighed for at konfigurere: 2.A. Blandingsforholdet X mellem saft og vand: del saft : X dele vand, hvor X skal kunne ændres mellem og 0. Defaultværdien for blandingsforholdet er :5. 2.B. Temperaturgrænsen MAX_TEMP for vandets maksimumtemperatur: MAX_TEMP, skal kunne indstilles mellem 0-20 grader celsius. Defaultværdien for MAX_TEMP er 6 grader celsius. 2.C. Konstanten MINIMUM_VAND i ml, der indikere at automaten skal påfyldes vand: MINIMUM_VAND, skal kunne indstilles mellem 500-000 ml. Defaultværdien er 500 ml. 2.D. Konstanten MAXIMUM_VAND i ml, der indikerer at automatens vandbeholder er fyldt til et angivet maksimums mærke. MAXIMUM_VAND, skal kunne indstilles mellem 2000-4500 ml. Defaultværdien er 4500 ml. 2.E. Konstanten MINIMUM_SAFT i ml, der indikerer at automaten skal påfyldes vand. MINIMUM_SAFT, skal kunne indstilles mellem 500-000 ml. Defaultværdien er 500 ml. 2.F. Konstanten MAXIMUM_SAFT i ml, der indikerer at automatens vandbeholder er fyldt til et angivet maksimums mærke. MAXIMUM_SAFT, skal kunne indstilles mellem 2000-4500 ml. Defaultværdien er 2000 ml. 3. Automatejeren ændrer via computerens tastatur og skærm en eller flere af disse konfigureringsparametre. [automatejeren fortryder ændringerne] 4. Systemet gemmer de ændrede parametre og anvender disse fremover indtil SDS systemet slukkes eller genstartes. Undtagelser: Automatejeren fortryder ændringerne: Systemet anvender de angivne defaultværdier, hvorefter Use Casen afsluttes. 8

4. EKSTERNE GRÆNSEFLADE KRAV 4. Bruger-grænseflade Kunden og automatejeren betjener SDS vha. kontrolpanelet og kan se automatens status via statuspanelet. Kontrolpanel med tasterne: - START - RESET Signalerne findes beskrevet på bilaget Digital Connector. Statuspanel med lysdioderne: - Position Start: indikerer at kopholderen er i startposition - Frem: indikerer at kopholderen kører frem - Pos.Dos.: indikerer at kopholderen er i doseringsposition - Saft: indikerer at der doseres saft - Vand: indikerer at der doseres vand - Tilbage: indikerer at kopholderen kører tilbage -Væske varm: indikerer at vandet er for varmt Signalerne findes beskrevet på bilaget Digital Connector. Temperaturdisplay: Displayet skal vise vandets temperatur i grader celcius. Displayet har et kredsløb, der virker som et voltmeter og styres med et analogt temperatursignal. Displayet har fuldt udslag ved ±2,0 V. Ved 999 mv vises 99.9. Signalerne findes på bilaget Analog Connector. 4.2 Hardware-grænseflade Forbindelsen mellem SDS foregår via to connectorer en Digial og en Analog connector. Digital connector: 26 polet connector på doseringsmekanikkens frontpanel for tilslutning af digitale signaler. Forbindelser og aktive niveauer er angivet på bilaget Digital connector. Analog connector: 26 polet connector på doseringsmekanikkens frontpanel for tilslutning af analoge signaler. Forbindelser og aktive niveauer er angivet på bilaget Analog connector. Temperaturføler: er anbragt i vandbeholderen og er af typen N448 forbindelserne fremgår af bilaget Analog connector. 9

Styresignalerne til vandventilen og saftventilen er koblet fysisk sammen med de tilsvarende statuslamper på statuspanelet. Koptransportenheden: er realisert vha. en stepmotor og tre detektorer. Kopholderen drives frem og tilbage af en skruespindel, der drives af stepmotoren. Stepmotoren styres af to styresignaler STEPMOTOR A og STEPMOTOR B. Faseforskydningen af disse signaler bestemmer om der køres frem eller tilbage. Signalerne skal leveres til Digital connector og skal være CMOS kompatible. Der er motordriver indbygget i doseringsmekanikken. Stepmotoren har 48 step/omdrejning. Den maksimale start/stop frekvens kendes ikke præcist, men forventes at være omkring 00 step/sek. Den anvendte stepmotor er af typen SAIA UHD23/45 (2V). Spindelen til kopholderen har en stigning på 5 mm/omdrejning. Frem STEPMOTOR A STEPMOTOR B Tilbage STEPMOTOR A STEPMOTOR B Step nr 2 3 4 5 6 7 8 Detektorerne detekterer startpositionen, doseringspositionen samt om der er en kop i kopholderen. 4.3 Kommunikations-grænseflade Ingen 4.4 Software-grænseflade Ingen 20

5. KRAV TIL SYSTEMETS YDELSE Ingen 6. KVALITETSFAKTORER Pålidelighed: Der lægges stor vægt på at systemet under ingen omstændigheder må dosere hverken vand eller saft, når der ikke er en kop under påfyldingspositionen ligesom en kop ikke må overfyldes så der spildes. Brugervenlighed: Kundernes betjening er givet på forhånd via den fastlagte doseringsmekanik. Brugervenlighed for automatejeren skal opnås gennem realisering af denne kravspecifikation. Der lægges vægt på at opstart og vedligeholdelse af systemet kan foretages ud fra de instruktioner, der gives på systemets computerskærm. Integritet: Ved strømudfald eller ved genstart af systemet skal de to tanke påfyldes med den mængde væske, der svarer til startmængden, da systemet ikke skal gemme informationer om de udførte doseringer. 7. DESIGN KRAV Systemet skal udvikles vha. en standard Windows PC med et input/output indstikskort af typen Humusoft AD 52 I/O. Dette skal simulere en styring baseret på en microcontroller. Derudover skal der udvikles et elektronikkort med den nødvendige hardware, der sammenkobler doseringsmekanikkens signaler fra de to connectorer med PC indstikskortes signaler. 8. ANDRE KRAV 8. Myndighedskrav Systemet skal overholde EMC direktivet og skal godkendes af Demko. 8.2 Øvrige krav Ingen 2

9. DELLEVERINGER Projektet ønskes udviklet vha. følgende delleveringer:. dellevering: Implementering af Use Casen Fremstil drink (uden validering af temperaturkrav). 2. dellevering: Implementering af Use Casen Overvåg temperatur samt tilføjelse af funktionaliteten i Use Casen Fremstil drink, der validerer at temperaturen er < MAX_TEMP for at fremstille en drink 3. dellevering: Tilføjelse af Use Casen Konfigurer automat, der muliggør konfigurering af automatens parametre. 22

0. BILAG 0. Introduktion til Use Case teknikken Use Case teknikken er en teknik der anvendes til at specificere de funktionelle krav i en kravspecifikation. Use Case teknikken har vundet international anerkendelse og er også i Danmark allerede med succes anvendt som specifikationsmetode i et stort antal projekter. For detaljer henvises til boksen på næste side. Centrale begreber i Use Case teknikken er begreberne aktør og Use Case. En aktør kan enten være en person, et andet system eller en hardware enhed. En aktør er pr. definition udenfor det system, der skal udvikles, men er i samspil med systemet. Til at navngive en personaktør anvendes de roller personen har overfor systemet. Har en given person flere roller så optræder hver rolle som en aktør. En aktør vises som en tændstiksfigur med aktørens navn påført under figuren. Alternativt kan man vælge at vise aktøren som en firkant med stereotypen «aktør». Aktør navn «aktør» Aktør navn En Use Case beskriver en funktionalitet der leveres af systemet til en given aktør. En god Use Case skal levere et målbart resultat til en given aktør. En anden måde at udtrykke dette på er, at kunden til systemet vil betale for den funktionalitet som Use Casen stiller til rådighed. En Use Case beskriver en selvstændig og komplet funktionalitet. En Use Case vises på et Use Case diagram som en oval med navnet på Use Cases enten i eller under ovalen. Hver Use Case er forbundet til mindst een aktør med en linje, der kan have en pil. Pilen angiver aktiveringen af Use Casen dvs. initiativet. I figuren herunder er det aktøren der aktiverer use casen. I andre tilfælde kan det være systemet selv, der er initiativtager. Aktør navn Use Case navn Eksempler på Use Cases for et banksystem, hvor en aktør med navnet Bank Kunde via internettet f.eks. kan udføre Use Casene: Overfør penge, Betal regninger og Se kontoposteringer. 23

Hver Use Case har en specifikation, der vha. tekst beskriver præcis hvad Use Casen skal kunne. I nogle tilfælde kan beskrivelsen være suppleret med forskellige diagrammer (f.eks. sekvens- eller tilstandsdiagrammer). Om Use Case teknikken: Use Case teknikken er udviklet af svenskeren Ivar Jacobson og først beskrevet i hans bog Object- Oriented Software Engineering A Use Case driven approach, Addison-Wesley 992. Use Case teknikken er baseret på en simpel grafisk notation. Denne notation indgår i industristandarden UML (Unified Modeling Language), der er en standardnotation for objektorienteret modellering. UML er ophøjet til standard i november 997 af OMG (Object Management Group), der også står bag standarden CORBA. 24

0.2 Kundeoplæg Til Softdrink Compagny A/S, Automatdistributøren A/S ønsker tilbud på udvikling af hardware og software til styring af en eksisterende doseringsmekanik. Styringen skal sammen med denne mekanik udgøre en softdrinkautomat, der skal sælges til almindelige forbrugere. Den ønskede funktionen af automaten skitseres i dette oplæg. En softdrink ønskes fremstilles ved at en passende mængde saft og vand blandes i en kop på følgende måde: Der anbringes en kop i en kopholder. Ved et tryk på en startknap skal koppen køres frem til doseringspositionen, hvis: - der er en kop i holderen og - koppen er i startposition og - vandets temperatur er passende lav og - resetknappen ikke er aktiveret Koppen skal stoppe i doseringsposition, hvorefter dosering af saft og vand skal påbegyndes. For at opnå en god blanding af saft og vand ønskes saften doseret før vandet. Når doseringen af saft og vand er afsluttet, skal koppen køre tilbage til startpositionen. Automaten skal i øvrigt overholde følgende krav: - Der skal være indikering af automatens tilstand og vandets temperatur. - Afvigelse af påfyldningsvolumen må højst være ±0% - Dosering skal være i forholdet del saft til 5 dele vand, med en nøjagtighed på ±0%. - Blandingsforholdet skal evt. kunne indstilles. - Dosering må kun ske når vandets temperatur er 6 C eller derunder. Denne parameter må også gerne kunne varieres. - Aktivering af resetknappen skal stoppe processen og køre kopholderen tilbage til startpositionen. - Software til styringen skal bestå af et program skrevet i C++ og dokumenteres vha. UML. Med venlig hilsen S.F.Drinksen S.F.Drinksen, Automatdistributøren A/S 25

0.3 Bilag Digital Connector Tabellen angiver signalerne i Digital connector på doseringsmekanikken. Pin nr Funktion Signal fra Doseringsmekanik Signal til Doseringsmekanik Beskrivelse Start n.c X Normally Closed kontakt. Fællesben til stel 2 Start n.o. X Normally Open kontakt. Fællesben til stel. 3 4 Stepmotor A X CMOS kompatibelt signal 5 Stepmotor B X CMOS kompatibelt signal 6 7 Reset n.c. X Normally Closed kontakt. Fællesben til stel 8 Reset n.o. X Normally Open kontakt. Fællesben til stel. 9 Pos. Start X CMOS kompatibelt signal 0 Pos. Dos. X CMOS kompatibelt signal Forbundet til Analog connector pin 3. 2 Kop i holder X CMOS kompatibelt signal 3 4 5 6 Pos. Start X Lysdiode anode. Katode til stel. 7 Frem X Lysdiode anode. Katode til stel. 8 Pos. Dos. X Lysdiode anode. Katode til stel. 9 Saft X Lysdiode anode. Katode til stel. Styresignal til saftventil 20 Vand X Lysdiode anode. Katode til stel. Styresignal til vandventil 2 Tilbage X Lysdiode anode. Katode til stel. 22 Væske varm X Lysdiode anode. Katode til stel. 23 5 V X Max 0,5A 24 5 V X 25 Digital Stel X 26 CMOS signaler er positive logik, dvs. funktionen er aktiv når signalet er høj. 26

0.4 Bilag Analog Connector Tabellen angiver signalerne i Analog connector på doseringsmekanikken. Pin nr Funktion Signal fra Doseringsmekanik Signal til Doseringsmekanik Beskrivelse Temperaturføler X Føler katode 2 Temperaturføler X Føler anode 3 Forbundet til Digital connector pin. 4 5 6 Temperatursignal 7 8 9 0 2 3 4 5 6 7 8 9 20 2 22 23 +5 V X Max 0, A 24-5 V X Max 0, A 25 Analog stel X 26 Analog stel X X Analog signal, område ±2,0 V til display 27

2 SYSTEMARKITEKTURDESIGN 2. GENERAL SYSTEMBESKRIVELSE Den overordnede systemarkitektur er fastlagt allerede i kravspecifikationen, da det er et ufravigeligt krav, at systemet skal implementeres på denne overordnede måde som vist på Figur. Softdrinkautomatstyringen skal vha. SW og HW og en eksisterende doseringsmekanik implementere en softdrinkautomat. Doseringsmekanikken er beskrevet i kravspecifikationen. SDS - Hardware Windows PC Windows PC «PC bus» PC I/O Interface kort Elektronikkort Printkort Digitalesignaler «Fladkabel 26polet» Analogesignaler «Fladkabel 26polet» Doseringsmekanik Figur. Deploymentdiagram for Softdrinkautomat Figuren er et UML deploymentdiagram, der viser de fysiske HW enheder, der anvendes til at implementere en softdrinkautomat. Doseringsmekanikken repræsenterer her enten den endelige mekanik eller simulatorboksen. I begge tilfælde har disse den samme fysiske grænseflade, der består af to fladkabler. Detaljer om disse interfaces findes i bilag til kravspecifikationen. Windows-PC en repræsenterer en af IHAs standard-pc er, der er monteret med et I/O Interface kort af typen Humusoft AD 52 I/O. I SDS projektet designes dels softwaren, der udvikles i C++ og afvikles på Windows PC en og dels designes den HW, der interfacer mellem I/O interfacekortet og doseringsmekanikken. Den ønskede hardware implementeres fysisk på det viste printkort. 2.3 EKSTERNE GRÆNSEFLADER SDS systemets eksterne grænseflader til doseringsmekanikken er specificeret som bilag til kravspecifikationen. Brugergrænsefladen til PC en, der betjenes af automatejeren, består af en simpel tekstbaseret konsoldialog vha. computerens skærm og tastatur. Ved hjælp af denne dialog kan programmet opstartes, konfigureres og overvåges for evt. fejl. 28

3 DESIGNDOKUMENTATION 3. SOFTWAREDESIGN Designet af softwaren er foretaget som et Objektorienteret design baseret på klasser og associationer. Designet er dokumenteret vha. et UML klassediagram, et tilstandsdiagram og flere sekvensdiagrammer samt supplerende dokumentation for klasser, operationer og attributter. 3.. KLASSEDIAGRAM UML klassediagrammet på Figur 2 viser de klasser, der indgår i softwaren og de associationer, der er mellem disse. For hver af disse klasser, findes der en specifikationsfil (*.h), der har samme navn som klassen f.eks. Timer.h og en tilsvarende C++ implementeringsfil (*.cpp) f.eks. Timer.cpp. Hver klasse er detaljeret beskrevet i kapitel 2.4.4. KontrolPanel -objinputoutput : InputOutput +checkfortast(in id : string) : bool AutomatBrugerInterface -objkonfigureringsswitch : KonfigureringsSwitch -nyedit : KonfigureringsParametre -valg : int +editkonfigparametre() -rundopned(in tal : double) : int Aflæser taster Anvender Kan editer KonfigureringsParametre -intralisering : bool -doseringsforhold : int -maxtemp : int -maxsaft : int -minsaft : int -maxvand : int -minvand : int +KonfigureringsParametre() +skrivdoseringsforhold(in nydoseringsforhold : int) +skrivmaxtemp(in nymaxtemp : int) +skrivmaxsaft(in nymaxsaft : int) +skrivminsaft(in nyminsaft : int) +skrivmaxvand(in nymaxvand : int) +skrivminvand(in nyminvand : int) +laesdoseringsforhold() : int +laesmaxtemp() : int +laesmaxsaft() : int +laesminsaft() : int +laesmaxvand() : int +laesminvand() : int Aflæser Læser maxtemp Aflæser Anvender DoseringsEnhed +SaftMaengdeMillisekunder : int +VandMaengdeMillisekunder : int -restsaftmaengde : int -restvandmaengde : int -Konfig : KonfigureringsParametre -doseringsmaengdesaft : double -doseringsmaengdevand : double +DoseringsEnhed() +checkvand() : bool +checksaft() : bool +resetvand() +resetsaft() +beregnsaftmaengde() +beregnvandmaengde() +saftretur(in saft : int) +vandretur(in vand : int) Timer -startmsec : int -startsec : int -timeouttid : int -tidgaaet : int -starttid : _timeb -tidnu : _timeb +Timer() +Start(in milliseconds : int) +Stop() : int +CheckForTimeout() : bool TemperaturSensor -temp : double -getanaloginput : double -resultat : unsigned short -objad52 : AD52 +TemperaturSensor() +opdatertemp() +laestemperatur() : double +fejlcheck() : bool Læser fra Anvender Aflæser InputOutput -intralisering : bool -outputstatus : int -objad52 : AD52 +InputOutput() +inputbit(in portnummer : int) : bool +outputbit(in portnummer : int, in vaerdi : bool) +printoutputbit() +printinputbit() Styre/ aflæser AD52 KonfigureringsSwitch -objinputoutput : InputOutput +checkkonfigurering() : bool Styre Aflæser Styre/aflæser Aflæser taster SoftDrinkStyring -usecase : int -usecase2 : int -usecase3 : int -objtimersaft : Timer -objtimervand : Timer -objtemperaturovervaager : TemperaturOvervaager -objstatuspanel : StatusPanel -objdoseringsenhed : DoseringsEnhed -objkoptransportenhed : KopTransportEnhed -objkonfigureringsswitch : KonfigureringsSwitch -objkontrolpanel : KontrolPanel -objautomatbrugerinterface : AutomatBrugerInterface -objkonfigureringsparametre : KonfigureringsParametre +SoftDrinkStyring() +run() KopTransportEnhed -fyldtkop : bool -objinputoutput : InputOutput +KopTransportEnhed() +startmotorfrem() +startmotortilbage() +stopmotor() +checkforkopiholder() : bool +checkforstartposition() : bool +checkfordoseringsposition() : bool +checkforfyldtkop() : bool +kopfyldt(in status : bool) Styre Styre Anvender StatusPanel -objoutput : InputOutput +taendlampe(in id : string) +sluklampe(in id : string) TemperaturOvervaager -aktueltemperatur : double -maxtemp : int -objkonfigureringsparametre : KonfigureringsParametre -objtemperatursensor : TemperaturSensor -objtemperaturdisplay : TemperaturDisplay -objstatuspanel : StatusPanel +TemperaturOvervaager() +checkformaxtemperatur() : bool +overvaagerogopdatere() : bool Styre Udlæser til TemperaturDisplay -objad52 : AD52 +udlaestemperatur(in temp : double) +AD52() +getdigitalinput() : int +setdigitaloutput(in value : int) +getanaloginput(in ch : int, in range : int) : short +setanalogoutput(in channel : int, in value : int) Styre Aflæser Figur 2. Klassediagram for Softdrinkautomatstyring 29

3..2 TILSTANDSDIAGRAM FOR KLASSEN SOFTDRINKSTYRING Tilstandsdiagram for SDS Version.0 07/2/04 Initier SDS check for start tast Konfigurer afsluttet Konfigurering do / editering af konfigureringsparametre start tasten er trykket Klar til start procedurer entry: check startposition ikke i startposition er i startposition Klar til drink entry: tænd startpos. lampe exit: sluk startpos. lampe Start[startbetingelser opfyldt] Kør til doseringsposition entry: start motor frem tænd frem lampe exit: stop motor sluk frem lampe Reset doseringsposition nået/ tænd dos.pos. lampe kop fjernet Dosering af saft entry: start saftdoseringstimer aktiver saft lampe+ventil exit: deaktiver saft lampe+ventil Reset safttimeout kop fjernet Afvent reset do / udskriv "Softdosering afbrudt - modregner ikke doseret saft startposition nået Reset Dosering af vand enty: start vanddoseringstimer aktiver vand lampe+ventil exit: deaktiver vand lampe+ventil vandtimeout Kør til startposition entry: sluk dos.pos. lampe tænd tilbage lampe start motor tilbage exit: stop motor sluk tilbage lampe Reset 30 Figur 3. Tilstandsdiagram for klassen SoftDrinkStyring

3..3 SEKVENSDIAGRAMMER Her vises et delscenario fra Use Casen Fremstil Drink, scenariet viser forløbet fra, at brugeren aktiver Start tasten og til automaten er klar til at dosere en drink. 3..3. USE CASE - FREMSTIL DRINK. :SoftdrinkStyring :KontrolPanel :StatusPanel :KopTransportEnhed :TemperaturOvervaager :DoseringsEnhed Timer Punkt Start-tast aktiveret checkfortast(start) Punkt 2 checkforkopiholder() If false Fejlmeddelelse + Stop use case checkformaxtemperatur() checkvand() checksaft() If true Fejlmeddelelse + Stop use case checkforfyldtkop() If false Ikke i udgangsposition. Spring til pkt. 8 (RESET) checkforstartposition() Punkt 3 checkfortast(reset) startmotorfrem() taendlampe(frem) Punkt 4 Do until true or RESET checkfortast(reset) checkfordoseringsposition() stopmotor() :SoftdrinkStyring :KontrolPanel :StatusPanel :KopTransportEnhed :TemperaturOvervaager :DoseringsEnhed Timer sluklampe(frem) Punkt 5 & 6 checkfortast(reset) beregnsaftmaengde() If RESET Spring til pkt. 8 (RESET) Start() taendlampe(saft) If RESET kør saftretur() (DoseringsEnhed) + Spring til pkt. 8 (RESET) checkfortast(reset) kopfyldt(true) If false kør saftretur() (DoseringsEnhed) + vent på RESET-tast. CheckForTimeout() checkforkopiholder() sluklampe(saft) Punkt 5 & 7 checkfortast(reset) If RESET Spring til pkt. 8 (RESET) beregnvandmaengde() Start() taendlampe 3

:SoftdrinkStyring :KontrolPanel :StatusPanel :KopTransportEnhed :TemperaturOvervaager :DoseringsEnhed Timer checkfortast If RESET kør vandretur() (DoseringsEnhed) + Spring til pkt. 8 (RESET) CheckForTimeout() checkforkopiholder() Punkt 8 sluklampe(vand) I tilfælde af RESET stopmotor() sluklampe(frem) startmotortilbage() Punkt 9 taendlampe(tilbage) Do until true or RESET checkforstartposition() stopmotor() sluklampe(tilbage) taendlampe(pos.start) 2.4.3.2 USE CASE 2 - OVERVÅG TEMPERATUR Scenario: Kontrolere temperaturen. OvervaagTemperatur TemperaturSensor TemperaturDisplay StatusPanel LaesTemperatur() Maxtemperatur < Temperatur: LaesTemperatur() Maxtemperatur >= Temperatur: LaesTemperatur() UdlaesTemperatur() Udskrives et 0 til displayet lampen "Væske varm" slukkes 32

3..3.3 USE CASE 3 - KONFIGURER AUTOMAT AutomatBrugerInterface KonfigureringsParametre skrivdoseringsforhold() Scenario: Brugeren konfigurer SoftDrinkStyringen laesdoseringsforhold() skrivmaxtemp() laesmaxtemp() skrivmaxsaft() laesmaxsaft() skrivminsaft() laesminsaft() skrivmaxvand() laesmaxvand() skrivminvand() laesminvand() 33

3..4 KLASSEBESKRIVELSER 3..4. SOFTDRINKSTYRING Ansvar: Denne klasse er hovedklassen i SDS systemet, der har ansvaret for den overordnede styring af softdrinkautomaten. Klassen implementerer logikken i Use Casen Fremstil drink. Funktionaliteten er designet vha. en tilstandsmaskine, der er vist på tilstandsdiagrammet i kapitel 4.2. Der oprettes en instans af denne klasse i hovedprogrammet main, hvorefter main aktiverer klassens run() funktion. Klassen har attributterne restsaftmaengde og restvandmaengde, der justeres hver gang, der er doseret en drink. Attributter: usecase : int Styrer programmet i UseCase objtimersaft : Timer Kontroller timeren for saftet objtimervand : Timer Kontroller timeren for vandet objtemperaturovervaager : TemperaturOvervaager Kontroller aktivitet fra TemperaturOvervaager objstatuspanel : StatusPanel Kontroller aktivitet fra SatusPanel objdoseringsenhed : DoseringsEnhed Kontroller aktivitet fra DoseringsEnhed objkoptransportenhed : KopTransportEnhed Kontroller aktivitet fra KopTrasnportEnhed objkontrolpanel : KontrolPanel Kontroller aktivitet fra KontrolPanel objautomatbrugerinterface : AutomatBrugerInterface Kontroller aktivitet fra AutomatBrugerInterface objkonfigureringsparametre : KonfigureringsParametre Kontroller aktivitet fra KonfigureringsParametre Operationer: SoftDrinkStyring() Konstruktor run() Aktiverer SDS programmet og indeholder hovedløkken i SDS programmet. Programmet implementeres vha. tilstandsmaskinen, der er vist på Figur 3. 34

3..4.2 KONFIGUERINGSPARAMETRE Ansvar: Klassen har ansvaret for SDS systemets konfigureringsparametre. Hver parameter har en defaultværdi, der kan ændres af automatejeren under konfigurering. Klassen har operationer til hhv. at læse og skrive de enkelte attributter. Attributter: doseringsforhold: static int Angiver doseringsforholdet :X mellem saft og vand, defaultværdi er 5. maxtemp: static int Angiver max vandtemperatur for en drink i /0 grader celsius, default 6 grader maxsaft: static int Angiver max saftmængde i saftbeholderen ved opstart i ml, defaultværdi er 4 l minsaft: static int Angiver min saftmængden i saftbeholderen i ml, defaultværdi 0,5 l. maxvand: static int Angiver max vandmængde i vandbeholderen ved opstart i ml, defaultværdi er 4 l minvand: static int Angiver min vandmængden i vandbeholderen i ml, defaultværdi 0,5 l. intralisering : static bool Sætter alle parametre til default Operationer: Følgende operationer anvendes til at ændre defaultværdierne og aflæse de aktuelle værdier. skrivdoseringsforhold(in nydoseringsforhold : int) Skriver ny værdi for doserings forhold laesdoseringsforhold(): int Læser doserings forhold skrivmaxtemp(in nymaxtemp : int) Skriver ny værdi for maximum temperatur laesmaxtemp(): int Læser maximum temperatur skrivmaxsaft(in nymaxsaft : int) Skriver nyt værdie for maximum saft laesmaxsaft(): int Læser maximum værdie for saft skrivminsaft(in nyminsaft : int) Skriver nyt værdie for minimum saft laesminsaft(): int Læser minimum værdie for saft skrivmaxvand(in nymaxvand : int) Skriver nyt værdie for maximum vand laesmaxvand(): int Læser maximum værdie for vand skrivminvand(in nyminvand : int) Skriver nyt værdie for minimum vand laesminvand(): int Læser minimum værdie for vand KonfigureringsParametre() Konstruktor 35

3..4.3 TEMPERATUROVERVAAGER Ansvar: Klassen har ansvaret for at overvåge og vise vandets temperatur. Attributter: aktueltemperatur : double Måler den aktuelle temperatur. maxtemp : int Maximal temperatur. objkonfigureringsparametre : KonfigureringsParametre Henter maxtemp fra KonfigureringsParametre objtemperatursensor : TemperaturSensor Henter temperaturen fra TemperaturSensor objtemperaturdisplay : TemperaturDisplay Sender værdier til TemperaturDisplay objstatuspanel : StatusPanel Styrer lysdioden VAESKE_VARM via StatusPanel Operationer: checkformaxtemperatur() : bool Checker om den aktuelle temperatur er mindre en MAX_TEMP. overvaagerogopdatere(void) : bool Overvåger temperaturen og opdaterer display. TemperaturOvervaager() Konstruktor. 3..4.4 TIMER Ansvar: Klassen implementerer en software timer. Timeren kan startes og stoppes. Timeren tæller ned til nul. checkfortimeout checker status for timeren. Attributer: startmsec : int Værdie for millisekunder i starten startsec: int Væride for sekunder i staretn timeouttid : int Værdie for timeouttid i starten tidgaaet : int Hovr meget tid er gået starttid : _timeb Variablen for timeren tidnu: _timeb Variable for tiden som er tilbage 36 Operationer: checkfortimeout() : bool Checker om tiden er over timeouttid. start(in milliseconds : int) Starter tiden. stop() : int Stopper tiden. Timer () Konstruktor

3..4.5 AUTOMATBRUGERINTERFACE Ansvar: Klassen er ansvarlig for at kommunikere med automatbrugeren dvs. med automatejeren, der har mulighed for at konfigurere automaten vha. operationen editerkonfigparametre. Klassen SoftDrinkStyring anvender AutomatBrugerInterface til at udskrive meddelelser på skærmen til brugeren vha. operationen udskrivtekst. Attributter: valg : int Variable for valg af menuen. objkonfigureringsswitch : KonfigureringsSwitch Checker om KonfigureringsSwitchen er slået fra eller ikke, via SoftDrinkStyring. nyedit : KonfigureringsParametre Skriver ny værdie til maxværdierne i KonfigureringsParametre. Operationer: editkonfigparametre() Rediger konfigurations parameter. rundopned (in tal : double) : int Afrunder værdier til hel tal. 3..4.6 KONTROLPANEL Ansvar: Klassen er SW interface til doseringsmekanikkens kontroltaster START og RESET. Klassen indeholder en operation til at teste om der er aktiveret en tast og en operation til at aflæse den konkrete tast. Attributter: objinputoutput : InputOutput Checker om START eller RESET knappen bliver trykket, via InputOutput. Operationer: checkfortast(in id : string) : bool Checker om kontroltasterne START og RESET aktiveres. 3..4.7 KONFIGUERINGSSWITCH Ansvar: Klassen varetager SW interface til den konfigureringsswitch, der implementeres på elektronikkortet. Attributter: objinputoutput : InputOutput Checker om KonfigureringsSwithcen er slået fra eller ikke via InputOutput. Operationer: checkkonfigurering() : bool Checker om KonfigureringsSwithcen er slået fra eller ikke via Input Output, returner true eller false 37

3..4.8 KOPTRANSPORTENHED Ansvar: Klassen er SW interface til den elektronik, der styrer hhv. stepmotor og aflæser positionssensorer. Attributter: fyldtkop : bool Checker om kopen er fyldt eller ikke. objinputoutput : InputOutput Checker om motorens status via InputOutput Operationer: startmotorfrem() Kører motor frem startmotortilbage() Kører motor tilbage stopmotor() Stopper motor checkforkopiholder() : bool Checker om det er en kop i holderen checkforstartposition() : bool Checker for koppen er i startposition checkfordoseringsposition() : bool Checker for koppen er i doseringsposition checkforfyldtkopholder() : bool Checker for koppen er fyldt kopfyldt (in status : bool) Checker for fyldtkop status KopTransportEnhed () Konstruktor 3..4.9 STATUSPANEL Ansvar: Klassen er SW interface til doseringsmekanikkens status lamper. Hver lampe har en entydig id (en enumeration type), der anvendes til hhv. at styre og slukke en given lampe. Lamperne Vand og Saft er specielle idet de samtidig også styrer hhv. vand og saftventilen. LampeId = (SAFT, VAND, FREM, TILBAGE, VAESKE_VARM, ALLE). Bemærk at lamperne: (POS_START, POS_DOS) bliver styret via hardwaren Attributter: objoutput : InputOutput Tænder og slukker lampene via InputOutput Operationer: taendlampe(id : string) Tænd lampe sluklampe(id : string) Sluk lampe 38

3..4.0 TEMPERATURDISPLAY Ansvar: Klassen er SW interface til den elektronik, der anvendes til at vise vandets temperatur på temperaturdisplayet. Attributter: objad52 : AD52 Læser temperaturen til displayet via AD52 Operationer: udlaestemperatur(in temp : double) Viser vandets temperatur på display. 3..4. TEMPERATURSENSOR Ansvar: Klassen er SW interface til den elektronik, der indlæser en temperaturværdi fra en temperaturføler i vandbeholderen. Attributter: temp : static double Variable for anden udrejning af værdier fra føleren getanaloginput : double Henter værdier fra føleren via AD52 resultat : unsigned short Variable for første udrejning af værdier fra føleren objad52 : AD52 Henter værdier fra føleren via AD52 Operationer: TemperaturSensor() Konstruktor laestemperatur() : double Indlæser temperaturen i vandbeholderen. opdatertemp() Checker hele tiden for temperaturen. fejlcheck() : bool Validerer om signal fra føleren er ok. 39

3..4.2 DOSERINGSENHED Ansvar: Beregn saft- og vandmængden der skal fyldes i koppen og omregn til antal sekunder ventilen skal være åben. Fratræk den doserede væskemængde fra væskemængden i beholderen. Reset væskemængde i beholderen til MAX (til brug ved påfyldning). Tjek om væskemængden i beholderen er over MIN. Udregner resterende væskemængde fra resttiden og ligger det til væskemængden i beholderen i tilfælde af reset under væskedosering. Attributter: restsaftmaengde: int Hvor meget saft er tilbage restvandmaengde: int Hvor meget vand er tilbage doseringsmaengdesaft: double Hvor meget saft skal til en dosering. doseringsmaengdevand: double Hvor meget vand skal til en dosering Konfig : KonfigureringsParametre Konfigurerer værdier til rådighed SaftMaengdeMillisekunder: int En formel hvor det er regnet hvor lang tid ventilen skal være åben ved dosering VandMaengdeMillisekunder: int En formel hvor det er regnet hvor lang tid ventilen skal være åben ved dosering Operationer: CheckVand(): bool Tjekker om væskestanden er over Minimum vand i konfigparametre CheckSaft(): bool Tjekker om væskestanden er over Minimum saft i konfigparametre resetvand() Sætter væskemængden i beholderen til default fra konfigparametre resetsaft() Sætter væskemængden i beholderen til default fra konfigparametre beregnsaftmaengde() Regner hvor meget saft er tilbage beregnvandmaengde() Regner hvor meget vand er tilbage saftretur(in saft :int) Bruges hvis man trykker på reset knappen mens saftdosering løber. Regner hvor mange millisekunder blev ikke brugt og bruges ved at regne hvor meget saft er tilbage. vandretur(in vand : int) Bruges hvis man trykker på reset knappen mens vanddosering løber. Regner hvor mange millisekunder blev ikke brugt og bruges ved at regne hvor meget vand er tilbage. DoseringsEnhed() Konstruktor 40