diff --git a/CMS_CORE_Library/CMS_CORE_Library.csproj b/CMS_CORE_Library/CMS_CORE_Library.csproj index 4b249d3..507b6c5 100644 --- a/CMS_CORE_Library/CMS_CORE_Library.csproj +++ b/CMS_CORE_Library/CMS_CORE_Library.csproj @@ -152,6 +152,7 @@ + diff --git a/CMS_CORE_Library/Models/DataStructures.cs b/CMS_CORE_Library/Models/DataStructures.cs index 891298c..764032d 100644 --- a/CMS_CORE_Library/Models/DataStructures.cs +++ b/CMS_CORE_Library/Models/DataStructures.cs @@ -533,263 +533,5 @@ namespace CMS_CORE_Library.Models #endregion Data structure models - #region Thermo models - - /// - /// Represents thermo gauge data - /// - public class GaugeModel - { - public uint TimeAdv { get; set; } = 0; - public int Power { get; set; } = 0; - public int Vacuum { get; set; } = 0; - public int Air { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is GaugeModel item)) - return false; - - if (TimeAdv != item.TimeAdv) - return false; - - if (Power != item.Power) - return false; - - if (Vacuum != item.Vacuum) - return false; - - if (Air != item.Air) - return false; - - return true; - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - /// - /// Recipe Parameters - /// - public class RecipeParam - { - public short Id { get; set; } = 0; - public double SetpointHMI { get; set; } = 0; - public double SetpointPLC { get; set; } = 0; - public double ValMax { get; set; } = 0; - public double ValMin { get; set; } = 0; - public ushort UnitMeasure { get; set; } = 0; - public bool Visible { get; set; } = false; - public bool Enabled { get; set; } = false; - public bool HasError { get; set; } = false; - public double ValueAct { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is RecipeParam item)) - return false; - - if (Id != item.Id) - return false; - if (SetpointHMI != item.SetpointHMI) - return false; - if (SetpointPLC != item.SetpointPLC) - return false; - if (ValMax != item.ValMax) - return false; - if (ValMin != item.ValMin) - return false; - if (UnitMeasure != item.UnitMeasure) - return false; - if (Visible != item.Visible) - return false; - if (Enabled != item.Enabled) - return false; - if (HasError != item.HasError) - return false; - if (ValueAct != item.ValueAct) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - - public class ModuleBlock - { - public short Id { get; set; } = 0; - public int ActualDelay { get; set; } = 0; - public int ActualDuration { get; set; } = 0; - public int EstimatedDelay { get; set; } = 0; - public int EstimatedDuration { get; set; } = 0; - public List PrecedingId { get; set; } = new List(); - public bool Visible { get; set; } = false; - public bool Running { get; set; } = false; - public bool HasError { get; set; } = false; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is ModuleBlock item)) - return false; - - if (Id != item.Id) - return false; - if (ActualDelay != item.ActualDelay) - return false; - if (ActualDuration != item.ActualDuration) - return false; - if (EstimatedDelay != item.EstimatedDelay) - return false; - if (EstimatedDuration != item.EstimatedDuration) - return false; - if (PrecedingId != item.PrecedingId) - return false; - if (Visible != item.Visible) - return false; - if (Running != item.Running) - return false; - if (HasError != item.HasError) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - public class WarmerChannel - { - public int IdChannel { get; set; } = 0; - public double SetpointThermoCam { get; set; } = 0; - public double SetpointPLC { get; set; } = 0; - public byte ChStatus { get; set; } = 0; - public byte PercAct { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is WarmerChannel item)) - return false; - - if (IdChannel != item.IdChannel) - return false; - if (SetpointThermoCam != item.SetpointThermoCam) - return false; - if (SetpointPLC != item.SetpointPLC) - return false; - if (ChStatus != item.ChStatus) - return false; - if (PercAct != item.PercAct) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - - public class ProdInfo - { - public short NumTarget { get; set; } = 0; - public short NumDone { get; set; } = 0; - public int TimeWarm { get; set; } = 0; - public int TimeVent { get; set; } = 0; - public int TimeVacuum { get; set; } = 0; - public int TimeCycleGross { get; set; } = 0; - public int TimeCycleNet { get; set; } = 0; - public double MaterialTempEndWarm { get; set; } = 0; - public double MaterialTempEndVent { get; set; } = 0; - public double MoldTemp { get; set; } = 0; - public double VacuumReadVal { get; set; } = 0; - public double MouldEnergyOUT { get; set; } = 0; - public double MouldEnergyIN { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is ProdInfo item)) - return false; - - if (NumTarget != item.NumTarget) - return false; - if (NumDone != item.NumDone) - return false; - if (TimeWarm != item.TimeWarm) - return false; - if (TimeVent != item.TimeVent) - return false; - if (TimeVacuum != item.TimeVacuum) - return false; - if (TimeCycleGross != item.TimeCycleGross) - return false; - if (TimeCycleNet != item.TimeCycleNet) - return false; - if (MaterialTempEndWarm != item.MaterialTempEndWarm) - return false; - if (MaterialTempEndVent != item.MaterialTempEndVent) - return false; - if (MoldTemp != item.MoldTemp) - return false; - if (VacuumReadVal != item.VacuumReadVal) - return false; - if (MouldEnergyOUT != item.MouldEnergyOUT) - return false; - if (MouldEnergyIN != item.MouldEnergyIN) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - public class ProdCycle - { - public ushort Status { get; set; } = 0; - public ushort MessageId { get; set; } = 0; - public ushort Mode { get; set; } = 0; - public uint TimeAdv { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is ProdCycle item)) - return false; - - if (Status != item.Status) - return false; - if (MessageId != item.MessageId) - return false; - if (Mode != item.Mode) - return false; - if (TimeAdv != item.TimeAdv) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - #endregion } } \ No newline at end of file diff --git a/CMS_CORE_Library/Models/ThermoModels.cs b/CMS_CORE_Library/Models/ThermoModels.cs new file mode 100644 index 0000000..52a9732 --- /dev/null +++ b/CMS_CORE_Library/Models/ThermoModels.cs @@ -0,0 +1,270 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CMS_CORE_Library.Models +{ + public class ThermoModels + { + #region Thermo models + + /// + /// Represents thermo gauge data + /// + public class GaugeModel + { + public uint TimeAdv { get; set; } = 0; + public int Power { get; set; } = 0; + public int Vacuum { get; set; } = 0; + public int Air { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is GaugeModel item)) + return false; + + if (TimeAdv != item.TimeAdv) + return false; + + if (Power != item.Power) + return false; + + if (Vacuum != item.Vacuum) + return false; + + if (Air != item.Air) + return false; + + return true; + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + /// + /// Recipe Parameters + /// + public class RecipeParam + { + public short Id { get; set; } = 0; + public double SetpointHMI { get; set; } = 0; + public double SetpointPLC { get; set; } = 0; + public double ValMax { get; set; } = 0; + public double ValMin { get; set; } = 0; + public ushort UnitMeasure { get; set; } = 0; + public bool Visible { get; set; } = false; + public bool Enabled { get; set; } = false; + public bool HasError { get; set; } = false; + public double ValueAct { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is RecipeParam item)) + return false; + + if (Id != item.Id) + return false; + if (SetpointHMI != item.SetpointHMI) + return false; + if (SetpointPLC != item.SetpointPLC) + return false; + if (ValMax != item.ValMax) + return false; + if (ValMin != item.ValMin) + return false; + if (UnitMeasure != item.UnitMeasure) + return false; + if (Visible != item.Visible) + return false; + if (Enabled != item.Enabled) + return false; + if (HasError != item.HasError) + return false; + if (ValueAct != item.ValueAct) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + + public class ModuleBlock + { + public short Id { get; set; } = 0; + public int ActualDelay { get; set; } = 0; + public int ActualDuration { get; set; } = 0; + public int EstimatedDelay { get; set; } = 0; + public int EstimatedDuration { get; set; } = 0; + public List PrecedingId { get; set; } = new List(); + public bool Visible { get; set; } = false; + public bool Running { get; set; } = false; + public bool HasError { get; set; } = false; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is ModuleBlock item)) + return false; + + if (Id != item.Id) + return false; + if (ActualDelay != item.ActualDelay) + return false; + if (ActualDuration != item.ActualDuration) + return false; + if (EstimatedDelay != item.EstimatedDelay) + return false; + if (EstimatedDuration != item.EstimatedDuration) + return false; + if (PrecedingId != item.PrecedingId) + return false; + if (Visible != item.Visible) + return false; + if (Running != item.Running) + return false; + if (HasError != item.HasError) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + public class WarmerChannel + { + public int IdChannel { get; set; } = 0; + public double SetpointThermoCam { get; set; } = 0; + public double SetpointPLC { get; set; } = 0; + public byte ChStatus { get; set; } = 0; + public byte PercAct { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is WarmerChannel item)) + return false; + + if (IdChannel != item.IdChannel) + return false; + if (SetpointThermoCam != item.SetpointThermoCam) + return false; + if (SetpointPLC != item.SetpointPLC) + return false; + if (ChStatus != item.ChStatus) + return false; + if (PercAct != item.PercAct) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + + public class ProdInfo + { + public short NumTarget { get; set; } = 0; + public short NumDone { get; set; } = 0; + public int TimeWarm { get; set; } = 0; + public int TimeVent { get; set; } = 0; + public int TimeVacuum { get; set; } = 0; + public int TimeCycleGross { get; set; } = 0; + public int TimeCycleNet { get; set; } = 0; + public double MaterialTempEndWarm { get; set; } = 0; + public double MaterialTempEndVent { get; set; } = 0; + public double MoldTemp { get; set; } = 0; + public double VacuumReadVal { get; set; } = 0; + public double MouldEnergyOUT { get; set; } = 0; + public double MouldEnergyIN { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is ProdInfo item)) + return false; + + if (NumTarget != item.NumTarget) + return false; + if (NumDone != item.NumDone) + return false; + if (TimeWarm != item.TimeWarm) + return false; + if (TimeVent != item.TimeVent) + return false; + if (TimeVacuum != item.TimeVacuum) + return false; + if (TimeCycleGross != item.TimeCycleGross) + return false; + if (TimeCycleNet != item.TimeCycleNet) + return false; + if (MaterialTempEndWarm != item.MaterialTempEndWarm) + return false; + if (MaterialTempEndVent != item.MaterialTempEndVent) + return false; + if (MoldTemp != item.MoldTemp) + return false; + if (VacuumReadVal != item.VacuumReadVal) + return false; + if (MouldEnergyOUT != item.MouldEnergyOUT) + return false; + if (MouldEnergyIN != item.MouldEnergyIN) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + public class ProdCycle + { + public ushort Status { get; set; } = 0; + public ushort MessageId { get; set; } = 0; + public ushort Mode { get; set; } = 0; + public uint TimeAdv { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is ProdCycle item)) + return false; + + if (Status != item.Status) + return false; + if (MessageId != item.MessageId) + return false; + if (Mode != item.Mode) + return false; + if (TimeAdv != item.TimeAdv) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + #endregion + } +} diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs index d9518e0..ec8ff52 100644 --- a/CMS_CORE_Library/NcThermo.cs +++ b/CMS_CORE_Library/NcThermo.cs @@ -626,26 +626,26 @@ namespace CMS_CORE_Library /// updates only RT parameters (false = update all) /// /// - public abstract CmsError PLC_RRecipeParamList(bool onlyRT, ref Dictionary currParamList); + public abstract CmsError PLC_RRecipeParamList(bool onlyRT, ref Dictionary currParamList); /// /// Write recipe updated parameter /// /// /// - public abstract CmsError PLC_WRecipeParam(RecipeParam updtParam); + public abstract CmsError PLC_WRecipeParam(ThermoModels.RecipeParam updtParam); /// /// Get current Modules Block list /// /// updates only RT parameters (false = update all) /// /// - public abstract CmsError PLC_RModulesBlockList(bool onlyRT, ref Dictionary currModulesBlockList); + public abstract CmsError PLC_RModulesBlockList(bool onlyRT, ref Dictionary currModulesBlockList); /// /// Get current Warmers Channels list /// /// /// - public abstract CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList); + public abstract CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList); /// /// Read power gauge data /// @@ -654,19 +654,19 @@ namespace CMS_CORE_Library /// Returns an error when an internal or a library error occours /// /// Reference to the value of the gauge data - public abstract CmsError PLC_RGaugeData(ref GaugeModel gaugeData); + public abstract CmsError PLC_RGaugeData(ref ThermoModels.GaugeModel gaugeData); /// /// Get current Production Info data /// /// /// - public abstract CmsError PLC_RProdInfo(ref ProdInfo currProdInfo); + public abstract CmsError PLC_RProdInfo(ref ThermoModels.ProdInfo currProdInfo); /// /// Get current Production Cycle data /// /// /// - public abstract CmsError PLC_RProdCycle(ref ProdCycle currProdCycle); + public abstract CmsError PLC_RProdCycle(ref ThermoModels.ProdCycle currProdCycle); #endregion THERMO high level data diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index daeb6c8..22591f2 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -58,11 +58,11 @@ namespace CMS_CORE_Library.S7Net // Dizionario parametri specifici per THERMO - private static Dictionary ThermoParamList; - private static Dictionary ThermoModuleList; - private static Dictionary ThermoWarmChannels; - private static ProdInfo ThermoProdInfo; - private static ProdCycle ThermoProdCycle; + private static Dictionary ThermoParamList; + private static Dictionary ThermoModuleList; + private static Dictionary ThermoWarmChannels; + private static ThermoModels.ProdInfo ThermoProdInfo; + private static ThermoModels.ProdCycle ThermoProdCycle; // connessione S7 private CpuType tipoCpu = CpuType.S71500; @@ -133,11 +133,11 @@ namespace CMS_CORE_Library.S7Net // mesasggi generici PLC PlcMessages = new Dictionary(); // Init dati specifici Themo - ThermoParamList = new Dictionary(); - ThermoModuleList = new Dictionary(); - ThermoWarmChannels = new Dictionary(); - ThermoProdCycle = new ProdCycle(); - ThermoProdInfo = new ProdInfo(); + ThermoParamList = new Dictionary(); + ThermoModuleList = new Dictionary(); + ThermoWarmChannels = new Dictionary(); + ThermoProdCycle = new ThermoModels.ProdCycle(); + ThermoProdInfo = new ThermoModels.ProdInfo(); } /// /// Connessione al PLC @@ -1811,7 +1811,7 @@ namespace CMS_CORE_Library.S7Net /// updates only RT parameters (false = update all) /// /// - public override CmsError PLC_RRecipeParamList(bool onlyRT, ref Dictionary currParamList) + public override CmsError PLC_RRecipeParamList(bool onlyRT, ref Dictionary currParamList) { // se richiesto NON SOLO RT faccio refresh anche dati "lenti" if (!onlyRT) @@ -1830,7 +1830,7 @@ namespace CMS_CORE_Library.S7Net /// /// /// - public override CmsError PLC_WRecipeParam(RecipeParam updtParam) + public override CmsError PLC_WRecipeParam(ThermoModels.RecipeParam updtParam) { // init variabili accessorie List currMem = new List(); @@ -1859,7 +1859,7 @@ namespace CMS_CORE_Library.S7Net /// updates only RT parameters (false = update all) /// /// - public override CmsError PLC_RModulesBlockList(bool onlyRT, ref Dictionary currModulesBlockList) + public override CmsError PLC_RModulesBlockList(bool onlyRT, ref Dictionary currModulesBlockList) { // se richiesto NON SOLO RT faccio refresh anche dati "lenti" if (!onlyRT) @@ -1878,7 +1878,7 @@ namespace CMS_CORE_Library.S7Net /// /// /// - public override CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList) + public override CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList) { // refresh stato canale refreshRiscStatus(); @@ -1900,7 +1900,7 @@ namespace CMS_CORE_Library.S7Net /// /// /// - public override CmsError PLC_RGaugeData(ref GaugeModel gaugeData) + public override CmsError PLC_RGaugeData(ref ThermoModels.GaugeModel gaugeData) { List Values = new List(); CmsError cmsError = MEM_RWIntegerList(R, 1, MACHINE_GAUGE_DATA.MemType, MACHINE_GAUGE_DATA.Address, MACHINE_GAUGE_DATA.SubAddress, MACHINE_GAUGE_DATA.Size / 4, ref Values); @@ -1908,7 +1908,7 @@ namespace CMS_CORE_Library.S7Net if (cmsError.IsError()) return cmsError; - gaugeData = new GaugeModel() + gaugeData = new ThermoModels.GaugeModel() { TimeAdv = Convert.ToUInt32(Values[0]), Power = Values[1], @@ -1923,7 +1923,7 @@ namespace CMS_CORE_Library.S7Net /// /// /// - public override CmsError PLC_RProdInfo(ref ProdInfo currProdInfo) + public override CmsError PLC_RProdInfo(ref ThermoModels.ProdInfo currProdInfo) { List currMem = new List(); CmsError cmsError = MEM_RWByteList(R, 0, PROCESS_PROD_INFO.MemType, PROCESS_PROD_INFO.Address, PROCESS_PROD_INFO.SubAddress, 0, PROCESS_PROD_INFO.Size, ref currMem); @@ -1931,7 +1931,7 @@ namespace CMS_CORE_Library.S7Net if (cmsError.IsError()) return cmsError; // converto! - currProdInfo = new ProdInfo() + currProdInfo = new ThermoModels.ProdInfo() { NumTarget = S7.Net.Types.Int.FromByteArray(currMem.Skip(0).Take(2).ToArray()), NumDone = S7.Net.Types.Int.FromByteArray(currMem.Skip(2).Take(2).ToArray()), @@ -1956,7 +1956,7 @@ namespace CMS_CORE_Library.S7Net /// /// /// - public override CmsError PLC_RProdCycle(ref ProdCycle currProdCycle) + public override CmsError PLC_RProdCycle(ref ThermoModels.ProdCycle currProdCycle) { List currMem = new List(); CmsError cmsError = MEM_RWByteList(R, 0, PROCESS_PROD_CYCLE.MemType, PROCESS_PROD_CYCLE.Address, PROCESS_PROD_CYCLE.SubAddress, 0, PROCESS_PROD_CYCLE.Size, ref currMem); @@ -1964,7 +1964,7 @@ namespace CMS_CORE_Library.S7Net if (cmsError.IsError()) return cmsError; // converto! - currProdCycle = new ProdCycle() + currProdCycle = new ThermoModels.ProdCycle() { Status = S7.Net.Types.Word.FromByteArray(currMem.Skip(0).Take(2).ToArray()), MessageId = S7.Net.Types.Word.FromByteArray(currMem.Skip(2).Take(2).ToArray()), @@ -2009,7 +2009,7 @@ namespace CMS_CORE_Library.S7Net } else { - ThermoParamList.Add(currParam.Id, new RecipeParam() { Id = currParam.Id, Enabled = currParam.Enabled, HasError = currParam.HasError, Visible = currParam.Visible, ValueAct = currParam.ValueAct }); + ThermoParamList.Add(currParam.Id, new ThermoModels.RecipeParam() { Id = currParam.Id, Enabled = currParam.Enabled, HasError = currParam.HasError, Visible = currParam.Visible, ValueAct = currParam.ValueAct }); } } } @@ -2049,7 +2049,7 @@ namespace CMS_CORE_Library.S7Net } else { - ThermoParamList.Add(currParam.Id, new RecipeParam() { Id = currParam.Id, SetpointHMI = currParam.SetpointHMI, SetpointPLC = currParam.SetpointPLC, ValMax = currParam.ValMax, ValMin = currParam.ValMin, UnitMeasure = currParam.UnitMeasure }); + ThermoParamList.Add(currParam.Id, new ThermoModels.RecipeParam() { Id = currParam.Id, SetpointHMI = currParam.SetpointHMI, SetpointPLC = currParam.SetpointPLC, ValMax = currParam.ValMax, ValMin = currParam.ValMin, UnitMeasure = currParam.UnitMeasure }); } } } @@ -2174,7 +2174,7 @@ namespace CMS_CORE_Library.S7Net } else { - ThermoModuleList.Add(currModBlock.Id, new ModuleBlock() + ThermoModuleList.Add(currModBlock.Id, new ThermoModels.ModuleBlock() { Id = currModBlock.Id, ActualDuration = currModBlock.ActualDuration, @@ -2225,7 +2225,7 @@ namespace CMS_CORE_Library.S7Net } else { - ThermoModuleList.Add(currModBlock.Id, new ModuleBlock() + ThermoModuleList.Add(currModBlock.Id, new ThermoModels.ModuleBlock() { Id = currModBlock.Id, EstimatedDelay = currModBlock.EstimDelay, @@ -2360,7 +2360,7 @@ namespace CMS_CORE_Library.S7Net } else { - ThermoWarmChannels.Add(i + 1, new WarmerChannel() + ThermoWarmChannels.Add(i + 1, new ThermoModels.WarmerChannel() { IdChannel = i + 1, SetpointPLC = currVal @@ -2394,7 +2394,7 @@ namespace CMS_CORE_Library.S7Net } else { - ThermoWarmChannels.Add(i + 1, new WarmerChannel() + ThermoWarmChannels.Add(i + 1, new ThermoModels.WarmerChannel() { IdChannel = i + 1, PercAct = memArray[i] @@ -2428,7 +2428,7 @@ namespace CMS_CORE_Library.S7Net } else { - ThermoWarmChannels.Add(i + 1, new WarmerChannel() + ThermoWarmChannels.Add(i + 1, new ThermoModels.WarmerChannel() { IdChannel = i + 1, ChStatus = memArray[i]