From 5452069e788a4619e75b77690abf228ad8104f26 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 8 May 2023 19:39:05 +0200 Subject: [PATCH] Completato setup + sim x FL di interclays01 --- MapoDataFiller/Conf/INTERCL_01.json | 229 ++++++++++++++++------------ MapoDataFiller/Conf/INTERCL_02.json | 196 ++++++++++++------------ MapoDataFiller/Filler/InterClays.cs | 110 +++++++------ 3 files changed, 293 insertions(+), 242 deletions(-) diff --git a/MapoDataFiller/Conf/INTERCL_01.json b/MapoDataFiller/Conf/INTERCL_01.json index c143703..5e4fc3d 100644 --- a/MapoDataFiller/Conf/INTERCL_01.json +++ b/MapoDataFiller/Conf/INTERCL_01.json @@ -1,103 +1,136 @@ { - "SetupSimFloat": { - "Temp_Filtro": { - 0: 0.1, - 1: 5.6, - 25: 89.1, - 50: 103.7, - 75: 108.3, - 99: 118.1, - 100: 135.6 - }, - "T_Attuale_Cil": { - 0: 0.01, - 1: 0.65, - 25: 10.36, - 50: 11.46, - 75: 11.98, - 99: 13.99, - 100: 327.67 - }, - "Flowrate": { - 0: 0.01, - 1: 0.06, - 25: 5.34, - 50: 8.22, - 75: 9.48, - 99: 12.86, - 100: 262.8 - }, - "Ampere_Cil": { - 0: 10.6, - 1: 14.1, - 25: 14.4, - 50: 14.6, - 75: 15, - 99: 16.4, - 100: 79.1 - }, - "Ampere_Asp": { - 0: 12.1, - 1: 14.8, - 25: 15.9, - 50: 17.2, - 75: 22.1, - 99: 32.4, - 100: 87.3 - }, - "Ampere_Dosat": { - 0: 0.1, - 1: 1.8, - 25: 2, - 50: 2, - 75: 2.1, - 99: 2.4, - 100: 3.3 - } + "SetupSimInt": { + "Dep_Cil_mmH2O": { + 0: 1, + 1: 1, + 25: 5, + 50: 10, + 75: 15, + 99: 26, + 100: 52 }, - "SetupSimInt": { - "Dep_Cil_mmH2O": { - 0: 1, - 1: 1, - 25: 5, - 50: 10, - 75: 15, - 99: 26, - 100: 52 - }, - "Bruc_0_100": { - 0: 1, - 1: 17, - 25: 24, - 50: 33, - 75: 47, - 99: 71, - 100: 100 - }, - "Asp_0_100": { - 0: 3, - 1: 36, - 25: 52, - 50: 59, - 75: 77, - 99: 100, - 100: 100 - } + "Bruc_0_100": { + 0: 1, + 1: 17, + 25: 24, + 50: 33, + 75: 47, + 99: 71, + 100: 100 }, - "SetupDtData": { - "Tot_Parz_Dosatore": { - "2020-06-30 19:56:21": 1225.481, - "2020-11-16 13:01:33": 5419.626, - "2022-03-14 11:33:21": 20782.475, - "2022-11-21 08:48:21": 27770.447, - "2023-03-07 15:40:44": 30951.118 - }, - "Tot_Dosatore": { - "2020-06-30 19:56:21": 9053.072, - "2020-11-16 13:01:33": 13247.217, - "2022-03-14 11:33:21": 28610.066, - "2022-11-21 08:48:21": 35598.038, - "2023-03-07 15:40:44": 38778.709 - } + "Asp_0_100": { + 0: 3, + 1: 36, + 25: 52, + 50: 59, + 75: 77, + 99: 100, + 100: 100 } + }, + "SetupSimReal": { + "Temp_Filtro": { + 0: 0.1, + 1: 5.6, + 25: 89.1, + 50: 103.7, + 75: 108.3, + 99: 118.1, + 100: 135.6 + }, + "T_Attuale_Cil": { + 0: 0.01, + 1: 0.65, + 25: 10.36, + 50: 11.46, + 75: 11.98, + 99: 13.99, + 100: 327.67 + }, + "Flowrate": { + 0: 0.01, + 1: 0.06, + 25: 5.34, + 50: 8.22, + 75: 9.48, + 99: 12.86, + 100: 262.8 + }, + "Ampere_Cil": { + 0: 10.6, + 1: 14.1, + 25: 14.4, + 50: 14.6, + 75: 15, + 99: 16.4, + 100: 79.1 + }, + "Ampere_Asp": { + 0: 12.1, + 1: 14.8, + 25: 15.9, + 50: 17.2, + 75: 22.1, + 99: 32.4, + 100: 87.3 + }, + "Ampere_Dosat": { + 0: 0.1, + 1: 1.8, + 25: 2, + 50: 2, + 75: 2.1, + 99: 2.4, + 100: 3.3 + } + }, + "SetupDtData": { + "Tot_Parz_Dosatore": { + "2019-11-29 02:24:13": 3619.129, + "2020-01-08 13:56:24": 4101.16, + "2020-01-12 17:34:34": 4201.494, + "2020-01-12 17:34:35": 0, + "2020-01-17 17:34:35": 119.352, + "2020-01-31 11:39:32": 471.494, + "2020-02-07 19:38:58": 606.883, + "2020-03-19 23:59:53": 2112.625, + "2020-04-23 20:38:32": 2929.045, + "2020-05-15 17:30:57": 3500.943, + "2020-05-15 17:30:58": 447.943, + "2020-05-15 20:04:57": 457.217, + "2020-05-15 20:04:58": 0, + "2020-06-12 19:19:36": 736.229, + "2020-06-30 19:56:21": 1225.481, + "2020-07-14 20:05:37": 1828.772, + "2020-07-28 20:15:55": 2358.175, + "2020-09-30 11:29:26": 4081.050, + "2020-11-16 13:01:33": 5419.626, + "2021-11-24 12:50:37": 16632.060, + "2022-01-14 20:07:39": 18187.904, + "2022-03-14 11:33:21": 20782.475, + "2022-11-21 08:48:21": 27770.447, + "2023-03-07 15:40:44": 30951.118 + }, + "Tot_Dosatore": { + "2019-11-29 02:24:14": 3770.426, + "2020-01-08 13:56:24": 4252.457, + "2020-01-17 17:34:35": 4465.844, + "2020-01-31 11:39:32": 4817.986, + "2020-02-07 19:38:58": 4953.375, + "2020-03-19 23:59:53": 6459.117, + "2020-04-23 20:38:32": 7275.537, + "2020-05-15 17:30:58": 7818.401, + "2020-06-12 19:19:36": 8563.820, + "2020-06-30 19:56:21": 9053.072, + "2020-07-14 20:05:37": 9656.363, + "2020-07-28 20:15:55": 10185.766, + "2020-09-30 11:29:26": 11908.641, + "2020-11-16 13:01:33": 13247.217, + "2021-11-24 12:50:37": 24459.651, + "2022-01-14 20:07:39": 26015.495, + "2022-03-14 11:33:21": 28610.066, + "2022-11-21 08:48:21": 35598.038, + "2023-03-07 15:40:44": 38778.709 + } + } } \ No newline at end of file diff --git a/MapoDataFiller/Conf/INTERCL_02.json b/MapoDataFiller/Conf/INTERCL_02.json index c143703..1a37234 100644 --- a/MapoDataFiller/Conf/INTERCL_02.json +++ b/MapoDataFiller/Conf/INTERCL_02.json @@ -1,103 +1,103 @@ { - "SetupSimFloat": { - "Temp_Filtro": { - 0: 0.1, - 1: 5.6, - 25: 89.1, - 50: 103.7, - 75: 108.3, - 99: 118.1, - 100: 135.6 - }, - "T_Attuale_Cil": { - 0: 0.01, - 1: 0.65, - 25: 10.36, - 50: 11.46, - 75: 11.98, - 99: 13.99, - 100: 327.67 - }, - "Flowrate": { - 0: 0.01, - 1: 0.06, - 25: 5.34, - 50: 8.22, - 75: 9.48, - 99: 12.86, - 100: 262.8 - }, - "Ampere_Cil": { - 0: 10.6, - 1: 14.1, - 25: 14.4, - 50: 14.6, - 75: 15, - 99: 16.4, - 100: 79.1 - }, - "Ampere_Asp": { - 0: 12.1, - 1: 14.8, - 25: 15.9, - 50: 17.2, - 75: 22.1, - 99: 32.4, - 100: 87.3 - }, - "Ampere_Dosat": { - 0: 0.1, - 1: 1.8, - 25: 2, - 50: 2, - 75: 2.1, - 99: 2.4, - 100: 3.3 - } + "SetupSimInt": { + "Dep_Cil_mmH2O": { + 0: 1, + 1: 1, + 25: 5, + 50: 10, + 75: 15, + 99: 26, + 100: 52 }, - "SetupSimInt": { - "Dep_Cil_mmH2O": { - 0: 1, - 1: 1, - 25: 5, - 50: 10, - 75: 15, - 99: 26, - 100: 52 - }, - "Bruc_0_100": { - 0: 1, - 1: 17, - 25: 24, - 50: 33, - 75: 47, - 99: 71, - 100: 100 - }, - "Asp_0_100": { - 0: 3, - 1: 36, - 25: 52, - 50: 59, - 75: 77, - 99: 100, - 100: 100 - } + "Bruc_0_100": { + 0: 1, + 1: 17, + 25: 24, + 50: 33, + 75: 47, + 99: 71, + 100: 100 }, - "SetupDtData": { - "Tot_Parz_Dosatore": { - "2020-06-30 19:56:21": 1225.481, - "2020-11-16 13:01:33": 5419.626, - "2022-03-14 11:33:21": 20782.475, - "2022-11-21 08:48:21": 27770.447, - "2023-03-07 15:40:44": 30951.118 - }, - "Tot_Dosatore": { - "2020-06-30 19:56:21": 9053.072, - "2020-11-16 13:01:33": 13247.217, - "2022-03-14 11:33:21": 28610.066, - "2022-11-21 08:48:21": 35598.038, - "2023-03-07 15:40:44": 38778.709 - } + "Asp_0_100": { + 0: 3, + 1: 36, + 25: 52, + 50: 59, + 75: 77, + 99: 100, + 100: 100 } + }, + "SetupSimReal": { + "Temp_Filtro": { + 0: 0.1, + 1: 5.6, + 25: 89.1, + 50: 103.7, + 75: 108.3, + 99: 118.1, + 100: 135.6 + }, + "T_Attuale_Cil": { + 0: 0.01, + 1: 0.65, + 25: 10.36, + 50: 11.46, + 75: 11.98, + 99: 13.99, + 100: 327.67 + }, + "Flowrate": { + 0: 0.01, + 1: 0.06, + 25: 5.34, + 50: 8.22, + 75: 9.48, + 99: 12.86, + 100: 262.8 + }, + "Ampere_Cil": { + 0: 10.6, + 1: 14.1, + 25: 14.4, + 50: 14.6, + 75: 15, + 99: 16.4, + 100: 79.1 + }, + "Ampere_Asp": { + 0: 12.1, + 1: 14.8, + 25: 15.9, + 50: 17.2, + 75: 22.1, + 99: 32.4, + 100: 87.3 + }, + "Ampere_Dosat": { + 0: 0.1, + 1: 1.8, + 25: 2, + 50: 2, + 75: 2.1, + 99: 2.4, + 100: 3.3 + } + }, + "SetupDtData": { + "Tot_Parz_Dosatore": { + "2020-06-30 19:56:21": 1225.481, + "2020-11-16 13:01:33": 5419.626, + "2022-03-14 11:33:21": 20782.475, + "2022-11-21 08:48:21": 27770.447, + "2023-03-07 15:40:44": 30951.118 + }, + "Tot_Dosatore": { + "2020-06-30 19:56:21": 9053.072, + "2020-11-16 13:01:33": 13247.217, + "2022-03-14 11:33:21": 28610.066, + "2022-11-21 08:48:21": 35598.038, + "2023-03-07 15:40:44": 38778.709 + } + } } \ No newline at end of file diff --git a/MapoDataFiller/Filler/InterClays.cs b/MapoDataFiller/Filler/InterClays.cs index 0ec463a..ad2df43 100644 --- a/MapoDataFiller/Filler/InterClays.cs +++ b/MapoDataFiller/Filler/InterClays.cs @@ -277,38 +277,36 @@ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simInt};{idxCount++}"; rows.Add(currRow); dtCurs = dtCurs.AddMilliseconds(rnd.Next(5, 50)); + idxCount = idxCount <= 9999 ? idxCount : 0; } } - - // poi gli item FLOAT + // poi gli item REAL if (currSetup.SetupSimReal.Count > 0) { foreach (var item in currSetup.SetupSimReal) { simReal = simValReal(doProd, item.Key, item.Value); - currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simInt};{idxCount++}"; + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simReal};{idxCount++}"; rows.Add(currRow); dtCurs = dtCurs.AddMilliseconds(rnd.Next(5, 50)); + idxCount = idxCount <= 9999 ? idxCount : 0; + } + } + // infine certo gli items basati su datetime + if (currSetup.SetupDtData.Count > 0 && doProd) + { + foreach (var item in currSetup.SetupDtData) + { + simReal = simValData(dtCurs, item.Key, item.Value); + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simReal};{idxCount++}"; + rows.Add(currRow); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(5, 50)); + idxCount = idxCount <= 9999 ? idxCount : 0; } } - // infine certo gli items basati su datetime - - -#if false - currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};kgImp;{valReq};{idxCount++}"; - rows.Add(currRow); - dtCurs = dtCurs.AddMilliseconds(rnd.Next(50, 300)); - currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};kgAct;{valCurr};{idxCount++}"; - rows.Add(currRow); - // incremento peso... SE <= max... - if (valCurr < valTo) - { - valCurr += rnd.Next(stepMin / valStep, stepMax / valStep) * valStep; - } -#endif - dtCurs = dtCurs.AddMilliseconds(rnd.Next(27000, 33000)); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(87000, 93000)); // reset counter idxCount = idxCount <= 9999 ? idxCount : 0; } @@ -327,23 +325,20 @@ int result = 0; // se è in prod --> 50° perc in su... int rawSim = rnd.Next(0, 50) + (doProd ? 50 : 0); - if (currSetup.SetupSimInt.ContainsKey(codFlux)) - { - // transcodifico - var val0 = transcMap - .Where(x => x.Key <= rawSim) - .OrderByDescending(x => x.Value) - .FirstOrDefault(); - var val1 = transcMap - .Where(x => x.Key >= rawSim) - .OrderBy(x => x.Value) - .FirstOrDefault(); - result = val0.Value + (int)Math.Round((double)(val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 0); - } + // transcodifico + var val0 = transcMap + .Where(x => x.Key <= rawSim) + .OrderByDescending(x => x.Value) + .FirstOrDefault(); + var val1 = transcMap + .Where(x => x.Key >= rawSim) + .OrderBy(x => x.Value) + .FirstOrDefault(); + result = val0.Value + (int)Math.Round((double)(val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 0); return result; } /// - /// Simulazione valore int secondo tab transcodifica: + /// Simulazione valore REAL secondo tab transcodifica: /// doProd=true --> simulo 50° percentile in su, altrimenti primi 50 percentili... /// /// @@ -355,19 +350,42 @@ double result = 0; // se è in prod --> 50° perc in su... int rawSim = rnd.Next(0, 50) + (doProd ? 50 : 0); - if (currSetup.SetupSimInt.ContainsKey(codFlux)) - { - // transcodifico - var val0 = transcMap - .Where(x => x.Key <= rawSim) - .OrderByDescending(x => x.Value) - .FirstOrDefault(); - var val1 = transcMap - .Where(x => x.Key >= rawSim) - .OrderBy(x => x.Value) - .FirstOrDefault(); - result = val0.Value + Math.Round((val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 0); - } + // transcodifico + var val0 = transcMap + .Where(x => x.Key <= rawSim) + .OrderByDescending(x => x.Value) + .FirstOrDefault(); + var val1 = transcMap + .Where(x => x.Key >= rawSim) + .OrderBy(x => x.Value) + .FirstOrDefault(); + result = Math.Round(val0.Value + (val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 2); + return result; + } + /// + /// Simulazione valore Real dt-based secondo tab transcodifica + /// + /// + /// + /// + /// + protected double simValData(DateTime dtCurs, string codFlux, Dictionary transcMap) + { + double result = 0; + int rawSim = rnd.Next(-5000, 5000); + // perturbo la data in ms per +/-5 sec + dtCurs = dtCurs.AddMilliseconds(rawSim); + // transcodifico + var val0 = transcMap + .Where(x => x.Key <= dtCurs) + .OrderByDescending(x => x.Value) + .FirstOrDefault(); + var val1 = transcMap + .Where(x => x.Key >= dtCurs) + .OrderBy(x => x.Value) + .FirstOrDefault(); + // prendo valore intervallo calcolato... + result = Math.Round(val0.Value + (val1.Value - val0.Value) * (dtCurs - val0.Key) / (val1.Key - val0.Key), 2); return result; }