diff --git a/CMS_CORE_Library/Models/ThermoModels.cs b/CMS_CORE_Library/Models/ThermoModels.cs index 65532c0..18e0516 100644 --- a/CMS_CORE_Library/Models/ThermoModels.cs +++ b/CMS_CORE_Library/Models/ThermoModels.cs @@ -4,414 +4,414 @@ using System.Linq; namespace CMS_CORE_Library.Models { - public class ThermoModels - { - #region Thermo models - - protected const double EPSILON = 0.1; - - /// - /// Represents thermo LIVE prod data (gauge, time adv...) - /// - public class LiveProdDataModel + public class ThermoModels { - public double TimeAdv { get; set; } = 0; - public double Power { get; set; } = 0; - public double Vacuum { get; set; } = 0; - public double Air { get; set; } = 0; + #region Thermo models - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is LiveProdDataModel item)) - return false; + protected const double EPSILON = 0.1; - if (TimeAdv != item.TimeAdv) - return false; + /// + /// Represents thermo LIVE prod data (gauge, time adv...) + /// + public class LiveProdDataModel + { + public double TimeAdv { get; set; } = 0; + public double Power { get; set; } = 0; + public double Vacuum { get; set; } = 0; + public double Air { get; set; } = 0; - if (Power != item.Power) - return false; + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is LiveProdDataModel item)) + return false; - if (Vacuum != item.Vacuum) - return false; + if (TimeAdv != item.TimeAdv) + return false; - if (Air != item.Air) - return false; + if (Power != item.Power) + return false; - return true; - } + if (Vacuum != item.Vacuum) + return false; - public override int GetHashCode() - { - return base.GetHashCode(); - } + 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 int ScaleFactor { get; set; } = 1; + + 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; + if (ScaleFactor != item.ScaleFactor) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + /// + /// Single AXIS RealTime (positions / movement) Data + /// + public class AxisRT + { + public int Id { get; set; } = 0; + public double Position { get; set; } = 0; + public double Speed { get; set; } = 0; + public double Load { get; set; } = 0; + + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is AxisRT item)) + return false; + + if (Id != item.Id) + return false; + if (Position != item.Position) + return false; + if (Speed != item.Speed) + return false; + if (Load != item.Load) + return false; + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + + /// + /// Deserializzazione da byte ad oggetto AxisRT + /// + /// + public AxisRT(int currId, byte[] rawData) + { + // converto i dati da byte grezzi ai 3 componenti... + Id = currId; + Position = S7.Net.Types.Double.FromByteArray(rawData.Skip(0).Take(4).ToArray()); + Speed = S7.Net.Types.Double.FromByteArray(rawData.Skip(4).Take(4).ToArray()); + Load = S7.Net.Types.Double.FromByteArray(rawData.Skip(8).Take(4).ToArray()); + } + /// + /// Converte un singolo item in un array di byte per scrittura su PLC S7 + /// + /// + public byte[] convertToByte() + { + byte[] answ = new byte[12]; + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(Position), 0, answ, 0, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(Speed), 0, answ, 4, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(Load), 0, answ, 8, 4); + return answ; + } + } + /// + /// Single AXIS Info Data + /// + public class AxisInfo + { + public int Id { get; set; } = 0; + public int ErrorCode { get; set; } = 0; + public int MovPhase { get; set; } = 0; + public int StatusWord { get; set; } = 0; + public int ControlWord { get; set; } = 0; + public double TargetPos { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is AxisInfo item)) + return false; + + if (Id != item.Id) + return false; + if (ErrorCode != item.ErrorCode) + return false; + if (MovPhase != item.MovPhase) + return false; + if (StatusWord != item.StatusWord) + return false; + if (ControlWord != item.ControlWord) + return false; + if (TargetPos != item.TargetPos) + 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 bool Terminated { 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; + if (Terminated != item.Terminated) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + public class WarmerChannel + { + public int IdChannel { get; set; } = 0; + public byte IdRefl { get; set; } = 0; + public byte SetpointHMI { get; set; } = 0; + public byte SetpointThermoCam { get; set; } = 0; + public byte SetpointPLC { get; set; } = 0; + public byte ChStatus { get; set; } = 0; + public double CurrAct { get; set; } = 0; + public byte PercAct { get; set; } = 0; + public int MaxPower { 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 (SetpointHMI != item.SetpointHMI) + return false; + if (SetpointThermoCam != item.SetpointThermoCam) + return false; + if (SetpointPLC != item.SetpointPLC) + return false; + if (ChStatus != item.ChStatus) + return false; + if (CurrAct != item.CurrAct) + return false; + if (PercAct != item.PercAct) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + + public class ProdInfoModel + { + public DateTime DtEvent { get; set; } = DateTime.Now; + public short NumTarget { get; set; } = 0; + public short NumDone { get; set; } = 0; + public short PreWarmCycle { 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 bool IsScrap { get; set; } = false; + public short NumPreHot { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is ProdInfoModel item)) + return false; + + if (DtEvent != item.DtEvent) + return false; + if (NumTarget != item.NumTarget) + return false; + if (NumDone != item.NumDone) + return false; + if (PreWarmCycle != item.PreWarmCycle) + 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 (Math.Round(Math.Abs(MaterialTempEndWarm - item.MaterialTempEndWarm), 1) >= EPSILON) + return false; + if (Math.Round(Math.Abs(MaterialTempEndVent - item.MaterialTempEndVent), 1) >= EPSILON) + return false; + if (Math.Round(Math.Abs(MoldTemp - item.MoldTemp), 1) >= EPSILON) + return false; + if (Math.Round(Math.Abs(VacuumReadVal - item.VacuumReadVal), 1) >= EPSILON) + return false; + if (Math.Round(Math.Abs(MouldEnergyOUT - item.MouldEnergyOUT), 1) >= EPSILON) + return false; + if (Math.Round(Math.Abs(MouldEnergyIN - item.MouldEnergyIN), 1) >= EPSILON) + return false; + if (IsScrap != item.IsScrap) + return false; + if (NumPreHot != item.NumPreHot) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + + /// + /// Converte un singolo item in un array di byte per scrittura su PLC S7 + /// + /// + public byte[] convertToByte() + { + byte[] answ = new byte[50]; + Buffer.BlockCopy(S7.Net.Types.Int.ToByteArray(NumTarget), 0, answ, 0, 2); + Buffer.BlockCopy(S7.Net.Types.Int.ToByteArray(NumDone), 0, answ, 2, 2); + Buffer.BlockCopy(S7.Net.Types.Int.ToByteArray(PreWarmCycle), 0, answ, 4, 2); + Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeWarm), 0, answ, 6, 4); + Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeVent), 0, answ, 10, 4); + Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeVacuum), 0, answ, 14, 4); + Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeCycleGross), 0, answ, 18, 4); + Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeCycleNet), 0, answ, 22, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MaterialTempEndWarm), 0, answ, 26, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MaterialTempEndVent), 0, answ, 30, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MoldTemp), 0, answ, 34, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(VacuumReadVal), 0, answ, 38, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MouldEnergyOUT), 0, answ, 42, 4); + Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MouldEnergyIN), 0, answ, 46, 4); + return answ; + } + } + + public class ProdCycleModel + { + public ushort Status { get; set; } = 0; + public ushort MessageId { get; set; } = 0; + public ushort Mode { get; set; } = 0; + public ushort Submode { get; set; } = 0; + public uint TimeAdv { get; set; } = 0; + + public override bool Equals(object obj) + { + // Object is not a GaugeModel instance + if (!(obj is ProdCycleModel item)) + return false; + + if (Status != item.Status) + return false; + if (MessageId != item.MessageId) + return false; + if (Mode != item.Mode) + return false; + if (Submode != item.Submode) + return false; + if (TimeAdv != item.TimeAdv) + return false; + + return true; + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + #endregion } - - - /// - /// 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 int ScaleFactor { get; set; } = 1; - - 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; - if (ScaleFactor != item.ScaleFactor) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - /// - /// Single AXIS RealTime (positions / movement) Data - /// - public class AxisRT - { - public int Id { get; set; } = 0; - public double Position { get; set; } = 0; - public double Speed { get; set; } = 0; - public double Load { get; set; } = 0; - - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is AxisRT item)) - return false; - - if (Id != item.Id) - return false; - if (Position != item.Position) - return false; - if (Speed != item.Speed) - return false; - if (Load != item.Load) - return false; - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - - /// - /// Deserializzazione da byte ad oggetto AxisRT - /// - /// - public AxisRT(int currId, byte[] rawData) - { - // converto i dati da byte grezzi ai 3 componenti... - Id = currId; - Position = S7.Net.Types.Double.FromByteArray(rawData.Skip(0).Take(4).ToArray()); - Speed = S7.Net.Types.Double.FromByteArray(rawData.Skip(4).Take(4).ToArray()); - Load = S7.Net.Types.Double.FromByteArray(rawData.Skip(8).Take(4).ToArray()); - } - /// - /// Converte un singolo item in un array di byte per scrittura su PLC S7 - /// - /// - public byte[] convertToByte() - { - byte[] answ = new byte[12]; - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(Position), 0, answ, 0, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(Speed), 0, answ, 4, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(Load), 0, answ, 8, 4); - return answ; - } - } - /// - /// Single AXIS Info Data - /// - public class AxisInfo - { - public int Id { get; set; } = 0; - public int ErrorCode { get; set; } = 0; - public int MovPhase { get; set; } = 0; - public int StatusWord { get; set; } = 0; - public int ControlWord { get; set; } = 0; - public double TargetPos { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is AxisInfo item)) - return false; - - if (Id != item.Id) - return false; - if (ErrorCode != item.ErrorCode) - return false; - if (MovPhase != item.MovPhase) - return false; - if (StatusWord != item.StatusWord) - return false; - if (ControlWord != item.ControlWord) - return false; - if (TargetPos != item.TargetPos) - 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 bool Terminated { 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; - if (Terminated != item.Terminated) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - public class WarmerChannel - { - public int IdChannel { get; set; } = 0; - public byte IdRefl { get; set; } = 0; - public byte SetpointHMI { get; set; } = 0; - public byte SetpointThermoCam { get; set; } = 0; - public byte SetpointPLC { get; set; } = 0; - public byte ChStatus { get; set; } = 0; - public double CurrAct { get; set; } = 0; - public byte PercAct { get; set; } = 0; - public int MaxPower { 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 (SetpointHMI != item.SetpointHMI) - return false; - if (SetpointThermoCam != item.SetpointThermoCam) - return false; - if (SetpointPLC != item.SetpointPLC) - return false; - if (ChStatus != item.ChStatus) - return false; - if (CurrAct != item.CurrAct) - return false; - if (PercAct != item.PercAct) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - - public class ProdInfoModel - { - public DateTime DtEvent { get; set; } - public short NumTarget { get; set; } = 0; - public short NumDone { get; set; } = 0; - public short PreWarmCycle { 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 bool IsScrap { get; set; } = false; - public short NumPreHot { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is ProdInfoModel item)) - return false; - - if (DtEvent != item.DtEvent) - return false; - if (NumTarget != item.NumTarget) - return false; - if (NumDone != item.NumDone) - return false; - if (PreWarmCycle != item.PreWarmCycle) - 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 (Math.Round(Math.Abs(MaterialTempEndWarm - item.MaterialTempEndWarm), 1) >= EPSILON) - return false; - if (Math.Round(Math.Abs(MaterialTempEndVent - item.MaterialTempEndVent), 1) >= EPSILON) - return false; - if (Math.Round(Math.Abs(MoldTemp - item.MoldTemp), 1) >= EPSILON) - return false; - if (Math.Round(Math.Abs(VacuumReadVal - item.VacuumReadVal), 1) >= EPSILON) - return false; - if (Math.Round(Math.Abs(MouldEnergyOUT - item.MouldEnergyOUT), 1) >= EPSILON) - return false; - if (Math.Round(Math.Abs(MouldEnergyIN - item.MouldEnergyIN), 1) >= EPSILON) - return false; - if (IsScrap != item.IsScrap) - return false; - if (NumPreHot != item.NumPreHot) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - - /// - /// Converte un singolo item in un array di byte per scrittura su PLC S7 - /// - /// - public byte[] convertToByte() - { - byte[] answ = new byte[50]; - Buffer.BlockCopy(S7.Net.Types.Int.ToByteArray(NumTarget), 0, answ, 0, 2); - Buffer.BlockCopy(S7.Net.Types.Int.ToByteArray(NumDone), 0, answ, 2, 2); - Buffer.BlockCopy(S7.Net.Types.Int.ToByteArray(PreWarmCycle), 0, answ, 4, 2); - Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeWarm), 0, answ, 6, 4); - Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeVent), 0, answ, 10, 4); - Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeVacuum), 0, answ, 14, 4); - Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeCycleGross), 0, answ, 18, 4); - Buffer.BlockCopy(S7.Net.Types.DInt.ToByteArray(TimeCycleNet), 0, answ, 22, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MaterialTempEndWarm), 0, answ, 26, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MaterialTempEndVent), 0, answ, 30, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MoldTemp), 0, answ, 34, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(VacuumReadVal), 0, answ, 38, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MouldEnergyOUT), 0, answ, 42, 4); - Buffer.BlockCopy(S7.Net.Types.Double.ToByteArray(MouldEnergyIN), 0, answ, 46, 4); - return answ; - } - } - - public class ProdCycleModel - { - public ushort Status { get; set; } = 0; - public ushort MessageId { get; set; } = 0; - public ushort Mode { get; set; } = 0; - public ushort Submode { get; set; } = 0; - public uint TimeAdv { get; set; } = 0; - - public override bool Equals(object obj) - { - // Object is not a GaugeModel instance - if (!(obj is ProdCycleModel item)) - return false; - - if (Status != item.Status) - return false; - if (MessageId != item.MessageId) - return false; - if (Mode != item.Mode) - return false; - if (Submode != item.Submode) - return false; - if (TimeAdv != item.TimeAdv) - return false; - - return true; - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - - #endregion - } } diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index ee656f8..38dc27d 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -2406,33 +2406,20 @@ namespace CMS_CORE_Library.S7Net // converto! currProdInfo = new ThermoModels.ProdInfoModel() { - NumTarget = S7.Net.Types.Int.FromByteArray(currMem.Skip(0).Take(2).ToArray()) - , - NumDone = S7.Net.Types.Int.FromByteArray(currMem.Skip(2).Take(2).ToArray()) - // cicli preriscaldo? FIXME TODO - , - TimeWarm = S7.Net.Types.DInt.FromByteArray(currMem.Skip(6).Take(4).ToArray()) - , - TimeVent = S7.Net.Types.DInt.FromByteArray(currMem.Skip(10).Take(4).ToArray()) - , - TimeVacuum = S7.Net.Types.DInt.FromByteArray(currMem.Skip(14).Take(4).ToArray()) - , - TimeCycleGross = S7.Net.Types.DInt.FromByteArray(currMem.Skip(18).Take(4).ToArray()) - , - TimeCycleNet = S7.Net.Types.DInt.FromByteArray(currMem.Skip(22).Take(4).ToArray()) - , - MaterialTempEndWarm = S7.Net.Types.Double.FromByteArray(currMem.Skip(26).Take(4).ToArray()) - , - MaterialTempEndVent = S7.Net.Types.Double.FromByteArray(currMem.Skip(30).Take(4).ToArray()) - , - MoldTemp = S7.Net.Types.Double.FromByteArray(currMem.Skip(34).Take(4).ToArray()) - , - VacuumReadVal = S7.Net.Types.Double.FromByteArray(currMem.Skip(38).Take(4).ToArray()) - , - MouldEnergyOUT = S7.Net.Types.Double.FromByteArray(currMem.Skip(42).Take(4).ToArray()) - , - MouldEnergyIN = S7.Net.Types.Double.FromByteArray(currMem.Skip(46).Take(4).ToArray()) - //,NumPreHot = S7.Net.Types.Int.FromByteArray(currMem.Skip(50).Take(2).ToArray()) + NumTarget = S7.Net.Types.Int.FromByteArray(currMem.Skip(0).Take(2).ToArray()), + NumDone = S7.Net.Types.Int.FromByteArray(currMem.Skip(2).Take(2).ToArray()), + TimeWarm = S7.Net.Types.DInt.FromByteArray(currMem.Skip(6).Take(4).ToArray()), + TimeVent = S7.Net.Types.DInt.FromByteArray(currMem.Skip(10).Take(4).ToArray()), + TimeVacuum = S7.Net.Types.DInt.FromByteArray(currMem.Skip(14).Take(4).ToArray()), + TimeCycleGross = S7.Net.Types.DInt.FromByteArray(currMem.Skip(18).Take(4).ToArray()), + TimeCycleNet = S7.Net.Types.DInt.FromByteArray(currMem.Skip(22).Take(4).ToArray()), + MaterialTempEndWarm = S7.Net.Types.Double.FromByteArray(currMem.Skip(26).Take(4).ToArray()), + MaterialTempEndVent = S7.Net.Types.Double.FromByteArray(currMem.Skip(30).Take(4).ToArray()), + MoldTemp = S7.Net.Types.Double.FromByteArray(currMem.Skip(34).Take(4).ToArray()), + VacuumReadVal = S7.Net.Types.Double.FromByteArray(currMem.Skip(38).Take(4).ToArray()), + MouldEnergyOUT = S7.Net.Types.Double.FromByteArray(currMem.Skip(42).Take(4).ToArray()), + MouldEnergyIN = S7.Net.Types.Double.FromByteArray(currMem.Skip(46).Take(4).ToArray()), + NumPreHot = S7.Net.Types.Int.FromByteArray(currMem.Skip(50).Take(2).ToArray()) }; return NO_ERROR;