aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs214
1 files changed, 214 insertions, 0 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs
new file mode 100644
index 000000000..beba47246
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Models/MachineOverviewModel.cs
@@ -0,0 +1,214 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+using Tango.BL.Entities;
+using Tango.Core;
+using Tango.PMR.Diagnostics;
+using Tango.PPC.Common;
+using Tango.Settings;
+
+namespace Tango.PPC.UI.Models
+{
+ public class MachineOverviewModel : ExtendedObject
+ {
+ public static double DryerAirMaxValue = 120.0;
+
+ public MachineOverviewItem DryerZone3 { get; set; }
+ public MachineOverviewItem DryerAir { get; set; }
+ public MachineOverviewItem Tunnel { get; set; }
+ public MachineOverviewItem PumpsPressure { get; set; }
+ public MachineOverviewItem Lubricant { get; set; }
+
+ private PPCSettings _settings;
+ /// <summary>
+ /// Gets the main PPC settings.
+ /// </summary>
+ public PPCSettings Settings
+ {
+ get
+ {
+ if (_settings == null)
+ {
+ _settings = SettingsManager.Default.GetOrCreate<PPCSettings>();
+ }
+
+ return _settings;
+ }
+ private set { _settings = value; }
+ }
+
+ public MachineOverviewModel()
+ {
+ DryerZone3 = new MachineOverviewItem();
+ DryerAir = new MachineOverviewItem();
+ DryerAir.MaxValue = DryerAirMaxValue;
+ Tunnel = new MachineOverviewItem();
+ PumpsPressure = new MachineOverviewItem();
+ PumpsPressure.MaxValue = 6;
+ Lubricant = new MachineOverviewItem();
+ Lubricant.MaxValue = 100;
+ Lubricant.Value = 100;
+ }
+
+ public void Update(StartDiagnosticsResponse diagnostics, Rml rml, ProcessParametersTable processParameters)
+ {
+ //Dryer Zone 3
+ var dryerZone3State = diagnostics.HeatersStates.FirstOrDefault(x => x.HeaterType == HeaterType.EDryerHeater3);
+ UpdateHeaterItem(DryerZone3, dryerZone3State);
+
+ //Dryer Air
+ var dryerAirState = diagnostics.Monitors.EuSpare1.FirstOrDefault();
+ UpdateDryerAirItem(dryerAirState);
+ //diagnostics.HeatersStates.FirstOrDefault(x => x.HeaterType == HeaterType.DryerAirHeater);
+
+
+ //Tunnel
+ var tunnelState = diagnostics.HeatersStates.FirstOrDefault(x => x.HeaterType == HeaterType.ETunnelHeater);
+ UpdateHeaterItem(Tunnel, tunnelState);
+
+ //Pumps Pressure
+
+ //EuDispenser1Pressure
+ List<double> EuDispensersPressure = new List<double>();
+ var EuDispenser1PressureValue = diagnostics.Monitors.EuDispenser1Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser1PressureValue);
+ var EuDispenser2PressureValue = diagnostics.Monitors.EuDispenser2Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser2PressureValue);
+ var EuDispenser3PressureValue = diagnostics.Monitors.EuDispenser3Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser3PressureValue);
+ var EuDispenser4PressureValue = diagnostics.Monitors.EuDispenser4Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser4PressureValue);
+ var EuDispenser5PressureValue = diagnostics.Monitors.EuDispenser5Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser5PressureValue);
+ var EuDispenser6PressureValue = diagnostics.Monitors.EuDispenser6Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser6PressureValue);
+ var EuDispenser7PressureValue = diagnostics.Monitors.EuDispenser7Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser7PressureValue);
+ var EuDispenser8PressureValue = diagnostics.Monitors.EuDispenser8Pressure.FirstOrDefault();
+ EuDispensersPressure.Add(EuDispenser8PressureValue);
+
+ var pumpsPressuerValue = EuDispensersPressure.Max();// diagnostics.Monitors.EuInkLinesPressure.SelectMany(x => x.Data).Max();
+ UpdatePumpsPressureItem(pumpsPressuerValue);
+
+
+ //Lubricant
+ var lubricantValue = diagnostics.Monitors.EuLubricantCurrent.FirstOrDefault();
+ UpdateLubricantItem( rml, lubricantValue);
+ }
+
+ private void UpdateHeaterItem(MachineOverviewItem item, HeaterState state)
+ {
+ if (state != null)
+ {
+
+ if (state.IsRampingUp &&
+ (state.SetPoint != 0
+ && (state.CurrentValue <= (state.SetPoint - 10))))
+ {
+ item.Status = "Heating Up";
+ item.Color = Colors.Orange;
+ item.DisplayValue = $"{state.CurrentValue.ToString("N1")}";
+ item.DisplayMaxValue = $"/{state.SetPoint}";
+ item.MaxValue = state.SetPoint;
+ item.Value = state.CurrentValue;
+ }
+ else if (state.SetPoint == 0 || (state.CurrentValue >= (state.SetPoint - 10) && state.CurrentValue <= (state.SetPoint + 10)))
+ {
+ item.Status = "Operational";
+ item.Color = Colors.Green;
+ item.DisplayValue = $" {state.SetPoint}";
+ item.DisplayMaxValue = "";
+ if(state.SetPoint == 0 && state.CurrentValue == 0)
+ {
+ item.MaxValue = 10;
+ }
+ else
+ {
+ item.MaxValue = state.SetPoint;
+ }
+ item.Value = state.CurrentValue;
+ }
+ else if (!state.IsRampingUp && (state.CurrentValue < (state.SetPoint - 10) || state.CurrentValue > (state.SetPoint + 10)))
+ {
+ item.Status = "Over-temperature";
+ item.Color = Colors.Red;
+ item.DisplayValue = $"{state.CurrentValue.ToString("N1")}";
+ item.DisplayMaxValue = $"/{state.SetPoint}";
+ item.MaxValue = state.SetPoint;
+ item.Value = state.CurrentValue > state.SetPoint? state.SetPoint : state.CurrentValue;
+ }
+ else
+ {
+ item.Color = Colors.Gray;
+ item.MaxValue = 100;
+ item.Value = 0;
+ item.DisplayMaxValue = "";
+ }
+ }
+ }
+
+ private void UpdateDryerAirItem(double currentvalue)
+ {
+ if (currentvalue < DryerAirMaxValue)
+ {
+ DryerAir.Status = "Heating Up";
+ DryerAir.Color = Colors.Orange;
+ DryerAir.DisplayValue = currentvalue.ToString("N1");
+ }
+ else if (currentvalue >= DryerAirMaxValue)
+ {
+ DryerAir.Status = "Operational";
+ DryerAir.Color = Colors.Green;
+ DryerAir.DisplayValue = currentvalue.ToString("N1");
+ }
+ DryerAir.Value = currentvalue;
+ }
+
+ private void UpdatePumpsPressureItem(double maxValue)
+ {
+ if (maxValue > 6)
+ {
+ PumpsPressure.Status = "Overpressure";
+ PumpsPressure.Color = Colors.Red;
+ PumpsPressure.DisplayValue = maxValue.ToString("N1");
+ }
+ else
+ {
+ PumpsPressure.Status = "Operational";
+ PumpsPressure.Color = Colors.Green;
+ PumpsPressure.DisplayValue = maxValue.ToString("N1");
+ }
+ PumpsPressure.Value = maxValue;
+ }
+
+ private void UpdateLubricantItem(Rml rml, double lubricantValue)
+ {
+ if (rml != null)
+ {
+ var rmlLubrication = Settings.LubricationLevels.FirstOrDefault(x => x.RmlGuid == rml.Guid);
+ if (( rml.Lubricant == false)
+ || (rmlLubrication != null && rmlLubrication.LubricationLevel == Common.Lubrication.LubricationLevel.No))
+ {
+ Lubricant.Status = "NotActive";
+ Lubricant.DisplayValue = "None";
+ Lubricant.Color = Colors.Gray;
+
+ return;
+ }
+ Lubricant.Status = "Active";
+ Lubricant.DisplayValue = lubricantValue.ToString("N1");
+ Lubricant.Color = Colors.Green;
+ return;
+ }
+ else
+ {
+ Lubricant.Status = "NotActive";
+ Lubricant.DisplayValue = "None";
+ Lubricant.Color = Colors.Gray;
+ }
+ }
+ }
+}