I3PRG3+I3DTM3+I3ISY1-3. semester

Relaterede dokumenter
Sammenlign og byt. Et eksempel på dokumentering af et program

Kursusarbejde 2 Grundlæggende Programmering

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

// Definition af porte og funktioner

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring Side 1 af 15

DM507 Algoritmer og datastrukturer

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade København Ø

Løsning af møntproblemet

Adressering af ind- og ud gange på BCxxxx IEC1131 PLC uden TC system manager

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Microcontroller, Arduino

Kom godt igang med Inventar registrering

Kom godt igang med Inventar registrering

Viditronic NDVR Quick Guide. Ver. 2.0

Videregående Programmering for Diplom-E Noter

Eksamen dcomnet Q2/2010. Navn

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

User Guide AK-SM 720 Boolean logic

MCE9637 DeviceNet Modul

Skriftlig eksamen i Datalogi

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Arduino Programmering

DANMARKS TEKNISKE UNIVERSITET

DK-Unit Point version 2.xx til PWE 37

DM507 Algoritmer og datastrukturer

Kursusarbejde 3 Grundlæggende Programmering

Vejledning SC Per Dahl Johansen GEOTEAM A/S.

DM517:Supplerende noter om uafgørlighedsbeviser:

FireBUS BRANDSIKRINGSAUTOMATIK For spjældsikrede og røgventilerede systemer

Betjeningsvejledning til Håndterminal og AnyQuest Host

Skriftlig eksamen i Datalogi

DIVISIONSMATCHBEREGNING

Abstrakte datatyper C#-version

Tegninger ved skriftlig prøve i fysik A, htx

Design Systemkald. User-mode Linux, The Linux kernel/

DIVISIONSMATCHBEREGNING VERSION 1.07

Brugervejledning til KasseRapporten LIGHT

Hermed vejledning i hvordan man lægger billeder ind til brug for hjemmesiden.

DM507 Algoritmer og datastrukturer

Opsætning af brugere og temaer i GIS4Mobile

DM13-1. Obligatoriske Opgave - Kredsløbs design

BRUGERVEJLEDNING FLTA

Kravspecifikation For. Gruppen

Seriel kommunikation

Brugermanual til MICRO LOOP

2 Resumé. Denne projektrapport omhandler udvikling af et Intelligent House Control system hvor lys og varme kan overvåges og styres i en bygning.

På nedenstående billede skal du finde den figur som optræder nøjagtig 3 gange.

DK-Unit Point version 1.xx

Computer og print ved skriftlige prøver på Laursens Realskole forår 2017

FireBUS PARKERINGSVENTILATION

DM507 Algoritmer og datastrukturer

Microcontroller, Arduino

4. Semesterprojekt System Arkitektur. MyP3000 I4PRJ4 E2004

Opsætning af xcon og Logix Controller

Lær Python - Dag 4, modul 1 Objektorienteret programmering

Intro til AVR. Mads Pedersen, OZ6HR

Indledning...3. OnTime Kalenderen...3. Daglig brug af OnTime...4. Oversigter / Views...5. Funktioner...7. Brug af ikoner...12

Vejledning i at anvende åbningskvittering. Juli 2016

Deltag i en quiz: Test din viden i SAS -programmering

Digital post Snitflader Bilag A2 - REST Register Version 6.3

Mastra UniKort Vejledning

Konfigurationsværktøj for MJK Instrumenter

Robonet Profibus S7 platform

1. HVAD ER HOT POTATOES? 2. HVAD BESTÅR HOT POTATOES AF? 3. HVAD KOSTER HOT POTATOES? 4. SOFTWARE- OG HARDWAREKRAV.

OZ5BIR SWR/POWERMETER

Nedenstående opgaver er lavet til en Allen-Bradley PLC, men uden videre tilpasses andre PLC typer.

Indholdsfortegnelse:

Software Dokumentation

Computer og print ved skriftlige prøver på Laursens Realskole

Brugermanual PoP3 og Outlook Office 2003 Webmail Udarbejdet af IT-afdelingen 2005

MicroStation V8i Print

Programmeringseksempel tl BCxxxx (Seriel)

TeamShare 2.1 Versionsnoter Oktober 2009

KOMPONENT BESKRIVELSE

vejman.dk Brugerdokumentation - kortmodul 14. marts 2012 Version 1.9

Betjeningsvejledning. SMS modul

Processer og tråde. dopsys 1

Antares Brugs- og monteringsanvisning. Programmeringssoftware for Cobra CAN BUS alarmer AK44XX & AK46XX

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Programmeringseksempel til CX/IPC

Transkript:

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen Side 1 af 5 Varighed: 4 timer - fra kl. 9.00 til kl. 13.00 Ingeniørhøjskolen udleverer: 3 omslag samt papir til kladde og renskrift Særlige bemærkninger: Besvarelsen afleveres således, at I3PRG3 (opgave 3), I3DTM3 (opgave 1) og I3ISY1 (opgave 2) afleveres i hvert sit omslag

Side 2 af 5 OPGAVE 1. Givet: 2 stk. SBC686 med IO686-kort monteret. De 2 IO686-korts PPI er har en direkte forbindelse: PortA til PortA, PortB til PortB og PortC til PortC. Den ene SBC686 benævnes: Master, og den anden benævnes: Slave. Slavens skærm skal vise Masterens skærmbillede med opdatering en gang i sekundet. SBC ernes skærmbilleder (textmode) findes i videoram startende fra fysisk adresse: B8000h. Et skærmbillede består af : 25 linier med 80 tegn på hver linie. Hvert tegn fylder 2 byte (tegnkode henholdsvis attribut). PPI ernes portadresser er: PortA = 304h, PortB = 305h, PortC = 306h. Interrupt controllerens OCW2 register har I/O adressen 20h. Alle 3 porte i Masterens PPI er initieret til output i mode 0. Alle 3 porte i Slavens PPI er initieret til input i mode 0. Som en del af løsningen til ovenstående skal følgende skrives i assembly (MASM): På Master SBC686 aktiveres en interruptrutine SendVRAM en gang i sekundet (HW-interrupt IRQ5). Skriv interruptrutinen SendVRAM så følgende funktionalitet opnås: Et helt skærmbillede sendes til PPI en som sammenhørende værdier af offset-adresser i videoram og tilhørende data (tegnkode/attribut). Der skal startes med offset-adresse 0. Data (tegnkode/attribut) sendes ud på PortC. MSByte af offset-adressen sendes ud på PortB. LSByte af offset-adressen sendes ud på PortA. Skrivning til portene skal være i den angivne rækkefølge (PortC PortB PortA). Skriv et program (DOS-EXE) til Slave SBC686. Programmet skal eksekvere i en uendelig sløjfe og udføre følgende: PortA (LSByte af offset-adressen) læses, og når der sker et skift aflæses værdierne fra PortB (MSByte af offset-adressen) og PortC (data = tegnkode/attribut). Den aflæste data skrives i Slavens videoram på den aflæste offset-adresse.

Side 3 af 5 OPGAVE 2. Et RTKernel system består blandt andet af processerne (trådene) control, work1, work2 og alarm, samt et objekt statusobj af klassen Status defineret nedenfor. Systemtidsenheden er konfigureret til 1 msek. class Status Status(); bool alarm(); bool work2action(); Proces control kommunikerer med de øvrige processer via semaforerne controltoalarm, controltowork1 og controltowork2, som alle er tællesemaforer (ST_COUNTING) og virkemåden af proces control kan kort beskrives således: Hovedsløjfen gennemløbes hver gang der er forløbet 2 msek. For hver runde i hovedsløjfen gøres følgende: Hvis der er forløbet 12 msek. siden sidste gang signaleres der til proces work1. Hvis work2action() er true signaleres der til proces work2. Hvis alarm() er true signaleres der til proces alarm. Lav koden til processerne control, work1, work2 og alarm. Processerne kodes i almindeligt RTKernel format, den eneste egentlige "indmad" i work1, work2 og alarm skal være de aktuelle semaforkald, hvorimod control skal kodes komplet. I forbindelse med kan det antages at man har adgang til alle semaforer og til statusobj. Lav de dele af en main proces der opretter og initierer systemet der er omtalt ovenfor, herunder semaforer og processer (tråde). Gør specielt rede for hvorledes du vil prioritere de enkelte processer.

Side 4 af 5 OPGAVE 3. I et system programmeres anvendelsen af instrumenter med anvendelse af de abstrakte basisklasser Instrument, Configuration og Result samt klassen InstrumentList. Instrument beskriver funktionaliteten af et instrument, Configuration beskriver konfigurationen af et instrument og Result beskriver en instrumentaflæsning. InstrumentList anvendes til at gruppere en samling instrumenter. Bemærk, at der skal mere med hvis klasserne skal anvendes til noget seriøst, jævnfør diverse (prik,prik,prik) i teksten. class Configuration virtual ~Configuration()} virtual void print() = 0; // udskriver den aktuelle konfiguration til cout class Result virtual ~Result()} virtual void save() = 0; // gemmer det aktuelle resultat class Instrument virtual ~Instrument()} virtual int ID(); // returnerer den aktuelle instrument ID virtual bool isactive() = 0; // undersøger om det aktuelle instrument er aktivt virtual Result *read() = 0; // aflæser det aktuelle instrument virtual void setconfiguration(configuration *cfgptr) m_cfgptr = cfgptr;} virtual Configuration *getconfiguration() return m_cfgptr;} Configuration *m_cfgptr; Opgave 3 fortsættes næste side

Side 5 af 5 OPGAVE 3, fortsat. class InstrumentList InstrumentList(); ~InstrumentList(); void insert(instrument *instrptr); // indsætter et nyt instrument i listen void remove(instrument *instrptr); // fjerner et instrument fra listen Instrument *first(); // returnerer en pointer til det første instrument // i listen, hvis listen er tom returneres 0 Instrument *next(instrument *instrptr); // returnerer en pointer til det næste instrument // i listen (efter "instrptr"), hvis der ikke er // flere returneres 0 Lav en funktion der undersøger om der findes et instrument med en given ID i en InstrumentList. Prototype: bool checkid(instrumentlist *instrlistptr, int ID); Lav en funktion der for en InstrumentList aflæser alle aktive instrumenter og gemmer resultaterne (med save() ). Prototype: void readallactive(instrumentlist *instrlistptr); c) Lav en funktion der for en InstrumentList fjerner de instrumenter der ikke er aktive. Prototype: void removeallinactive(instrumentlist *instrlistptr); d) Lav en funktion der for en InstrumentList udskriver (til cout) ID og konfiguration for alle aktive instrumenter. Prototype: void printallactive(instrumentlist *instrlistptr);