Reliability Considerations for Quality Managers Course Title: Quality Management IE 580 Professor: Hoang Pham • Presented by: David Silkworth • Managing Director: OpenReliability.org Impressions on Reliability with regard to repairable plant experience Two Views of Plant Reliability Frequency vs Unavailability 4,6 4,1 0,80% 0,70% 3,6 0,60% 0,50% 2,6 0,40% 2,1 0,30% 1,6 0,20% 1,1 0,10% 0,6 0,1 0,00% 0,50 5,00 50,00 Repair Hours Frequency Unavailability Unavailability Failure Frequency 3,1 Modeling product supply from plant with backup 0.50 1.00 0.05 0.10 0.01 Failure Frequency - per year 5.00 Cumulative Hazard Distribution Function - (CHDF) 0 50 100 150 200 Outage Duration - hours longer than 250 300 Stochastic Modeling The Risk Matrix Lower Frequency Higher Consequence “Hidden” Risk Higher Frequency Higher Consequence High Risk Consequence Lower Frequency Lower Consequence Low Risk Higher Frequency Lower Consequence Medium Risk Probability Technology Risk Higher Frequency Higher Consequence High Risk Little data, nearly immediate failure on early exposure The Risk Matrix Lower Frequency Higher Consequence “Hidden” Risk Higher Frequency Higher Consequence High Risk Consequence Lower Frequency Lower Consequence Low Risk Higher Frequency Lower Consequence Medium Risk Probability Root Cause Analysis on Near Misses or Significant Loss Events Lower Frequency Higher Consequence Failure Reporting and Corrective Actions (FRACAS) Data Outliers “Hidden” Risk Fault Tree Analysis Failure Modes and Effects Analysis The Risk Matrix Existential Threats Lower Frequency Higher Consequence High Risk “Hidden” Risk Consequence Higher Frequency Higher Consequence outliers Lower Frequency Lower Consequence Higher Frequency Lower Consequence DMAIC –Six Sigma Analysis Low Risk Medium Risk Probability **** Lots of data ***** Scatter plots Multiple regression analysis Time Series Control Charting Failure Modes and Effects Analysis (FMEA) Root Cause Analysis Software packages using R https://www.r-project.org/ Life Data Analysis: WeibullR Fault Tree Analysis: FaultTree Stochastic Modeling: stosim Microsoft R Open: The Enhanced R Distribution WeibullR tutorial material online https://www.academia.edu/38728015/ Introducing_WeibullR_A_package_on_R_Life_data_analysis_in_the_graphical_tradition_of_Waloddi_Weibull https://github.com/openrelia/WeibullR.gallery https://www.researchgate.net/publication/341170298_WeibullR_An_R_Package_for_Weibull_Analysis_for_ Reliability_Engineers 90 98 50 20 2 5 10 20 10 5 2 5 10 50 Time To Failure 500 5000 0.5 1 0.5 1 1 acid gas compressor ranks = median n (fail | cens.) = 200 (200 | 0) w eibull (rr-xony) beta = 1.167 eta = 1401 r^2 = 0.9403 prr = 0 by corr. 0.5 Unreliability [%] 50 90 98 require(WeibullR) agc<read.csv("https://raw.githubusercontent.com/openrelia/WeibullR.gallery/master/data/acid_gas_compressor.csv ", header=T)$agc Bathtub Life Data dafit<-wblr(agc, label="acid gas compressor") 0.5 1 5 10 50 500 5000 dafit<-wblr.fit(dafit,col="red") plot(dafit, main="Bathtub Life Data") abline(v=107, col="orange", lty=5, lwd=2) abline(v=1750, col="orange", lty=5, lwd=2) Division of Life Data Using 3p Weibull 10 50 500 5000 50 20 ranks = median n (fail | cens.) = 200 (10 | 190) weibull3p (rr-xony) beta = 0.9465 eta = 3179 t0 = -7.601 r^2 = 0.9783 0.5 1 5 10 50 Time To Failure 500 5000 2 1 0.5 1 2 ranks = median n (fail | cens.) = 200 (121 | 79) weibull3p (rr-xony) beta = 1.117 eta = 1569 t0 = 98.51 r^2 = 0.9923 5 10 20 10 5 ranks = median n (fail | cens.) = 200 (69 | 131) weibull3p (rr-xony) beta = 1.458 eta = 450.8 t0 = 1742 r^2 = 0.9882 0.5 Unreliability [%] 50 90 98 5 90 98 0.5 1 Linear 3p Weibull Fits by t0 Data Adjustment 50 100 500 5000 50 50 90 98 10 90 98 5 20 10 20 10 5 10 50 100 500 time - t0 5000 5 2 1 2 1 Early Lif e *t0 mod* ranks = median n (f ail | cens.) = 200 (10 | 190) weibull3p (rr-xony ) beta = 0.9465 eta = 3179 t0 = -7.601 r^2 = 0.9783 0.5 5 Mid Lif e *t0 mod* ranks = median n (f ail | cens.) = 190 (121 | 69) weibull3p (rr-xony ) beta = 1.117 eta = 1569 t0 = 98.73 r^2 = 0.9923 0.5 Unreliability [%] End Lif e *t0 mod* ranks = median n (f ail | cens.) = 69 (69 | 0) weibull3p (rr-xony ) beta = 1.45 eta = 444.7 t0 = 1746 r^2 = 0.9884 FaultTree tutorial material online http://www.openreliability.org/faulttree-users-tutorial/ Require(FaultTree) tree1 <- ftree.make(type="priority",reversible_cond=TRUE, name="Site power loss") tree1 <- addLogic(tree1, at=1, type="or", name="neither emergency", name2="generator operable") tree1 <- addLogic(tree1, at=2, type="and", name="Independent failure", name2="of generators") tree1 <- addLatent(tree1, at=3, mttf=5,mttr=12/8760,inspect=1/26, name="e-gen set fails") tree1 <- addLatent(tree1, at=3, mttf=5,mttr=12/8760,inspect=1/26, name="e-gen set fails") tree1 <- addLogic(tree1, at=2, type="inhibit", name="Common cause", name2="failure of generators") tree1 <- addProbability(tree1, at=6, prob=.05, name="Common cause", name2="beta factor") tree1 <- addLatent(tree1, at=6, mttf=5,mttr=12/8760,inspect=1/26, name="e-gen set fails") tree1 <- addDemand(tree1, at=1, mttf=1.0, name="External power", name2="interruption") tree1 <- ftree.calc(tree1) tree1[,1:8] ## The tree can be displayed in the browser using the following commands: ftree2html(tree1, write_file=TRUE) browseURL('tree1.html') stosim example online https://www.academia.edu/10053888/ Using_Stochastic_RAM_Analysis_to_Establish_an_Optimal_Operating_Policy library(stosim) data(ChargeTrain) Simulation_Years=5000 Train1<-ChargeTrain Train2<-cbind(Train1[,-11],"Seed"=Train1[,11]+200) Train3<-cbind(Train2[,-11],"Seed"=Train2[,11]+200) sh1<-SimHistory(Train1,Simulation_Years) sh2<-SimHistory(Train2,Simulation_Years) sh3<-SimHistory(Train3,Simulation_Years) ChargeSystem<-list(sh1, sh2, sh3) ChargeTrainParallelHistory<-DetailOpLines(ChargeSystem) x<-1.1 ChgTwInv<-MultiTrainWithInventory(ChargeTrainParallelHistory,16,x,336, 1,.6,1) wid<-ChgTwInv[[1]] DischargeCapExceeded<-sum(wid$DisCapEx) RunOut=sum(wid$RunOut) EmptyOnDemand<-sum(wid$EmptyOnD) Reactor_Restarts<-DischargeCapExceeded+RunOut+EmptyOnDemand Availability<-sum(wid$Duration*wid$ProdRate)/(Simulation_Years*8760+Reactor_Restarts*72) ChargeTrain2PrimaryReactor<-data.frame(ReserveHrs=x,DischargeCapExceeded=DischargeCapExceeded, RunOut=RunOut, EmptyOnDemand=EmptyOnDemand, Availability=Availability) for(x in seq(1.5,15,by=.5)) { ChgTwInv<-MultiTrainWithInventory(ChargeTrainParallelHistory, 16,x,336, 1,.6,1) wid<-ChgTwInv[[1]] DischargeCapExceeded<-sum(wid$DisCapEx) RunOut=sum(wid$RunOut) EmptyOnDemand<-sum(wid$EmptyOnD) Reactor_Restarts<-DischargeCapExceeded+RunOut+EmptyOnDemand Availability<sum(wid$Duration*wid$ProdRate)/(Simulation_Years*8760+Reactor_Restarts*72) thisDFline<data.frame(ReserveHrs=x,DischargeCapExceeded=DischargeCapExceeded, RunOut=RunOut, EmptyOnDemand=EmptyOnDemand, Availability=Availability) ChargeTrain2PrimaryReactor<-rbind(ChargeTrain2PrimaryReactor,thisDFline) } Model<-ChargeTrain2PrimaryReactor Reserve_Hours<-Model$ReserveHrs Reactor_Availability<-Model$Availability plot(Reserve_Hours,Reactor_Availability,type="l") Example Problem RBD Charge Unit 1B Charge Unit 1C Charge Unit 2A Charge Unit 2B Charge Unit 2C Charge Unit 3A Charge Unit 3B Charge Unit 3C Accumulator Charge Storage Storage Discharge Charge Unit 1A Primary Reactor Example Problem Statement •The charge storage has a capacity for 16 hours of replacement time for a single charge train. •An accumulator unit operation has the ability to replenish the complete storage inventory in 2weeks, but will be operated to attempt to top off the tank after any consumption. It is assumed that the accumulator operates on excess capacity from the charge feed system and does not reduce flow available to the primary reactor. •The storage discharge unit has a capacity for replacement of a single charge train. •The primary reactor system requires 3 days to restart upon any sudden, partial loss of charge flow. However, it can be turned down to 60% of production given an hour’s notice. The operators of this unit need to have a policy that will enable them to optimize total production from the primary reactor. This is expected to be accomplished by establishing a reserve inventory to be held in storage, which should then trigger turndown of the primary reactor to avoid damaging shutdown. 0.9796 0.9794 0.9792 Reactor_Availability 0.9798 0.9800 Completion of Model Analysis 2 4 6 8 Reserve_Hours 10 12 14