• No results found

Spektrum-analysen med båda typerna av testade loggningar anses generera ett resul-tat med låg reliabilitet. Uppgradering av loggningsutrustning kan vara en lösning som åtgärdar problematiken med metoden.

Analysen av signalegenskaper med data från likströmsloggning med 10Hz samplings-frekvens gav bra indikeringar på motorernas hälsa då pumparnas installation ansågs ideala. Fortsatt loggning förväntas ge ännu bättre resultat.

Skattningen av RUL med underhållsbeslut blir missvisande då beräkningen ej utför-des på motorernas faktiska livslängder utan från ny till sliten samt att RUL behöver längre dataserier att analysera för korrekt representation. Skattning från ny till sliten genererade ett tydligt resultat.

Ett prediktivt underhåll skyddar både ekonomin, med ökad tillgänglighet och kon-kurrenskraft, och miljön med en säkrare arbetsplats samt mindre utsläpp i omgiv-ningen vid frakt och olika tömningar av nödsystem.

Referenser

[1] “Underhåll i världsklass – Leo Hagberg • Tomas Henriksson – Bok | Akademibokhandeln.” [Online]. Available:

https://www.akademibokhandeln.se/bok/underhall-i-varldsklass/9789163966163/. [Accessed: 03-Mar-2020].

[2] Y. Yin, K. E. Stecke, and D. Li, “The evolution of production systems from Industry 2.0 through Industry 4.0,” Int. J. Prod. Res., vol. 56, no. 1–2, pp. 848–861, Jan. 2018, doi: 10.1080/00207543.2017.1403664.

[3] A. Heng, S. Zhang, A. C. C. Tan, and J. Mathew, “Rotating machinery prognostics: State of the art, challenges and opportunities,” Mechanical Systems

and Signal Processing. 2009, doi: 10.1016/j.ymssp.2008.06.009.

[4] M. E. H. Benbouzid, “A review of induction motors signature analysis as a medium for faults detection,” IEEE Trans. Ind. Electron., 2000, doi:

10.1109/41.873206.

[5] “Mål 8: Anständiga arbetsvillkor och ekonomisk tillväxt - Globala målen.” [Online]. Available: https://www.globalamalen.se/om-globala-malen/mal-8-anstandiga-arbetsvillkor-och-ekonomisk-tillvaxt/. [Accessed: 18-Mar-2020].

[6] A. K. S. Jardine, D. Lin, and D. Banjevic, “A review on machinery diagnostics and prognostics implementing condition-based maintenance,”

Mechanical Systems and Signal Processing, vol. 20, no. 7. pp. 1483–1510,

Oct-2006, doi: 10.1016/j.ymssp.2005.09.012.

[7] G. A. Susto, A. Schirru, S. Pampuri, S. McLoone, and A. Beghi, “Machine learning for predictive maintenance: A multiple classifier approach,” IEEE

Trans. Ind. Informatics, 2015, doi: 10.1109/TII.2014.2349359.

[8] R. Roy, R. Stark, K. Tracht, S. Takata, and M. Mori, “Continuous maintenance and the future – Foundations and technological challenges,”

CIRP Ann. - Manuf. Technol., 2016, doi: 10.1016/j.cirp.2016.06.006.

[9] S. Wang, J. Wan, D. Li, and C. Zhang, “Implementing Smart Factory of Industrie 4.0: An Outlook,” Int. J. Distrib. Sens. Networks, 2016, doi: 10.1155/2016/3159805.

[10] BSI Standards Publication, raising standards worldwide TM NO COPYING

WITHOUT BSI PERMISSION EXCEPT AS PERMITTED BY COPYRIGHT LAW BSI Standards Publication Maintenance-Maintenance terminology Copyright British Standards Institution Provided by IHS under license with BSI-Uncontrolled. 2010.

[11] O. Merkt, “On the use of predictive models for improving the quality of industrial maintenance: An analytical literature review of maintenance strategies,” in Proceedings of the 2019 Federated Conference on Computer Science

and Information Systems, FedCSIS 2019, 2019, pp. 693–704, doi:

10.15439/2019F101.

[12] “Designing Algorithms for Condition Monitoring and Predictive Maintenance,” 2020. [Online]. Available:

[13] H. Austerlitz, Data Acquisition Techniques Using PCs. Elsevier Inc., 2003. [14] N. V Kirianaki, S. Y. Yurish, N. O. Shpak, and V. P. Deynega, “Data

Acquisition and Signal Processing for Smart Sensors,” Meas. Sci. Technol., 2002, doi: 10.1088/0957-0233/13/9/706.

[15] H. M. Hashemian and W. C. Bean, “State-of-the-art predictive maintenance techniques,” in IEEE Transactions on Instrumentation and Measurement, 2011, doi: 10.1109/TIM.2009.2036347.

[16] X. S. Si, W. Wang, C. H. Hu, and D. H. Zhou, “Remaining useful life estimation - A review on the statistical data driven approaches,” European

Journal of Operational Research. 2011, doi: 10.1016/j.ejor.2010.11.018.

[17] L. Cattaneo and M. MacChi, “A Digital Twin Proof of Concept to Support Machine Prognostics with Low Availability of Run-To-Failure Data,” in

IFAC-PapersOnLine, 2019, vol. 52, no. 10, pp. 37–42, doi:

10.1016/j.ifacol.2019.10.016.

[18] J. Z. Sikorska, M. Hodkiewicz, and L. Ma, “Prognostic modelling options for remaining useful life estimation by industry,” Mech. Syst. Signal Process., vol. 25, no. 5, pp. 1803–1836, Jul. 2011, doi: 10.1016/j.ymssp.2010.11.018. [19] D. Miljković, “Brief Review of Motor Current,” June, pp. 15–16, 24, 2015. [20] A. S. Fontes, C. A. V. Cardoso, and L. P. B. Oliveira, “Comparison of

techniques based on current signature analysis to fault detection and diagnosis in induction electrical motors,” in 1st International Conference - EECon 2016:

2016 Electrical Engineering Conference, 2017, pp. 74–79, doi:

10.1109/EECon.2016.7830938.

[21] Z. Ye, B. Wu, and A. Sadeghian, “Current Signature Analysis of Induction Motor Mechanical Faults by Wavelet Packet Decomposition,” IEEE Trans. Ind.

Electron., vol. 50, no. 6, pp. 1217–1228, Dec. 2003, doi:

10.1109/TIE.2003.819682.

[22] N. C. Peter A. Flach, Tijl De Bie, Machine Learning and Knowledge Discovery in

Databases - European Conference, ECML PKDD 2012, Proceedings, vol. 7523

LNAI, no. PART 2. Springer, 2012.

[23] P. B. Brazdil and C. Soares, “A comparison of ranking methods for

classification algorithm selection,” in Lecture Notes in Computer Science (including

subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics),

2000, doi: 10.1007/3-540-45164-1_8.

[24] “Analysis of variance for linear regression model - MATLAB anova - MathWorks Nordic.” [Online]. Available:

https://se.mathworks.com/help/stats/linearmodel.anova.html. [Accessed: 27-May-2020].

[25] “Measurement Systems for Industry and Energy | iba.” [Online]. Available: https://www.iba-ag.com/en/start/. [Accessed: 26-May-2020].

[26] R. Gouriveau, K. Medjaher, and N. Zerhouni, From Prognostics and Health

Systems Management to Predictive Maintenance 1: Monitoring and Prognostics, vol.

Bilaga A

Pairwise T-Test

T-test jämför två uppsättningar data, µA och µB, som är relaterade till varandra och tar fram ett värde på variansen mellan dem. Nollhypotesen är:

𝐻0: 𝜇𝐷 = 0 (1)

Hypotesen säger att så länge den parvisa differensen mellan grupperna inte är lika kan T-Test användas.

De matematiska stegen är som följande:

För varje sampling i samplingsmängden subtraheras värdet på plats n i respektive grupp och skillnaderna summeras, D = Differens.

𝐷1 =𝑁0 𝐴(𝑛)− 𝐵(𝑛) (2)

Där N = totalt antal samplingar, n = varje enskild sampling, A och B är respektive grupp.

För varje plats n kvadreras den parvisa differensen från D1 och summeras. 𝐷2 =𝑁0𝐷1(𝑛)2 (3)

För att beräkna T-värdet används följande formel: 𝑇 = 𝐷1/𝑁

𝐷2−(𝐷1)2𝑁 (𝑁−1)𝑁

(4)

Där frihetstalet df=N-1.

Resultatet av T-Test är enhetslöst och representerar likt ANOVA en kvot. Ju högre värde på T desto större varians är det på mätdatan. Ju lägre värde desto mindre vari-ans.

Bilaga B

Bilaga C

Matlab Mathworks kod

Sammanställning av provdata del 1:

clear clc close all

load LoggDag1P2.mat % Laddar fil med data

load LoggDag2P2.mat % Laddar fil med data

load LoggDag3P2.mat % Laddar fil med data

load LoggDag4P2.mat % Laddar fil med data

load LoggDag5P2.mat % Laddar fil med data %% Dag 1

Seq = [pda000.Durin.L1_TRMS.data];

I = find((14.9>Seq) &(Seq>14.2)); % Tar bort strömspikar och nollmätning (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end N= length(temp); Samples=zeros(N,1); for n=1:N Samples(n)=cast(temp(n),'double'); end %% Dag 2 Seq = [pda003.Durin.L1_TRMS.data];

I = find((14.9>Seq) &(Seq>14.2)); % Tar bort mätvärden som är mindre än 1 (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end

N= length(temp);

New_Samples=zeros(N,1);

for n=1:N

New_Samples(n)=cast(temp(n),'double'); %rätt format in till Dia-gnostic FD

end

Samples = [Samples; New_Samples];

%% Dag 3

Seq = [pda004.Durin.L1_TRMS.data];

I = find((14.9>Seq) &(Seq>14.2)); % Tar bort mätvärden som är mindre än 1 (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end

N= length(temp);

New_Samples=zeros(N,1);

for n=1:N

New_Samples(n)=cast(temp(n),'double'); %rätt format in till Dia-gnostic FD

end

Samples = [Samples; New_Samples];

%% Dag 4

Seq = [pda006.Durin.L1_TRMS.data];

I = find((14.9>Seq) &(Seq>14.2)); % Tar bort mätvärden som är mindre än 1 (nollmätning)

for n=1:N

New_Samples(n)=cast(temp(n),'double'); %rätt format in till Dia-gnostic FD

end

Samples = [Samples; New_Samples];

%% Dag 5

Seq = [pda007.Durin.L1_TRMS.data];

I = find((14.9>Seq) &(Seq>14.2)); % Tar bort mätvärden som är mindre än 1 (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end

N= length(temp);

New_Samples=zeros(N,1);

for n=1:N

New_Samples(n)=cast(temp(n),'double'); %rätt format in till Dia-gnostic FD

end

Samples = [Samples; New_Samples];

%% Sammanställ i timetable för DFD

WhatPump = 2;

Current=array2timetable(Samples(),'Timestep',seconds(0.1), 'Variablena-mes',{'Data'});

T=table({Current},WhatPump,'VariableNames',{'Fas','DataSet'}); TotPumpTT (WhatPump,:)=T;

save Pump2 TotPumpTT;

Sammanställning av provdata del 2:

clear clc

load Pump2.mat;

load LoggDag1P1.mat % Laddar fil med data

load LoggDag2P1.mat % Laddar fil med data

load LoggDag3P1.mat % Laddar fil med data

load LoggDag4P1.mat % Laddar fil med data

load LoggDag5P1.mat % Laddar fil med data %% Dag 1

Seq = [pda033.Durin.L1_TRMS.data];

I = find((14.57>Seq) &(Seq>14)); % Tar bort strömspikar och nollmätning (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

%#ok<SAGROW> end N= length(temp); Samples=zeros(N,1); for n=1:N Samples(n)=cast(temp(n),'double'); end %% dag 2 Seq = [pda034.Durin.L1_TRMS.data];

I = find((14.6>Seq) &(Seq>14)); % Tar bort strömspikar och nollmätning (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end

N= length(temp);

%% Dag 3

Seq = [pda036.Durin.L1_TRMS.data];

I = find((14.6>Seq) &(Seq>14)); % Tar bort strömspikar och nollmätning (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end

N= length(temp);

New_Samples=zeros(N,1);

for n=1:N

New_Samples(n)=cast(temp(n),'double'); %rätt format in till Dia-gnostic FD

end

Samples = [Samples; New_Samples];

%% Dag 4

Seq = [pda037.Durin.L1_TRMS.data];

I = find((14.6>Seq) &(Seq>14)); % Tar bort strömspikar och nollmätning (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end

N= length(temp);

New_Samples=zeros(N,1);

for n=1:N

New_Samples(n)=cast(temp(n),'double'); %rätt format in till Dia-gnostic FD

end

Samples = [Samples; New_Samples];

%% Dag 5

Seq = [pda038.Durin.L1_TRMS.data];

I = find((14.6>Seq) &(Seq>14)); % Tar bort strömspikar och nollmätning (nollmätning)

Filt_Seq = Seq(I,:);

for i = 1:10

temp((i-1)*1000+(1:1000)) = Filt_Seq ((i-1)*36000 +(1:1000));

end

N= length(temp);

New_Samples=zeros(N,1);

for n=1:N

New_Samples(n)=cast(temp(n),'double'); %rätt format in till Dia-gnostic FD

end

Samples = [Samples; New_Samples];

%% Sammanställ i timetable

WhatPump = 1;

Current=array2timetable(Samples(),'Timestep',seconds(0.1), 'Variablena-mes',{'Data'});

T=table({Current},WhatPump,'VariableNames',{'Fas','DataSet'}); TotPumpTT (WhatPump,:)=T;

Beräkning av RUL och utskrift:

%% Identifierning av pumphälsa clc clear close all load meanPeak5DaysP1.mat load meanPeak5DaysP2.mat

load meanPeak5DaysP1Test.mat %filer med medelvärde av toppvärden över 5-dagar

RUL = ((Old - TestData)/TotLife)*100 ; % livslängd i procent

if (RUL >= 50)

fprintf('Pumphälsa: %1.2f procent, ingen åtgärd behövs.\n', RUL);

end

if (RUL < 50 && RUL >= 25)

fprintf('Pumphälsa: %1.2f procent. Planera Service.\n', RUL);

end

if (RUL < 25 && RUL >= 10)

fprintf('Pumphälsa: %1.2f procent, Sliten pump. Service behövs. \n', RUL);

end

if (RUL < 10 )

fprintf('Pumphälsa: %1.2f procent, Dålig pump. Byt snarast. \n', RUL);

Related documents