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
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)