Visualisering av kalibreringsdata



Relevanta dokument
Laboration i datateknik

Användarhandledning Version 1.2

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

Creo Customization. Lars Björs

Microsoft Excel. Avancerade funktioner

Visualisering av data energitrender

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Slutrapport Get it going contracts

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

LabVIEW uppgift 4. Erik Andersson och Johan Schött. 22 februari 2010

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

Programmering B med Visual C

Komponenter med COM (och COM+/VC++ 7.0)

Priskamp. En prisjämförelsesite Björn Larsson

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Webservice & ERP-Integration Rapport

Met/Track Software Ver 8.X 1 dagskurs

Gränssnitt för FakeGranska. Lars Mattsson

Kravspecifikation för hårdvaruprojekt i kursen Datorsystemteknik, HT2005. Temperaturvakt med loggningsfunktion

Introduk+on +ll programmering i JavaScript

TUTORIAL: SAMLING & KONSOLL

i LabVIEW. Några programmeringstekniska grundbegrepp

Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel vers. 2010

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

Extramaterial till Matematik X

Excel-guide. Introduktion

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning]

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Pulsmätare med varningsindikatorer

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

JavaScript Block Editor:

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

KARMATIC PROFILER 2000 Manual

Frekvenstabell över tärningskast med C#

Utveckling av ett 2d spel i Java. Examensarbete av: Rickard Borg, EDTD13 Examensår: 2016 Opponent: Jesper Larsson Handledare: Jimmy Jansson

Syfte Syftet med den här laborationen är att du ska lära dig använda några grundfunktioner i Microsoft Excel.

Tentamen i Introduktion till programmering

Objektorienterad programmering Föreläsning 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Henrik Häggbom Examensarbete Nackademin Våren 2015

Introduktion till Word och Excel

Laboration: Grunderna i MATLAB

Metoder (funktioner) Murach s: kap Winstrand Development

Installationsguide. För att installera mjukvara och hårdvara, följ nedanstående anvisningar.

Elevernas uppfattningar om alltmer digitaliserad undervisning

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

ToDo ios-applikation. Mikael Östman. Mikael Östman - mo22ez Linnéuniversitetet

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

Robotprogrammering felsökning & analys.

Classes och Interfaces, Objects och References, Initialization

Kort manual till SPSS 10.0 för Mac/PC

Datorövning 1 Statistik med Excel (Office 2010, svenska)

Datorövning 1 Enkel linjär regressionsanalys

Visual Basic, en snabbgenomgång

IT-kurser Office IT-Partner Våren 2015

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Styrteknik : Funktioner och funktionsblock

TUTORIAL: KLASSER & OBJEKT

Felsökande av en Lego Mindstorm robot

SND:s användarguide för Colectica for Excel

Dagbok Mikael Lyck

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Innehåll. Excel för avancerade användare

web: fax: tel: kontor , Toby Edmundsson mobil: , Jan

Idiotens guide till. Håkan Lyckeborgs SPSS-föreläsning 4/ Av: Markus Ederwall, 21488

Digitala Projekt(EITF40) - Larm

Mjukvaruprojekt Onlinebooks

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016

Diagramritning med Excel och figurritning med Word

Laboration 6 Formulär och stränghantering övningar/uppgifter

Laborationsrapport för laboration 2 i ESS010 Elektronik. Olle Ollesson 29 september 2012 Handledare: Sven Svensson

2. Lära sig beskriva en variabel numeriskt med "proc univariate" 4. Lära sig rita diagram med avseende på en annan variabel

Laboration Fuzzy Logic

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Innehåll. 1 Inledning 3

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Regression med Genetiska Algoritmer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Mobil streckkodsavläsare

CADvent+ RÖR en första test

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 1: TIDSSERIER.

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Transkript:

Bromma Gymnasium Examensarbete på Gymnasieingenjörsprogrammet inom Innovation och Produktion 100 gymnasiepoäng Visualisering av kalibreringsdata Robin Björk Examinator: Sven Pettersson Handledare: Roger Söderholm 2014-05-16

Förord Jag har läst Gymnasieingenjörsprogrammet vid Bromma Gymnasium inom grenen Innovation och Produktion med inriktningen Konstruktion och Produktutveckling. Inriktningen omfattar fortsättningskurser i CAD (100 gp) och konstruktion (200 gp). Vidare ingår kurser i hållbar miljö (100 gp), produktionsfilosofi (100 gp) och ett större projekt (100 gp) samt en allmän kurs om ingenjörens villkor (200 gp). Utbildningen är ettårig och omfattar även elva veckor praktik, under vilken detta examensarbete (100 gp) har arbetats fram. Praktiken och examensarbetet har genomförts på kalibreringsavdelningen på Scania tekniskt center. Examensarbetet innefattar ett programmeringsarbete där slutprodukten är en program som genererar grafer från ett kalibreringsprogram. Tack till alla på kalibreringsavdelningen som hjälpt mig under examensarbetets gång. Sammanfattning Den här rapporten beskriver kommunikationen mellan MET/CAL och Microsoft Office Excel genom COM objekt. Uppgiften var att genom programmeringskod skapa grafer från MET/CAL för att visualisera arbetsprocessen vid kalibrering och lättare hitta trender och avvikelser. Programmet kommer inte att gå in på några beräkningar utan endast vara ett hjälpmedel för att visualisera processen. Resultatet av examensarbetet blev ett ramverk och kommer att implementeras på Scanias kalibreringsavdelning för temperaturgivare. Abstract This report describes the communication between MET/CAL and Microsoft Office Excel through COM objects. The task was to use programming code to create graphs from MET/CAL to visualize the calibration working process and identify trends and anomalies. The program will be used as a tool to visualize and won t make any calculations. The results of the thesis became a framework and implemented at Scania calibration department for temperature sensors.

Innehållsförteckning Beteckningar... 1 1. Inledning... 2 1.1 Bakgrund... 2 1.2 Syfte... 2 1.3 Avgränsningar... 2 1.4 Precisering av frågeställningen/uppdrag... 2 1.5 Förväntad slutprodukt... 2 2. Teoretisk referensram... 2 3. Metod... 3 4. Genomförande... 3 4.1 MET/TRACK och MET/CAL... 3 4.2 Bakgrund COM objekt, LIB kommandon samt koppling mellan MET/CAL och Excel... 3 4.3 Samla in information samt inlärningsprocess... 3 4.4 Kravspecifikation... 4 4.5 Programmering/kodskrivning... 4 5. Implementering... 5 6. Diskussion och slutsatser... 6 6.1 Slutresultat... 6 6.2 Felsökning... 8 6.3 Svar på frågeställningar... 8 Källhänvisning... 9

Beteckningar MET/TRACK Kalibreringsprogrammet som Scania använder, används även som kalibreringsdatabas COM Ett kommunikationsverktyg för att kommunicera mellan olika program (Component Object Model) VBA En version av programspråket VB (Visual Basic) används ofta i samband med Microsoft Excel i makron LIB Används för kommunikation mellan olika program MET/CAL Tilläggsprogram till MET/TRACK, används till procedurskrivning och kör procedurerna Procedur/Rutin En funktion bestående av programmeringskod Sid 1 (9)

1. Inledning 1.1 Bakgrund Den senaste uppdateringen utav MET/TRACK har gjort det möjligt att kommunicera med Microsoft Office program med hjälp av COM objekt. Scania vill utnyttja den funktionen men har inte haft tiden att utföra uppdraget själva. 1.2 Syfte Syftet är att Scania vill kunna visualisera händelseförloppet i deras processer mer för att lättare kunna hitta fel eller avvikelser. Det kommer underlätta det visuella för beslutsfattningar inom Scanias framtida fordonsutveckling och det kommer även att användas för certifiering av utländska certifieringsorgan. 1.3 Avgränsningar Den förväntade slutprodukten kommer endast att vara ett visuellt hjälpmedel till kalibreringen, alltså kommer inte själva kalibreringsberäkningarna att tas med i rapporten. Utdata kommer inte heller statistiskt bearbetas utan bara visualiseras. 1.4 Precisering av frågeställningen/uppdrag Skapa en graf utav mätvärden från MET/TRACK genom att använda sig av COM objekt till Excel. Grafen ska vara ett hjälpmedel för användaren och det är viktigt att den inte stör användaren (människa maskin kommunikation). Skapa en dynamisk graf som förändrar sig över tiden. Skalan för axlarna ska gå att ändra efter behov och linjer för övre och undre specifikationsgräns ska kunna ritas in i grafen. Det ska vara lätt att ta in värden från MET/TRACK och ska vara generell så att proceduren kan användas i flera olika applikationer. 1.5 Förväntad slutprodukt Ett visualiseringsverktyg för ackumulerade mätvärden som är sparade i ett databasformat och samtidigt utveckla en ramverk för hur kommunikation mellan kalibreringsverktyget (MET/TRACK), databas och visualiseringsverktyg (Microsoft Office Excel). 2. Teoretisk referensram Med tanke på att LIB-funktionerna i MET/CAL är så pass nya finns det väldigt begränsat med tidigare arbeten och information. Därför har jag valt att arbeta till stor del med Microsofts egna hemsida (1) då jag finner den väldigt tillförlitlig (de skapade även Excel) och löper även en väldigt liten risk att bli inaktuell inom en snar framtid. Problemet med det är att informationen från Microsoft är ampassad efter VBA och måste ampassas om till MET/CAL för att fungera. Jag har även hittat information direkt från FLUKE (2) (skapare av MET/TRACK och MET/CAL) själva, både i deras Community och i programmets hjälpfil (3) (4). Sid 2 (9)

3. Metod De första veckorna gick åt till att förstå programkoder och hur de tillämpas i praktiken för att få en förståelse till varför man kalibrerar samt hur det hela fungerar. Sedan kommer en stor del av tiden gå åt till att skriva kod, i början handlade det om övningsuppgifter för att sedan kunna skriva koden till de färdiga programmen. 4. Genomförande 4.1 MET/TRACK och MET/CAL MET/TRACK är ett kalibreringsprogram som sparar kalibreringsresultat till en databas. Programmet använder sig av fler olika hjälpprogram som sköter specifika delar. Några av de större hjälpprogrammen är MET/CAL (läser koden/procedurerna) och Crystal Reports (skapar rapporter utifrån värden från MET/TRACK-databasen). MET/CAL var det programmet jag arbetat mest med och det är även det programmet som kopplas ihop med Microsoft Excel. 4.2 Bakgrund COM objekt, LIB kommandon samt koppling mellan MET/CAL och Excel I den nya uppdateringen (METCAL 8 från 2013) av MET/CAL kom möjligheten till att använda sig av LIB kommandon för att kommunicera med COM (Component Object Model) objekt och DLL (Dynamic Link Libraries). Kopplingen till Excel finns redan i MET/CAL men för att använda Excel behövs COM som är ett verktyg för att kommunicera mellan programmen. 4.3 Samla in information samt inlärningsprocess Information om LIB kommandon i MET/CAL är väldigt begränsad på grund av att det blev implementerat först 2013. Därför har kopplingen till Excel som endast är en del av LIB funktionerna ännu mindre information. För att komma igång började jag med att läsa igenom LIB delen av MET/CAL hjälpfilen, den visade ett väldigt enkelt exempel där de gick igenom hur man öppnar Excel och skriver in text i fält från MET/CAL. Djupare information hittade jag på Microsoft egen hemsida där jag hittade hur uppbyggnaden av Excel och kommandon fungerar för VBA (Visual Basic Application). Programmeringsspråket som används i MET/CAL bygger på VBA men det är ampassat för kalibrering vilket gör att det skiljer sig lite från VBA. Konsekvensen av det blir att all kod från Microsoft måste på ett eller annat sätt skrivas om för att fungera i MET/CAL. Uppbyggnaden av Excel visade sig snabbt vara mycket mer komplex än vad jag väntat mig. Det står en hel lista med olika objekt, men inte hur de är kopplade till varandra. Efter ett tag började jag hitta mönster såsom att chart object ligger under charts object, worksheet ligger Sid 3 (9)

under worksheets osv. Det gjorde att jag sakta men säkert började förstå uppbyggnaden av Excel. 4.4 Kravspecifikation Av Scania fick jag en tydlig kravspecifikation med alla funktioner de ville ha. Uppdrag 1: Värde (givarfaktor i det här fallet, ska gå att ändra lätt) Datum Fysikalisk storhet Allt skulle hamna på en graf där som var lätt att läsa av. Uppdrag 2: Dynamisk graf Skalan på axlar ska gå att ändra 8 kurvor samt referens ska visas grafiskt Gränser med övre och undre toleransnivå 4.5 Programmering/kodskrivning För att minska risken att behöva börja om när jag stötte problem så började jag med att tänka igenom hur jag ville lägga upp arbetet och gå tillväga med arbetet. Först så ska värdena som ingår i grafen vara i någon form av tabell så att det är lätt att läsa av och föra in till grafen. Det gjorde jag med hjälp av kommandot Range.FormulaR1C1 som skriver in värdet/texten i den valda cellen. För att minska mängden kod skapade jag en Whileloop. När tabellen var klar skapade jag en graf med hjälp av Charts.Add() funktionen. Ett problem var att grafen som skapades var ett stapeldiagram vilket inte är alltför praktiskt när syftet är att visa förändringar över tid. Jag kom runt problemet genom att byta standarddiagram till punktdiagram (Scatter). Nästa steg var att namnsätta och gradera axlarna. Det gjorde jag genom att skapa Axis-objekt, en för vardera axel. För att namnsätta axlarna behövde jag skapa två ytterligare objekt, en AxisTitle objekt och även Characters objekt (ligger under AxisTitle). Graderingen sker med hjälp av funktionerna Axis.MaximumScale och Axis.MinimumScale för att ändra max och min värden på skalan och Major/MinorUnit för att ändra skalan. Genom att skapa Series objekts lyckades jag namnsätta alla serier/linjer så att det tydligt går att se vilken linje som är vilken. Då använde jag mig av Series.Name propertyn. Ett stort problem jag stötte på var att jag inte kunde uppdatera min graf. Problemet grundar sig i att jag inte lyckades få funktionen Chart.SetSourceData() att fungera. Jag försökte ta mig Sid 4 (9)

runt problemet genom att använda mig utav en Shape Objekt men då fungerade det inte att ändra skalan på axeln då Axes inte finns under Shape. Efter många försök bestämde jag mig för att ta kontakt med FLUKE genom att lägga upp en tråd på deras Community och se om någon annan råkat ut för samma problem som jag. I väntan på svar lyckades jag med en lösning där jag tar bort grafen för att sedan skapa en ny. Lösningen är långt ifrån optimal men programmet fungerar. Till en början var målet bara att få koden att fungera men när jag väl fått den att fungera började jag dela upp koden i olika delar. Det gör att jag skapade subrutiner eller funktioner som fyller en funktion var. Fördelen med det är att subrutin kan användas till andra procedurer, t.ex. om jag vill skapa ett excelark men inte vill skapa en graf så kan jag anropa skapa excelark subrutinen. Hela processen blir då mer modulariserad och spar tid på sikt. Som en finslipning lade jag till kommentarer i koden för att göra det enklare att förstå för andra programmerare eller användare av programmet. Bara för att jag förstår hur det fungerar så betyder det inte att någon annan gör det. Det gör det också mycket enklare att hitta eventuella fel och gör det även enklare att gå in och ändra och lägga till nya funktioner. 5. Implementering För att kunna börja implementera en kod till en annan krävs det att man har förståelse för båda koderna. Eftersom jag inte varit med skrivit koden till temperaturgivarna kändes det givet att jag skulle börja med att försöka förstå den koden och dess uppbyggnad. Temperaturproceduren är uppbyggd av många olika subprocedurer och är väldigt adaptiv för att den ska fungera för olika typer av temperaturgivare. Det gör att om det blir fel så är det mycket lättare att lokalisera felet och lösa det. Jag började med att leta reda på var någonstans i temperaturproceduren man fick fram värdena från temperaturgivarna. När jag väl lyckats förstå koden och var i koden min kod skulle implementeras var det dags att anpassa min procedur till temperaturproceduren. Med tanke på att jag tidigare modulariserat min kod var det mycket enkelt att sätta ihop den nu. Jag valde de delar som behövdes och anropade dom via en CALL funktion som finns i MET/CAL. Jag skapade också en subrutin som bara hanterar variabler och sätter startvärden. Fördelen med det är att alla variabler samlas på samma ställe vilket gör att det är väldigt enkelt att ändra värden såsom toleransgränser eller axelskala. En viktig sak som jag märkte vid implementering var hur viktigt och hur svårt det var att hålla koll på i vilken ordning saker och ting skapas och sker när man arbetar med en procedur med många subrutiner. När jag läste igenom temperaturproceduren hittade jag en variabel för antalet inkopplade givare. Problemet var att den variabeln skapades efter punkten där min subprocedur skulle anropas. Det gjorde att min procedur försökte använda sig av en variabel Sid 5 (9)

som ännu inte skapats och gav då ett felmeddelande. Genom att ändra var variabeln skapades löste jag enkelt problemet. För mig var det också viktigt att mitt program inte störde användaren på något sätt. Jag kontrollerade detta när proceduren testkördes och testade att det gick att flytta eller ändra storlek på Excelfönstret utan att det påverkade programmet. När programmet väl fungerade som det var tänkt att det skulle göra finslipade jag det genom att byta namn på subrutinerna till engelska namn (Scania använder engelska namn på procedurer som standard) och skriva tydliga kommentarer för att förklara koden. 6. Diskussion och slutsatser För att sammanfatta så är jag väldigt nöjd med det här projektet, det har verkligen fått mig att förstå innebörden och fördelarna med att arbeta med hjälp av moduler. Jag har också lärt mig väldigt mycket om programmering och hur det kan tillämpas i verkligheten. I början tyckte jag det kändes väldigt dumt att göra arbetet i ett lågnivåspråk men nu på efterhand ser jag en hel del fördelar jämfört med om jag gjort det i ett högnivåspråk. Några är att man kan ha en mycket större kontroll på vad som händer, i ett högnivåspråk sker mycket automatiskt som programmeraren inte kan styra. Eller att programkoden tar mycket mindre plats då endast det som är nödvändigt är med. Sedan så finns det självklart många fördelar med ett högnivåspråk också men i inlärningssyfte tror jag det är bra att i alla fall lära sig lite om ett lågnivåspråk då man lär sig programmering från grunden. T.ex. så använder man sig inte av lika många inbyggda funktioner som man inte förstår någonting av. 6.1 Slutresultat Jag har ampassat mitt arbete efter Scanias behov vilket gör att jag inte helt har följt uppdragen jag definierat tidigare utan prioriterat det som Scania tycker är viktigast. Eftersom uppdrag 1 var mycket enklare än uppdrag 2 har jag inte behövt spendera lika stor tid på den som på uppdrag 2. I ett tidigt skede arbetade jag med uppdrag 1 mest som en övningsuppgift (Scania ansåg inte den lika viktig att implementera som uppdrag 2) men arbetade inte vidare och finslipade inte det. Jag är väldigt nöjd med hur slutresultatet blev och anser att det uppfyller allt som finns med på kravspecifikationen. Resultatet förbättrade också det visuella vilket också var huvudmålet med uppdraget. Sid 6 (9)

2011-01-01 2011-06-01 2011-11-01 2012-04-01 2012-09-01 2013-02-01 2013-07-01 2013-12-01 Resultatet av uppdrag 1 Grafen visar förändringen i givarfaktor under en viss tidsintervall 6,8 6,79 6,78 6,77 6,76 6,75 6,74 Givarfaktor Givarfaktor Resultatet av uppdrag 2 Kanalernas värde sparas i en tabell. Kolumn B är tiden i sekunder. Kolumn C är referensens värde. Kolumn D är övre toleransgräns. Kolumn E är undre toleransgräns. Kolumn F-J är kanalernas värde. F är kanal 1 G är kanal 2 osv. Sid 7 (9)

Utifrån tabellen skapas en graf. Figuren till höger var allt som visades förut vid kalibrering. 6.2 Felsökning Problemet jag nämnde tidigare med Chart.SetSourceData() löste jag inte. Jag fick några svar från personer på FLUKE Community men de tog bara upp liknande exempel som inte kunde tillämpas till mitt fall. Med tanke på att kommunikationen till Excel är så pass nytt samt att antalet användare till METCAL är så liten insåg jag att det fanns en möjlighet att det inte går att lösa pga. begränsat språk eller buggar. Det gjorde att jag valde att inte spendera för mycket tid (då jag redan spenderat en hel del tid) på att försöka lösa ett problem som kanske inte ens går att lösa i skrivande stund. Därför har jag använt mig av min tidigare temporära lösningen. Anledningen till att jag ville använda mig av Chart.SetSourceData() var att då slipper blinkande när grafen tas bort och skapas. Det ska dock tilläggas att grafen är tänkt att uppdateras ungefär var 30:e sekund, det innebär att blinkningen som skapas inte stör användaren. 6.3 Svar på frågeställningar Skapa en graf utav mätvärden från MET/TRACK genom att använda sig av COM objekt till Excel. Grafen ska vara ett hjälpmedel för användaren och det är viktigt att den inte stör användaren (människa maskin kommunikation). Skapa en dynamisk graf som förändrar sig över tiden. Skalan för axlarna ska gå att ändra efter behov och linjer för övre och undre specifikationsgräns ska kunna ritas in i Sid 8 (9)

grafen. Det ska vara lätt att ta in värden från MET/TRACK och ska vara generell så att proceduren kan användas i flera olika applikationer. Med tanke på att min kod fungerar och innehåller delarna som finns med i kravspecifikationen och även ska implementeras till Scanias kalibrering utav temperaturgivare anser jag att klarat av frågeställningarna och resultatet på ett trovärdigt sätt. Proceduren är också uppdelad i subrutiner vilket även uppfyller kravet att den ska vara generell. Källhänvisning 1. Microsoft Corporation. [Online] [Cited: 9 April 2014.] http://msdn.microsoft.com/enus/library/office/ff194068(v=office.15).aspx. 2. FLUKE. Fluke community. [Online] [Cited: 15 April 2014.] https://community.flukecal.com/group/metcal-procedures. 3.. MET/CAL 5500/CAL Reference Manual. Rev.1, 11/04. : FLUKE, 2002. PN 1999754. 4.. MET/CAL Reference Manual 8. 2013. Finns ej i publikt, endast som hjälpfil i MET/CAL. Sid 9 (9)

BILAGA 1. Sid 1 (3) Bilagor Bilaga 1: Programmeringskod Markeringen # visar att det är en kommentar, alltså påverkar inte raden koden. @ visar att det är en global variabel. Denna kod öppnar excel, skapar en workbook och skapar en worksheet objekt. Scania CV AB MET/CAL Procedure INSTRUMENT: sub open excel DATE: 2014-04-09 10:11:18 AUTHOR: Robin Björk REVISION: ADJUSTMENT THRESHOLD: 70% NUMBER OF TESTS: 1 NUMBER OF LINES: 23 STEP FSC RANGE NOMINAL TOLERANCE MOD1 MOD2 3 4 CON # Skapar ett excel dokument, gör det synligt och tar bort ev felmeddelanden 1.001 LIB COM @excel = "Excel.Application"; 1.002 LIB @excel.visible = True; 1.003 LIB @excel.displayalerts = False; # Skapar en workbook 1.004 LIB COM @workbooks = @excel.workbooks; 1.005 LIB @workbooks.add(); # Skapar ett worksheet objekt 1.006 LIB COM @worksheets = @excel.worksheets; 1.007 LIB COM @worksheet = @worksheets.item["blad1"]; 1.008 LIB @worksheet.select(); Följande kod anropar den tidigare subrutinen samt sätter värden till grafen och några uppräkningsvariabler Scania CV AB MET/CAL Procedure INSTRUMENT: sub channel chartvariables DATE: 2014-04-16 13:02:38 AUTHOR: Robin Björk REVISION: ADJUSTMENT THRESHOLD: 70% NUMBER OF TESTS: 1 NUMBER OF LINES: 27 STEP FSC RANGE NOMINAL TOLERANCE MOD1 MOD2 3 4 CON # Uppräkningsvariabler

BILAGA 1. Sid 2 (3) 1.001 CALL sub open excel 1.002 MATH @loop = 0 1.003 MATH @s = 1 1.004 MATH @count = 0 1.005 MATH @n = 2 # Värden för chart # X-Skala 1.006 MATH @minscale = -300 1.007 MATH @maxscale = 0 1.008 MATH @maxtol = 0.5 1.009 MATH @mintol = -0.5 Här är en while-loop som anropar subrutinen sub chart read object som i sin tur läser av kanalerna och sparar värdena i en array. While-loopen går endast igång när det minst gått 30 sekunder från senaste mätning eller rutinstart. 1.017 MATH mytime = UTIME() 1.028 MATH @ref = Meas 1.029 MATH @mycount = 0 1.030 IF UTIME() > mytime + 30 1.031 WHILE @mycount < @Antal 1.032 CALL sub chart read object 1.033 MATH @mycount = @mycount + 1; 1.034 ENDW 1.035 CALL Chart temp 1.036 MATH mytime = UTIME() 1.037 ENDIF Huvudrutinen som anropar subrutinerna. Subrutinerna anropas endast ifall kanal 1 har ett värde. Scania CV AB MET/CAL Procedure INSTRUMENT: Chart temp DATE: 2014-04-09 09:36:43 AUTHOR: Robin Björk REVISION: ADJUSTMENT THRESHOLD: 70% NUMBER OF TESTS: 1 NUMBER OF LINES: 23 STEP FSC RANGE NOMINAL TOLERANCE MOD1 MOD2 3 4 CON # M[100]-M[107] = Värden på kanaler # @Antal = Antal givare 1.001 IF M[100]!= 0 1.002 CALL sub delete chart 1.003 CALL sub channel values 1.004 CALL sub create chart 1.005 CALL sub axes 1.006 CALL sub set channelname

BILAGA 1. Sid 3 (3) 1.007 CALL sub axisscale 1.008 ENDIF Här skapar jag axelobjekt för x och y axel och namnger dom. Scania CV AB MET/CAL Procedure INSTRUMENT: sub axes DATE: 2014-04-09 10:12:59 AUTHOR: Robin Björk REVISION: ADJUSTMENT THRESHOLD: 70% NUMBER OF TESTS: 1 NUMBER OF LINES: 28 STEP FSC RANGE NOMINAL TOLERANCE MOD1 MOD2 3 4 CON # Skapar ett objekt av x-axeln och namnsättter den 1.001 LIB COM @axe = @chart.axes; 1.002 LIB COM @axis = @axe.item(1, 1); 1.003 LIB @axis.categorytype = 3; 1.004 LIB @axis.hastitle = True; 1.005 LIB COM title1 = @axis.axistitle; 1.006 LIB COM title2 = title1.characters; 1.007 LIB title2.text = "Tid (s)"; # Skapar ett objekt av y-axeln och namnsätter den 1.007 LIB COM @axisy = @axe.item(2, 1); 1.008 LIB @axisy.hastitle = True; 1.009 LIB COM title1y = @axisy.axistitle; 1.010 LIB COM title2y = title1y.characters; 1.011 LIB title2y.text = "Temperatur ( C)"; Ändrar skalan och ampassar skalan beroende på hur många gånger koden körts, endast X skalan. Scania CV AB MET/CAL Procedure INSTRUMENT: sub axisscale DATE: 2014-04-09 10:17:00 AUTHOR: Robin Björk REVISION: ADJUSTMENT THRESHOLD: 70% NUMBER OF TESTS: 1 NUMBER OF LINES: 17 STEP FSC RANGE NOMINAL TOLERANCE MOD1 MOD2 3 4 CON # Ändrar x-skalan 1.001 LIB @axis.minimumscale = @minscale; 1.002 LIB @axis.maximumscale = @maxscale; # Ändrar skalan över tid 1.003 MATH @minscale = @minscale + 30 1.004 MATH @maxscale = @maxscale + 30

BILAGA 2. Sid 1 (1) Bilaga 2: Excels uppbyggnad Excel Charts Workbook Worksheets Chart Worksheet Shapes Range Shape Axes SeriesCollection Axis Krävs för att det ska fungera Parent/Child relation read/write Series AxisTitle Characters