public static void EventsHandler(BaseEvent evt, Logger l) { if (evt is BlowingEvent) { var be = evt as BlowingEvent; Keeper.SetBlowingStatus(be.BlowingFlag == 1); } else if (evt is FlexEvent) { var fxe = evt as FlexEvent; if (fxe.Operation.StartsWith("UDP.OffGasAnalysisEvent")) { var fxh = new FlexHelper(fxe); var co = fxh.GetDbl("CO"); var co2 = fxh.GetDbl("CO2"); SetGasAnalysis(co, co2); } else if (fxe.Operation.StartsWith("OPC.WatchdogsFromL1")) { var fxh = new FlexHelper(fxe); var wd1 = fxh.GetInt("WDPLC1"); var wd2 = fxh.GetInt("WDPLC2"); var wd3 = fxh.GetInt("WDPLC3"); var wd01 = fxh.GetInt("WDPLC01"); SetWatchdogReceive(wd1, wd2, wd3, wd01); } } }
public void OnEvent(BaseEvent evt) { using (var l = new Logger("Listener")) { if (evt is LanceEvent) { var le = evt as LanceEvent; Iterator.Receiver.LanceHeight = le.LanceHeight; Iterator.Receiver.QO2 = le.O2Flow; Iterator.Receiver.QO2I = le.O2TotalVol; } if (evt is BlowingEvent) { var be = evt as BlowingEvent; Iterator.Receiver.HeatIsStarted = be.BlowingFlag == 1; } if (evt is OffGasEvent) { var oge = evt as OffGasEvent; Iterator.Receiver.OffGasV.Add(oge.OffGasFlow); Iterator.Receiver.OffGasT.Add(oge.OffGasTemp); } if (evt is DecompressionOffGasEvent) { var doge = evt as DecompressionOffGasEvent; Iterator.Receiver.OffGasDecompression.Add(doge.Decompression); } if (evt is HeatChangeEvent) { var hce = evt as HeatChangeEvent; if (CHeatNumber != hce.HeatNumber) { CHeatNumber = hce.HeatNumber; Iterator.Reset(); Iterator.CurrentState.HeatNumber = hce.HeatNumber; Iterator.ArchFileGen(); l.msg("Heat Changed. New Heat ID: {0}\n", Iterator.CurrentState.HeatNumber); } else l.msg("Heat No Changed. Heat ID: {0}\n", hce.HeatNumber); } if (evt is SublanceStartEvent) { var sse = evt as SublanceStartEvent; if (sse.SublanceStartFlag == 1) {} if (sse.SublanceStartFlag == 0) { // } } if (evt is visSpectrluksEvent) // углерод со спектролюкса { var vse = evt as visSpectrluksEvent; //Iterator.FindAndDequeue(vse.C, HeatNumberToShort(vse.HeatNumber)); } if (evt is ScrapEvent) { var se = evt as ScrapEvent; if (se.ConverterNumber == Program.ConverterNumber) { Iterator.CurrentState.MSc = se.TotalWeight; l.msg("Scrap mass: {0}", Iterator.CurrentState.MSc); } } if (evt is BoundNameMaterialsEvent) { var bnme = evt as BoundNameMaterialsEvent; BoundMaterials = new List<string>(); BoundMaterials.Add(bnme.Bunker5MaterialName); BoundMaterials.Add(bnme.Bunker6MaterialName); BoundMaterials.Add(bnme.Bunker7MaterialName); BoundMaterials.Add(bnme.Bunker8MaterialName); BoundMaterials.Add(bnme.Bunker9MaterialName); BoundMaterials.Add(bnme.Bunker10MaterialName); BoundMaterials.Add(bnme.Bunker11MaterialName); BoundMaterials.Add(bnme.Bunker12MaterialName); } if (evt is visAdditionTotalEvent) { var vate = evt as visAdditionTotalEvent; WeightMaterials = new List<double>(); WeightMaterials.Add(vate.RB5TotalWeight); WeightMaterials.Add(vate.RB6TotalWeight); WeightMaterials.Add(vate.RB7TotalWeight); WeightMaterials.Add(vate.RB8TotalWeight); WeightMaterials.Add(vate.RB9TotalWeight); WeightMaterials.Add(vate.RB10TotalWeight); WeightMaterials.Add(vate.RB11TotalWeight); WeightMaterials.Add(vate.RB12TotalWeight); //BoundMaterials = new List<string>(); // на время отладки на эмуляторе //BoundMaterials.Add("ДОЛОМС"); //BoundMaterials.Add("ALKонц"); //BoundMaterials.Add("KOKS "); //BoundMaterials.Add("ИЗВЕСТ"); //BoundMaterials.Add("ИЗВЕСТ"); //BoundMaterials.Add("ДОЛМИТ"); //BoundMaterials.Add("ДОЛОМС"); //BoundMaterials.Add("ФОМ "); var bunkerCnt = BoundMaterials.Count; for (int i = 0; i < bunkerCnt; i++) { var wgh = WeightMaterials[i]; var name = BoundMaterials[i]; for (int j = 0; j < bunkerCnt; j++) { if ((i != j) && (name == BoundMaterials[j])) wgh += WeightMaterials[j]; } if (!Iterator.Receiver.HeatIsStarted) // все что отдали до продувки не считаем { Iterator.MaterialsZeroLevel.SetTotalWeight(Encoder(name), wgh, false); //Iterator.MaterialsZeroLevel.SetTotalWeight(name, wgh, false); // временно для отладки } else { var wghZlevel = Iterator.MaterialsZeroLevel.GetTotalWeight(Encoder(name), false); Iterator.CurrentState.Materials.SetTotalWeight(Encoder(name), wgh - wghZlevel, false); //var wghZlevel = Iterator.MaterialsZeroLevel.GetTotalWeight(name, false); // временно для отладки //Iterator.CurrentState.Materials.SetTotalWeight(name, wghZlevel - wgh, false); // временно для отладки } //Iterator.CurrentState.Materials.SetTotalWeight(Encoder(name), wgh, false); //Iterator.CurrentState.Materials.SetTotalWeight(name, wgh, false); // временно для отладки } } if (evt is FlexEvent) { var fxe = evt as FlexEvent; if (fxe.Operation.StartsWith("UDP.OffGasAnalysisEvent")) { var fxh = new FlexHelper(fxe); Iterator.Receiver.H2.Add(fxh.GetDbl("H2")); Iterator.Receiver.O2.Add(fxh.GetDbl("O2")); Iterator.Receiver.CO.Add(fxh.GetDbl("CO")); Iterator.Receiver.CO2.Add(fxh.GetDbl("CO2")); Iterator.Receiver.N2.Add(fxh.GetDbl("N2")); Iterator.Receiver.Ar.Add(fxh.GetDbl("Ar")); if (fxh.GetDbl("Branch") == 1) Iterator.CurrentState.OffGasTransportDelay = (int) Math.Round(fxh.GetDbl("TransportDelay1")); else if (fxh.GetDbl("Branch") == 2) Iterator.CurrentState.OffGasTransportDelay = (int) Math.Round(fxh.GetDbl("TransportDelay2")); } if (fxe.Operation.StartsWith("PipeCatcher.Call.PCK_DATA.PGET_WGHIRON1")) { if ((string) fxe.Arguments["SHEATNO"] == Convert.ToString(HeatNumberToLong(Iterator.CurrentState.HeatNumber))) { l.msg("Iron Correction from Pipe: {0}\n", fxe.Arguments["NWGH_NETTO"]); var hotIronMass = Convert.ToDouble(fxe.Arguments["NWGH_NETTO"])*1000; Iterator.CurrentState.MHi = hotIronMass; } else { l.msg( "Iron Correction from Pipe: wrong heat number - expected {0} found {1}", Iterator.CurrentState.HeatNumber, fxe.Arguments["SHEATNO"] ); } } if (fxe.Operation.StartsWith("PipeCatcher.Call.PCK_DATA.PGET_XIMIRON")) { if ((string) fxe.Arguments["HEAT_NO"] == Convert.ToString(HeatNumberToLong(Iterator.CurrentState.HeatNumber))) { l.msg(fxe.ToString()); var hotIronMass = Convert.ToDouble(fxe.Arguments["HM_WEIGHT"]); var hotIronCarbon = Convert.ToDouble(fxe.Arguments["ANA_C"]); Iterator.CurrentState.MHi = hotIronMass; Iterator.CurrentState.PCHi = hotIronCarbon; } else { l.msg( "Iron Correction from Pipe: wrong heat number - expected {0} found {1}", HeatNumberToLong(Iterator.CurrentState.HeatNumber), fxe.Arguments["HEAT_NO"] ); } } } } }
public void OnEvent(BaseEvent newEvent) { using (var l = new Logger("FlexEventSaver")) { if (newEvent is LanceEvent) { var lanceEvent = newEvent as LanceEvent; Program.SDS.LanceHeigth.Add(lanceEvent.LanceHeight); Program.SDS.OxygenRate.Add(lanceEvent.O2Flow); Program.OxygenRate.Add(lanceEvent.O2Flow); } //if (newEvent is OffGasAnalysisEvent) //{ // var offGasAnalysisEvent = newEvent as OffGasAnalysisEvent; // Program.SDS.H2Perc.Add(offGasAnalysisEvent.H2); // Program.SDS.O2Perc.Add(offGasAnalysisEvent.O2); // Program.SDS.COPerc.Add(offGasAnalysisEvent.CO); // Program.SDS.CO2Perc.Add(offGasAnalysisEvent.CO2); // Program.SDS.N2Perc.Add(offGasAnalysisEvent.N2); // Program.SDS.ArPerc.Add(offGasAnalysisEvent.Ar); //} if (newEvent is OffGasEvent) { var offGasEvent = newEvent as OffGasEvent; Program.SDS.VGas.Add(offGasEvent.OffGasFlow); Program.SDS.TGas.Add(offGasEvent.OffGasTemp); } if (newEvent is CalculatedCarboneEvent) { var cCarbon = newEvent as CalculatedCarboneEvent; //Program.SDS.CCalc.Add(cCarbon.CarbonePercent); } if (newEvent is SublanceCEvent) { var sublanceCEvent = newEvent as SublanceCEvent; Program.SDS.CSubLance = sublanceCEvent.C; } if (newEvent is IgnitionEvent) { var ign = newEvent as IgnitionEvent; Program.SDS.Ignition = ign.FusionIgnition; } if (newEvent is DecompressionOffGasEvent) { var doge = newEvent as DecompressionOffGasEvent; Program.SDS.Decompression.Add(doge.Decompression); } if (newEvent is O2Event) { var o2e = newEvent as O2Event; if (o2e.RightLanceIsSelected && !o2e.LeftLanceIsSelected) { Program.SDS.QOxygenCL.Add(o2e.QOxygenRight); Program.SDS.POxygenCL.Add(o2e.POxygenRight); Program.SDS.TOxygenCL.Add(o2e.TOxygenRight); Program.SDS.DPOxygenCL.Add(o2e.DPOxygenRight); } else { Program.SDS.QOxygenCL.Add(o2e.QOxygenLeft); Program.SDS.POxygenCL.Add(o2e.POxygenLeft); Program.SDS.TOxygenCL.Add(o2e.TOxygenLeft); Program.SDS.DPOxygenCL.Add(o2e.DPOxygenLeft); } } if (newEvent is N2Event) { var n2e = newEvent as N2Event; Program.SDS.QNitrogenLanceWindow.Add(n2e.QNitrogenLanceWindow); Program.SDS.QNitrogenBoiler.Add(n2e.QNitrogenBoiler); } if (newEvent is visAdditionTotalEvent) { var vate = newEvent as visAdditionTotalEvent; Program.SDS.RB5 = vate.RB5TotalWeight; Program.SDS.RB6 = vate.RB6TotalWeight; Program.SDS.RB7 = vate.RB7TotalWeight; Program.SDS.RB8 = vate.RB8TotalWeight; Program.SDS.RB9 = vate.RB9TotalWeight; Program.SDS.RB10 = vate.RB10TotalWeight; Program.SDS.RB11 = vate.RB11TotalWeight; Program.SDS.RB12 = vate.RB12TotalWeight; } if (newEvent is HeatChangeEvent) { var heatChangeEvent = newEvent as HeatChangeEvent; if (m_lasIdHeat != heatChangeEvent.HeatNumber) { Program.SaverData(Program.SDList, m_lasIdHeat); m_lasIdHeat = heatChangeEvent.HeatNumber; Program.Init(); } } if (newEvent is FlexEvent) { var fxe = newEvent as FlexEvent; if (fxe.Operation.StartsWith("NeuralProcessorC.Calc")) { var key = "C"; //l.msg(fxe.ToString()); if (fxe.Arguments.ContainsKey(key)) { try { Program.SDS.NeuralC.Add((double) fxe.Arguments[key]); } catch (Exception e) { l.err("NeuralProcessorC.Calc - {1} : \n{0}", e.ToString(), key); } } } if (fxe.Operation.StartsWith("CarbonSwitcher.Result")) { var key = "C"; //InstantLogger.msg(fxe.ToString()); try { //Carbon = (double)fxe.Arguments[key]; //Program.CurrentCalcCarbone = (double)fxe.Arguments[key]; Program.SDS.CCalc.Add((double) fxe.Arguments[key]); } catch (Exception e) { InstantLogger.err("CarbonSwitcher.Result - {1} : \n{0}", e.ToString(), key); } } if (fxe.Operation.StartsWith("UDP.OffGasAnalysisEvent")) { var key = "H2"; try { Program.SDS.H2Perc.Add((double) fxe.Arguments[key]); key = "O2"; Program.SDS.O2Perc.Add((double) fxe.Arguments[key]); key = "CO"; Program.SDS.COPerc.Add((double) fxe.Arguments[key]); key = "CO2"; Program.SDS.CO2Perc.Add((double) fxe.Arguments[key]); key = "N2"; Program.SDS.N2Perc.Add((double) fxe.Arguments[key]); key = "Ar"; Program.SDS.ArPerc.Add((double) fxe.Arguments[key]); } catch (Exception e) { InstantLogger.err("UDP.OffGasAnalysisEvent - {1} : \n{0}", e.ToString(), key); } } if (fxe.Operation.StartsWith("UniversalCPlus.Result")) { var fex = new FlexHelper(fxe); Program.SDS.UniversalC = fex.GetDbl("C"); } } } }