SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: M. Jordaan -- Create date: 12-01-2009 -- Description: -- ============================================= CREATE PROCEDURE [dbo].[msp_MesalOutSpecSys3] -- Add the parameters for the stored procedure here --@Table_Dest nvarchar(100), @Min_Minuten int = 4 AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT OFF; DECLARE @TijdTussenSamples float DECLARE @my_out_total FLOAT DECLARE @my_out_pitch FLOAT DECLARE @my_out_temp FLOAT DECLARE @my_out_kneed FLOAT DECLARE @my_out_tempkneed FLOAT DECLARE @my_out_good FLOAT DECLARE @MesalDatumTijd DATETIME DECLARE @vorige_tijd DATETIME DECLARE @my_band_value FLOAT DECLARE @minuten_verschil INTEGER DECLARE @my_sectime INTEGER DECLARE @S040_1_TotalPasteIn_CSUM float; DECLARE @S040_2_TotalPasteIn_CSUM float; DECLARE @S040_3_TotalPasteIn_CSUM float; -- Op 8/10/2009 @my_max_sectime toegevoegd om tijdbasis van Query's te begrenzen EW declare @my_max_sectime Integer declare @start_proc float declare @end_proc float declare @nr_records Integer -- initialiseer variabelen set @TijdTussenSamples = 5.0 -- Afkeurgrens verhoogd van 0.1 naar 0.15 op verzoek productie 12/11/2009 door SN set @my_band_value = 0.15 -- bepaal tijd met systeem tijd van SQL server, let op deze kan afwijken van FL server set @MesalDatumTijd = GETDATE() -- bepaal huidige tijd uit gelogde SECTIME waarde in K_SYS1 -- voorgaande waarde is bepaald met klok SQL server, nu wordt tijd van loggen bepaald -- bepaal maximale waarde van SECTIME: SELECT @my_sectime = ISNULL(MAX(FL_SECTIME), 0) FROM dbo.K_SYS3 SET @MesalDatumTijd = DATEADD(ss, @my_sectime, '1/1/1980 00:00:00') -- lees vorige cumulatieve waarde SELECT @vorige_tijd = ISNULL(SampleTijd, DATEADD(mi, -5, @MesalDatumTijd)) FROM mesal.dbo.mesal_bmve WHERE Tagnaam = 'S040_3_PitchFROutSpecMS_CSUM'; -- geen data dan tijd maximaal IF @@ROWCOUNT < 1 SET @vorige_tijd = DATEADD(mi, -5, @MesalDatumTijd) --bepaal tijdsverschil SET @minuten_verschil = DATEDIFF( mi, @MesalDatumTijd, @vorige_tijd); SET @my_sectime = datediff(ss, '1/1/1980 00:00:00', @MesalDatumTijd) + DATEDIFF( ss, @MesalDatumTijd, @vorige_tijd); --controleer of er iets bepaald dient te worden IF (ABS(@minuten_verschil) < @Min_Minuten) RETURN; -- bepaal start tijd eerste query set @start_proc=datepart(ss,getdate())*1000.0 + datepart(ms,getdate()) -- Systeem 3, bepaal hoeveelheid materiaal processed --SELECT @my_out_total = ISNULL(SUM(M_IST * CONVERT(nvarchar(100),@TijdTussenSamples,2)/3600.0)/1000.0, 0.0), @my_max_sectime = max(fl_sectime), @nr_records=count(M_IST) SELECT @my_out_total = ISNULL(SUM(M_IST), 0.0), @my_max_sectime = max(fl_sectime), @nr_records=count(M_IST) FROM dbo.K_SYS3 WHERE (FL_SECTIME > CONVERT(nvarchar(100),@my_sectime)); -- Op 6/8/2009 FL_SECTIME >= gewijzigd in > i.v.m dubbel meetellen 1e record JPN -- corrigeer totalisatie voor ton --> kg, en sample tijd (ong 5 seconden) -- -- 18 jan 2011 bereken @TijdTussenSamples in real datatype om afrondings fouten te voorkomen EW -- SET @TijdTussenSamples = (@my_max_sectime - @my_sectime)/@nr_records; SET @TijdTussenSamples = convert(real,(@my_max_sectime - @my_sectime))/convert(real,@nr_records); SET @my_out_total = (@my_out_total * @TijdTussenSamples /3600.0) / 1000.0; -- Systeem 3, bepaling cumulatieve pitch waarde SELECT @my_out_pitch = ISNULL(SUM(M_IST * CONVERT(nvarchar(100),@TijdTussenSamples,2)/3600.0)/1000.0, 0.0) FROM dbo.K_SYS3 WHERE (FL_SECTIME > CONVERT(nvarchar(100),@my_sectime)) AND (fl_sectime <= @my_max_sectime) AND (ABS(CONVERT(float, SOLL_PITCH, 2) - CONVERT(float, IST_PITCHM, 2)) >= CONVERT(nvarchar(200), @my_band_value, 2)); -- Op 6/8/2009 FL_SECTIME >= gewijzigd in > i.v.m dubbel meetellen 1e record JPN -- Systeem 3, temperatuur out of spec, temperatuur is dbo.K_PLC4.AI_7 SELECT @my_out_temp = ISNULL(SUM(dbo.K_SYS3.M_IST * CONVERT(nvarchar(100),@TijdTussenSamples,2)/3600.0)/1000.0, 0.0) FROM dbo.K_PLC6 INNER JOIN dbo.K_SYS3 ON dbo.K_PLC6.FL_SECTIME = dbo.K_SYS3.FL_SECTIME INNER JOIN MPV.dbo.MPV ON dbo.K_PLC6.LOTNUMMER = MPV.dbo.MPV.LOTNR AND ABS(CONVERT(float, dbo.K_PLC6.AI_7M, 2) - CONVERT(float, MPV.dbo.MPV.BM_T, 2)) >= (CONVERT(float, MPV.dbo.MPV.BM_T_AFK, 2) * 1.0) WHERE (dbo.K_SYS3.FL_SECTIME > CONVERT(nvarchar(100),@my_sectime) AND (dbo.K_SYS3.fl_sectime <= @my_max_sectime) AND MPV.dbo.MPV.SYSTEEM = 3); -- Op 6/8/2009 FL_SECTIME >= gewijzigd in > i.v.m dubbel meetellen 1e record JPN -- Systeem 3, kneedfactor out of spec, kneedfactor is dbo.K_PLC4.AI_42 SELECT @my_out_kneed = ISNULL(SUM(dbo.K_SYS3.M_IST * CONVERT(nvarchar(100),@TijdTussenSamples,2)/3600.0)/1000.0, 0.0) FROM dbo.K_PLC6 INNER JOIN dbo.K_SYS3 ON dbo.K_PLC6.FL_SECTIME = dbo.K_SYS3.FL_SECTIME INNER JOIN MPV.dbo.MPV ON dbo.K_PLC6.LOTNUMMER = MPV.dbo.MPV.LOTNR AND ABS(CONVERT(float, dbo.K_PLC6.AI_45M, 2) - CONVERT(float, MPV.dbo.MPV.K_KWT, 2)) >= (CONVERT(float, MPV.dbo.MPV.K_KWT_AFK, 2) * 1.0) WHERE (dbo.K_SYS3.FL_SECTIME > CONVERT(nvarchar(100),@my_sectime) AND (dbo.K_SYS3.fl_sectime <= @my_max_sectime) AND MPV.dbo.MPV.SYSTEEM = 3); -- Op 6/8/2009 FL_SECTIME >= gewijzigd in > i.v.m dubbel meetellen 1e record JPN -- Systeem 3, temperatuur out of spec en kneedfactor out of spec en pitch out of spec SELECT @my_out_tempkneed = ISNULL(SUM(dbo.K_SYS3.M_IST * CONVERT(nvarchar(100),@TijdTussenSamples,2)/3600.0)/1000.0, 0.0) FROM dbo.K_PLC6 INNER JOIN dbo.K_SYS3 ON dbo.K_PLC6.FL_SECTIME = dbo.K_SYS3.FL_SECTIME INNER JOIN MPV.dbo.MPV ON dbo.K_PLC6.LOTNUMMER = MPV.dbo.MPV.LOTNR WHERE (dbo.K_SYS3.FL_SECTIME > CONVERT(nvarchar(100),@my_sectime)) AND (dbo.K_SYS3.fl_sectime <= @my_max_sectime) AND (MPV.dbo.MPV.SYSTEEM = 3) AND ( (ABS(CONVERT(float, dbo.K_PLC6.AI_7M, 2) - CONVERT(float, MPV.dbo.MPV.BM_T, 2)) >= (CONVERT(float, MPV.dbo.MPV.BM_T_AFK, 2) * 1.0)) OR (ABS(CONVERT(float, dbo.K_PLC6.AI_45M, 2) - CONVERT(float, MPV.dbo.MPV.K_KWT, 2)) >= (CONVERT(float, MPV.dbo.MPV.K_KWT_AFK, 2) * 1.0)) OR (ABS(CONVERT(float, dbo.K_SYS3.SOLL_PITCH, 2) - CONVERT(float, dbo.K_SYS3.IST_PITCHM, 2)) >= CONVERT(nvarchar(200), @my_band_value, 2)) ); -- Op 6/8/2009 FL_SECTIME >= gewijzigd in > i.v.m dubbel meetellen 1e record JPN -- Systeem 3, temperatuur in spec en kneedfactor in spec en pitch in spec -- SELECT @my_out_good = ISNULL(SUM(dbo.K_SYS3.M_IST * CONVERT(nvarchar(100),@TijdTussenSamples,2)/3600.0)/1000.0, 0.0) -- FROM dbo.K_PLC6 INNER JOIN -- dbo.K_SYS3 ON dbo.K_PLC6.FL_SECTIME = dbo.K_SYS3.FL_SECTIME INNER JOIN -- dbo.MPV ON dbo.K_PLC6.LOTNUMMER = dbo.MPV.LOTNR AND -- ABS(CONVERT(float, dbo.K_PLC6.AI_7M, 2) - CONVERT(float, dbo.MPV.BM_T, 2)) <= (CONVERT(float, dbo.MPV.BM_T_AFK, 2) * 1.0) AND -- ABS(CONVERT(float, dbo.K_PLC6.AI_45M, 2) - CONVERT(float, dbo.MPV.K_KWT, 2)) <= (CONVERT(float, dbo.MPV.K_KWT_AFK, 2) * 1.0) -- WHERE ((dbo.K_SYS3.FL_SECTIME > CONVERT(nvarchar(100),@my_sectime)) AND (dbo.K_SYS3.fl_sectime <= @my_max_sectime) AND -- (dbo.MPV.SYSTEEM = 3) AND -- (ABS(CONVERT(float, dbo.K_SYS3.SOLL_PITCH, 2) - CONVERT(float, dbo.K_SYS3.IST_PITCHM, 2)) <= CONVERT(nvarchar(200), @my_band_value, 2)) -- ); -- Op 6/8/2009 FL_SECTIME >= gewijzigd in > i.v.m dubbel meetellen 1e record JPN -- 18 jan 2011 EW set @my_out_good = @my_out_total - @my_out_tempkneed -- Bepaal total past in op gelijke tijdstioppen als hoeveelheid geproduceerd SELECT @S040_1_TotalPasteIn_CSUM = MAX(T_SCHENCK1), @S040_2_TotalPasteIn_CSUM = MAX(T_SCHENCK2), @S040_3_TotalPasteIn_CSUM = MAX(T_SCHENCK3) FROM dbo.R_ALG WHERE (FL_SECTIME > CONVERT(nvarchar(100),@my_sectime)) AND (fl_sectime <= @my_max_sectime) -- update mesal table EXEC master.dbo.msp_MesalUpdateTable 'S040_3_TotalProducedMS_CSUM', @my_out_total, @MesalDatumTijd, 1; --EXEC flmassa.dbo.msp_MesalUpdateTable 'S040_3_PitchFROutSpecMS', @my_out_pitch, @MesalDatumTijd, 1; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_PitchFROutSpecMS_CSUM', @my_out_pitch, @MesalDatumTijd, 1; --EXEC flmassa.dbo.msp_MesalUpdateTable 'S040_3_TPOutSpecMS', @my_out_temp, @MesalDatumTijd, 1; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_TPOutSpecMS_CSUM', @my_out_temp, @MesalDatumTijd, 1; --EXEC flmassa.dbo.msp_MesalUpdateTable 'S040_3_KFOutSpecMS', @my_out_kneed, @MesalDatumTijd, 1; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_KFOutSpecMS_CSUM', @my_out_kneed, @MesalDatumTijd, 1; --EXEC flmassa.dbo.msp_MesalUpdateTable 'S040_3_TPKFOutSpecMS', @my_out_tempkneed, @MesalDatumTijd, 1; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_TPKFOutSpecMS_CSUM', @my_out_tempkneed, @MesalDatumTijd, 1; --EXEC flmassa.dbo.msp_MesalUpdateTable 'S040_3_TPKFInSpecMS', @my_out_good, @MesalDatumTijd, 1; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_TPKFInSpecMS_CSUM', @my_out_good, @MesalDatumTijd, 1; -- EXEC flmassa.dbo.msp_MesalUpdateTable 'S040_1_TotalPasteIn_CSUM', @S040_1_TotalPasteIn_CSUM, @MesalDatumTijd; -- EXEC flmassa.dbo.msp_MesalUpdateTable 'S040_2_TotalPasteIn_CSUM', @S040_2_TotalPasteIn_CSUM, @MesalDatumTijd; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_TotalPasteIn_CSUM', @S040_3_TotalPasteIn_CSUM, @MesalDatumTijd; -- bepaal start tijd laatste query set @end_proc=datepart(ss,getdate())*1000.0 + datepart(ms,getdate()) EXEC master.dbo.msp_MesalUpdateTable 'S040_3_Start_Proc', @start_proc, @MesalDatumTijd, 0; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_End_Proc', @end_proc, @MesalDatumTijd, 0; IF (@end_proc < @start_proc) SET @end_proc = @end_proc + 60000; SET @end_proc = @end_proc - @start_proc; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_Duration_Proc', @end_proc, @MesalDatumTijd, 0; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_NR_Records', @nr_records, @MesalDatumTijd, 0; EXEC master.dbo.msp_MesalUpdateTable 'S040_3_TijdTussenSamples', @TijdTussenSamples, @MesalDatumTijd, 0; END GO