30.08.2013 Views

visual basic applikationer för abb robotar robstat ... - Örebro universitet

visual basic applikationer för abb robotar robstat ... - Örebro universitet

visual basic applikationer för abb robotar robstat ... - Örebro universitet

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Examensarbete 20 poäng D-nivå<br />

VISUAL BASIC APPLIKATIONER FÖR<br />

ABB ROBOTAR<br />

Examinator: Dag Stranneby<br />

ROBSTAT & RS2WORLD<br />

VISUAL BASIC APPLIKATIONER FÖR<br />

ABB ROBOTAR<br />

ROBSTAT & RS2WORLD<br />

Reg.kod: Oru-Te-AUT067-Mag 102/04<br />

Magnus Wallgren<br />

Magisterprogrammet i Automatisering 160 p<br />

<strong>Örebro</strong> vårterminen 2004<br />

<strong>Örebro</strong> <strong>universitet</strong> <strong>Örebro</strong> University<br />

Institutionen <strong>för</strong> teknik Department of technology<br />

701 82 <strong>Örebro</strong> SE-701 82 <strong>Örebro</strong>, Sweden


Sammanfattning<br />

Detta examensarbete har ut<strong>för</strong>ts hos Löfqvist Engineering som är en oberoende<br />

systemleverantör av industriell automation med specialkunnande inom robotteknik.<br />

Examensarbetet är uppdelat i två delar.<br />

Magnus Wallgren<br />

2005-03-30<br />

Första delen består av att skriva programvara till ett loggningssystem av en<br />

helautomatiserad robotcell som hanterar och svetsar sidostag <strong>för</strong> Volvo Truck Corp.<br />

Programvaran ska också innehålla fil- och backuphantering.<br />

Detta genom<strong>för</strong>des och används idag på robotanläggningen hos Volvo Truck Corp. i<br />

Umeå.<br />

Andra delen består av att skriva programvara <strong>för</strong> ett kalibreringsfilter som filtrerar<br />

robotprogram från Robot Studio. I dagens läge får man korrigera positionerna efter att<br />

man laddat in ett nytt program i roboten som är gjort i Robot Studio. Detta beror på att<br />

Robotens koordinatsystem inte är helt rakt och att verkligheten skiljer sig från den<br />

simulerade världen i Robot Studio.<br />

Målet var att eliminera en så kallad ”touch up” av positionerna. Detta har genom<strong>för</strong>ts med<br />

goda resultat. En fortsatt utveckling av programvaran kommer att ske och senare kommer<br />

programvaran som ett <strong>för</strong>sta steg att introduceras hos Volvo Construction Equipment i<br />

Hallsberg.<br />

Abstract<br />

This project has been performed at Löfqvist Engineering which is an independent system<br />

supplier of industrial automation with special qualification in robotics.<br />

This project is divided in two parts.<br />

The first part is to write a program to a logging system to a total automatic robot cell<br />

which handles and welds a detail for Volvo Truck Corp. The program shall also include<br />

file- and backup handling.<br />

This project went well and the software is used today on a robot cell at Volvo Truck Corp.<br />

in Umeå.<br />

The second part is to write a program for a calibration filter which filters robot programs<br />

from Robot Studio. Today you have to make an adjustment to the target positions after<br />

you have loaded a new program in the robot which is created from Robot Studio. This is<br />

because that the robot coordinate system is not completely straight as it is in Robot Studio<br />

and there is often small difference between the real world and the simulated world in<br />

Robot Studio.<br />

The goal was to eliminate a so called “touch up” of the positions. This has been performed<br />

with god results. Further development of this program will be done and later the program<br />

will be introduced as a first step at Volvo Construction Equipment in Hallsberg.


Innehålls<strong>för</strong>teckning<br />

Magnus Wallgren<br />

2005-03-30<br />

SAMMANFATTNING 1<br />

ABSTRACT 1<br />

INNEHÅLLSFÖRTECKNING 1<br />

1. FÖRORD 5<br />

ROBSTAT 6<br />

2. INLEDNING 6<br />

2.1 Bakgrund 6<br />

2.2 Kravspecifikation 6<br />

Statistik 7<br />

Filhantering 7<br />

Backuphantering 7<br />

3. VERKTYG 8<br />

3.1 Visual Basic 6.0 8<br />

3.2 WebWare SDK 3.0 8<br />

3.3 ActiveX-komponent 9<br />

3.4 Robot 9<br />

3.4.1 Allmänt 9<br />

3.4.2 Robotarna 9<br />

4. GENOMFÖRANDE 10<br />

4.1 Visual Basic 6.0 10<br />

4.2 Kommunikation 10<br />

4.3 Filhantering 11<br />

4.4 Backuphantering 11<br />

4.5 Loggning 12<br />

5 SYSTEMBESKRIVNING 14<br />

5.1 Inledning 14<br />

5.2 Kommunikation 14


Magnus Wallgren<br />

2005-03-30<br />

5.3 Systemfiler 14<br />

ThisWeek.log 14<br />

OtherWeeks.log 14<br />

Backup.cfg 14<br />

Interval.cfg 14<br />

Schema.cfg 14<br />

5.4 Loggfiler 14<br />

5.5 Programbeskrivning 15<br />

5.5.1 Inledning 15<br />

5.5.2 Huvudprogrammet 15<br />

5.5.3 Filhanteraren 16<br />

5.5.4 Ny tidsperiod flödesdiagram 16<br />

5.5.5 Ny tidsperiod stapeldiagram 16<br />

5.5.6 Om 16<br />

5.5.7 Schema 16<br />

5.5.8 Skapa backup 16<br />

5.5.9 Automatisk backup 16<br />

5.5.10 Visa tidigare veckor 16<br />

5.5.11 Meddelande 16<br />

6 UTVÄRDERING 17<br />

7 DISKUSSION 18<br />

7.1 Vidareutveckling 18<br />

RS2WORLD 19<br />

8 INLEDNING 19<br />

8.1 Bakgrund 19<br />

8.2 Kravspecifikation 19<br />

9. VERKTYG 21<br />

9.1 Microsoft Access 2002 21<br />

9.2 Robot Studio 3.0 21<br />

9.3 ADO 21<br />

9.4 SQL 21<br />

10. TEORI 22<br />

11. GENOMFÖRANDE 25<br />

11.1 Kommunikation 25<br />

11.2 Test mot Robot 25


Magnus Wallgren<br />

2005-03-30<br />

11.3 Test mot Robot och lägesställare 25<br />

12. SYSTEMBESKRIVNING 27<br />

12.1 Inledning 27<br />

12.2 Exportfilter 27<br />

12.3 Importfilter 28<br />

12.4 Databashantering 28<br />

12.4 Program<strong>för</strong>klaring 29<br />

13. UTVÄRDERING 31<br />

14. DISKUSSION 32<br />

15. REFERENSER 33<br />

Bilaga 1, Användarmanual RobStat<br />

Bilaga 2, Användarmanual Rs2World<br />

Bilaga 3, Skapa en koppling mellan Robot och PC<br />

Bilaga 4, Addera och konfigurera en Helper Control<br />

Bilaga 5, RobStat flödesdiagram och funktioner


2005-03-30<br />

1. Förord<br />

Jag vill börja med att tacka alla på Löfqvist Engineering <strong>för</strong> en trevlig tid tillsammans!<br />

Speciellt tack till Per Malmqvist som varit min handledare på Löfqvist Engineering.<br />

<strong>Örebro</strong> maj 2004<br />

___________________________<br />

Magnus Wallgren<br />

Magnus Wallgren 5 (33)


RobStat 2005-03-30<br />

RobStat<br />

2. Inledning<br />

2.1 Bakgrund<br />

Löfqvist Engineering har fått en <strong>för</strong>frågan av Volvo Truck Corp. i Umeå om en PCprogramvara<br />

som loggar produktionsstatistik till deras robotcell som svetsar sidostag som<br />

Löfqvist levererar.<br />

2.2 Kravspecifikation<br />

Skapa ett operatörsinterface som tydligt visar robotens status, både nuvarande och<br />

tidigare. Diagram över robotens status ska tydligt visa planerade stopp, oplanerade stopp<br />

och system<strong>för</strong>luster uppdelat i olika kategorier. Genom det <strong>visual</strong>iseras utrustningens<br />

totala effektivitet. Det här blir sedan en utgångspunkt <strong>för</strong> <strong>för</strong>bättringar av systemet.<br />

Dokumentation av den totala produktionstiden (se figur 1).<br />

En filhantering ska ingå där operatören enkelt kan kopiera filer mellan roboten och Pc:n<br />

<strong>för</strong> att göra uppdateringar eller återställningar av systemet. Även en backuphantering ska<br />

finnas <strong>för</strong> systemets säkerhet.<br />

Figur 1<br />

Planerad<br />

produktionstid, Tpp<br />

Tillgänglig<br />

produktionstid, Tp<br />

Netto<br />

produktionstid<br />

Total produktionstid, T pt<br />

Cykeltid, C t<br />

Producerat antal, P a<br />

Utrustningens Totala Effektivitet (UTE-talet i %) =<br />

Tillgänglighet × Operationseffektivitet × 100<br />

Planerade STOPP, T ps<br />

Möten m.m.<br />

Oplanerade STOPP, Tos<br />

Tekniska störningar<br />

m m<br />

System<strong>för</strong>luster<br />

Brist in, fullt ut, m m<br />

Tillgänglighet =<br />

T − T − T<br />

Magnus Wallgren 6 (33)<br />

pt<br />

T<br />

ps<br />

pp<br />

Operationseffektivitet =<br />

C × P<br />

t<br />

T<br />

p<br />

a<br />

os


RobStat 2005-03-30<br />

Statistik<br />

• Nuvarande status, status <strong>för</strong> de senaste 24h och status <strong>för</strong> dom 8h senaste timmarna<br />

ska visas i form av diagram eller kortfattad text<br />

• Loggning av statusen ska innefatta, tillfällig status och tidpunkt(datum och klockslag).<br />

Filhantering<br />

• Operatören ska enkelt kunna leta igenom ett katalogträd och därefter kopiera filer<br />

mellan PC och Robot.<br />

Backuphantering<br />

• Operatören ska enkelt kunna göra backup och ha möjlighet att bestämma vart backupen<br />

ska lagras.<br />

Magnus Wallgren 7 (33)


RobStat 2005-03-30<br />

3. Verktyg<br />

3.1 Visual Basic 6.0<br />

Visual Basic 6.0 är ett programmeringsspråk där man enkelt skapar <strong>applikationer</strong> <strong>för</strong><br />

Windows. Valet av programmeringsspråk gjordes på följande grunder:<br />

• Visual Basic 6.0 är den programvara som finns och används hos Löfqvist idag<br />

• WebWare SDK använder sig av ActiveX komponenter<br />

• Visual Basic 6.0 har stöd <strong>för</strong> ActiveX komponenter.<br />

3.2 WebWare SDK 3.0<br />

Med WebWare SDK (Software Development Kit) kan man skapa Windows<strong>applikationer</strong><br />

som kommunicerar med ABB-<strong>robotar</strong>. WebWare SDK är en samling verktyg som<br />

underlättar vid kommunikation mellan PC och Robot. Det stödjer bland annat<br />

<strong>applikationer</strong> som är skapats i Microsoft Visual Basic. Gränssnittet mellan WebWare SDK<br />

och Visual Basic är ActiveX-komponenter.<br />

WebWare SDK innehåller även en ABB Virtual Controller (se figur 2) som simulerar en<br />

verklig robot. Detta möjliggör att man kan simulera det mesta offline. Dock skiljer sig<br />

vissa saker så som filhanteringssystemet. T ex protokollet som används <strong>för</strong><br />

kommunikation heter RAP (Robot Application Protocol) det stöjder bara filnamn på<br />

formen (8 + . + 3) tecken till skillnad från Windows som tillåter längre filnamn.<br />

WebWare SDK bygger på ABB Interlink Module (se figur 3) vars uppgift är att sköta<br />

kommunikationsgränssnittet <strong>för</strong> ActiveX komponenter. I ABB Interlink Module<br />

konfigurera man sina <strong>robotar</strong>.<br />

Figur 2<br />

Figur 3<br />

Magnus Wallgren 8 (33)


RobStat 2005-03-30<br />

Olika typer av ActiveX-komponenter erbjuds i WebWare SDK Helper Control, Button<br />

Control, Pilot Light Control, Label Control, Robot Box Control och ABB FileManager<br />

Control. Den ActiveX-komponent som används i projektet är Helper Control. Helper<br />

Control är den huvudsakliga komponenten som erbjuder en mängd olika funktioner <strong>för</strong><br />

kommunikation med S4 styrsystemet.<br />

3.3 ActiveX-komponent<br />

En ActiveX komponent är en programmodul som har ett speciellt gränssnitt som kan<br />

pluggas in i ett program som har stöd <strong>för</strong> ActiveX. ActiveX skapades av Microsoft <strong>för</strong> att<br />

användas på webbsidor istället <strong>för</strong> Java. ActiveX är dock inte begränsat till webbsidor<br />

utan kan fungera som moduler i vilket program som helst. Active X är en plattform <strong>för</strong><br />

komponentbaserad utveckling.<br />

3.4 Robot<br />

3.4.1 Allmänt<br />

Robotarna som används i projektet är ABB<strong>robotar</strong>. ABB är världsledande när det gäller<br />

robotbaserad automation och har över 100 000 <strong>robotar</strong> installerade runt om i världen.<br />

Dagens ABB <strong>robotar</strong> har styrsystemet S4 men en ny generation ABB<strong>robotar</strong> väntar med<br />

ett nytt styrsystem som heter IRC 5. Detta ska lanseras under december månad.<br />

3.4.2 Robotarna<br />

Robotarna som används i projektet är av typ IRB 1400, (se figur 4) och IRB 6400, (se<br />

figur 5) med styrsystemet S4.<br />

Figur 4 Figur 5<br />

Magnus Wallgren 9 (33)


RobStat 2005-03-30<br />

4. Genom<strong>för</strong>ande<br />

4.1 Visual Basic 6.0<br />

Till att börja med skapades en rad olika småprogram <strong>för</strong> att få öka <strong>för</strong>ståelse om hur<br />

Visual Basic fungerade.<br />

4.2 Kommunikation<br />

För att göra ett test av kommunikationen mellan ABB Virtual Controller och en Visual<br />

Basic-applikation gjordes följande steg:<br />

1. Först skapades en Robot i Virtual Robot Browser som skulle användas av ABB<br />

Virtual Controller<br />

2. I ABB Virtual Controller skapades några digital utgångar <strong>för</strong> simulering<br />

3. Därefter gjordes inställningar i ABB Interlink Configuration så att man kopplade<br />

den nya roboten till ABB Virtual Controller (se bilaga 3, skapa en koppling mellan<br />

robot och Pc)<br />

4. Ett nytt program skapades i Visual Basic och de nya WebWare SDK<br />

komponenterna adderades. ActiveX-komponenten, Helper-komponenten lyftes in i<br />

projektet, (se bilaga 4, addera och konfigurera en Helper Control )<br />

5. Helperfunktionerna som användes var:<br />

• Helper.IOChanged (…) som triggar på en ändring av IO-signalerna<br />

• Helper.S4DigitalRead(…) läser av en vald utgång<br />

6. En enkel presentation av signalerna gjordes (se figur 6). Ett <strong>för</strong>sta test ut<strong>för</strong>des<br />

genom att sätta den digital utgång nr 2 till ett med ABB Virtual Controlller<br />

resultatet blev att utgång nr 2 i Visual Basic programmet blev ett. Principen <strong>för</strong><br />

kommunikation mellan robot och PC var utprovad (se figur7).<br />

Figur 6<br />

Figur 7<br />

Skapar en robot<br />

Virtual Robot Browser<br />

Startar roboten,<br />

skapar digitala utgångar<br />

ABB Virtual Controller<br />

Skapar koppling mellan<br />

Virtual Robot Browser och<br />

ABB Virutal Controller<br />

ABB Interlink Configuration<br />

WebWare SDK,<br />

ActiveX-komponent<br />

Visual Basic<br />

Skapar koppling mellan<br />

robot och VB-programmet<br />

Programmet<br />

Magnus Wallgren 10 (33)


RobStat 2005-03-30<br />

4.3 Filhantering<br />

Först användes ABB File Manager Control som är en färdig komponent <strong>för</strong> filhantering.<br />

En upptäckt gjordes <strong>för</strong>st då filhanteringen skulle testas mot de riktigt <strong>robotar</strong>na. Det<br />

visades sig att ABB File Manager inte kunde användas eftersom den inte hade stöd <strong>för</strong><br />

filnamn längre än (8+.+3) tecken. Anledning till att det inte upptäckts tidigare är att den<br />

simulerade roboten är i Windows miljö och där är det tillåtet med längre filnamn. Följande<br />

konstaterande gjordes:<br />

• Om filnamnet var ”SvetsVänsterSida.mod” visades bara de tolv <strong>för</strong>sta tecknen<br />

”SvetsVänster” av filnamnet i filstrukturen. Detta resulterade att om man ville ta<br />

bort filen så <strong>för</strong>sökte programmet ta bort en fil vid namnet ”SvetsVänster”.<br />

Eftersom ingen sådan fil fanns så togs ingen fil bort heller.<br />

Detta beror på att kommunikationsprotokollet RAP, (Robot Application Protocol) bara<br />

hanterar filnamn på formatet (8+.+3) tecken. Det är en kvarleva sen tidigare(DOS) då<br />

endast filnamn på formen 8.3 tecken var tillåtet.<br />

Lösningen på det var att bygga en helt egen filhanterare som använde sig utav FTP istället.<br />

En ny filhanterare skapades med stöd ifrån en ActiveX-komponent <strong>för</strong> FTP. FTP används<br />

enbart <strong>för</strong> att visa katalog- och filstruktur <strong>för</strong> roboten. För att kopiera filer mellan PC och<br />

robot, ta bort filer/kataloger på Robot eller PC används ActiveX-komponenten<br />

Helperkontroller. Funktionerna som utnyttjades var:<br />

• Helper.S4FileDelete(…) - Tar bort en fil<br />

• Helper.S4FileCopy(…) - Kopierar en fil från Robot till Pc eller Pc till Robot<br />

• Helper.S4MkDir(…) - Skapar en katalog<br />

• Helper.S4RmDir(…) - Tar bort en katalog.<br />

4.4 Backuphantering<br />

För att kunna gör en backup via Pc:n används ActiveX-komponenten Helperkontroll igen.<br />

Här är en stegvis beskrivning på hur en backup skapas.<br />

1. Först skapas en backup på robotens enhet ”/hd0a/” (en datorns motsvarighet till<br />

enhet ”/hd0a/” är enhet ”C:\”) till det används Helperkontroller funktionerna:<br />

• Helper.S4Backup(…) - Skapar en backup på roboten<br />

En backup består av robotens systemfiler, parametrar och moduler. Fyra<br />

huvudkataloger skapas vid en backup:<br />

• Backinfo - Information om backupen<br />

• Rapid - Programmoduler<br />

• Home - Kopia av home katalogen<br />

• Syspar - Systemparametrar.<br />

2. När en backup skapas hamnar den på robotens hårddisk i valbar katalog. Sedan får<br />

man kopiera backupen till Pc:n . Det enda sättet att göra det är att kopiera över fil<br />

<strong>för</strong> fil. För att möjliggöra det listar man alla kataloger som skapats av backupen.<br />

Magnus Wallgren 11 (33)


RobStat 2005-03-30<br />

Det görs av en rekursiv funktion som anropar sig själv och letar igenom hela<br />

katalogstrukturen <strong>för</strong> backupen. Därefter skapas samma katalogstruktur i Pc:n i<br />

valbar backupkatalog.<br />

3. Med hjälp av katalogstrukturen listar man alla filer. Detta görs med hjälp av en<br />

ActiveX-komponent <strong>för</strong> FTP. Nu har man fullständig sökväg till varje fil. Därefter<br />

kopieras alla filerna från backupen på roboten till Pc:n. En identisk kopia av<br />

Backupen har nu skapats i Pc:n.<br />

4. Backupen som skapades på roboten ska nu tas bort. Detta görs genom att ta bort fil<br />

<strong>för</strong> fil. Eftersom alla filernas sökvägar redan finns listade sen tidigare görs det<br />

enkelt. Helperfunktionen som används:<br />

• Helper.S4FileDelete(…) - Tar bort en fil<br />

5. Därefter tar man bort alla katalogerna och även dom finns listade sen tidigare<br />

vilket gör det enkelt också. Helperfunktionen som används:<br />

• Helper.S4RmDir(…) - Tar bort en katalog<br />

Återställning av systemet med hjälp av en backup görs manuellt av operatören till<br />

robotcellen.<br />

4.5 Loggning<br />

För loggning används ActiveX-komponenten Helper Control. Funktionerna som utnyttjas<br />

är följande:<br />

• Helper.InterfaceStat(…) - Kontrollerar så det finns en koppling<br />

mellan Robot och Pc<br />

• Helper.IOChange(…) - Registrera IO-signals ändring<br />

• Helper.DigitalRead(…) - Läser av IO-signaler<br />

• Helper.S4ProgramNumVarRead - Läser av en numerisk variabel.<br />

Först kontrolleras det att det finns en koppling mellan robot och Pc. Sen läser man av en<br />

IOsignal från roboten som talar om det är planerat stopp, oplanerat stopp, system<strong>för</strong>luster<br />

eller produktion. Man läser även av två numeriska variabler som talar om antal<br />

producerade enheter och antalet kasserade enheter. Denna procedur sköts av en timer som<br />

exekverar dessa händelser varje sekund <strong>för</strong> att ständigt få en uppdatering i loggningen.<br />

Fyra variabler håller reda på hur många sekunder som planerat stopp, oplanerat stopp,<br />

system<strong>för</strong>luster och produktion inträffats. Den totala tiden adderas ihop och sedan räknar<br />

man procentuellt ut hur länge varje typ av loggning inträffat. Detta presenteras sedan i<br />

form av flödesdiagram och stapeldiagram.<br />

När det gäller UTE-talet så tillkom två ytterligare faktorer antalet producerade enheter och<br />

antalet kasserade enheter. Dessa värden håller roboten reda på och avläses som två<br />

numeriska värde från roboten. Presentation av Utrustnings Totala Effektivitet (UTE-talet i<br />

%). UTE-talet beräknas enligt följande :<br />

Magnus Wallgren 12 (33)


RobStat 2005-03-30<br />

Tillgänglighet =<br />

T − T − T<br />

Total produktionstid, T pt<br />

Planerade stopp, T ps<br />

Oplanerade stopp, T os<br />

Planerad prdouktionstid, T pp<br />

pt<br />

T<br />

Operationseffektivitet =<br />

ps<br />

pp<br />

p<br />

os<br />

C t × P<br />

T<br />

Cykeltid, C t<br />

Producerat antal, P a<br />

Tillgänglig produktionstid, T p<br />

Kvalitetsutbyte =<br />

Producerat antal, P a<br />

Kvalitets<strong>för</strong>luster, Kf<br />

P × Kf<br />

a<br />

P<br />

a<br />

a<br />

UTE-talet =Tillgänglighet × Operationseffektivitet × kvalitetsutbyte × 100<br />

Magnus Wallgren 13 (33)


RobStat 2005-03-30<br />

5 Systembeskrivning<br />

5.1 Inledning<br />

Ett PC-program som loggar produktionsstatistik över en helautomatiserad robotcell som<br />

hanterar och svetsar sidostag till Volvo Truck Corp. Samt har fil- och backuphantering <strong>för</strong><br />

<strong>robotar</strong>na i cellen. För att <strong>för</strong>stå hur programmet användas se bilaga 1, Användarmanual<br />

<strong>för</strong> RobStat.<br />

5.2 Kommunikation<br />

PC programmet kommunicerar med två ABB<strong>robotar</strong>, en av typen IRB 1400 och IRB6400,<br />

båda med S4 styrsystem. Gränssnittet mellan PC och robot är ABBs WebWare SDK. Med<br />

hjälp av två ActiveX Control i Visual Basic som vardera är knutna till en av <strong>robotar</strong>na kan<br />

man göra samma saker som med robotens programmeringsdosa, (Teach Pendant).<br />

5.3 Systemfiler<br />

Programmets inställningar och loggning sparas i följande filer:<br />

ThisWeek.log<br />

I den här filen lagras loggningen <strong>för</strong> pågående vecka. Det som lagras är tiderna <strong>för</strong><br />

planerat stopp, oplanerat stopp, system<strong>för</strong>luster och produktion. Även UTE-talet lagras i<br />

den filen.<br />

OtherWeeks.log<br />

Här lagras information över tidigare loggade veckor. Information är den samma som <strong>för</strong><br />

filen ThisWeek.log men även vilket år och vecka som loggning gjorts finns med.<br />

Backup.cfg<br />

Här finns information om när den automatiska backupen gjordes.<br />

Interval.cfg<br />

Intervallen <strong>för</strong> automatisk backup lagras här.<br />

Schema.cfg<br />

Här ligger schemat <strong>för</strong> loggningen lagrad.<br />

5.4 Loggfiler<br />

Det är i loggfilerna som all information sparas om när och hur länge varje typ av status<br />

(oplanerat stopp, planerat stopp o s v) inträffat. Namngivningen av dess filer sker enligt<br />

följande: ”AS275_ + årtalet + _V + vecka + .txt/log” t ex ”AS275_2004_V21.log”<br />

Det finns två typer av loggfiler en där informationen är kommaseparerad (med fil<br />

ändelsen .log) och en som är mer lättläst (med fil ändelsen .txt).<br />

Magnus Wallgren 14 (33)


RobStat 2005-03-30<br />

5.5 Programbeskrivning<br />

5.5.1 Inledning<br />

Programmet består av 10 delar. Figur 8 ger en överskådlig bild av programmet.<br />

I kommande avsnitt kommer varje del av programmet beskrivas närmare. För mer<br />

ingående beskrivningar av programdelarna se bilaga 5, RobStat flödesdiagram och<br />

funktioner.<br />

5.5.2 Huvudprogrammet<br />

När RobStat startas är det huvudprogrammet som visas. Det är härifrån som RobStat<br />

också avslutas. Det är ifrån huvudprogrammet som du kan öppna alla underfönster t ex<br />

filhanteraren. Huvudprogrammet sköter följande saker:<br />

• Skapar alla systemfiler med grundinställningar om dessa inte finns när programmet<br />

startas<br />

• Skapar loggfilerna ”AS274_årtal_vecka.txt” och ”AS274_årtal_vecka.log”<br />

• Uppdaterar flödesdiagrammet, stapeldiagrammen och UTE-talet<br />

• Läser av schemat och utifrån det startar och stoppar loggning<br />

• Räknar ut tiden <strong>för</strong> hur länge varje typ av status (oplanerat stopp, produktion o s v)<br />

inträffat<br />

• Läser av IO–signalerna från <strong>robotar</strong>na<br />

• Skriver till loggfilerna vid ändring av IO-signalerna<br />

• Sköter automatisk backup av <strong>robotar</strong>na<br />

• Uppdaterar datum och klocka kontinuerligt, som visas i huvudfönstret.<br />

Figur 8<br />

Underfönster<br />

Huvudfönstret<br />

Programstart<br />

Huvudprogram<br />

Avslutar programmet<br />

Filhanteraren Ny tidsperiod flödesdiagram Ny tidsperiod stapeldiagram Om Schema Skap backup Automatisk backup Visa tidigare veckor<br />

Meddelande<br />

Magnus Wallgren 15 (33)


RobStat 2005-03-30<br />

5.5.3 Filhanteraren<br />

När filhanterare startas visas katalogstrukturen <strong>för</strong> Pc:ns enhet C:\. Filhanteraren<br />

kontrollerar vilka <strong>robotar</strong> som finns kopplade till applikationen och visar dessa i en lista.<br />

Efter att en robot valts och en enhet, visar filhanteraren katalog struktur <strong>för</strong> vald enhet.<br />

Följande uppgifter kan genom<strong>för</strong>as av filhanteraren:<br />

• Kopiering av filer mellan Robot och PC<br />

• Tabort filer på PC eller Robot<br />

• Tabort kataloger på PC eller Robot.<br />

5.5.4 Ny tidsperiod flödesdiagram<br />

När det här fönstret öppnas läses nuvarande tidsperiod in <strong>för</strong> flödesdiagrammet. Om man<br />

skriver in en ny tidsperiod sköter den här delen om ändringen av tidsperioden <strong>för</strong><br />

flödesdiagrammet.<br />

5.5.5 Ny tidsperiod stapeldiagram<br />

När det här fönstret öppnas läses nuvarande tidsperiod in <strong>för</strong> stapeldiagrammet. Om man<br />

skriver in en ny tidsperiod sköter den här delen om ändringen av tidsperioden <strong>för</strong><br />

stapeldiagrammet.<br />

5.5.6 Om<br />

Det här fönstret visar bara en faktaruta om RobStat.<br />

5.5.7 Schema<br />

När det här fönstret öppnas läses nuvarande schema in. Det finns lagrat i filen<br />

”schema.cfg”. Den här delen sköter bara ändring av schemat.<br />

5.5.8 Skapa backup<br />

När man ska göra en backup läser program in vilken robot man valt att göra backup på och<br />

i vilken katalog backupen ska hamna. Backupen sker sedan enligt principen som beskrivs i<br />

avsnittet 4.4 backuphantering.<br />

5.5.9 Automatisk backup<br />

När det här fönstret öppnas läses nuvarande backupkatalog in från filen ”backup.cfg” och<br />

backupintervall från filen ”Interval.cfg”. Här har man sedan möjlighet att ändra<br />

backupkatalog och interval. Efter ändringar skriv ändringarna till filerna ”backup.cfg” och<br />

”interval.cfg”.<br />

5.5.10 Visa tidigare veckor<br />

När det här fönstret öppnas läses information om tidigare loggade veckor in ifrån filen<br />

”OtherWeeks.log”. Årtal <strong>för</strong> loggning läggs in i en lista <strong>för</strong> sig. Där man sedan väljer<br />

vilket årtal man vill se loggning över. Därefter läses alla veckor ut från filen<br />

”OtherWeeks.log” som är gjorde det året. Efter att man valt en vecka visas sedan<br />

information om loggningen i form av ett stapeldiagram och ett UTE-tal.<br />

5.5.11 Meddelande<br />

Vid ett fel i huvudprogrammet anropas den här funktionen som visar ett meddelande.<br />

Magnus Wallgren 16 (33)


RobStat 2005-03-30<br />

6 Utvärdering<br />

Under projektets gång ändrades kravspecifikationen och följande punkter tillkom:<br />

• Ett schema som bestämmer tidpunkterna <strong>för</strong> loggning av system<br />

• Historik över tidigare loggade veckor<br />

• Mer faktorer gällande beräkningarna av UTE-talet. Antalet producerade enheter<br />

och antalet kasserade enheter skulle vägas in i beräkningarna<br />

• Automatisk backup av systemet.<br />

Dessa ändringar kom efterhand. Detta med<strong>för</strong>de att programmet ganska sn<strong>abb</strong>t växte i<br />

storlek och programmets struktur ändrades några gånger.<br />

Utvecklingen av programmet gjordes mot ABB Virtual Controller. Vid provkörning av<br />

programmet mot de riktigt <strong>robotar</strong>na visade det sig att det var saker som skiljde sig mellan<br />

ABB Virtual Controller och de riktiga <strong>robotar</strong>na. Kommunikations protokollet RAP<br />

(Robot Application Protocol) tillät bara filnamn på formen 8.3 tecken. Detta innebar att en<br />

helt ny filhanterare fick programmeras med hjälp av en FTP ActiveX-komponent.<br />

I Visual Basic finns det färdiga meddelande rutor, ”MsgBox”, som man kan använda sig<br />

av när man vill visa ett meddelande till användaren. Det visade sig dock att när den här<br />

meddelanderutan kom fram stannade programmet och väntade bara på kvittens från<br />

meddelanderutan. Lösningen på detta var att göra egna meddelanderutor där programmet<br />

fortsatte att exekveras trots att en meddelanderuta kommit upp på skärmen.<br />

Slutligen testades allt funktioner i programmet mot den riktiga robotcellen <strong>för</strong> att se att allt<br />

fungerade. Exempel på tester som genom<strong>för</strong>des var t ex: Backuper på <strong>robotar</strong>na skapades<br />

och kontrollerades så att de var kompletta, tid och datum ändrades i datorn <strong>för</strong> att simulera<br />

loggning över några veckor. Programmet kördes kontinuerligt över en hel helg (fredagmåndag).<br />

Alla tester som genom<strong>för</strong>des gick bra. Det färdiga programmet uppfylld alla<br />

punkter på specifikationen och även de som tillkom under projektets gång.<br />

Slutligen installerades det färdiga programmet på plats hos Volvo Truck Corp. i Umeå där<br />

det idag används.<br />

Magnus Wallgren 17 (33)


RobStat 2005-03-30<br />

7 Diskussion<br />

7.1 Vidareutveckling<br />

I dagens läge är programmet väldigt kundspecifikt. Det är anpassat <strong>för</strong> en speciell<br />

robotcell. Det går inte att plocka visa delar av programmet rakt av och plocka ihop till ett<br />

nytt program utan att ändra i programkoden.<br />

En vidareutveckling av programmet skulle kunna vara att man byggde mer generella<br />

moduler som var helt fristående. Då skulle det fortfarande kunna vara väldigt<br />

kundspecifikt och tiden <strong>för</strong> programkonstruktion skulle kunna reduceras kraftigt.<br />

Magnus Wallgren 18 (33)


Rs2World 2005-03-30<br />

Rs2World<br />

8 Inledning<br />

8.1 Bakgrund<br />

Sedan man började använda offlineprogrammering av <strong>robotar</strong> har man alltid haft problem<br />

med att <strong>robotar</strong>nas absolutnoggrannhet inte har varit tillräcklig. Repeternoggrannheten har<br />

länge varit nere i en nivå av ca ±0.1 mm, men just absolutnoggrannheten har varit mycket<br />

sämre. På en hel anläggning med externa axlar, robotbärare odyligt så kan<br />

absolutnoggrannheten vara så dålig som ±10 mm. Detta faktum gör det väldigt svårt att<br />

programmera offline och sedan använda programmet direkt i den verkliga roboten.<br />

Anledningen till den dåliga absolutnoggrannheten är att robotens koordinatsystem inte är<br />

rakt. Varje axel i koordinatsystemet är krokig. Ju längre utsträckt en robot är, desto mer<br />

krokigt är koordinatsystemet.<br />

På en ABBrobot löser man detta till viss del genom att använda workobject, alltså lokala<br />

koordinatsystem som är placerade närmare den plats där man har sina positioner<br />

programmerade. Dessa workobject är sedan kalibrerade var <strong>för</strong> sig i roboten och i offline<br />

miljön.<br />

Denna lösning med workobject ger en <strong>för</strong>bättrad absolutnoggrannhet. Dock så är det här<br />

bara en lokal <strong>för</strong>bättring. Ju längre från origo på ett workobject man programmerar sina<br />

positioner, desto sämre blir de. Några decimeter från origo så kan det vara tillräckligt<br />

dåligt <strong>för</strong> att man inte skall kunna köra programmet direkt utan att göra en touch up.<br />

8.2 Kravspecifikation<br />

Målet med det här projektet är att i största möjliga mån helt eliminera behovet av touch up<br />

av robotprogram som laddats ner från en offlinemiljö till en verklig robot. I ett <strong>för</strong>sta<br />

skede så kommer det här projektet att rikta in sig på kalibrering av ABB<strong>robotar</strong> när man<br />

använder ABBs Robot Studio som offline verktyg.<br />

Programmet ska kunna hantera olika konfigurationer av externa axlar samt robotbärare.<br />

Det ska finnas möjlighet att via någon form av interface studera och ändra i de positioner<br />

som är lagrade. Man ska då kunna justera värden, samt lägga till eller ta bort poster. I<br />

denna vy bör man kunna sortera posterna efter olika kriterier, t ex externa axlar,<br />

robotpositioner, datum och liknande.<br />

När man arbetar med det här programmet så kommer man att arbeta efter ett visst mönster.<br />

Arbetet blir indelat i olika moment. Nedan är en grov listning av dessa:<br />

1. Programmering av programmet offline i robotstudio<br />

2. Filtrering av programmet genom det här beskrivna programmet<br />

3. Nerladdning till roboten<br />

4. Justering av programmet online (mindre och mindre justering ju mer positioner<br />

som finns i systemet)<br />

5. Import av programmet till PC <strong>för</strong> lagring av nya justeringar.<br />

Magnus Wallgren 19 (33)


Rs2World 2005-03-30<br />

Hela systemet bygger på ett exportfilter som man använder innan man skickar ett program<br />

till roboten, samt import av justerade positioner in till Pc:n. Hela systemet kommer att bli<br />

bättre och bättre på filtreringen ju längre man använder det. Det blir fler och fler<br />

kalibrerade positioner att använda som bas <strong>för</strong> filtreringen.<br />

Magnus Wallgren 20 (33)


Rs2World 2005-03-30<br />

9. Verktyg<br />

9.1 Microsoft Access 2002<br />

Access är en databashanterare från Microsoft. Access erbjuder ett användarvänligt och<br />

enkelt gränssnitt att jobba i. Access 2002 är den senaste version av Access.<br />

9.2 Robot Studio 3.0<br />

Robot Studio är en produkt ifrån ABB. I Robot Studio programmerar man sina <strong>robotar</strong><br />

offline och simulerar sina stationer. Robot Studio bygger på ABB Virtual Controller som<br />

är en simulerad robot tack vare det kan man göra realistiska simuleringar som motsvarar<br />

verkligheten.<br />

9.3 ADO<br />

ADO (Microsoft ActiveX Data Objects) kallas även ADODB. ADO är en Microsoft<br />

ActiveX-komponent och är ett gränssnitt <strong>för</strong> att komma åt data från en databas.<br />

9.4 SQL<br />

SQL (strukturerat frågespråk). Ett frågespråk är ett språk som man använder <strong>för</strong> att göra<br />

sökningar i en databas.<br />

Magnus Wallgren 21 (33)


Rs2World 2005-03-30<br />

10. Teori<br />

Här är en <strong>för</strong>klaring av teorin. I den här <strong>för</strong>klaringen är det bara ett xy-koordinatsystem.<br />

Men det är samma princip <strong>för</strong> ett xyz-koordinatsystem.<br />

Man programmerar en station i Robot Studio och vill att roboten ska gå till den fyllda<br />

punkten i figur 9. När man tankar ner robotprogram som man gjort i Robot Studio till den<br />

verkliga roboten visar det sig att roboten går till den punkten som inte är fylld i figur 9.<br />

Var<strong>för</strong> gör den det? Robotens koordinatsystem är inte helt rakt. Det blir krokigare ju<br />

längre ut <strong>robotar</strong>men sträcker sig till skillnad från Robot Studio. Där<strong>för</strong> blir det ett litet fel.<br />

Figur 9<br />

y<br />

Figur 10<br />

y<br />

x<br />

x<br />

För att få en <strong>för</strong>bättring av det här använder man sig utav ett så kallat workobject. Ett<br />

workobject är ett lokalt koordinatsystem.<br />

Man skapar en ny station i Robot Studio och programmerar sin punkt efter ett workobject<br />

istället. När man sedan laddar ner programmet tar man inte med sig workobjectet från<br />

Robot Studio utan man skapar ett nytt workobject i roboten. Detta med<strong>för</strong> att roboten går<br />

exakt till den fyllda punkten i figur 10 eftersom det är i den punkten som workobjectet är<br />

inmätt från.<br />

Magnus Wallgren 22 (33)


Rs2World 2005-03-30<br />

Men när roboten ska åka till den fyllda punkten i figur 11 hamnar den vid den icke fyllda<br />

punkten istället. Dock lite bättre men ännu inte helt bra.<br />

Det är nu man får gå in i programmet och ändra. Man gör en så kallad ”touch up”,<br />

(jusering), av positionen manuellt. Man joggar roboten till den fyllda punkten och<br />

uppdaterar positionen. Nästa gång som roboten ska åka till den fyllda punkten i figur 11<br />

hamnar det perfekt, repeternoggrannheten är ± 0.1 mm.<br />

Denna manuella justering av positionen ska göras av programmet. Principen <strong>för</strong><br />

programmet är att man tar originalfilen från Robot Studio och den justerade filen som man<br />

manuellt uppdaterat.<br />

Figur 11<br />

y<br />

Figur 12<br />

y<br />

1<br />

2<br />

x<br />

x<br />

Positionen från originalfilen skulle motsvara den icke fyllda punkten i figur 11. Den<br />

justerade positionen skulle motsvara den fyllda punkten i figur 11. Nu kan man räkna ut<br />

en skillnad i x-led och y-led. Det är den justeringen som lagras i databasen tillsammans<br />

med originalpositionen.<br />

Man har nu en justering på position nr 1 i figur 12. Om man skulle programmera en ny<br />

position i Robot Studio position nr 2 och sedan filtrera den filen med justeringen som är<br />

Magnus Wallgren 23 (33)


Rs2World 2005-03-30<br />

gjord på position nr 1 skulle roboten få en bättre noggrannhet till position nr 2 än utan den<br />

justeringen.<br />

Det är det som systemet bygger på att man justerar på tidigare justerade positioner. Det<br />

här systemet blir bättre och bättre med tiden ju fler positioner som finns i databasen.<br />

En fråga är hur långt ifrån en position en punkt får ligga <strong>för</strong> att man ska använd sig utav<br />

den positionens justering till en annan. Av ut<strong>för</strong>da tester så bör avståndet inte vara längre<br />

än 200 mm, annars kan justeringen bli mer fel än igen justering alls. När det gäller<br />

lägesställaren som roterar objektet bör inte rotationen vara större än 10 grader.<br />

Magnus Wallgren 24 (33)


Rs2World 2005-03-30<br />

11. Genom<strong>för</strong>ande<br />

11.1 Kommunikation<br />

För att skapa en koppling mellan Visual Basic och Access fick man lägga till en referens i<br />

Visual Basic. Referensen som lades till var Microsoft ActiveX Data Objects 2.7 Library.<br />

Nu kunde man skapa en koppling mellan programmen med enbart programkod. Med hjälp<br />

av objektet ADO skapades nu kopplingen till databasen.<br />

11.2 Test mot Robot<br />

Vid det <strong>för</strong>sta testet av programmet ute på en robot skapades <strong>för</strong>st en modell i Robot<br />

Studio av ett bord med ett rutnät på 50x50 mm med en IRB 1400.<br />

En väg längs med rutnätet programmerades som roboten skulle följa <strong>för</strong> att se hur mycket<br />

fel roboten gick och <strong>för</strong> att sedan kunna justera positionerna. När modellen (se figur 13)<br />

var klar var det dags att ladda ner programmet i en riktig robot.<br />

Ett A2-papper med motsvarande rutnät 50x50 mm skrevs ut och tejpades fast på ett bord<br />

som placerades fram<strong>för</strong> roboten. För att få modellen och verkligheten att stämma överens<br />

mätes ett nytt verktyg in på roboten och ett nytt workboject (lokalt koordinatsystem) på<br />

A2-pappret.<br />

När roboten kördes längs med rutnätet behövde den bara komma dryga 30 cm ifrån det<br />

inmätta workobjectet <strong>för</strong> att få en liten avvikelse från rutnätet på ca 1-2 mm.<br />

En justering av alla positioner gjordes. Nu hade man två varianter av robotprogrammet<br />

dels originalfilen som var gjord i Robot Studio och den justerade filen. En Import gjordes i<br />

Rs2World det vill säga alla justerade positionerna importerades till databasen. För att se<br />

om programmet fungerade ut<strong>för</strong>des sedan en Export. Originalfilen från Robot Studio<br />

exporterades och en uppdatering av positionerna gjordes. Den nya filtrerade filen<br />

testkördes sedan i roboten med mycket goda resultat. Det spetsiga pekverktyget följde<br />

linjen ”exakt” så ingen felmarginal kunde mätas upp.<br />

11.3 Test mot Robot och lägesställare<br />

Vidare testning av programmet var att testa programmet mot en robot och en lägesställare<br />

(<strong>för</strong> att se exempel på en lägeställare se figur 14). Detta test gjordes på ABB i Laxå. Där<br />

fanns en station med robot och lägesställare som hade en färdig Robot Studio-modell.<br />

Tillvägagångssättet <strong>för</strong> testet var som det tidigare testet. Lägesställaren ställdes i olika<br />

vinklar och roboten pekade med ett spetsigt pekverktyg på olika punkter i lägesställaren<br />

från olika positioner. Justering av positionerna gjordes och importerades till databasen.<br />

Filtrering av originalfilen genom exportfiltret, där den filtrerade filen sedan testkördes i<br />

stationen. Även denna gång blev resultaten mycket goda. Det spetsiga pekverktyget<br />

pekade ”exakt” på punkterna i lägesställaren.<br />

Magnus Wallgren 25 (33)


Rs2World 2005-03-30<br />

Figur 13<br />

Figur 14<br />

Magnus Wallgren 26 (33)


Rs2World 2005-03-30<br />

12. Systembeskrivning<br />

12.1 Inledning<br />

För att se hur programmet ser ut och fungerar se bilaga 2, Användarmanual Rs2World.<br />

Programmet består av tre huvudsakliga delar<br />

- Exportfilter<br />

- Importfilter<br />

- Databashantering.<br />

Båda filtren arbetar mot databasen som innehåller alla tidigare justerade positioner i<br />

systemet. Databasen är en Microsoft Access databas.<br />

Databasen innehåller två versioner av varje kalibrerad position, originalet från Robot<br />

Studio samt den justerade positionen som är importerad.<br />

12.2 Exportfilter<br />

Exportfiltret används när man har gjort ett program i Robot Studio och skall över<strong>för</strong>a det<br />

till den riktiga roboten. Filtret gör följande.<br />

- Vid start av filtret så får man välja vilken fil som skall filtreras. Filen ska vara en<br />

robotfil i formatet *.mod. Man får även välja vad resultatet av filtreringen ska<br />

hamna i <strong>för</strong> fil.<br />

- Filtret kommer nu att börja söka efter de positioner som skall filtreras. Positioner<br />

som filtreras är av tre typer, automatiska Processpositioner (ArcL osv…) samt<br />

Approach- och departpositioner till processpositionerna, samt manuella (positioner<br />

med namn kalbipos1, kalibpos2 o s v). Approach- och departpositioner filtreras<br />

bara vid export, de importeras ej tillbaka till databasen. Anledningen till detta är att<br />

man inte justerar dessa så noggrant i roboten och vi vill inte importera dessa och få<br />

felaktiga justeringar.<br />

- När filtret hittat en position så kommer den att leta igenom databasen efter<br />

liknande positioner. Filtret följer då nedan prioritering:<br />

• Söker reda på alla positioner där de externa axlar som flyttar roboten är<br />

närmast den programmerade positionen. Avståndet får dock max vara<br />

500mm<br />

• Bland de hittade positionerna görs en ny sökning <strong>för</strong> att hitta de positioner<br />

där värdena <strong>för</strong> robotkonfigurationen är lika. Denna sökning görs <strong>för</strong> att<br />

säkerställa att roboten håller ungefärligen samma robotkonfiguration som<br />

den kalibrerade positionen.<br />

• Bland de hittade positionerna görs en ny sökning <strong>för</strong> att hitta de positioner<br />

där de externa axlarna som flyttar svetsobjektet är närmast programmerad<br />

position.<br />

• Bland de positionerna som hittats söks nu den position där robotpositionen<br />

är närmast programmerad position (x, y, z).<br />

Magnus Wallgren 27 (33)


Rs2World 2005-03-30<br />

• Nu används skillnaden mellan nominell position och kalibrerad position i<br />

den hittade databas posten <strong>för</strong> att kalibrera den programmerade positionen.<br />

- När en position är kalibrerad så söks nästa position som skall filtreras och samma<br />

procedur upprepas igen.<br />

12.3 Importfilter<br />

Importfiltret används när man har justerat ett program i roboten och vill addera de<br />

positionerna till sin databas. Importfiltret gör följande:<br />

- Vid start av filtret får man en fråga om vilken fil man vill importera. Filen ska vara<br />

en robotfil i formatet *.mod . Man väljer nu även vilken fil som är motsvarande fil<br />

ifrån Robot Studio.<br />

- Filtret börjar nu gå igenom programmet och letar efter positioner som ska lagras i<br />

databasen. De positioner som lagras är processinstruktioner, (ArcL odyl), samt<br />

manuellt valda positioner med namnet kalibpos1, kalibpos2 o s v. Approach- och<br />

departpositioner importeras inte. Om positionens (XYZ)-värde i orginalfilen från<br />

Robot Studio skiljer sig ifrån den justerade filen görs en kontroll om den<br />

positionen finns i databasen annars importeras den.<br />

- Datum samt klockslag lagras i varje post. Detta görs <strong>för</strong> att veta när posterna<br />

importerades.<br />

När alla positioner har lagrats så är importen klar och de nya positionerna kommer att<br />

användas nästa gång man exporterar ett program genom exportfiltret.<br />

12.4 Databashantering<br />

Databasen användes <strong>för</strong> att visa alla positioner som finns lagrade <strong>för</strong> stationen. Här kan<br />

man göra följande val:<br />

- Visa alla positioner<br />

- Söka efter position<br />

- Lägga till position<br />

- Ändra position<br />

- Ta bort position<br />

- Sortera tabellen.<br />

Magnus Wallgren 28 (33)


Rs2World 2005-03-30<br />

12.4 Program<strong>för</strong>klaring<br />

Figur 15 visar en bild över hur programmet fungerar.<br />

Förklaring till flödesdiagrammet<br />

1. En startbild visas på programmets och <strong>för</strong>etagets logga.<br />

2. Här väljer man vilken station man vill jobba med. Med en station menas t ex en<br />

robot och en lägesställare tillsammans.<br />

3. Avslutar programmet.<br />

4. Det här är huvudmenyn. Här ser man vilken station man jobbar med och de fyra<br />

valmöjligheterna här är Export, Import, Databas eller att avsluta programmet.<br />

5. Export betyder att du vill filtrera en fil. Ett nytt fönster <strong>för</strong> Export öppnas.<br />

5.1 Det här är steg 1 i export. Här anger man vilken fil som man vill filtrera.<br />

5.2 Här får man ange vad den nya filtrerade filen ska heta. Sen startar själva filtreringen.<br />

6. Import är import av nya positioner till databasen. Ett nytt fönster <strong>för</strong> import öppnas.<br />

6.1 I det här steget väljer man vilka typer av positioner som man vill importera process<br />

positioner (ArcL o s v) eller manuella positioner vid namnet (kalibpos1 o s v ).<br />

6.2 Här ska man ange vad den justerade filen heter.<br />

6.3 Här ska man ange originalfilen från Robot Studio till den justerade filen. Sen startar<br />

import av nya positioner.<br />

7. Databasen är en vy som visar alla positioner i databasen. Ett nytt fönster <strong>för</strong><br />

databasen öppnas.<br />

7.1 Visar alla positioner i databasen.<br />

7.2 Öppnar ett nytt fönster <strong>för</strong> sökning.<br />

7.2.1 Här fyller man i olika sökalternativ så som datum, x-position, y-position m m <strong>för</strong> att<br />

sedan göra en sökning. Fönstret stängs och nu visas bara det positioner som matchar<br />

mot din sökning.<br />

7.3 Öppnar ett nytt fönster <strong>för</strong> att lägga till en position.<br />

7.3.1 Här fyller man i alla värden <strong>för</strong> en ny position.<br />

7.4 Ett nytt fönster öppnas med den markerade positionens värden.<br />

7.4.1 Här skriver man i sina ändringar <strong>för</strong> positionen.<br />

Magnus Wallgren 29 (33)


Rs2World 2005-03-30<br />

7.5 Tar bort den/de markerade positionerna.<br />

7.6 Sorterar alla positionerna i tabellen efter valt alternativ t ex datum.<br />

8. Avslutar programmet.<br />

Figur 15<br />

2. Val av Station<br />

4. Huvudmeny<br />

1. Startbild<br />

5. Export 6. Import 7. Databas<br />

5.1 Steg1<br />

5.2 Steg2<br />

6.1 Steg1<br />

6.2 Steg2<br />

6.3 Steg3<br />

Programmet startas<br />

3. Avsluta<br />

7.1 Visa alla positioner<br />

7.2 Sök position<br />

7.2.1 Skriv i sökalternativ<br />

7.3 Lägg till position<br />

7.3.1 Skriver i nya position<br />

7.4 Ändra position<br />

7.4.1 Skriv i ändringar<br />

7.5 Ta bort position<br />

7.6 Sortera<br />

8. Avsluta<br />

Magnus Wallgren 30 (33)


Rs2World 2005-03-30<br />

13. Utvärdering<br />

Om man tittar på kravspecifikationen så har punkterna uppfyllts. Dock har det inte ut<strong>för</strong>ts<br />

något test på en riktig station som har en robotbärare. Det har inte funnits några<br />

möjligheter till det.<br />

Magnus Wallgren 31 (33)


Rs2World 2005-03-30<br />

14. Diskussion<br />

En fortsatt utveckling och testning av den här programvaran kommer att ske. Sedan<br />

kommer detta program att introduceras på Volvo Construction Equipment i Hallsberg. I<br />

dagens läge finns inga <strong>för</strong>slag på <strong>för</strong>bättringar av programvaran.<br />

Magnus Wallgren 32 (33)


Rs2World 2005-03-30<br />

15. Referenser<br />

RAPID Reference Manual, ABB Robotics AB, ABB produktnummer: 3HAC 7774-1<br />

Perry, Greg. Lär dig Visual Basic 6 på 3 veckor. (Jerker Thorell övers.) Sundbyberg:<br />

Pagina 1999, ISBN: 9163605236<br />

Wang, Wallace. Visual Basic 6 <strong>för</strong> dummies. (Hans Karlsson övers.) Stockholm: IDG<br />

Sweden Books 1999, ISBN: 9172410019<br />

International Data Group, 15 maj 2004<br />

http://www.idg.se<br />

Xtreme VB Talk, 15 maj 2004<br />

http://www.<strong>visual</strong><strong>basic</strong>forum.com<br />

Tecumseh Group Inc.,15 maj 2004<br />

http://www.tek-tips.com<br />

Magnus Wallgren 33 (33)


Bilaga1, Användarmanual RobStat 2005-03-30<br />

BILAGA 1<br />

ANVÄNDARMANUAL ROBSTAT 1<br />

1. Arkiv 1<br />

1.1 Avsluta 1<br />

2. Visa 1<br />

2.1 Flödes- och Stapeldiagram (senaste timmarna) 1<br />

2.2 Stapeldiagram och UTE-tal (den här veckan) 2<br />

2.3 Stapeldiagram (över tidigare veckor) 3<br />

3.Tidsperiod 4<br />

3.1 Stapeldiagram (senaste timmarna) 4<br />

3.2 Flödesdiagram (senaste timmarna) 4<br />

4. Verktyg 5<br />

4.1 Filhanteraren 5<br />

Kopiera fil 5<br />

Ta bort katalog 5<br />

Ta bort fil 5<br />

4.2 Backup 6<br />

4.2.1 Skapa backup nu 6<br />

5. Dokument 8<br />

5.1 Öppna loggfil 8<br />

5.1.1 Decimalkommaseparerad loggfil 8<br />

5.1.2 Lättläst loggfil 8<br />

6. Loggschema 8<br />

Ändra loggschemat 8<br />

Ingen loggning 8<br />

Magnus Wallgren


Användarmanual RobStat<br />

1. Arkiv<br />

1.1 Avsluta<br />

Här avslutar du programmet<br />

2. Visa<br />

2005-03-30<br />

2.1 Flödes- och Stapeldiagram (senaste timmarna)<br />

Startsidans uppbyggnad<br />

1. Här visas programmets namn RobStat samt klocka och datum<br />

2. Huvudmeny<br />

3. Här ser man om loggningen pågår eller om loggningen är stoppad<br />

4. Här visas dagens starttid <strong>för</strong> loggningen<br />

5. Här visas dagens stopptid <strong>för</strong> loggningen<br />

6. Här visas loggningen över senast loggad tid. T ex om det står 2 h så menas det att man<br />

visar statistik över de 2 senaste loggade timmarna. Inte nödvändigtvis de två sista<br />

timmarna<br />

7. Samma som <strong>för</strong> stapeldiagrammet<br />

3<br />

2<br />

Magnus Wallgren 1(8)<br />

1<br />

7<br />

4 5<br />

6


2.2 Stapeldiagram och UTE-tal (den här veckan)<br />

Här presenteras loggningen över veckan som pågår samt UTE-talet i procent.<br />

2005-03-30<br />

Magnus Wallgren 2(8)


2.3 Stapeldiagram (över tidigare veckor)<br />

Här kan du välja vilket år och vilken vecka som du vill se statistik över.<br />

2005-03-30<br />

Magnus Wallgren 3(8)


3.Tidsperiod<br />

2005-03-30<br />

3.1 Stapeldiagram (senaste timmarna)<br />

Här presenteras nuvarande tidsperiod <strong>för</strong> stapeldiagrammet. Vill du ändra tidsperioden skriver<br />

du in en ny tidsperiod mellan 1-24 h, (Rätt inmatning <strong>för</strong> t ex en tidsperiod på 6 h är enbart<br />

siffra 6), och klickar på Verkställ.<br />

3.2 Flödesdiagram (senaste timmarna)<br />

Här presenteras nuvarande tidsperiod <strong>för</strong> flödesdiagrammet. Vill du ändra tidsperioden<br />

skriver du in en ny tidsperiod mellan 1-12 h, (Rätt inmatning <strong>för</strong> t ex en tidsperiod på 6 h är<br />

enbart siffra 6), och klickar på Verkställ.<br />

Magnus Wallgren 4(8)


4. Verktyg<br />

4.1 Filhanteraren<br />

Används <strong>för</strong> att kopiera filer mellan Robot och PC, ta bort kataloger eller filer.<br />

2<br />

Notera att det är separata knappar <strong>för</strong> att ta bort en fil eller en katalog <strong>för</strong> dator<br />

respektive robot!<br />

2005-03-30<br />

Kopiera fil<br />

Följande exempel kopierar du en fil från roboten till datorn. Samma princip gäller <strong>för</strong> att<br />

kopiera en fil från datorn till roboten.<br />

1. Markera filen du vill kopiera (i exemplet ovan filen key.id)<br />

2. Markera den katalog i datorn du vill kopiera till (i exemplet ovan C:\Windows\)<br />

3. Klicka på


4.2 Backup<br />

4.2.1 Skapa backup nu<br />

Notera att en backup kan enbart göras om <strong>robotar</strong>na står i läge ”Auto”!<br />

2005-03-30<br />

För att skapa en backup väljer du <strong>för</strong>st vilken robot som du vill göra backup på ( i det här<br />

exemplet hanteringsroboten). Skriv eller välj vilken katalog du vill skapa backupen i.<br />

Genom att trycka på Bläddra visas högra delen av fönstret med katalogstrukturen som annars<br />

är dold. Klickar du på en katalog i katalogstrukturen skrivs sökvägen till katalogen in<br />

automatiskt i fältet till vänster (i det här fallet C:\WINDOWS).<br />

Klicka sedan på Skapa backup <strong>för</strong> att skapa backupen.<br />

Magnus Wallgren 6(8)


4.2.2 Automatisk backup<br />

2005-03-30<br />

Notera att en automatiskt backup kan enbart göras om <strong>robotar</strong>na står i läge ”Auto”!<br />

För att ändra inställningarna <strong>för</strong> Automatisk backup väljer du <strong>för</strong>st vilket intervall du vill ha<br />

på backuperna. Skriver in vilken katalog du vill lägga backuperna i, alternativt klicka på<br />

Bläddra då visas den högra delen av fönstret med katalogstrukturen som normalt är dold.<br />

Klicka på katalogen där du vill lägga backupen. Sökvägen till katalogen skrivs då in<br />

automatisk i det vänstra fältet (i det här fallet C:\WINDOWS). Klicka sedan på Verkställ.<br />

Nuvarande inställningar kommer då att ändras och visas i fältet högst upp i vänstra hörnet.<br />

Magnus Wallgren 7(8)


5. Dokument<br />

5.1 Öppna loggfil<br />

2005-03-30<br />

5.1.1 Decimalkommaseparerad loggfil<br />

Informationen sparas enligt följande i den decimalkommaseparerade loggfilen. Datum, tid,<br />

typ av status och antalet minuter <strong>för</strong> varje status.<br />

2004-03-15;13:36:01;Produktion;3,1<br />

2004-03-15;13:39:09;PlaneratStopp;1,6<br />

2004-03-15;13:40:44;SystemFörluster;0,9<br />

2004-03-15;13:41:36;OplaneratStopp;1<br />

2004-03-15;13:42:38;Produktion;1,4<br />

5.1.2 Lättläst loggfil<br />

Informationen sparas enligt följande i den lättlästa filen. Datum, tid, typ av status och antalet<br />

minuter <strong>för</strong> varje status.<br />

Datum Tid Status Period i minuter<br />

----------------------------------------------------------------------------------------<br />

2004-03-15 13:36:01 Produktion 3,1<br />

2004-03-15 13:39:09 PlaneratStopp 1,6<br />

2004-03-15 13:40:44 SystemFörluster 0,9<br />

2004-03-15 13:41:36 OplaneratStopp 1<br />

2004-03-15 13:42:38 Produktion 1,4<br />

6. Loggschema<br />

Loggschemat bestämmer när loggning ska starta och stoppa.<br />

Ändra loggschemat<br />

För att ändra loggschemat klickar du på Ändra och justerar schemat. Klicka därefter på<br />

Verkställ <strong>för</strong> att få dem nya inställningarna att gälla.<br />

Ingen loggning<br />

Om du inte vill logga en dag skriver du in samma start- och stopptid <strong>för</strong> den dagen tex<br />

StartTid 00:00 och StoppTid 00:00.<br />

Notera att det är ett kolon som används som skiljetecken (08:12). Giltig inmatning är<br />

klockslagen 00:00 till 23:59!<br />

Magnus Wallgren 8(8)


Bilaga 2, Användarmanual Rs2World 2005-03-30<br />

BILAGA 2<br />

ANVÄNDARMANUAL RS2WORLD 1<br />

1. Startbild 1<br />

2. Val av station 1<br />

3. Export 2<br />

3.1 Export – Steg 1 2<br />

3.2 Export – Steg 2 2<br />

4. Import 3<br />

4.1 Import – Steg 1 3<br />

4.2 Import – Steg 2 3<br />

4.3 Import – Steg 3 4<br />

5. Databas 4<br />

5.1 Databashanteringen 4<br />

5.2 Sök position 5<br />

5.3 Lägg till position 5<br />

5.3 Ändra position 6<br />

Magnus Wallgren


Användarmanual Rs2World<br />

2005-03-30<br />

1. Startbild<br />

Det här är startbilden som kommer upp när du startar Rs2World. Den <strong>för</strong>svinner efter tre<br />

sekunder.<br />

2. Val av station<br />

Här väljer du vilken station som du vill jobba med. Varje station har sin egen databas med<br />

positioner.<br />

Magnus Wallgren 1(6)


2005-03-30<br />

3. Export<br />

Det här är huvudmenyn. I den övre blå listen ser man vilken station som man jobbar med.<br />

3.1 Export – Steg 1<br />

Efter att man valt Export från huvudmenyn kommer det här fönstret upp. Det är steg 1 vid<br />

filtrering av en fil. Här skriver man i vilken fil som ska filtreras alternativ klickar på bläddra<br />

och väljer en fil därigenom.<br />

3.2 Export – Steg 2<br />

I steg 2 i filtrering av en fil skriver man in vad den nya filtrerade filen ska heta alternativ<br />

klickar på bläddra.<br />

Magnus Wallgren 2(6)


4. Import<br />

Vid val av Import av nya positioner ser meny ut enligt följande.<br />

2005-03-30<br />

4.1 Import – Steg 1<br />

I steg 1 vid import av positioner väljer man mellan automatiska positioner, ArcL o s v eller<br />

manuella positioner, kalibpos1 o s v.<br />

4.2 Import – Steg 2<br />

Har skriver man in vad den justerade filen heter. Alltså den filen som man har gjort en<br />

”touch up” på.<br />

Magnus Wallgren 3(6)


4.3 Import – Steg 3<br />

Här anger man vad original filen från Robot Studio heter till den justerade filen.<br />

5. Databas<br />

Databasen innehåller alla positionerna <strong>för</strong> stationen.<br />

5.1 Databashanteringen<br />

Det här är huvudfönstret <strong>för</strong> databasen.<br />

2005-03-30<br />

Magnus Wallgren 4(6)


5.2 Sök position<br />

Här matar man in olika sökalternativ. För att sedan söka efter positioner som matchar<br />

sökalternativen.<br />

2005-03-30<br />

5.3 Lägg till position<br />

Så här ser formuläret ut <strong>för</strong> att lägga till en ny position. Datum och tid fylls automatiskt in.<br />

Resten av värden måste fyllas i automatiskt.<br />

Magnus Wallgren 5(6)


2005-03-30<br />

5.3 Ändra position<br />

I huvudfönstret <strong>för</strong> databasen markerar du den positionen i tabell som du vill ändra. Det är<br />

den positionens värden som sedan visas i det här formuläret.<br />

Magnus Wallgren 6(6)


Bilaga 3, skapa en koppling mellan robot och Pc 2005-03-30<br />

Bilaga 3<br />

SKAPA EN KOPPLING MELLAN ROBOT OCH PC 2<br />

Steg 1 – Edit Profile 2<br />

Steg 2 – Add Profile 2<br />

Steg 3 – New Profile Name 2<br />

Steg 4 – Profile Editor 3<br />

Steg 5 – Add New Robot 3<br />

Steg 6 – Add New Alias 3<br />

Magnus Wallgren 1(4)


Bilaga 3, skapa en koppling mellan robot och Pc 2005-03-30<br />

Skapa en koppling mellan Robot och PC<br />

För att skapa en koppling mellan robot och Pc med Interlink Module följer du dessa steg.<br />

Steg 1 – Edit Profile<br />

Klicka på Menyn Tools >> Edit Profile<br />

Steg 2 – Add Profile<br />

Klicka på Add Profile<br />

Steg 3 – New Profile Name<br />

Skriv in ett Profile name och markera Type S4. Klicka på OK.<br />

Magnus Wallgren 2(4)


Bilaga 3, skapa en koppling mellan robot och Pc 2005-03-30<br />

Steg 4 – Profile Editor<br />

Klicka bort alternativet Simulate interface. Dina val ska se ut enligt följande. Skriv sedan i<br />

sökvägen till filen Eio.cfg <strong>för</strong> HanteringsRoboten.<br />

Steg 5 – Add New Robot<br />

Klicka på Tools >> Add new Robot<br />

Steg 6 – Add New Alias<br />

Skriv in ett robot alias namn och robotens IP-adress.Välj en Profile i det här exemplet,<br />

HanteringsRobot.<br />

Magnus Wallgren 3(4)


Bilaga 3, skapa en koppling mellan robot och Pc 2005-03-30<br />

Du har nu lagt till en robot till robotlistan i det här exemplet har man lagt till en robot vid<br />

namnet HanteringsRoboten.<br />

Magnus Wallgren 4(4)


Bilaga 4, Addera och konfigurera en Helper Control 2005-03-30<br />

Bilaga 4<br />

Addera och konfigurera en Helper Control<br />

Steg 1 2<br />

Steg 2 2<br />

Steg 3 3<br />

Steg 4 3<br />

Steg 5 4<br />

Magnus Wallgren 1(4)


Bilaga 4, Addera och konfigurera en Helper Control 2005-03-30<br />

Addera och konfigurera en Helper Control till ett VB projekt<br />

För att addera och konfigurerar ActiveX-komponenten Helper Control till en Visual Basicapplikation<br />

följer du dessa steg.<br />

Steg 1<br />

Klicka på Project>>Components<br />

Steg 2<br />

Bocka <strong>för</strong> nedanstående ruta och klicka på Ok.<br />

Magnus Wallgren 2(4)


Bilaga 4, Addera och konfigurera en Helper Control 2005-03-30<br />

Steg 3<br />

ActiveX-komponenterna har nu adderats till projektet se figuren nedan. Helperkomponenten<br />

är den komponenten som pilen pekar på. Den markeras och lyfts sedan in i projektet.<br />

Steg 4<br />

Om man högerklickar på Helperkomponenten får man upp dess egenskaper. I fliken General<br />

visas alla robotalias. Här visas alla robotalias som skapats i Interlink Module. Alltså är väljer<br />

man vilken robot som man knyter till Helperkomponenten.<br />

Magnus Wallgren 3(4)


Bilaga 4, Addera och konfigurera en Helper Control 2005-03-30<br />

Steg 5<br />

Sedan klickar du på fliken Digital Signals. Bocka <strong>för</strong> enligt figuren nedan. I listan IO<br />

Subscription List kommer alla IO-signaler att visas som är knutna till filen EIO.cfg <strong>för</strong> vald<br />

robot. Sökvägen till den filen konfigureras också genom Interlink Module. Det är mycket<br />

viktigt att EIO.cfg filen som finns i den verkliga roboten stämmer överens med den som finns<br />

i Pc:n. Annars kan man råka ut <strong>för</strong> t ex att man refererar till IO-signaler som inte finns i den<br />

riktigt roboten m m.<br />

Nu är alla inställningar gjorda <strong>för</strong> Helperkomponenten.<br />

Magnus Wallgren 4(4)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

Bilaga 5<br />

RobStat flödesdiagram och funktioner<br />

1. FLÖDESDIAGRAM 1<br />

1.1 Status 1<br />

1.2 Filhanteraren 2<br />

1.3 Ny tidsperiod flödesdiagram 3<br />

1.4 Ny tidsperiod stapeldiagram 3<br />

1.5 Skapa backup nu 4<br />

1.6 Automatisk backup 5<br />

1.7 Schema <strong>för</strong> loggning 5<br />

1.8 Visa tidigare veckor 6<br />

1.9 Om 6<br />

1.10 Meddelande 7<br />

2. FUNKTIONER 8<br />

2.1 Inledning 8<br />

2.2 Status 8<br />

Form_Load() 8<br />

Form_Unload() 8<br />

Helper1_IOChanged() 8<br />

Helper2_IOChanged() 8<br />

Loggning_Timer() 9<br />

KontrolläsningAvIOSignaler_Timer() 9<br />

RegisterTypAvStatus_Timer() 9<br />

SkrivTillSystemFiler_Timer() 9<br />

KlockaDatum_Timer() 9<br />

AutoBackUp_Timer() 9<br />

ArkivAvsluta_Click() 9<br />

DokumentAnvändarManual_Click() 9<br />

DokumentÖppnaKommaSepareradLoggFil_Click() 9<br />

DokumentÖppnaLättlästLoggFil_Click() 9<br />

BackupAutomatiskBackup_Click() 10<br />

BackupSkapaBackupNu_Click() 10<br />

DokumentAnvändarManual_Click() 10<br />

LoggSchema_Click() 10<br />

OmRobStat_Click() 10<br />

StatusÄndraFlödesDiagram_Click() 10<br />

StatusÄndraStapelDiagram_Click() 10<br />

TidigareVeckor_Click() 10<br />

VerktygFilHanteraren_Click() 10<br />

2.3 Filhanteraren 10<br />

Magnus Wallgren


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

Form_Load() 10<br />

Form_Unload() 10<br />

ValAvRobot_Click() 10<br />

ValAvRobotEnhet_Click() 10<br />

EnhetPC_Change() 10<br />

KatalogerPC_Change() 11<br />

KatalogerRobot_Click() 11<br />

Avbryt_Click() 11<br />

KopTillPC_Click() 11<br />

KopTillRobot_Click() 11<br />

Ok_Click() 11<br />

TaBortFilPC_Click() 11<br />

TaBortFilRob_Click() 11<br />

TaBortKatPC_Click() 12<br />

TaBortKatRob_Click() 12<br />

2.4 Ny tidsperiod flödesdiagram 12<br />

Form_Load() 12<br />

Form_Unload() 12<br />

Text_Tidsperiod_Change() 12<br />

Avbryt_Click() 12<br />

Ok_Click() 12<br />

Verkställ_Click() 12<br />

2.5 Ny tidsperiod stapeldiagram 12<br />

Form_Load() 12<br />

Form_Unload() 12<br />

Text_Tidsperiod_Change() 13<br />

Avbryt_Click() 13<br />

Ok_Click() 13<br />

Verkställ_Click() 13<br />

2.6 Skapa backup nu 14<br />

Form_Load() 14<br />

Form_Unload() 14<br />

Text_Katalogen_Change() 14<br />

Bläddra_Click() 14<br />

Dir_Click() 14<br />

Avbryt_Click() 14<br />

Ok_Click() 14<br />

SkapaBackup_Click() 14<br />

2.7 Automatisk backup 15<br />

Form_Load() 15<br />

Form_Unload() 15<br />

Dir_Change() 15<br />

Avbryt_Click() 15<br />

Bläddra_Click() 15<br />

Ok_Click() 15<br />

Verkställ_Click() 15<br />

2.8 Schema <strong>för</strong> loggning 16<br />

Form_Load() 16<br />

Form_Unload() 16<br />

Avbryt_Click() 16<br />

Ok_Click() 16<br />

Verkställ_Click() 16<br />

Ändra_Click() 16<br />

KlockaDatum_Timer() 16<br />

Magnus Wallgren


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

2.9 Visa tidigare veckor 17<br />

Form_Load() 17<br />

Form_Unload() 17<br />

År_Click() 17<br />

Vecka_Click() 17<br />

Visa_Click() 17<br />

Avbryt_Click() 17<br />

Ok_Click() 17<br />

2.10 Om 18<br />

Form_Load() 18<br />

Form_Unload() 18<br />

Ok_Click() 18<br />

2.11 Meddelande 18<br />

Form_Load() 18<br />

Form_Unload() 18<br />

Ok_Click() 18<br />

Magnus Wallgren


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

1. Flödesdiagram<br />

1.1 Status<br />

För att se ingående vad varje block gör se avsnitt 5.4.2<br />

Figur 1<br />

Unloadfunktion<br />

Form_Unload<br />

Programmet Startas, Huvudfönstret öppnas<br />

IOchangefunktioner<br />

Helper1<br />

Helper2<br />

Form_Load<br />

Clickfunktioner<br />

StatusÄndraStapelDiagram<br />

BackupAutomatiskBackup<br />

BackupSkapaBackupNu<br />

TidigareVeckor<br />

LoggSchema<br />

OmRobStat<br />

StatusÄndraFlödesDiagram<br />

ArkivAvsluta<br />

DokumentAnvändarManual<br />

VerktygFilHanteraren<br />

DokumentÖppnaKommaSepareradLoggFil<br />

DokumentÖppnaLättlästLoggFil<br />

VisaFlödesStapelDiagramil<br />

VisaStapelDiagramVecka<br />

Nya fönster som öppnas<br />

NyTidsperiodStapel<br />

(se flödesdiagram avsnitt 2.3.5.1)<br />

AutoBackup<br />

(se flödesdiagram avsnitt 2.3.5.1)<br />

SkapaBackupNu<br />

(se flödesdiagram avsnitt 2.3.5.1)<br />

VisaTidigareVeckor<br />

(se flödesdiagram avsnitt 2.3.5.1)<br />

SchemaLoggning<br />

(se flödesdiagram avsnitt 2.3.5.1)<br />

Om<br />

(se flödesdiagram avsnitt 2.3.5.1)<br />

NyTidsperiodFlödes<br />

(se flödesdiagram avsnitt 2.3.5.1)<br />

Timerfunktioner<br />

LäsAvSchema<br />

RegisterTypAvStatus<br />

Magnus Wallgren 1(18)<br />

Loggning<br />

SkrivTillSystemFiler<br />

KlockaDatum<br />

AutoBackup<br />

KontrolläsningAvIOSignaler


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

1.2 Filhanteraren<br />

För att se ingående vad varje block gör se avsnitt 5.4.3<br />

Figur 2<br />

Unloadfunktion<br />

Form_Unload<br />

Filhanteraren<br />

Form_Load<br />

Changefunktion<br />

EnhetPC<br />

KatalogerPC<br />

Clickfunktioner<br />

ValAvRobot<br />

ValAvRobotEnhet<br />

KatalogerRobot<br />

Magnus Wallgren 2(18)<br />

Avbryt<br />

Ok<br />

KopTillPc<br />

KopTillRobot<br />

TaBortFilPC<br />

TaBortFilRob<br />

TaBortKatPC<br />

TaBortKatRob


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

1.3 Ny tidsperiod flödesdiagram<br />

För att se ingående vad varje block gör se avsnitt 5.4.4<br />

Figur 3<br />

Unloadfunktion<br />

Form_Unload<br />

Ny tidsperiod flödesdiagram<br />

TextChangefunktion<br />

Tidsperiod<br />

Form_Load<br />

1.4 Ny tidsperiod stapeldiagram<br />

För att se ingående vad varje block gör se avsnitt 5.4.5<br />

Figur 4<br />

Unloadfunktion<br />

Form_Unload<br />

Form_Load<br />

Clickfunktioner<br />

Magnus Wallgren 3(18)<br />

Avbryt<br />

Ok<br />

Verkställ<br />

Ny tidsperiod stapeldiagram<br />

TextChangefunktion<br />

Tidsperiod<br />

Clickfunktioner<br />

Avbryt<br />

Ok<br />

Verkställ


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

1.5 Skapa backup nu<br />

För att se ingående vad varje block gör se avsnitt 5.4.6<br />

Figur 5<br />

Unloadfunktion<br />

Form_Unload<br />

Changefunktion<br />

Dir<br />

TextKatalog<br />

SkapaBackupNu<br />

Form_Load<br />

Clickfunktioner<br />

Magnus Wallgren 4(18)<br />

Avbryt<br />

Ok<br />

Bläddra<br />

SkapaBackup<br />

Dir<br />

ArkivAvsluta


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

1.6 Automatisk backup<br />

För att se ingående vad varje block gör se avsnitt 5.4.7<br />

Figur 6<br />

1.7 Schema <strong>för</strong> loggning<br />

För att se ingående vad varje block gör se avsnitt 5.4.8<br />

Figur 7<br />

Unloadfunktion<br />

Form_Unload<br />

Unloadfunktion<br />

Form_Unload<br />

Changefunktion<br />

Dir<br />

SchemaLoggning<br />

Form_Load<br />

Timerfunktion<br />

KlockaDatum<br />

AutoBackup<br />

Form_Load<br />

Clickfunktioner<br />

Magnus Wallgren 5(18)<br />

Avbryt<br />

Ok<br />

Bläddra<br />

Verkställ<br />

Clickfunktioner<br />

Avbryt<br />

Ok<br />

Ändra<br />

Verkställ


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

1.8 Visa tidigare veckor<br />

För att se ingående vad varje block gör se avsnitt 5.4.9<br />

Figur 8<br />

VisaTidigareVeckor<br />

Form_Load<br />

Unloadfunktion<br />

Form_Unload<br />

Clickfunktioner<br />

Avbryt<br />

Ok<br />

År<br />

Vecka<br />

Visa<br />

1.9 Om<br />

För att se ingående vad varje block gör se avsnitt 5.4.10<br />

Figur 9<br />

Om<br />

Form_Load<br />

Unloadfunktion<br />

Form_Unload<br />

Clickfunktioner<br />

Ok<br />

Magnus Wallgren 6(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

1.10 Meddelande<br />

För att se ingående vad varje block gör se avsnitt 5.4.11<br />

Figur 10<br />

Meddelande<br />

Form_Load<br />

Unloadfunktion<br />

Form_Unload<br />

Clickfunktioner<br />

Ok<br />

Magnus Wallgren 7(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

2. Funktioner<br />

2.1 Inledning<br />

Här visas varje fönster (kallas <strong>för</strong> form i Visual Basic) och tillhörande funktioner.<br />

2.2 Status<br />

Form_Load()<br />

När RobStat (se figur 11) startar är det här <strong>för</strong>sta funktionen som exekveras. Programmet<br />

kontrollerar att systemfiler och loggfiler finns. Annars skapas de.<br />

Form_Unload()<br />

När RobStat avslutas körs den här funktionen. Programmet skriver till loggfilerna<br />

”AS275_År_vecka.log”, ”AS275_År_vecka.txt” och till systemfilen ”ThisWeek.log”.<br />

Helper1_IOChanged()<br />

Den här funktionen körs automatiskt varje gång som hanteringsrobotens IO-signaler ändras.<br />

Helper2_IOChanged()<br />

Den här funktionen körs automatiskt varje gång som svetsrobotens IO-signaler ändras.<br />

Figur 11<br />

Magnus Wallgren 8(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

LäsAvSchema_Timer()<br />

Läser av schemat <strong>för</strong> loggning som bestämmer när loggning ska starta och stoppa <strong>för</strong> varje<br />

dag. En kontroll görs om det är söndag och om klockan är 23:59 om så är fallet skrivs<br />

veckans loggning till systemfil ”OtherWeeks.log”. Filen ”ThisWeek.log” nollställs och alla<br />

variabler som hanterar loggning nollställs.<br />

En kontroll görs om det är måndag om det är måndag så skapas två nya loggfiler <strong>för</strong><br />

kommande vecka.<br />

Loggning_Timer()<br />

Skriver till loggfilerna vid varje tillstånds<strong>för</strong>ändring av loggning.<br />

KontrolläsningAvIOSignaler_Timer()<br />

Denna kontrolläsning görs utifall den automatiska avläsningen av IO-signalerna inte skulle<br />

registrera en <strong>för</strong>ändring. Detta <strong>för</strong> att loggningen inte ska bli missvisande.<br />

RegisterTypAvStatus_Timer()<br />

Detta här är den stora funktionen i programmet som sköter själva loggningen och<br />

uppdateringen av flödesdiagrammet, stapeldiagrammen och presentationen av UTE-talet,<br />

(Utrustningens Totala Effektivitet).<br />

SkrivTillSystemFiler_Timer()<br />

Skriver till systemfilen ”ThisWeek.log” varje minut. Det är filen som lagrar statistik över<br />

pågående vecka. Detta är en säkerhet utifall något skulle hända tex strömavbrott, datorn<br />

hänger sig mm.<br />

KlockaDatum_Timer()<br />

Visar kontinuerligt datum och tid.<br />

AutoBackUp_Timer()<br />

Läser datum och intervall <strong>för</strong> backup från systemfilen ”Interval.cfg”. En jäm<strong>för</strong>else av<br />

dagens datum och datumet som finns i filen görs. Är skillnaden större än värdet <strong>för</strong><br />

backupintervallen görs ytterligare en kontroll om klockan är 03:00. När det stämmer skapas<br />

en backup på båda <strong>robotar</strong>na i en <strong>för</strong>utbestämd katalog på Pc:n med robotens namn och<br />

dagens datum.<br />

Därefter skrivs dagens datum och backupintervallen till filen ”Interval.cfg”.<br />

ArkivAvsluta_Click()<br />

Avslutar RobStat.<br />

DokumentAnvändarManual_Click()<br />

Öppnar upp Internet explorer i ett fönster och visar huvudsidan <strong>för</strong> dokumentationen över<br />

hela robotcellen.<br />

DokumentÖppnaKommaSepareradLoggFil_Click()<br />

Öppnar upp en kommaseparerad loggfil över loggning i anteckningar.<br />

DokumentÖppnaLättlästLoggFil_Click()<br />

Öppnar upp en lättläst loggfil över loggninigen i anteckningar.<br />

Magnus Wallgren 9(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

BackupAutomatiskBackup_Click()<br />

Öppnar fönstret <strong>för</strong> automatisk backup.<br />

BackupSkapaBackupNu_Click()<br />

Öppnar fönstret <strong>för</strong> manuell backup.<br />

DokumentAnvändarManual_Click()<br />

Öppnar upp Internet Explorer i ett fönster och visar huvudsidan <strong>för</strong> dokumentationen över<br />

hela robotcellen.<br />

LoggSchema_Click()<br />

Öppnar ett fönstret <strong>för</strong> schemat.<br />

OmRobStat_Click()<br />

Öppnar upp en fönster om RobStat.<br />

StatusÄndraFlödesDiagram_Click()<br />

Öppnar upp ett fönster <strong>för</strong> flödesdiagrammet där man kan ställa in tidsperioden.<br />

StatusÄndraStapelDiagram_Click()<br />

Öppnar upp ett fönster <strong>för</strong> stapeldiagrammet där man kan ställa in tidsperioden.<br />

TidigareVeckor_Click()<br />

Öppnar upp ett fönster som kan visa hur loggning varit dom tidigare veckorna.<br />

VerktygFilHanteraren_Click()<br />

Öppnar upp ett fönster <strong>för</strong> filhantering.<br />

2.3 Filhanteraren<br />

Form_Load()<br />

Denna funktion körs när filhanteraren, (se figur 12) öppnas. Alla aktiva <strong>robotar</strong> läggs i en<br />

lista.<br />

Form_Unload()<br />

Kopplar ifrån FTP uppkopplingen.<br />

ValAvRobot_Click()<br />

Skapar en uppkoppling till vald robot via FTP. Tar redan på vilka enheter som är anslutna till<br />

roboten.<br />

ValAvRobotEnhet_Click()<br />

När en enhet väljs söker man redan på dess katalog- och filstruktur som sedan presenteras i<br />

två listor i filhanteraren, (se figur 12).<br />

EnhetPC_Change()<br />

Vid bytet av enhet på Pc:n uppdateras även katalogstrukturen.<br />

Magnus Wallgren 10(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

KatalogerPC_Change()<br />

När katalogstrukturen ändras uppdateras även filstrukturen. Detta kan jäm<strong>för</strong>as med hur<br />

utforskaren fungerar i Windows.<br />

KatalogerRobot_Click()<br />

Uppdaterar katalogstrukturen och filstrukturen <strong>för</strong> roboten.<br />

Avbryt_Click()<br />

Stänger fönstret <strong>för</strong> filhanteraren.<br />

KopTillPC_Click()<br />

Kopierar vald fil från fillistan i roboten till vald katalog i Pc:n.<br />

KopTillRobot_Click()<br />

Kopierar vald fil från fillistan i Pc:n till vald katalog i roboten.<br />

Ok_Click()<br />

Stänger fönstret <strong>för</strong> filhanteraren.<br />

TaBortFilPC_Click()<br />

Tar bort vald fil från PC.<br />

TaBortFilRob_Click()<br />

Tar bort vald fil från roboten.<br />

Figur 12<br />

Magnus Wallgren 11(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

TaBortKatPC_Click()<br />

Tar bort vald katalog från Pc:n dock måste den vara helt tom <strong>för</strong> att det ska gå.<br />

TaBortKatRob_Click()<br />

Tar bort vald katalog från roboten dock måste den vara helt tom <strong>för</strong> att det ska gå.<br />

2.4 Ny tidsperiod flödesdiagram<br />

Form_Load()<br />

Skriver ut nuvarande tidsperiod <strong>för</strong> flödesdiagrammet.<br />

Form_Unload()<br />

Stänger fönstret ny tidsperiod <strong>för</strong> flödesdiagrammet.<br />

Text_Tidsperiod_Change()<br />

Gör så att knappen verkställ kan användas när man fyllt i något värde i textfältet.<br />

Avbryt_Click()<br />

Stänger fönstret tidsperiod flödesdiagram, (se figur 13).<br />

Ok_Click()<br />

Stänger fönstret Tidsperiod flödesdiagram.<br />

Verkställ_Click()<br />

Ändrar tidsperioden <strong>för</strong> flödesdiagrammet.<br />

2.5 Ny tidsperiod stapeldiagram<br />

Form_Load()<br />

Öppnar fönstret Tidsperiod stapeldiagram. Skriver ut nuvarande tidsperiod <strong>för</strong><br />

stapeldiagrammet.<br />

Form_Unload()<br />

Stänger fönstret Tidsperiod stapeldiagram.<br />

Figur 13<br />

‘<br />

Magnus Wallgren 12(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

Text_Tidsperiod_Change()<br />

Gör så att knappen verkställ kan användas när man fyll i något värde i textfältet.<br />

Avbryt_Click()<br />

Stänger fönstret Tidsperiod stapeldiagram, (se figur 14).<br />

Ok_Click()<br />

Stänger fönstret Tidsperiod stapeldiagram.<br />

Verkställ_Click()<br />

Ändrar tidsperioden <strong>för</strong> stapeldiagrammet.<br />

Figur 14<br />

Magnus Wallgren 13(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

2.6 Skapa backup nu<br />

Form_Load()<br />

Ser till att textfältet är tomt.<br />

Form_Unload()<br />

Visar huvudfönstret RobStat.<br />

Text_Katalogen_Change()<br />

Gör så att knappen skapa backup kan användas.<br />

Bläddra_Click()<br />

Visar ett katalogträd (se figur 15) så man kan klicka sig fram till lämplig backupkatalog.<br />

Dir_Click()<br />

När man klickar på en katalog skrivs sökvägen in i textfältet.<br />

Avbryt_Click()<br />

Stänger fönstret skapa backup.<br />

Ok_Click()<br />

Stänger fönstret skapa backup.<br />

SkapaBackup_Click()<br />

Skapar en backup enligt följande steg som beskrivs i avsnittet backuphantering.<br />

Figur 15<br />

Magnus Wallgren 14(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

2.7 Automatisk backup<br />

Form_Load()<br />

Läser in nuvarande inställningar <strong>för</strong> automatisk backup från filerna “Backup.cfg”, backup<br />

katalogen och “Interval.cfg”, backup intervall.<br />

Form_Unload()<br />

Stänger fönstret.<br />

Dir_Change()<br />

Sökvägen till den markerade katalogen skrivs automatisk in i textfältet där du ska ange ny<br />

backupkatalog, (se figur 22).<br />

Avbryt_Click()<br />

Stänger fönstret automatisk backup.<br />

Bläddra_Click()<br />

När man klickar på bläddra visas den högra delen av fönstret (se figur 16) med katalogträdet<br />

vilket normalt är dold.<br />

Ok_Click()<br />

Stänger fönstret automatisk backup.<br />

Verkställ_Click()<br />

Skriver över den gamla systemfil ”Backup.cfg” med den nya katalogsökvägen <strong>för</strong> backupen.<br />

Även systemfilen ”Interval.cfg” skrivs över med den nya inställningen <strong>för</strong> backupenintervall.<br />

Figur 16<br />

Magnus Wallgren 15(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

2.8 Schema <strong>för</strong> loggning<br />

Form_Load()<br />

Läser in nuvarande inställningar <strong>för</strong> schemat som finns lagrade i filen “schema.cfg”.<br />

Form_Unload()<br />

Stänger fönstret.<br />

Avbryt_Click()<br />

Stänger fönstret.<br />

Ok_Click()<br />

Stänger fönstret.<br />

Verkställ_Click()<br />

Skriv över den gamla filen ”Schema.cfg” med dom nya inställningarna <strong>för</strong> schemat.<br />

Ändra_Click()<br />

Gör att du kan ändra i fälten som annars är låsta.<br />

KlockaDatum_Timer()<br />

Visar kontinuerligt datum och klocka i den övre listen på fönstret, (se figur 17).<br />

Figur 17<br />

Magnus Wallgren 16(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

2.9 Visa tidigare veckor<br />

Form_Load()<br />

Läser in årtal och veckor över tidigare loggade veckor från systemfilen ”OtherWeeks.cfg”.<br />

Form_Unload()<br />

Stänger fönstret.<br />

År_Click()<br />

När man har valt ett årtal ur listan visas alla loggade veckor över valt år i listan <strong>för</strong> veckor.<br />

Vecka_Click()<br />

Bestämmer vilken vecka man vill se statistik över.<br />

Visa_Click()<br />

Denna knapp kan man <strong>för</strong>st trycka på efter man valt år och vecka, (den är låst annars). Då<br />

visas statistik över vald vecka.<br />

Avbryt_Click()<br />

Stänger fönstret.<br />

Ok_Click()<br />

Stänger fönstret.<br />

Figur 18<br />

Magnus Wallgren 17(18)


Bilaga 5, RobStat flödesdiagram och funktioner 2005-03-30<br />

2.10 Om<br />

Form_Load()<br />

Läser in vilken version det är av programmet, (se figur 19).<br />

Form_Unload()<br />

Stänger fönstret.<br />

Ok_Click()<br />

Stänger fönstret.<br />

2.11 Meddelande<br />

Form_Load()<br />

Väljer meddelande symbol och vad som ska stå i meddelanderutan, (se figur 20).<br />

Form_Unload()<br />

Stänger fönstret och sätter <strong>för</strong>egående fönster i fokus.<br />

Ok_Click()<br />

Stänger meddelanderutan.<br />

Figur 19<br />

Figur 20<br />

Magnus Wallgren 18(18)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!