• No results found

Database input for PLC cabinet at the Händelö plant

N/A
N/A
Protected

Academic year: 2021

Share "Database input for PLC cabinet at the Händelö plant"

Copied!
55
0
0

Loading.... (view fulltext now)

Full text

(1)

Department of Science and Technology Institutionen för teknik och naturvetenskap

LiU-ITN-TEK-G--08/030--SE

Databasinmatning för PLC-skåp

på Händelöverket

Silver Kreek

Stefan Saveski

2008-06-05

(2)

LiU-ITN-TEK-G--08/030--SE

Databasinmatning för PLC-skåp

på Händelöverket

Examensarbete utfört i elektroteknik

vid Tekniska Högskolan vid

Linköpings universitet

Silver Kreek

Stefan Saveski

Handledare Jan johansson

Examinator Ulf Sannemo

(3)

Upphovsrätt

Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare –

under en längre tid från publiceringsdatum under förutsättning att inga

extra-ordinära omständigheter uppstår.

Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner,

skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för

ickekommersiell forskning och för undervisning. Överföring av upphovsrätten

vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av

dokumentet kräver upphovsmannens medgivande. För att garantera äktheten,

säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ

art.

Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i

den omfattning som god sed kräver vid användning av dokumentet på ovan

beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan

form eller i sådant sammanhang som är kränkande för upphovsmannens litterära

eller konstnärliga anseende eller egenart.

För ytterligare information om Linköping University Electronic Press se

förlagets hemsida

http://www.ep.liu.se/

Copyright

The publishers will keep this document online on the Internet - or its possible

replacement - for a considerable time from the date of publication barring

exceptional circumstances.

The online availability of the document implies a permanent permission for

anyone to read, to download, to print out single copies for your own use and to

use it unchanged for any non-commercial research and educational purpose.

Subsequent transfers of copyright cannot revoke this permission. All other uses

of the document are conditional on the consent of the copyright owner. The

publisher has taken technical and administrative measures to assure authenticity,

security and accessibility.

According to intellectual property law the author has the right to be

mentioned when his/her work is accessed as described above and to be protected

against infringement.

For additional information about the Linköping University Electronic Press

and its procedures for publication and for assurance of document integrity,

(4)

Databasinmatning för PLC-skåp på Händelöverket

Examensprojekt

Av: Stefan Saveski

Silver Kreek

(5)

Sammanfattning

Detta examensprojekt är genomfört hos E.On Electro Sandberg Sverige AB som är en underentreprenör till E.On. Uppgiften gick ut på att vi skulle skapa en databas till E.On som ska användas på Händelöverket. Databasen skulle kunna hålla reda på vilka PLC-kort som finns i skåp runt om i anläggningen och var exakt dessa finns för att man på så sätt ska kunna byta ut ett kretskort vid behov av reparation. Händelöverket använder dessa olika skåp med olika PLC-system till att styra förbränningar, pumpar och andra processer. Uppgiften

omfattade programmering och logiskt tänkande samt en hel del problemlösande. För att kunna skapa en databas, har vi använt oss av Microsofts databasprogram Microsoft Access. I

(6)

Förord

Först och främst så vill vi tacka alla som har varit involverade i vårt examensprojekt. Håkan Aronsson och Jan Nilsson för ständiga och intensiva genomgångar hur vi skulle gå tillväga på bästa möjliga sätt för att få ett tillfredsställande resultat.

(7)

Innehållsförteckning

1. Inledning ... 1

1.1 Bakgrund ... 1

1.2 Historik ... 1

1.3 Syfte ... 2

1.4 Metod och källor ... 2

1.5 Avgränsningar ... 2 2 Genomförande ... 3 3. Startsidan ... 4 4.1 Formulärkonfiguration för skåp ... 5 4.2 Formulärkonfiguration för noder ... 6 4.3 Formulärkonfiguration för komponenter ... 7 5. Sökfunktion ... 8 6. Konfigurering av skåp ... 9 7. Programfunktioner ... 11 8. Resultat ... 12 9. Diskussion ... 13 10. Referenser ... 14 Bilageförteckning ... 15

(8)

1. Inledning

1.1 Bakgrund

E.On på Händelöverket sysslar med avfallshantering och materialförbränning. För att kunna styra olika förbränningsprocesser krävs många olika PLC-kort. PLC-korten sitter i olika noder som i sin tur sitter i olika PLC-skåp. En nod är utrustad med cirka 20 kretskort, varje kretskort har sin egen specifika uppgift i noden. För att kunna hålla reda på alla kort som sitter i olika skåp på Händelöverket så bad E.On oss konstruera ett program där man ska kunna registrera alla skåp med sina kort, programmet ska sedan kunna hålla reda på vilka kort som sitter i vilka skåp och hur många av varje kort som finns ute i anläggningen.

1.2 Historik

E.on utrikes

1920 grundades VIAG och VEBA i Tyskland. De var stora industriföretag som ägdes av staten fram till 1960-1980 talet. Det var då de blev börsnoterade för första gången. VIAG och VEBA fortsatte sin framgångshistoria, år 2000 slogs de ihop till vad vi kallar E.on.

E.on har gjort sig av med stora delar av bland annat VIAG:s mobiltelefondel . för att fokusera på energibranschen. Man satsade på att köpa upp företag i och runtom Europa, däribland Sydkraft Sverige. Drygt 70 000 anställda och en omsättning runt ca 50 miljarder kronor gör E.on till ett av världens största privatägda företag.

E.on lokalt

Norrköping anses vara ledande inom fjärrvärmeproduktion. Fjärrvärme har funnits i Norrköping sedan slutet på 1950-talet. Sedan Händelöverket togs i bruk 1980 så har

Norrköping blivit försett med både producerad el och värme. Händelöverket har fyra pannor där blandat material bränns upp och ger el. Material som trä, returflis, kol, gummiflis och avfall blir bränsle.

(9)

1.3 Syfte

Det finns en uppsjö av olika PLC-skåp och PLC-system i Händelöverket. För att ha en bättre uppsikt kring alla system och kretskort, tilldelade E.On oss uppgiften att vi skulle utveckla ett databassystem åt dem.

Databassystemet ska göra det möjligt att mata in ett skåps unika nummer och då få fram information om skåpet och vilka PLC-kort som det innehåller.

Programmet i sig skall kunna åskådliggöra alla aktiva kretskort som sitter i noderna utmed hela Händelöverket. Därefter skall man själva kunna ”handplocka” det kretskort man vill ha med information om och vart det sitter. Kretskortets placering och information skall enkelt kunna skrivas ut med ett specialutformat dokument.

Man ska även kunna söka efter en viss typ av PLC-kort och då skall programmet göra en automatisk sökning över alla skåp som finns registrerade i programmet. Därefter ska antal skåp, noder och kretskort sammanställas i en tabell.

1.4 Metod och källor

För att kunna förstå och lära oss databasuppbyggnad i Access, har vi använt oss av flera olika böcker och Internet samt manualer. Då det också handlade mycket om ”vanlig”

programmeringskod, fanns olika lärare till förfogande.

För att kunna påbörja programmeringen så använde vi oss av Office Xp Pro 2003 paketet. Från Officepaketet installerade vi Access 2003.

Böcker såsom Microsoft Access 2007 bibel [1], databashantering [2] och Microsoft Office Xp [3] har använts. Böckerna var en bidragande källa till förbättring i många avseenden.

1.5 Avgränsningar

I brist på tid så kunde vi tyvärr inte förfina programmet ytterligare, utseendemässigt. Vi hade idéer och planer om hur vi ville att programmet skulle se ut. E.Ons ledningsgrupp ville själva fortsätta modifiera programmet, vi lämnade det ”öppet” för vidare modifieringar.

(10)

2 Genomförande

Det finns många matnyttiga program med bra funktioner och möjligheter att använda för att lösa uppgiften. Valet föll på Microsoft Access 2003 pga. att det är mest utbrett. Det var också enkelt att sätta sig in i programmet samt att komma igång med programmeringen. Vi började med att skissa en bild på hur vi ville att det skulle se ut i form av ett enkelt blockdiagram, se bild1.

Bild 1: Illustrering av själva genomförandet

Illustreringen blev vårt utgångsunderlag. Efter att ha presenterat blockdiagrammet för E.ons ledning fick vi klartecken att fortsätta med denna ide. Alla anställda på Eon skulle enkelt kunna använda sig av programmet när nya kretskort skulle registreras. Användarvänlighet har legat i fokus för vårt arbete.

(11)

3. Startsidan

Den första deluppgiften som blev genombrottet i programmeringen var att konstruera en startsida för programmet. Vi ansåg att vi skulle lägga ner mycket tid och möda på användarvänligheten och snabbheten.

Vi började konstruera en startsida som såg ut på följande sätt. Se bild 2. För att kunna komma in i registret måste man ange ett lösenord. Vi vill inte att obehöriga personer skall kunna ta del av programmet och komma åt känslig information.

Bild 2: Programmets startsida

Vi överlappade en egendesignad bild som var integrerad med två knappar, register och avsluta.

(12)

4.1 Formulärkonfiguration för skåp

När det första skedet i programmeringen var slutfört, var det dags att ta itu med den andra delen, huvudsidan. Vi konstruerade en smidig och lättöverskådlig visningssida, se bild 2. Med hjälp av huvudsidan kan man enkelt få reda på historik kring inmatade skåp, vad för sorts typ av skåp. Nyinmatat skåp har ett unikt nummer som gör det enkelt användaren att lokalisera det vid behov av reparation. För att få med ytterligare information om skåpet, utökade vi med en ”Fabrikat” flik. Fabrikaten varierade över hela anläggningen så det var därför av stor vikt att råda bot på alla problem som har med fabrikat att göra. Förut kunde man förväxla ett fabrikat med ett annat till exempel ett Siemens med ett ABB, mycket pengar kan gå förlorade tack vare sådana misstag. Dagens konjunktur tillåter inte sådana misstag.

(13)

4.2 Formulärkonfiguration för noder

Efter Skåpslistan dirigeras man automatiskt till nod-sektionen.

Oftast brukar ett skåps id vara densamma som nodnamnet för att det inte ska bli för

komplicerat, se bild 3. Noderna utgör en kritisk del av arbetet och E.On är beroende av dem. En nod styr olika processer på anläggningen som till exempel styrning av en pump,

förbränning, kylning, timer och andra processer. De ska fungera felfritt.

(14)

4.3 Formulärkonfiguration för komponenter

Sista skedet i sammanställningen är själva huvudinnehållet. I själva noden finns kort med olika egenskaper beroende på önskad funktion. Nu får man fram en fullständig lista över vilka kort som finns inkluderade i noden och kort som inte är i bruk (inaktiva kort), se bild 4. Det måste alltid finnas ett visst antal inaktiva kretskort till förfogande vid risk för haveri. Ett defekt kretskort skall omgående bytas ut med ett nytt. Att E.On ville ha inaktiva kort registrerade i programmet berodde på flera orsaker. De ville kartlägga olika korttyper med avseende på dess ”beteende”, pålitlighet och funktioner. Om en viss korttyp går sönder ofta så behöver det inte betyda att det är fel på noden, utan det kan vara ett fabrikationsfel. Som tidigare nämnts, loggas alla felkort samt inaktiva kort av programmet.

Komponentlistan har en avgörande roll för förebyggande av framtida fel. Nu kan man följa utvecklingen av en viss korttyp som sitter i en nod, uppträder samma fel på korten så löses det på att annat sätt gentemot förut. Det var oklart tidigare om kretskorten hade gått sönder i drift, leverans eller slitage.

Nu tar man det direkt med tillverkaren och informerar dem att x antal kort av en viss typ inte presterar riktigt som de ska. Nu har man sakliga fakta och historik kring alla fel som har uppkommit. Inte nog med att E.On nu slipper köpa in fler kretskort av samma typ, nu har de blivit besparade på enorma kortbuffertar. Detta har minskat deras kostnad rejält. I sin tur så har programmet lett till att tillverkaren av korten tvingas tillverka bättre och hållbarare kretskort.

Bild 4: Komponentlistan visar vilka kort noden innehåller.

För förstå sig på alla konfigureringar samt bestyckningar av olika kretskort, skapade vi en manual som beskriver steg för steg hur man går tillväga för att bestycka en nod: Se bilaga 1

(15)

5. Sökfunktion

För att kunna ge ett optimalt gränssnitt som passade de anställda hos E.On, utökade vi med en sökfunktion. Den ”egna” sökfunktionen kan enkelt ta reda på hur många kretskort av en viss korttyp som finnas aktiva/inaktiva, eller det totala antalet. Som operatör ska man snabbt och enkelt få information kring kretskorten som sitter i noderna, se bild 5. Man kan enkelt få reda på information om något kretskort fattas i någon nod och beställa in ett nytt omedelbart. Programmet underlättar väldigt mycket när man ska göra inventeringar av olika slag, efter ett musklick genomför det en sökning över hela verket till skillnad mot förut. Det som tidigare kunde ta flera veckor att utföra, tar nu ca 10s att få uträknat.

(16)

6. Konfigurering av skåp

I detta avsnitt ser man programmets fulla potential och ambition.

Vi bröt ner själva huvudprogrammet i flera beståndsdelar, eftersom allt ska kunna

åskådliggöras enkelt och smidigt. Efter undersökningar vad E.On var ute efter ,började vi skräddarsy programmet utefter deras behov. Indelning av alla förslag och lösningar sorterades i olika subrutiner, vilket resulterade i lösningen nedan, se bild 6.

Kategoriseringen av programmet löstes med flera huvudrubriker och med en enkel

kombination av underrubriker. Huvudrubriken i primärkolumnen är skapad för att mata in ett skåps id, se bild 6 punkt 1. Ett unikt id för respektive nod skapades för att enkelt kunna urskilja alla skåp som finns placerade utmed hela verket. Vet man exempelvis ett skåps id, då vet man hur hela noden är bestyckad. Efter att ett skåps id har matats in så finns det ytterligare en kategori i primärkolumnen, ”Fabrikat”. Där ska man mata in vem som är leverantör till skåpet, eftersom det är bra att veta om ett fel inträffar och man är i snabbt behov av

reparation. Istället för att ödsla tid på att ta reda på vilket fabrikat skåpet är av, så finns det redan inmatat i programmet. Detta gör det möjligt för den anställda att enkelt kunna beställa in servicedelar eller ta reda på mer information kring skåpet. Vi lade även till en övrig flik på E.ons begäran. Nu är det möjligt för dem att få reda på lite mer djupgående info tack vare ”övrigt” fliken. Tack vare specificeringen så vet man enkelt vad som är vad och risken för missförstånd minimeras. Övrigt fliken har en avgörande roll i prioriteringar. Om det är något som krånglar och man ser att det är exempelvis en kommunikationsdator, då är man i behov av experter på just en sådan.

Efter inmatade värden och siffror i primärkolumnen dirigeras man automatiskt över till kolumn två. Se bild 6 punkt 2.

I kolumn två ska man registrera vad det är för sorts nod som sitter i skåpet. En nod består primärt av två delar, ett magasin och kort. Ett magasin består av ca 20 tomma fack. I de tomma facken trycker man in kretskort för att få önskade funktioner som exempelvis att styra en förbränning eller en pump under en viss tid.

Noderna har ett eget unikt serienummer, därför är det av stor vikt att man skall kunna mata in detta unika id-nummer. Numret är av stor vikt därför att om något går sönder, skall man snabbt få reda på vad det är för skåp och vart det är beläget vid Händelöverket med hjälp av numret.

Kolumn tre visar vad det är för sorts kretskort som ingår i noden. Se bild 6 punkt 3. Här skräddarsyr man sitt eget system efter olika standarder och föreskrifter för att få en optimal funktion som passar E.On. Korttypen registreras och visas i fältet ”komponenter”. Nod id:t ska alltid finnas till hands för att man enkelt skall kunna se i en pärm hur man bestyckar noden med rätt kort.

I kolumn fyra gjorde vi det så kallade grovjobbet. Denna operation var en engångsföreteelse, att mata in alla kretskort manuellt. Nu kan man själva välja vilka kort som skall inkluderas i en nod. Man scrollar i komponentlistan och dubbelklickar på korttypen som sedan registreras i ”Komponentlistan”. Se bild 6 punkt 4.

(17)
(18)

7. Programfunktioner

Registrera ny nod

Registrerar en helt ny nod genom ”Registrera ny nod” knappen. Efter man har matat in alla de väsentliga värdena och nummer så måste man spara noden.

Spara skåp

När man registrerat en ny nod och valt en lämplig kombination av kort så är det viktigt att man sparar allt, vilket görs med ”spara skåp” knappen. Det kan finnas risk att tidigare arbeten kan försvinna om man inte sparar ändringar av olika slag.

Registrera ny komponent

Teknologin rusar framåt med stormsteg och detta program kommer att bli tvunget att hänga med utvecklingstrenden. Problemet löstes genom att vi valde att lägga till ”Registrera ny komponent” knapp. Det gör det möjligt för de anställda att mata in nya sorters korttyper men samtidigt kunna behålla de gamla.

Visa konfiguration

Efter man skräddarsytt en nod efter E.Ons önskan och ska göra en avsyning samt en fullständig sammanställning över alla kretskort . I ”visa konfiguration” visas en fullständig sammanställning över noden samt alla kretskort och nod id:t i ett specialutformat dokument med datum.

Ta bort skåp.

Om en nod har rustats ned och företaget inte längre är i behov av den, så konstruerades en ”Borrtagnings funktion”. För säkerhets skull konstruerades även en ytterligare fråga då man är på väg att ta bort en nod, ”är du säker”. Extrafrågan lades till i efterhand för att minska risken för misstag.

(19)

8. Resultat

Eftersom ett projekt som detta aldrig tidigare har genomförts på E.On, kan vi glatt säga att vi nådde upp till deras förväntningar. E.On hade tidigare inget system överhuvudtaget för att hålla reda på sina kretskort. E.On har nu fått en bredare uppsikt kring kretskort samt hur många av samma typ av kretskort det finns. Programmet har underlättat vid inventeringen av olika sorters kretskort.

(20)

9. Diskussion

Eftersom ett sådant examensprojekt inte tidigare har genomförts, fick vi själva stå för logiskt och ett problemlösande tänkande. Vi förde en ständig dialog med E.Ons ledning angående arbetet och dess riktning och mål. Vi hade väldigt fria händer och var tvungna att själva komma på hur vi skulle gå till väga och hur programmet skulle behöva fungera för att leva upp till deras önskemål.

Access var den väsentligaste delen i arbetet för att allt arbete utfördes med den förutom när vi skulle testa vilken information som skulle ingå i databasen, detta gjordes i programmet ”Excel” vilket tog ganska långt tid för att det var många olika PLC-system som skulle testas. När detta var gjort, började vi med själva programmeringen i Access och eftersom vi aldrig har jobbat med programmet tidigare var det väldigt svårt att komma någonvart i början. Access är väldigt stegbaserat program så att vi fick lära oss att programmera steg för steg innan vi blev någorlunda fullärda inom programspråket Visual Basic.

Databasprogrammet utvecklade vi efter eget tycke eftersom vi fick fria händer av E.Ons ledning att göra något som vi tyckte skulle passa dem, för att de visste inte mer än vi gjorde & vad som skulle vara passande. Därför fick vi visa upp programmet allt eftersom och höra vad de tyckte att man kunde förbättra. Kommunikationen mellan oss och ledningsgruppen ledde till att programmet blev mer avancerat än vi först hade räknat med.

E.On har nu fått ett välbehövligt och robust databassystem som är enkelt att använda. Programmets påverkan i företaget har lett till att de nu kan övervaka kretskort utmed hela deras anläggning, lokalisera olika noder/skåp vid behov av reparation och dylikt.

(21)

10. Referenser

[1] Groh, Michael. Microsoft. Access 2007 bibel. ISBN: 0470046732 [2] Lambert, M Dow. Microsoft Access 2007: steg för steg. ISBN: 9789163609206 [3] Young, Michael J. Microsoft Office utan och innan. ISBN: 9172417048

(22)

Bilageförteckning

Bilaga 1 Manual Bilaga 2 Källkod

(23)

MANUAL FÖR E.ON DATABAS 

Författare Silver Kreek Stefan Saveski

(24)

INNEHÅLL 

Figurförteckning ... 18 Inledning till E.On Databas ... 19 Installation ... 19 Börja använda E.On databas ... 19 Huvudmeny ... 19 Att använda E.On Databas ... 20 1. Lägga till information i E.On Databas ... 20 1.1 Lägga till skåp ... 20 1.2 Lägga till en ny nod i ett skåp ... 23 1.3 Lägga till en komponent i en nod ... 23 2. Få ut information från databasen ... 24 2.1 Skriva ut konfigurationen för något skåp ... 24 2.2 Skriva ut komponentlista ... 25 3. Redigera och radera data ... 26 3.1 Radera ett skåp ... 26 3.2 Radera en komponent från en nod ... 26 3.3 Redigering av ett skåp ... 27 3.4 Redigering av en komponent ... 28 Bilagor ... 29

(25)

Figurförteckning

Figur1.1.1. Huvudmeny av registersida för skåp. figur 1.1.2. Skåpkonfigurationsfönster.

figur 1.1.3. Skåpkonfigurationsfönstret när man håller på att lägga till ett nytt skåp. figur 1.2.1. "Lägg till en ny nod” rutan.

figur2.2.1. Registersida för komponenter. figur3.2.1 ”Ta bort komponent” rutan

(26)

Inledning till E.On Databas

Installation

Installationen bör gå till på följande sätt:

• Kopiera filen ”EonDBS.mdb” på en server som är tillgänglig för alla som kommer att använda databasen.

• Kopiera därefter filen ”Eon2003.mds” på varje dator som man ska använda databasen på och länka sedan till filen ”EonDBS.mdb”. Hur man går tillväga med det finner ni under nästa avsnitt.

Börja använda E.On databas

Starta databasen genom att öppna filen Eon2003.mdb med Microsoft Access. När man startar E.On databas för första gången, måste man länka till själva databasfilen. För att kunna använda databasen på flera datorer ska man ha själva databasfilen på en filserver. Databasfilen heter EonDBS.dbs, kontakta systemadministratören om var filen finns. När detta är gjort kan man börja använda E-On Databas.

Huvudmeny

Huvudmenyn ser ut på följande sätt

• Tryck på start för att börja lägga till eller redigera ett skåp eller noder, alternativt tryck Avsluta för att avsluta.

(27)

Att använda E.On Databas

1. Lägga till information i E.On Databas

1.1 Lägga till skåp

• Tryck på start i huvudmenyn. Då kommer denna ruta upp

figur 1.1.1. illustrerar huvudmenyn av registersida för skåp

(28)

Då får man fram denna ruta.

figur 1.1.2. illustrerar skåpkonfigurationsfönstret

• Tryck därefter på knappen ”Nytt skåp”. Tryck sedan på okej i det lilla varningsfönstret.

(29)

”Konfigurera skåp” fönstret kommer därefter att se ut på följande sätt

figur 1.1.3. illustrerar skåpkonfigurationsfönstret när man håller på att lägga till ett nytt skåp. • Skriv in skåpets värden längst uppe i det vänstra hörnet och tryck sedan på knappen

”Spara skåp” i högra hörnet.

(30)

1.2 Lägga till en ny nod i ett skåp

• Markera det önskade skåpet i ”Konfigurera skåp” fönstret (till vänster i figur1.1.2). Tryck därefter på ”Registrera ny nod” knappen

figur 1.2.1. visar hur "lägg till en ny nod” ser ut.

• Skriv in nodens id (om denna ej finns så använd skåpets id följt med -1 och om flera noder finns så fortsätt med skåpets id följt med -2 etc.) och tryck sedan på uppdatera och stäng.

Din nod har nu skapats i skåpet och i den kan du lägga till komponenter.

1.3 Lägga till en komponent i en nod

• Markera det önskade skåpet i ”Konfigurera skåp” fönstret (till vänster i figur1.1.2.). • Klicka sedan på noden du vill lägga till komponenter i (övre mitten i figur1.1.2.) • Därefter dubbelklickar man på den önskade komponenten (till höger i figur1.1.2.) som

(31)

2. Få ut information från databasen

2.1 Skriva ut konfigurationen för något skåp

• Markera ett skåp i ”Konfigurera skåp” (figur1.1.2.).

• Klicka sedan på knappen ”visa konfiguration”, då får man upp vilka komponenter som finns i skåpet och på vilken nod de sitter i och den informationen kan man sedan skriva ut.

(32)

2.2 Skriva ut komponentlista

• Tryck på knappen ”Sök komponenter” i (se figur1.1.1.).

Figuren ändrar då utseende och i stället för skåplista finns istället en komponentlista (se vänster i figur2.2.1.)

figur2.2.1. visar en bild av registersida för komponenter.

• Klicka sedan på ”Visa komponentlista”.

Då visas en utskriftsvänlig komponentlista som innehåller information över hur många

kretskort en nod innehåller, id nr samt sammanställning för kretskort över hela anläggningen. För att se hur en sådan utskrift kan se ut, se Bilaga 2.

(33)

3. Redigera och radera data

VARNING! Tänk innan du tar bort eller ändrar någon information i E.On databas. Konsultera

gärna systemadministratören innan om du är osäker.

3.1 Radera ett skåp

• Öppna fönstret ”Konfigurera skåp” (figur1.1.2.).

• Markera sedan det skåp du vill ta bort och klicka på knappen ”Ta bort skåp” och sedan på ”Bekräfta”.

VARNING ETT BORTAGET SKÅP KAN EJ ÅTERFÅS!!

3.2 Radera en komponent från en nod

• Klicka på den komponent du vill ta bort från skåpet i fönstret ”Konfigurera skåp” (nedre mitten i figur1.1.2.).

Då visas denna förfrågan.

figur3.2.1 visar hur en ”Ta bort komponent” ruta ser ut.

(34)

3.3 Redigering av ett skåp

• Öppna fönstret ”Konfigurera skåp” (figur1.1.2.).

• Markera sedan det skåp som du vill ändra och klicka sedan på knappen ”Redigera skåp”

Då kommer denna ruta upp.

Figur3.3.1. visar hur en ”Redigera skåp” ruta ser ut.

• Skriv in de nya värdena och klicka sedan på ”Uppdatera och stäng” knappen. De nya värdena har nu sparats i databasen.

(35)

3.4 Redigering av en komponent

• Klicka på knappen ”Sök komponenter” i (se figur1.1.1.). • Markera den komponent du vill ändra (till vänster i figur2.2.1.) • Klicka sedan på ”Redigera komponent”.

Då kommer denna ruta upp.

Figur3.4.1. visar hur en ”Redigera komponent” ruta ser ut.

• Skriv in de nya värdena och klicka sedan på ”Uppdatera och stäng”. Dina nya värden har nu sparats i databasen.

(36)

Bilagor

Bilageförteckning

Bilaga 1: Utskriften för skåpskonfiguration………..15 Bilaga 2: Utskriften för komponentlistan………..16

(37)
(38)

Bilaga 2 Källkod

(39)

Option Compare Database Option Explicit

Private Sub cmdReg_Click() ‘Start knapp’ DoCmd.OpenForm "Start"

End Sub

Private Sub Form_Activate()

'DoCmd.ShowToolbar "Formulär", acToolbarNo 'DoCmd.ShowToolbar "FormStatistik", acToolbarNo 'DoCmd.ShowToolbar "FormMeny", acToolbarNo 'DoCmd.ShowToolbar "Huvudmeny", acToolbarYes End Sub

Private Sub Form_Load() If CheckLinks() = False Then ' Försök länka om tabellerna. 'Om går inte stäng formuläret If RelinkTables() = False Then DoCmd.Quit

End If End If 'CheckUser End Sub

Private Sub Kommandoknapp3_Click() ’Avslutaknappen’ On Error GoTo Err_Kommandoknapp3_Click

DoCmd.Quit Exit_Kommandoknapp3_Click: Exit Sub Err_Kommandoknapp3_Click: MsgBox Err.Description Resume Exit_Kommandoknapp3_Click End Sub

(40)

Ny komp:

Option Compare Database Option Explicit

Sub AddKomp() Dim DB As Database Dim rstKomp As Recordset Dim strSQLKomp As String

strSQLKomp = "Select * From tblKomp Where UCase(tblKomp.Komponent) = '" & UCase(Trim(Komp.Value)) & "'"

strSQLKomp = strSQLKomp & " Order By tblKomp.KompID;" Set DB = DBEngine.Workspaces(0).Databases(0)

Set rstKomp = DB.OpenRecordset(strSQLKomp) If Not rstKomp.EOF Then

Beep

MsgBox "Finns redan komponent med samma namn!", vbCritical Exit Sub Else rstKomp.AddNew rstKomp!Komponent = Trim(Komp.Value) rstKomp.Update rstKomp.Close DB.Close DoCmd.Close End If End Sub

Private Sub cmdUpdate_Click() If IsNull(Komp.Value) Then Beep

MsgBox "Saknas värde för komponent!", vbCritical DoCmd.GoToControl "Komp" Exit Sub Else AddKomp End If End Sub

Private Sub Form_Close() intCheckNodOpen = 0

(41)

DoCmd.GoToControl "lstKompLista" End Sub

(42)

Ny nod:

Option Compare Database Option Explicit

Sub AddNod() Dim DB As Database Dim rstNod As Recordset Dim strSQLNod As String

strSQLNod = "Select * From tblNod Order By tblNod.NodID;" Set DB = DBEngine.Workspaces(0).Databases(0)

Set rstNod = DB.OpenRecordset(strSQLNod) rstNod.AddNew

rstNod!SkapID = strSkapId If Not IsNull(Nod.Value) Then rstNod!Nod = Nod.Value End If rstNod.Update rstNod.Close DB.Close End Sub

Private Sub cmdUpdate_Click() AddNod

DoCmd.Close End Sub

Private Sub Form_Close() intCheckNodOpen = 0

DoCmd.SelectObject acForm, "NyttSkap", False DoCmd.GoToControl "lstNod"

(43)

Nytt skap:

Option Compare Database Option Explicit

Private Sub Listruta7_Click() End Sub

Private Sub cmdDelete_Click() If IsNull(lstSkap.Value) Then Beep

MsgBox "Du har inte valt skåp du vill ta bort!", vbCritical Exit Sub

End If

If cmdDelete.Caption = "Ta bort skåp" Then cmdDelete.Caption = "Bekräfta..."

ElseIf cmdDelete.Caption = "Bekräfta..." Then TaBortSkap

lstSkap.Requery lstNod.Requery lstKomp.Requery

cmdDelete.Caption = "Ta bort skåp" End If

End Sub

Private Sub cmdNyKomp_Click() DoCmd.OpenForm "NyKomp" End Sub

Private Sub cmdNyNod_Click() strSkapId = SkapID.Value DoCmd.OpenForm "NyNod" End Sub

Private Sub cmdNySkap_Click()

If cmdNySkap.Caption = "Nytt skåp" Then SkapID.Visible = True

Fabrik.Visible = True Ovrigt.Visible = True Ovrigt.Locked = False SkapID.Locked = False

(44)

Fabrik.Locked = False

cmdNySkap.Caption = "Spara skåp" Beep

MsgBox "Skriv in värdena för skåp id och fabrikat och spara skåp sedan!", vbInformation DoCmd.GoToControl "SkapID"

ElseIf cmdNySkap.Caption = "Spara skåp" Then If IsNull(SkapID.Value) Then

Beep

MsgBox "Saknas skåp id!", vbCritical Exit Sub Else AddSkap End If End If End Sub

Private Sub cmdVisa_Click()

DoCmd.OpenReport "VisaSkap", acViewPreview End Sub

Sub AddKomp() Dim DB As Database

Dim rstDelaKomp As Recordset Dim strSQLDelaKomp As String

strSQLDelaKomp = "Select * From tblDelaNodKomp Order By tblDelaNodKomp.DelaID;" Set DB = DBEngine.Workspaces(0).Databases(0)

Set rstDelaKomp = DB.OpenRecordset(strSQLDelaKomp) rstDelaKomp.AddNew rstDelaKomp!NodID = lstNod.Value rstDelaKomp!KompID = lstKompLista.Value rstDelaKomp.Update rstDelaKomp.Close DB.Close End Sub Sub AddNod() End Sub Sub AddSkap()

(45)

Dim DB As Database Dim rstSkap As Recordset Dim strSQLSkap As String

strSQLSkap = "Select * From tblSkap Where UCase(tblSkap.SkapID) = '" & UCase(SkapID.Value) & "'"

strSQLSkap = strSQLSkap & " Order By tblSkap.SkapID;" Set DB = DBEngine.Workspaces(0).Databases(0)

Set rstSkap = DB.OpenRecordset(strSQLSkap) If Not rstSkap.EOF Then

Beep

MsgBox "Skåp du försöker registrera finns redan!", vbCritical rstSkap.Close DB.Close DoCmd.GoToControl "SkapID" Exit Sub Else rstSkap.AddNew rstSkap!SkapID = SkapID.Value If Not IsNull(Fabrik.Value) Then rstSkap!Fabrikat = Fabrik.Value End If

If Not IsNull(Ovrigt.Value) Then rstSkap!Ovrigt = Ovrigt.Value End If rstSkap.Update rstSkap.Close DB.Close cmdNySkap.Caption = "Nytt skåp"

MsgBox "Nytt skåp har lagts till i register.", vbInformation SkapID.Locked = True Fabrik.Locked = True Ovrigt.Locked = True Ovrigt.Visible = False SkapID.Visible = False Fabrik.Visible = False lstSkap.Requery End If End Sub Sub SearchSkap() Dim DB As Database Dim rstSkap As Recordset Dim strSQLSkap As String

(46)

strSQLSkap = "Select * From tblSkap Where UCase(tblSkap.SkapID) = '" & UCase(lstSkap.Value) & "'"

strSQLSkap = strSQLSkap & " Order By tblSkap.SkapID;" Set DB = DBEngine.Workspaces(0).Databases(0)

Set rstSkap = DB.OpenRecordset(strSQLSkap) SkapID.Value = rstSkap!SkapID

If Not IsNull(rstSkap!Fabrikat) Then Fabrik.Value = rstSkap!Fabrikat End If

If Not IsNull(rstSkap!Ovrigt) Then Ovrigt.Value = rstSkap!Ovrigt End If rstSkap.Close DB.Close End Sub

Private Sub Form_Close()

DoCmd.SelectObject acForm, "NyttSkap", False DoCmd.GoToControl "lstSkap"

End Sub

Private Sub lstKomp_Click() DoCmd.OpenForm "TabortKomp" End Sub

Private Sub lstKomp_GotFocus() lstKomp.Requery

End Sub

Private Sub lstKompLista_DblClick(Cancel As Integer) AddKomp

lstKomp.Requery End Sub

Private Sub lstKompLista_GotFocus() lstKompLista.Requery

(47)

End Sub

Private Sub lstNod_Click() lstKompLista.Locked = False lstKomp.Requery

End Sub

Private Sub lstNod_GotFocus() lstNod.Requery

End Sub

Private Sub lstSkap_Click() lstKompLista.Locked = True SkapID.Visible = True Fabrik.Visible = True Ovrigt.Visible = True SearchSkap cmdNyNod.Enabled = True lstNod.Requery End Sub Sub TaBortSkap() Dim DB As Database Dim rstSkap As Recordset Dim strSQLSkap As String Dim rstNod As Recordset Dim strSQLNod As String Dim rstKomp As Recordset Dim strSQLKomp As String Dim lngNodID As Long

strSQLSkap = "Select * From tblSkap Where UCase(tblSkap.SkapID) = '" & UCase(lstSkap.Value) & "'"

strSQLSkap = strSQLSkap & " Order By tblSkap.SkapID;"

strSQLNod = "Select * From tblNod Where UCase(tblNod.SkapID) = '" & UCase(lstSkap.Value) & "'"

strSQLNod = strSQLNod & " Order By tblNod.NodID;"

strSQLKomp = "Select * From tblDelaNodKomp Where tblDelaNodKomp.KompID = " & lngNodID & ""

(48)

Set DB = DBEngine.Workspaces(0).Databases(0) Set rstSkap = DB.OpenRecordset(strSQLSkap) Set rstNod = DB.OpenRecordset(strSQLNod) If Not rstNod.EOF Then

Do While Not rstNod.EOF lngNodID = rstNod!NodID

strSQLKomp = "Select * From tblDelaNodKomp Where tblDelaNodKomp.KompID = " & lngNodID & ""

strSQLKomp = strSQLKomp & " Order By tblDelaNodKomp.KompID;" Set rstKomp = DB.OpenRecordset(strSQLKomp)

If Not rstKomp.EOF Then Do While Not rstKomp.EOF rstKomp.Delete rstKomp.MoveNext Loop rstKomp.Close Else rstKomp.Close End If rstNod.Delete rstNod.MoveNext Loop rstNod.Close Else rstNod.Close End If

If Not rstSkap.EOF Then rstSkap.Delete rstSkap.Close Else rstSkap.Close End If DB.Close End Sub

(49)

Register:

Option Compare Database Option Explicit

Private Sub cmdConfSkap_Click() DoCmd.OpenForm "NyttSkap" End Sub

Private Sub cmdSearch_Click()

If cmdSearch.Caption = "Sök komponenter" Then lstSkap.RowSource = "qrySearchKompLista" lstSkap.Requery

lblSkap.Caption = "Komponentlista" cmdVisa.Visible = True

cmdSearch.Caption = "Sök skåp"

ElseIf cmdSearch.Caption = "Sök skåp" Then lstSkap.RowSource = "qrySkapLista" lstSkap.Requery lblSkap.Caption = "Skåplista" cmdSearch.Caption = "Sök komponenter" cmdVisa.Visible = False End If End Sub

Private Sub cmdVisa_Click()

DoCmd.OpenReport "VisaKomponeneter", acViewPreview End Sub

Private Sub lstKomp_GotFocus() lstKomp.Requery

End Sub

Private Sub lstNod_Click() lstKomp.Requery

End Sub

Private Sub lstNod_GotFocus() lstNod.Requery

(50)

End Sub

Private Sub lstSkap_Click() lstNod.Requery If cmdSearch.Caption = "Sök skåp" Then cmdVisa.Enabled = True Else cmdVisa.Enabled = False End If End Sub

Private Sub lstSkap_GotFocus() lstSkap.Requery

(51)

Start:

Option Compare Database Option Explicit

Private Sub Form_Open(Cancel As Integer) Me.TimerInterval = 7000

'intCount = 1 End Sub

Private Sub Form_Timer()

' If-uttryck som används för att återställa egenskapen TimerInterval. If Me.TimerInterval <> 0 Then

Me.TimerInterval = 0 End If

' Anropa proceduren DisplayStartup för att avgöra inställningen för ' den egna databasegenskapen VisaStartformulär.

If DisplayStartup = True Then DoCmd.OpenForm "Huvudmeny" End If

DoCmd.Close acForm, "Start"

(52)

Ta bort komp:

Option Compare Database Option Explicit

Private Sub cmdUpdate_Click() TaBort

DoCmd.Close End Sub

Private Sub Form_Close() intCheckNodOpen = 0

DoCmd.SelectObject acForm, "NyttSkap", False DoCmd.GoToControl "lstKomp"

End Sub

Private Sub krsDelete_AfterUpdate() If krsDelete.Value <> 0 Then cmdUpdate.Enabled = True Else cmdUpdate.Enabled = False End If End Sub Sub TaBort() Dim DB As Database Dim rstKomp As Recordset Dim strSQLKomp As String

strSQLKomp = "Select * From tblDelaNodKomp Where tblDelaNodKomp.NodID = " & NodID.Value & " AND tblDelaNodKomp.KompID = " & KompID.Value & ""

strSQLKomp = strSQLKomp & " Order By tblDelaNodKomp.NodID;" Set DB = DBEngine.Workspaces(0).Databases(0)

Set rstKomp = DB.OpenRecordset(strSQLKomp) If Not rstKomp.EOF Then

Do While Not rstKomp.EOF rstKomp.Delete

rstKomp.MoveNext Loop

(53)

rstKomp.Close Else rstKomp.Close End If DB.Close End Sub

(54)

Timer:

Option Compare Database Option Explicit

Dim intCounter As Integer Private Sub Form_Load() Me.TimerInterval = 50 txtCounter.Value = "." 'Form_Timer

End Sub

Private Sub Form_Open(Cancel As Integer) Form_Timer

End Sub

Private Sub Form_Timer()

If intCounter = 39 Then txtCounter.Value = "." intCounter = 0

Else

intCounter = intCounter + 1

txtCounter.Value = txtCounter.Value & "." 'DoCmd.RepaintObject acForm, "Timer" End If

(55)

Report visa komponenter:

Option Compare Database Option Explicit

Private Sub Report_Open(Cancel As Integer) DoCmd.Maximize

End Sub

Report visa skåp:

Option Compare Database Option Explicit

Private Sub Report_Open(Cancel As Integer) DoCmd.Maximize

References

Related documents

Bland annat var det viktigt att skåpet skulle kunna hanteras av en person, istället för två som var fallet med det gamla skåpet. Vi vet att Elektroskandia tidigare tagit

• Räka: spelaren väljer ett nummer och kastar omedelbart kortet med samma siffra; nästa spelare drar två kort från leken.. • Nakensnäcka: spelaren kan byta färg på kortet i

§ Välj kapsling så tidigt som möjligt, att hitta rätt kapsling när alla parametrar är satta slutar oftast med en för stor och dyr kapsling!. § Våra profilkapslingar är

Öppningsbart fönster vänster sida andra raden B3BAD Fjärrstyrt centrallås med 2 fjärrkontroller CBFAJ Fönster höger sida fjärde raden (endast L3) B3EAB. Fönster vänster

De n kgl. M~nt- og Medai llesamling i Köpenhamn hade e n utställning av danska sedlar som visade sättet för deras framstä llning. Materialet kommer uteslutande från den

forskning om vad Generation Z har för attityder och värderingar i arbetslivet blir det snabbt tydligt att det inte finns en lika omfattande mängd forskning som det gör om

Du ska känna till skillnaderna mellan ryggradslösa och ryggradsdjur Kunna några abiotiska (icke-levande) faktorer som påverkar livet i ett ekosystem.. Kunna namnge några