Datateknik C, Examensarbete, 15 högskolepoäng
”BIG DATA” VISUALISERING
Carolin Jaber
Dataingenjörsprogrammet, 180 högskolepoäng Örebro vårterminen 2019
Examinator: Federico Pecora
BIG DATA VISUALIZATION
Örebro universitet Örebro University
Institutionen för School of Science and Technology naturvetenskap och teknik SE-701 82 Örebro, Sweden
701 82 Örebro
Sammanfattning
Visualisering av data i grafiska presentationer är viktigt inom många olika områden för att enklare förstå information och relationer av insamlad data. Mängden data växer snabbt till stora skalor som är svåra att hantera och bidrar till nya utmaningar vid visualisering av data i grafiska presentationer. System är beroende av data visualisering för att upptäcka defekter och fel av produktion. Genom att förbättra prestandan av tidsseriedata visualisering ökar det möjligheten att upptäcka fel och defekter av produktion.
Rapporten tar upp metoder för visualisering av tidsseriedata med snabb prestanda och diskuterar hur Big data av multivaribler kan visualiseras med PCA.
Abstract
Presenting data in graphical forms is important in many different industries in order to
understand information asset from data that is being collected. The amount of data is growing fast and brings new challenges for visualizing the data in graphical representations. Systems are dependent on data visualization for detecting defects and faults of productions. By improved performance of time series data visualization increases the ability of detecting faults and defects of productions.
This report takes up a methods for visualizing time series data with high velocity in to account and discusses how big data of multivariable can be visualized with PCA.
Förord
Jag vill tacka HiQ för möjligheten att jobba med utveckling av produktionstestsystemet
Innehållsförteckning
1 Inledning 5 1.1 Bakgrund . . . 5 1.1.1 HiQ . . . 5 1.1.2 HiMacs . . . 5 1.1.3 HiVision . . . 6 1.2 Projekt . . . 7 1.2.1 Prototyp . . . 7 1.2.2 Utredning . . . 7 1.3 Syfte . . . 8 1.4 Krav . . . 82 Visualisering av stora mängder data 9 2.1 Datavisualisering . . . 9
2.2 Definition av stor mängd data . . . 9
2.3 Metoder och verktyg för datavisualisering av stora mängder . . . 9
2.3.1 Principal Component Analysis . . . 10
2.3.1.1 Förbehandling av data . . . 10 2.3.1.1.1 Centrera . . . 10 2.3.1.1.2 Skalning . . . 11 2.3.1.2 Hitta Komponenter . . . 11 3 Systemarkitektur 15 3.1 MVVM . . . 15
4 Metoder och verktyg 16 4.1 Programmeringsspråk och programbibliotek . . . 16
4.1.1 C# Programmering. . . 16
4.1.2 LiveCharts . . . 16
4.1.3 Prism Library . . . 16
4.2 Verktyg . . . 16
4.2.1 Windows 8 . . . 16
4.2.2 Windows Presentation Foundation . . . 16
4.2.3 Microsoft Visual Studio 2017 . . . 16
5 Genomförande 17 5.1 Förberedelser. . . 17
5.1.1 Valkriterier . . . 17
5.1.2 Ramverk . . . 18
5.2 Implementation av HiVision i WPF . . . 21
5.3 Förbättra prestandan av HiVision . . . 22
6 Resultat 23
6.1 Prototyp HiVision. . . 23 6.2 Fördjupning - Visualisera data av multi variabler . . . 25
7 Diskussion 26
7.1 Uppfyllande av projektets krav . . . 26 7.2 Sociala och ekonomiska implikationer . . . 26 7.3 Projektets utvecklingspotential . . . 27
8 Reflektion kring eget lärande 28
1 Inledning
Detta kapitel innehåller bakgrundsinformation och kontext till projektets alla delar, samt en beskrivning av projektets syfte och kravspecifikation.
1.1
Bakgrund1.1.1
HiQHiQ arbetar med leveranser av systemutveckling av programvaror och tjänster. HiQ som är i det här projektet agerar som uppdragsgivare. De har arbetat med utveckling av områden som kompilatorer, testprogramvara, utvecklingsplattform såsom molntjänst, applikationsserver, utvecklingsramverk och många fler områden [1] sedan år 1995, det år som företaget grundades [2].
HiQ har under flera år varit verksamma inom produktionstestsystem av Volvo motorer som används internationellt, exempelvis till kollektivtrafik, lastbilar och anläggningsmaskiner. Denna mät- och styrsystem benämns HiMacs och används för att upptäcka defekter av motorer som har en omfattande betydelse för utvecklingen inom tillverkningsindustrin.
1.1.2
HiMacsHiMacs är ett mät- och styrsystem av motorer. Typiskt körs detta produktionstestsystem genom att placera en motor för test på en riggdator. En riggdator fungerar som ett provrum för att testa motorer. Vid simulerad testkörning av motorer skickas flera olika typer av mätdata i realtid genom ett fältbussystem till separata kanaler. Det data som produceras vid simuleringen kan exempelvis komma från temperatur eller tryckgivare men även digitala signaler. Mätfrekvensen för HiMacs är 1000 mätningar/sekund. Mycket av det inhämtade data kastas bort på grund av att C# inte stödjer en uppdateringsfrekvens snabbare än 1 kHz. Det fältbussystem som används är TwinCat utvecklat av BeckHoffs Automation. Det är via TwinCat system manager de olika I/O information från kopplat fältbussystem är hanterade [3]. TwinCats komponenter som är uppbyggda av varierande terminaler och terminalkopplare är sammankopplade av EtherCat. Det är med hjälp av EtherCat, HiMacs kan kommunicera med de övriga delarna av systemet.
Figur 1: Översikt över HiMacs systemkomponenter och uppbyggnad
HiMacs är uppbyggt av användargränssnittet HiVision, Alarms och HiSequence som
kommunicerar via HiCore som är kärnan av produktiontestsytemet HiMacs. HiVision är det delområdet detta arbetet omfattar.
1.1.3
HiVisionHiVision är programmet för användargränssnitt i produktiontestsytemet HiMacs. Programmet visualiserar grafer av nuvarande värde av indata i realtid genom övervakning av kanaler. Det paket som används för att visualisera nuvärde av data kommer från National Instruments med Windows Forms ramverk för att visualisera grafer. National Instruments är ett begränsat licens baserat paket. Detta gör att produktionstestsystemet blir begränsat till ett fåtal användare som kan jobba med produktionstestsystemet då det kräver licens från National Instruments.
1.2
Projekt1.2.1
PrototypUppdragsgivarens tidigare paket från National Instruments som används i
användargränssnittet HiVision för att visualisera grafer av nuvarande värde av indata ger god noggrannhet och hög prestanda för visualisering av grafer med mycket data, men på grund av begränsningen i C# kastas mycket av det insamlade datat bort och endast ett fåtal data
visualiseras i HiVision.
Figur 2: Linjeserie med 30 datapunkter med färgkod blå för data som visualiseras av HiVision respektive data i svart färg som kastas bort vid visualiseringen.
Eftersom National Instruments är ett begränsat paket som kräver licens medför detta till att det blir svårt för flera användare att jobba med produktiontestsystemet, då det är ett closed source licens. Closed source även benämnt proprietary är ett begränsat licens som är distribuerat under villkor för användare med begränsning för modifikation, kopiering och reproduktion av källkod [23]
Uppdraget i detta projekt är att ersätta detta paket med ett alternativ som gör att man inte längre är bunden till ett licens som är begränsat för att enklare jobba utan begränsningar, samt ge en god lösning för att förbättra grafens prestanda genom att minska datapunkter som ignoreras vid visualisering av grafen. Detta skulle innebära att fler utvecklare kan jobba med samma system, samt en förbättring av grafens noggrannhet för att enklare upptäcka defekta motorer. Projektresultatet ska användas som ett bättre alternativ av HiVision.
1.2.2
UtredningProjektet har även en teoretisk del där tillämpning av HiVision utreds. Följande punkter ska utredas
● Undersöka vilket ramverk ska användas Windows Forms eller Windows Presentation Foundation.
Följande punkt ska utredas inom det fördjupade området
● Undersöka hur data av multi responsvariabler kan visualiseras
1.3
SyfteSyftet med projektet är att uppdragsgivaren vill ta fram ett bättre alternativ av HiVision. En lösning som är tillgänglig för flera utvecklare av systemet, samt en lösning för en mer noggrann och bättre prestanda av HiQs program HiVision då de tillgängliga lösningarna inte uppfyller deras önskemål och behov i prestandan av programmet HiVision.
1.4
KravDe krav som ställs på detta arbete var enligt uppdragsgivare:
● Ta fram användargränssnittet HiVision i ramverket Windows Presentation Foundation
● Visualisera mätvärden som presenteras med en grafkontroll ● Ta fram egna eller fria varianter av kontroller
2 Visualisering av Big Data
I detta kapitel beskrivs den teoretiska bakgrundsinformation inom det fördjupade området i detta arbete.
2.1
DatavisualiseringVisualisering av data i grafiska presentationer används inom många områden för att enklare förstå information och relationer av data [4]. Datavisualisering är data som presenteras i form av grafiska bilder, detta medför till att människan kan uppfatta information och mönster enklare av data med hjälp av datavisualisering. [5]
2.2
Definition av Big DataVisualisering av data är ett relativt stort och studerat område som förekommer inom många områden såsom i medicin, ekonomi och informationsteknik. Visualisering av stor mängd data däremot innebär en mer komplex hantering vid datavisualisering. Hanteringen av data av stor mängd skiljer sig från när man hanterar färre mängd data i jämförelse med stor mängd. Definitionen av stor mängd data enligt De Mauro, Greco och Grimaldi författarna av artikeln ‘A formal definition of Big Data based on its essential features’ kan definieras av “Big Data is the information asset characterised by such a High volume, Velocity and Variety to require specific Technology and Analytical Methods for transformation into value”. Big data är data som man måste ta till med speciella verktyg och metoder för att visualisera [LHJKL].
‘Big Data’ varierar därför i egenskap och man har olika definitioner av vad big data kan vara. Big data kan bland annat vara [LHJKL]
● data av stora mängder
● komplex eller ostrukturerad data
● data som är för stort för att få plats i en skärm
● hög volym, mängd, prestanda, “veracity” eller en kombination av dessa
2.3
Metoder och verktyg för datavisualisering av stora mängderDet finns en mängd olika metoder och verktyg för visualisering av data. Vilka metoder som används beror på vilken data man hanterar, därför är det viktigt att känna till vilken data man hanterar. Varje metod och verktyg är anpassade bäst för vissa typer av data. Eftersom ‘Big Data’ varierar i volym, prestanda, “veracity” och andra faktorer finns det flera olika metoder och verktyg som kan användas för att visualisera “Big Data” [7]. Principal Component Analysis är ett av dem många olika metoder och verktyg som finns som kommer att tas upp i detta arbete för att visualisera large data av stora skalor. Denna teknik används vid big data av multivariabler i syfte om att reducera antalet dimensioner [8].
2.3.1
Principal Component AnalysisPCA är en av dem äldsta teknikerna som använts genom åren, dessutom bland den mest använda tekniken för data av multivariabler. PCA står för Principal Component Analysis och fungerar som en analys av data med multiresponsvariabler. En modellanalys görs av en datatabell med värden för flertalet dimensioner och uttrycks i form av nya ortogonal
information som benämns “Principal Components”, d.v.s komponenter som är vinkelräta till varandra. “Principal components” är information överförda av en datatabell av
multiresponsvariabler. Observationer av mönster överförda av principal components presenteras i form av punkter i en koordinatisk graf [8].
Tabellen kan behöva förbehandlas först för att kunna bygga en modell och överföra viktig information från tabellen. Storleken av data komprimeras genom att endast behålla den överförda viktiga informationen i syfte om att förenkla storleken av data innan en analys kan genomföras. PCA skapar nya principal components som är linjära kombinationer erhållna av ursprungs variablerna för att kunna genomföra en modellanalys. Dessa beräknas så att varje komponent är ortogonal (90 grader) mot den föregående beräknade komponent och har den största möjliga ”inertia” av datatabellen som är den största möjliga variansen av
datapunkterna i tabellen. Den första ”principal component” beräknas så att den har största möjliga varians och omfattar den största delen av “inertia” av data tabellen [8].
Målet med PCA är att [8]
1. Överföra viktig information erhållet av datatabellen.
2. Reducera storleken av data genom att behålla endast den viktiga informationen överförda av datatabellen.
3. Förenkla beskrivningen av det reducerade datat. 4. Analysera strukturen.
2.3.1.1
Förbehandling av dataInnan en analys kan genomföras för att kunna ta fram viktig information kan datatabellen behöva att förbehandlas. I de flesta fall kan datatabellen behöva centrera dess data,
normalisera värden till samma skala och även transformera extrema värden. Dessa är viktiga för att kunna ta fram en optimal modellanalys med PCA [9].
2.3.1.1.1 Centrera
Centrera koordinatsystemet till en ny referenspunkt kan göras med mean centering. Koordinaterna centreras i koordinatsystemet för att man ska kunna ta fram riktning till komponenter genom medelvärdet [9].
Mean centering beräknas
xk,center = xk,raw - medelvärde (xk,raw) ekv. 1
Varav X är en förbehandlad 3-dimensionell matris med observationer [x1,x2,x3] och Xraw är den obehandlade matrisen av X för k:de kolumn.
genom origo som visualiseras av figur 3.
Källa:https://learnche.org/pid/latent-variable-modelling/principal-component-analysis/preprocessing-th e-data-before-building-a-model#lvm-preprocessing
Figur 3. Tredimensionellt koordinatsystem som centreras med mean centering. De tre variablerna flyttas tillsammans mot origo.
2.3.1.1.2 Skalning
Skalning kan vara nödvändigt att applicera innan en analys genomförs för att varje kolumn av data ska få möjlighet att bidra till analysmodellen. Genom att dividera varje kolumn av datatabellen med dess standardavvikelse kan man få bort oönskad variation och varje data kommer att ha en variation av exakt 1.0 [9].
Skalning kan kombineras med mean centering som beräknas av ekv. 2 [9]
ekv. 2
2.3.1.2
Hitta komponenterFörsta steget i PCA är att hitta principalkomponenter. PCA reducerar data genom en
geometrisk projection. Den första komponenten bestäms genom att hitta den största möjliga inertia som är den största variansen av datapunkterna i tabellen. Genom att minimera den totala distansen mellan data och dess projektion går det att hitta den största möjliga inertia av datatabellen som är principal components. Vidare komponenter ska vara ortogonala mot de föregående beräknade komponent och ha den största möjliga “inertia” av datatabellen [10]. Det minsta antalet av observationer och egenskaper blir det maximala antalet av principal components. Korrelationen mellan data och dess projicerad data maximeras vid processen för bestämmelse av PC komponenter. En multipel linjär regression utförs på den projicerade data mot varje variabel av originaldata [10].
Källa: https://www.nature.com/articles/nmeth.4346
Figur 4. a) illustrerar projection av en 2D punkt och linje för att beräkna distansen mellan data och dess projection i syfte om minimera distansen. b) Projektion av data från a för varje linje. De projicerade punkterna varierar i σ2c) linje u från a är den maximerade projektionen av PC1. PC2 ärσ2
vinkelrät till PC1. y~x och x~y är linjär regression av y och x.
Källa: https://www.nature.com/articles/nmeth.4346
Figur 5 a) Illustrerar profil för nio gener från A-I med sex observationer av a-f med färgkod för form likheter. Illustrerar även en graf av varje observation (a-f) variation b) Illustrerar PC från 1-6 för varje
profil i a. Tydliga trender är synliga i PC1 och PC2 med endast en minimal variation i resterande komponenter. c) Profilerna är transformerade och uttrycka i σ2och “PC scores”. d) Med nyttjande av
PC1, PC2 och PC3 bildas en profil. e) en 2 dimensionell graf med koordinater för varje profils PC score av de första två principal components.
Vid multipel regression med PC1 har PC2 maximalt r2i projektion. De
principalkomponenter är en linjärkombination av datans ursprungliga variabler. I figur 4c i det 2-dimensionella exemplet är PC1 = x / √2 + y / √2. Dessa är koefficienter som lagras i en PCA-laddningsmatris som roterar datat längs axeln med största möjliga varians. PCA skiljer sig från linjära regression. PCA minimerar den vinkelräta distansen mellan en datapunkt och det principalkomponent. Den linjära regressionen minimerar distansen mellan response
variabel och dess förutsedda värde [10].
PCA är illustrerad med data av gener som simuleras för gener av nio profiler. Generna faller in i 3 olika mönster för sex olika observationer (figur 5a). Då variansen i de olika
observationerna är någorlunda lika i (figur 5a) behövs samtliga sex dimensioner för att uttrycka den viktiga informationen. PCA används för att se om den kan fånga mönstret med ett mindre antal kombinationer av observationer. PC1-PC6 blir de nya axlarna för att hitta komponenter (figur 5b). Profilerna transformeras så att de uttrycks i linjära kombinationer och varje profil är en uppsättning koordinater på axlarna med beräknad varians. PC1 omfattar den största variansen med 52,6% inertia (figur 5c) och PC2 den nästa största möjliga varians med 47,0% av inertia. r2av regressionen är den procentuella variationen av samtlig data. Den procentuella variationen förklaras av komponenterna PC1-PC6 [10].
Skillnaden i r2 när ytterligare PC komponenter kombineras är den varians som PC
komponent motsvarar. Eftersom PC1-PC2 motsvarar 99,6% av data tabellens inertia behövs inte alla PC komponenter användas då de återstående komponenter bidrar endast till 0,4% varians. Profilerna kan återskapas med endast PC1 och PC2 utan att förlora mycket information som visualiseras av figur 5d. Skillnaden i kvadratiskt medelvärde av den ursprungliga profil A och dess 1-dimensionella, 2-dimensionella och 3-dimensionella avbildning är endast 0.29, 0.03 och 0.01. Datat kan därför sammanfattas i ett punktdiagram med ett färre antal variabler (figur 5e) [10].
Resultatet av en PCA plot visar potentiell klustring av datat och används ofta för att hitta gruppering av datamängder samt för att hitta avvikande värden som ligger på ytterområden. Förbehandling av databellen har en inverkan på resultatet i en PCA plot och är därför viktigt i processen för PCA [10].
Källa: https://www.nature.com/articles/nmeth.4346
Figur 6: illustrerar dataklustring med PCA. a en hierarkisk graf av 26 profiler med 15 observationer. b Kofficienter för PC komponenter. c Resultat för PCA av data med varierande skala i observationer. d
resultat för data med varierande skala i variabler.
Detta illustreras i figur 6 med ett exempel av 26 gener med 15 observationer. I 6a presenteras generna vertikalt och observationerna horisontellt i en hierarkisk graf. Exemplet återskapas i
detta genom att reducera antalet variabler. 6b som visar koefficienter för profilerna så är det svårt att skilja mellan grupp D och E, medan i 6c skiljer sig i resultat då de två första
observationer är avskalade med 300 respektive 200 för varje profil av gener så att de är dominanta. Detta resulterar i att den stora skillnaden i variansen beror på att skalorna är olika. Även en dataset med en del av variabler som har högre magnitud kommer PCA att ignorera de variabler som har lägre magnitud och endast skapa komponenter utifrån de variabler med hög magnitud, detta medför även till påverkan av PCA resultatet med stor varians av
3 Systemarkitektur
3.1
MVVMProgrammet HiVision använder MVVM arkitektur. MVVM arkitektur är ett sätt att
organisera kod i ett Model-View-ViewModel mönster. Koden organiseras och struktureras i [11]
● Model ● ViewModel ● View
för att skilja på gränssnitt, affärslogik och data [12]. Model sköter ingen logik den håller endast data. ViewModel är länken mellan View och Model. I View organiseras data som är formaterat och delegerar allt till Model [11].
Figur 7. MVVM arkitektur, https://www.tutorialspoint.com/mvvm/mvvm_introduction.htm
Med logik i Code-behind och i XAML kan orsaka att problem uppstår då applikationen växer. Med MVVM struktur används code-behind och XAML till ett minimum och istället används data binding för att binda View till Model vid arbete av objekt för
4 Metoder och verktyg
Detta kapitel beskriver vilka resurser som använts i projektet.
4.1
Programmeringsspråk och programbibliotek4.1.1
C# ProgrammeringSpråket som använts för att utveckla projektet är med C# programmeringsspråk. C# är ett objektorienterat språk som utvecklats av Microsoft framställt av Anders Hjellberg och hans team .NET initiative [13]. C# härstammar från släktskapet C programmering. Språket C# inkluderar stöd för komponent orienterat programmering såsom paket och funktioner som beskriver systemet med egenskaper, metoder och events [14].
4.1.2
LiveChartsLiveCharts är ett opensource programbibliotek med stöd av Windows Presentation Foundation. Biblioteket följer MV arkitektur och är flexibel att använda med MVVM arkitektur utan att förlora det starka skriva programmeringsspråket [15]. Ett paket från LiveCharts används i det utvecklade projektet för att visualisera data i ett linjediagram.
4.1.3
Prism LibraryPrism library används i projektet för HiVision för att skapa loosely-coupled applikationer. Prism bidrar till en enklare och strukturerad implementering då biblioteket erbjuder en kollektion av designmönster och andra kommandon som förenklar implementeringen [16].
4.2
Verktyg4.2.1
Windows 8Windows 8.1 är ett standard regular-purpose operativsystem utvecklat av Microsoft [17].
4.2.2
Windows Presentation FoundationWindows presentation foundation är ett .NET ramverk utvecklat av Microsoft. WPF erbjuder en modell av programmering för utveckling av klient applikationer i windows operativsystem och egenskaper för utveckling av applikationer som Extensible Application Markup
Language (XAML), data binding och WPF kontroller [18].
WPF är ”resolution-independent” och använder vektor baserad rendering engine som
utnyttjar en modern grafikhårdvara [18]. I det framställda prototypen har skapats i Windows Presentation Foundation ramverk.
4.2.3
Microsoft Visual Studio 2017Visual studio är ett integrerat utvecklingsmiljö som använts vid framställning av prototypen [19].
5 Genomförande
5.1
Förberedelser5.1.1
ValkriterierEtt första moment för implementeringen av prototypen var förberedelser för val av
programbibliotek för visualisering av data. Val av programbibliotek utgick från de krav och önskemål som ställts av uppdragsgivaren. De krav/önskemål som ställs var
● Stöd för ramverk i Windows Presentation Foundation ● Licens Oberoende/Licens Tillgängligt
Tre valda programbibliotek jämfördes av ett urval av olika bibliotek, SciChart, LiveCharts och SyncFusion.
5.1.1.1
SciChartSciChart är ett programbibliotek för realtidsvisualisering av data med snabb prestanda. Biblioteket stöds för WPF kontroller, Android, IOS, Xamarin som används främst för data av stora datamängder. SciChart WPF graf kontroller kan visualisera till 20.000 datapunker. Licens för SciChart köps med en engångskostnad per utvecklare [20].
5.1.1.2
LiveChartsLiveCharts är ett opensource programbibliotek som stöds av Windows Presentation Foundation. Biblioteket följer MV arkitektur och är flexibel att använda med MVVM arkitektur utan att förlora det starka skriva programmeringsspråket [15].
5.1.1.3
SyncFusionSyncfusion är ett bibliotek som stöds av flera ramverk bland annat WPF, WinForms och UWP. Biblioteket stödjer MVVM arkitektur. Licens för SyncFusion köps med en engångskostnad för att få tillgång till dess komponenter och olika kontroller [21].
Tabell 1: Sammanställning av alternativ för HiVision
Stöd för WPF Licens Oberoende/Licens tillgänglig
SciChart Ja Nej
LiveCharts Ja Ja
LiveCharts programbibliotek uppfyller de två krav som ställts av uppdragsgivaren därav valdes LiveCharts programbibliotek för implementering av HiVision i Windows Presentation Foundation.
5.1.2
RamverkÄven informationssök om de ramverk som skulle utredas är ett andra moment i förberedelser.
5.1.2.1
Windows FormsWindows forms är ett ramverk för utveckling av windows forms applikationer med en variation utbud av olika kontroller för att skapa applikationer utifrån egna önskemål och behov. Händelser och kod av kontroller finns tillgängligt att hanteras i Visual studio utvecklingsmiljö där varje kontroll är en instans av en klass. Inställningar som underhåll, skapande och lagring av information är även möjligt att skapa i windows forms applikationer med windows forms ramverk. Återanvändning av kod och “abstract” är med hjälp av arv möjligt då windows forms erbjuder arv för design av applikation. Detta gör det mer flexibelt för utökning av windows forms applikationer. Windows forms fönster har en begränsad storlek och bör därför vara kompakt med kontroller. Fönster i windows forms applikationer kan delas upp i assemblyn för att att separera kontroller till separata ”chunks” för att ge möjlighet för valbarhet för leverans av kontroller. Flexibilitet för underhåll och felsökning av applikation är enkelt med design av applikation [26].
5.1.2.2
Windows Presentation FoundationWindows presentation foundation är ett .NET ramverk utvecklat av Microsoft. WPF erbjuder en modell av programmering för utveckling av klient applikationer i windows operativsystem och egenskaper för utveckling av applikationer som Extensible Application Markup
Language (XAML), data binding och WPF kontroller [18]. UI element i WPF är designade i XAML medans beteende och events implementeras med ett programmeringsspråk. Detta gör det enklare för att jobba parallellt med design och beteende av applikationen [26].
WPF är ”resolution-independent” och använder vektor baserad “rendering engine” som nyttjar en modern grafikhårdvara [18].
5.1.2.2.1 Graf Bibliotek 5.1.2.2.1.1 Open source
Open Source innebär publik källkod som är tillgänglig för modifieringar och utformas efter behov och begär utan villkor med begränsningar. Open source är tillgängligt för allmänheten och förenklar användandet av källkoden. Användandet av open source kan sänka totala kostnader och bidra till en mer flexibel användning då befintliga lösningar redan existerar för grundliga problem som är tillgängliga för allmänheten [22].
Open source förenklar arbetet för användare då tidigare lösningar för grundliga problem redan existerar. All typ av innehållshantering, dokumentation av källkod finns tillgängliga för utvecklare. Detta underlättar för fler utvecklare att arbeta med samma system då
dokumentationer och innehållshantering finns och tid för vidare utveckling av källkoden kan prioriteras [22].
Open source innebär mer än bara frihet att använda publicerad kod utan begränsning, det kan även innebära sänkta kostnader av totala kostnader för ägandet. Det är vanligt att licens för open source inte har någon kostnad eller så kan den ha en avgift på en relativt låg kostnad och är ett billigare alternativ jämfört med en closed source. Valbara tillägg som implementation, underhållning och support är tillägg med avgifter som tillkommer med open source [22].
5.1.2.2.2 Closed source
Closed source är privat källkod och är begränsad under villkor för användare med
begränsning för modifikation, kopiering och reproduktion av källkod [23]. Oftast tillkommer det en kostnad för closed source som inkluderar licens, implementation, underhåll och support service. Kostnaden för closed source är oftast betydligt högre än för ett licens med öppen källkod [24]
Med closed source får man tillgång till bra service och support, samt säkerhet då det är utvecklat i en kontrollerad miljö. God support och service är viktigt för användare med mindre tekniskt kompetens. Då kan god service och support vara till god hjälp med användardokumentation och personlig service för assistans [24].
5.1.2.2.3 Jämförelse av Closed source och open source
Tre graf bibliotek i WPF, varav en closed source och två bibliotek av open source
sammanställdes och jämfördes för att bedöma skillnaderna mellan open source och closed source projekt i WPF [25].
Tabell 2: Sammanställning av tre graf bibliotek med dess funktioner Funktion SciChart OxyPlot LiveCharts
2D graf Ja Ja Ja
3D graf Ja Nej Nej
Aktiva och sök forum
Ja Nej Nej
Snabb prestanda och realtid
Ja Nej Begränsad
Zoom och Pan Ja Ja Ja
Teknisk support Ja Nej Nej
5.1.2.3
Jämförelse av WPF och Windows FormsEn sammanställning av WPF och Windows forms egenskaper ställdes upp och jämfördes mot varandra [26]
Avancerad Enkel Utöka Säkerhet Design Prestanda Winforms Windows form är ett gammal koncept för utveckling av applikatio ner Windows forms är enkelt för användnin g Utökning av UI element i Windows form är mindre utöknings bart Mindre säkerhet Mindre bra för applikatio ner där design är ett krav Prestanda av lägre rank WPF WPF är avancerat samt det senaste konceptet för utveckling av applikatio ner WPF är ett komplext ramverk i jämförelse med Windows forms WPF är utöknings bart för UI element Har bra egenskape r för säkerhet WPF är främst användbar t för design av UI element i applikatio ner Prestanda av snabb rank
Detta är några skillnader mellan ramverken [26]
● Utökning av WPF applikation i senare skede av UI element är möjligt då WPF är ett vektorbaserat UI som nyttjar en modern grafikhårdvara. Eftersom Windows form inte är vektorbaserat så tillåter det inte UI element att utökas utan att få problem med utökning av applikationen.
● Windows forms är mindre komplex vid utveckling av applikation i jämförelse med WPF, då WPF kräver mer kunskap om hur kontroller fungerar.
● Kapaciteten för applikationer i WPF är bättre då den använder ett tredje parti för kontroller, medan i Windows forms implementeras kontroller för antalet krav som behövs
● Kunskap som krävs för att förstå helheten i en Windows forms application är betydligt mindre då Windows forms har ett mindre kunskapskrav i jämförelse med WPF ramverk. Eftersom Windows forms är mindre komplex är den dessutom mindre tidskrävande.
● WPF och Windows forms har bra support grupp av utvecklare, samt bibliotek för hjälp med utveckling av applikationer för nybörjare.
● Att utforma windows forms application utifrån egna önskemål och behov är inte fullt anpassningsbar då den är begränsad, medan i WPF är det möjligt att anpassa
applikationen utifrån det som önskas.
● Windows forms kräver inte lika mycket tid för UI design jämfört med WPF.
5.2
Implementation av HiVision i WPFImplementation av HiVision delades upp i olika delkomponenter för att uppfylla ett komplett användargränssnitt för HiVision. De delkomponenter som sattes upp är
● Skapa en klass och ett fönster för en grafkontroll med hjälp av LiveCharts programbibliotek, samt en combobox
● Skriva om fönstret till prism application ● Koppla kanaler till combobox
● TextBlock för vald kanal
● Visualisera data av vald kanal i realtid
En första implementering gjordes med att skapa en klass “Graph” av typen user-control och ett fönster med valda kontroller (graf och combobox) innan fönstret ombildas till en prism application. Genom att titta på hur tidigare prism application implementerats i HiCore gick detta utan några bekymmer. En modul till “Graph” skapades för att kunna registrera klassen i en region. Utmaningen var hur multipla shells skapas då en tidigare shell redan är skapad i applikationen för HiCore. En instans av vardera klass skapades och initieras av
”IRegionManager” för att skapa region för respektive shell. Med ”ContentRegionControl” går det att navigera regionmanager av respektive usercontrol till dess region.
Då HiCore är “Connected” vid “OnConnectionStatusChanged” registreras kanalerna i “ChannelBrowser”. För att kunna skicka de registrerade kanalerna som registreras i
“ChannelBrowser” till HiVision skapades ett Pub-Sub event med en event aggregator för att kommunicera mellan applikationerna.
Figur 8: Illustrerar kommunikation mellan view modeller med event aggregator mönster
HiVision. Som test för försöket av kommunikation mellan de delvis självständiga
applikationerna binds det samlade data kollektionen till en combox med databinding för att se om överföringen gick rätt till. Vidare implementerades en TextBlock i View som ska
visualisera namnet på den valda kanalen som valts bland kollektionen i comboboxen.
Texblock kontrollen används för att testa huruvida en kanal kan väljas för att visualisera data för den valda kanalen i vidare implementation. Select item implementerades genom att skapa en get set metod “SelectedChannel” som tar det valda värdet från View genom databinding och sätter propertyn “selectedChannel” i ViewModel till den valda kanalen. Med
“INotifyPropertyChanged” notifieras klienten att värdet har ändrats när en ny kanal är vald bland datainsamlingen av kanaler.
För att visualisera data i grafen skapades en seriescollection i ViewModel som binds till grafkontrollen i View genom databinding. Serie kollektionen innehåller en LineSeries som tar datavärden av typen double då utdata från kanalerna är av double-precision floating-point värden. En tråd skapades i “SelectedChannel” som startar en task som uppdaterar och lägger till nuvärdet av den valda kanalen i seriekollektionen. Genom att använda ”Update” som tidigare använts i HiCores ”ChannelBrowser” gick det att uppdatera nuvärde i grafen för varje 100ms. Eftersom kollektionen växer för varje nuvärde som läggs till i linjeserien så skapades en andra tråd som startar en task som tar bort nuvärde från serien i första position för att inte serien ska bli för stor.
5.3
Förbättra prestandan av HiVisionEtt försök för implementering av att förbättra prestandan av HiVision skapades en service som hanterar history data. I tidigare implementering visualiseras data i realtid och för att förbättra prestandan av HiVision visualiseras istället data som hanteras i historyservice. Data som i tidigare fall gått förlorat lagras i en “ConcurrentQueue<T>” i historyservice. Data visualiseras från kön i historyservice istället för i realtid som i tidigare implementering. Då data i historyservice kön inte visualiseras i realtid så lagras datavärden med en tidsstämpel då värdet inkom till kön. Varje kanal som registreras i historyservice lagras i en dictionary av typen “CocurrentDictionary<TKey,TValue>” med respektive “ConcurrentQueue<T>” som värde och kanal som nyckel för att kunna ta fram history för respektive kanal.
En instans av historyservice skapades i “Graph”-klassen som registrerar den valda kanalen i historyservice för att starta insamling av history data. Med “TryPeek” och “GetHistory” som returnerar första värdet i kön för den valda kanalen utan att radera det från kön. Likt den tidigare implementation för att visualisera data i grafen så skapas en ny linjeserie som lägger till värdet av data från historyservice för den valda kanalen.
5.3.1
Test av försökFör att testa förbättringen av prototypen skapades två data kollektioner av typen
“ObservableCollection<T>” för att kontrollera mätvärden mot varandra. Mätvärden från första implementationen i avsnitt 5.2 som visualiseras i realtid lagras i en
“ObservableCollection” och mätvärden från “HistoryService” kön från avsnitt 5.3 lagras i en separat datasamling. För att kunna testa detta så har HiQ bidragit med en kanal för test med mätvärden som uppdateras periodvis.
6 Resultat
6.1
Prototyp HiVisionDet slutliga resultatet av prototypen av HiVision som presenteras i figurerna nedan.
Figur 9: Panel för HiVision
Prototypen av HiVision i WPF är uppbyggd i 3 delar. Varav den första delen är en
channelview browser där mätvärden tillsammans med dess kanaler presenteras samt ett fält för val av kanal som användaren kan välja bland de kopplade kanaler som ska visualiseras i grafen. Den sista delen av panelen är det område där mätvärden visualisera med hjälp av en graf.
Figur 10: Panel för HiVision vid vald kanal
Vid användandet av HiVision visualiseras mätvärden i grafen när en kanal är vald bland listan av kanaler i området längst till vänster om panelen. Resultatet av mätvärden för kontroll av förbättring av prestanda visas i figur 11. En kanal
Figur 11: Resultat på 23 mätvärden för vardera implementation. testSelectedCh är mätvärden för data i realtid som framställdes i avsnitt 5.2 och testTvVal mätvärden från “historyService” kön som
Resultatet för kanalen som användes för test av implementationerna i 5.2 samt 5.3 visar en förbättring av prestanda, då differensen mellan mätvärdena för implementationen i avsnitt 5.2 är cirka 1,4 mellan varje mätvärde och i avsnitt 5.3 som visualiserar värden från
“HistoryService” kön visar en differens på cirka 0,4 mellan varje mätpunkt.
6.2
Fördjupning - Visualisera data av multivariabler
HiVision visualiserar i nuläget tidsseriedata av en variabel. En utredning har genomförts inom ämnet om hur data av multi variabler kan visualiseras, specifikt fördjupat rörande användandet av PCA. Utredningen visade att PCA används oftast för att finna gruppering av datamängder för att känna igen mönster och används främst inom bildanalys för en mer analys än en visuell inspektion då en PCA plot transformerar mätvärden och visar endast variansen av datapunkterna.
Med anledning av att uppfölja trender och relationer av tidsseriedata för att upptäcka avvikande värden kommer användandet av PCA i tidsserie inte att visa detta och inte ge någon relativ information som är av intresse. Detta är om data av historisk tid är av intresse är användandet av PCA tillämpligt för att finna grupperingar för klusteranalys.
7 Diskussion
7.1
Uppfyllande av projektets krav
De krav som ställdes upp på projektet var :
● Ta fram användargränssnittet HiVision i ramverket Windows Presentation Foundation
● Visualisera mätvärden som representeras med graf ● Ta fram egna eller fria varianter av graf kontroller ● Licens oberoende/tillgängligt HiVision
Projektets krav förblev oförändrade under projektets gång. Kraven som sattes upp inför projektet har uppfyllts, en prototyp av HiVision har tagits fram i Windows Presentation Foundation ramverk som visualiserar mätvärden i en graf med LiveCharts programbibliotek. Prototypen som testade visar förbättrade värden av prestanda i figur 8 eftersom differensen blivit betydligt lägre mellan varje mätpunkt, men eftersom graf kontrollen från LiveCharts som används i prototypen är begränsad för data av snabb prestanda och HiMacs inhämtar 1000 mätningar/sekund mellan varje inhämtning av mätvärden så uppstod jitter vid visualisering av grafen ju fler mätvärden som visualiseras i grafen. Till följd av detta försämrades prestandan av grafen med tiden.
En utredning kring val av programbibliotek kunde ha gjorts utifrån flera aspekter för att dra en slutsats till ett mer tillämpligt programbibliotek för data av hög prestanda. Val av
programbibliotek togs med hänsyn till de krav som ställs av uppdragsgivaren. Kravet av framtagning av licens oberoende/tillgängligt prototyp av HiVision samt begränsning till ramverket WPF blev därför urvalet för programbibliotek begränsat till ett enstaka val av graf bibliotek med öppen källkod och som stöds av WPF.
Därför kan closed source graf kontroller vara ett tänkbart bättre alternativ för framtagning av HiVision för specifikt i ramverket Windows Presentation Foundation eftersom WPF saknar graf bibliotek av open source som stödjer data av snabb prestanda.
De mest omtalade skillnaderna mellan Windows Forms och WPF ramverk är ramverkets möjlighet att flexibilitet, prestanda, samt design. Eftersom prestanda för HiVision är en betydande faktor så är WPF mer tillämpligt bland de två ramverken då WPF har en snabbare prestanda i jämförelse med det tidigare ramverket som använts för HiVision.
7.2
Sociala och ekonomiska implikationer
Prototypen som utvecklats av programmet HiVision underlättar för fler användare att jobba med produktion testsystemet då programmet inte längre är bundet till ett paket som är begränsat som kräver köp av licens för antalet användare. Alternativet av HiVision är billigare och enklare att användas av fler användare. Resultatet av förbättrad prestanda av grafen kan göra det enklare att upptäcka fel och defekter av motorer innan leverans till kund, eftersom mindre mätvärden ignoreras vid visualisering av det insamlade datat. Fel av produkt kan medföra till onödiga kostnader och tillföra förlust av tillit och förtroende hos kund. Tidig upptäckt av defekter ökar möjligheten för återkommande nöjda kunder.
Vid kontinuerligt växande data av grafen kan implikationer uppstå då jitter kan medföra till paketförlust och missar viktig information. Detta kan påverka prototypens optimala lösning till förbättrad prestanda. Det kan ge ett missvisande resultat av datat som ger implikationer i huruvida fel och defekter går att upptäcka tidigt av motorer därför kan en vidareutveckling av projektet behöva tas fram för att lösa bristerna med prototypen.
7.3
Projektets utvecklingspotential
För att använda projektet i produktion kan en potentiell vidareutveckling av projektet behöva tas fram för hur grafen kan optimeras samt förbättras då implikationer med grafen uppstår vid mycket datapunkter. En utredning om ett annat alternativ av grafkontroll för att implementera HiVision kan vara en potentiell utredning för att få en mer optimal lösning för hur prestandan av grafen kan förbättras. En utredning som inkluderar aspekter för graf kontrollens möjlighet för visualisering av data med snabb prestanda. Samt förbättra designen av HiVision genom att separera befintliga kontroller till en eller flera assemblers i syfte om att ge möjligheter för valbarhet vilka kontroller som levereras till respektive kunder i vidareutveckling av projektet. Ett annat tänkbart utvecklingspotential kan vara att ersätta C# med ett alternativ av
programmeringsspråk med frekvens snabbare än 1kHz då att C# inte stödjer en uppdateringsfrekvens snabbare än 1 kHz för att förbättra prestandan ytterligare.
8 Reflektion kring eget lärande
Projektet har innefattat implementation av nya metoder och tekniker såväl som metoder som implementerats tidigare under utbildningen. Projektet har varit en bra övning för att lära sig jobba med utveckling av programvara av ett större befintligt system, samt implementera tidigare införskaffat kunskap från utbildningen. I utbildningen har vi sällan jobbat med redan befintligt system, detta har varit en bra erfarenhet och övning för hur programmering ser ut i arbetslivet. Utmaningen med det var analys av systemet för att bilda en uppfattning för hur systemet är uppbyggt och hur det är sammankopplat. Eftersom MVVM arkitekturmönster som systemet är uppbyggt av var tidigare obekant fick MVVM arkitekturmönster studeras för att förstå helheten för hur systemet är uppbyggt.
Kunskaper som har införskaffats från utbildningen har varit en god grund för genomförandet av prototypen i realtids överföringen och utveckling med C# programmering som vi jobbat med mycket under utbildningen.
Referenser
[1] HiQ Mälardalen AB. Offentlig ramavtal. Tillgängligt: https://www.hiq.se/offentliga-ramavtal/
[2] HiQ Mälardalen AB. Om Oss. Tillgängligt: https://www.hiq.se/om-oss/
[3] Beckhoff Automation. TwinCat System Manager. Tillgängligt:
https://infosys.beckhoff.com/english.php?content=../content/1033/tcsystemmanager/basics/tc sysmgr_common_intro.htm&id=
[4] McGuire Kelly. The Analytic Hospitality Executive : Implementing Data Analytics in Hotels and Casinos. John Wiley & Sons, Incorporated, 2016-09-06
[5] Lidong Wang; Guanghui Wang; Cheryl Ann Alexander. Big Data and Visualization:
Methods, Challenges and Technology Progress. Science and Education Publishing, 2015
[6 ] De Mauro, Andrea, Marco Greco, and Michele Grimaldi. A formal definition of Big Data based on its essential features. Library Review (2016).
[7] M. Michalos; P. Tselenti; S. L. Nalmpantis. Visualization Techniques for Large Datasets. Journal of Engineering Science and Technology Review 5 (2012) .
[8] Herv E. Abdi; Lynne J. Williams. Principal component anaslysis. Wiley Interdisciplinary Computational Statistics 2 (4), 433-459
[9] Kevin Dunn. learnche: Preprocessing the data before building a model. Tillgänglig: https://learnche.org/pid/latent-variable-modelling/principal-component-analysis/preprocessin g-the-data-before-building-a-model#lvm-preprocessing
[10] Lever, J., Krzywinski, M. & Altman, N. Principal component analysis. Nat Methods 14, 641–642. 2017 doi:10.1038/nmeth.4346
[11] Tutorialspoint: MVVM-Introduction. Tillgängligt:
https://www.tutorialspoint.com/mvvm/mvvm_introduction.htm
[12] Viktoria Färnefors. AIL inom informatik: MVVM : Model-view-viewmodel. Tillgängligt: http://media.hv.se/kurser/informatik-ail/old-vri401-vru401/mvvm-model-view-viewmodel
[13] GeeksForGeeks. C# Programming Language. Tillgängligt: https://www.geeksforgeeks.org/csharp-programming-language/
[14] Microsoft. Windows Documentation; 2018. A Tour of C# - C#. Tillgängligt: https://docs.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/
[15] Live Charts. Tillgängligt: https://lvcharts.net
[16] Prism Library. Introduction to Prism.Tillgängligt: https://prismlibrary.com/docs/
[17] Microsoft, 2018. Tillgängligt: https://docs.microsoft.com/sv-se/
[18] Microsoft. Introduction to WPF. Tillgängligt:
https://docs.microsoft.com/en-us/dotnet/framework/wpf/introduction-to-wpf
[19] Microsoft, 2018. About Visuals Sudio. Tillgängligt:
https://docs.microsoft.com/sv-se/visualstudio/get-started/visual-studio-ide?view=vs-201
[20] SciChart. Why SciChart?. Tillgängligt:
https://www.scichart.com/why-scichart-high-performance-realtime-big-data-charts/
[21] Syncfusion. Tillgängligt: https://www.syncfusion.com/
[22] Redhat. What is open source. Tillgängligt:
https://www.redhat.com/en/topics/open-source/what-is-open-source
[23] Coredna. Comparing Open Source vs Closed Source Softwere. Tillgängligt: https://www.coredna.com/blogs/comparing-open-closed-source-software
[24] OpenSource. 6 motivations for consuming or publishing open source software. Tillgängligt: https://opensource.com/life/15/12/why-open-source
[25] SciChart. Comparison of SciChart vs. Open Source Chart controls. Tillgängligt: https://www.scichart.com/comparison-of-scichart-vs-open-source-chart-controls/
[26] Educba. Winforms vs WPF. Tillgängligt: https://www.educba.com/winforms-vs-wpf/