From 2e703010b27ebbca8cb7441d243e886369f53d33 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Sat, 30 May 2020 16:53:18 +0200 Subject: [PATCH] Added ProdInfo readings --- CMS_CORE_Library/Models/DataStructures.cs | 14 ++++----- CMS_CORE_Library/S7Net/Nc_S7Net.cs | 36 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/CMS_CORE_Library/Models/DataStructures.cs b/CMS_CORE_Library/Models/DataStructures.cs index 723e4c2..891298c 100644 --- a/CMS_CORE_Library/Models/DataStructures.cs +++ b/CMS_CORE_Library/Models/DataStructures.cs @@ -705,13 +705,13 @@ namespace CMS_CORE_Library.Models public class ProdInfo { - public ushort NumTarget { get; set; } = 0; - public ushort NumDone { get; set; } = 0; - public uint TimeWarm { get; set; } = 0; - public uint TimeVent { get; set; } = 0; - public uint TimeVacuum { get; set; } = 0; - public uint TimeCycleGross { get; set; } = 0; - public uint TimeCycleNet { get; set; } = 0; + 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; diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index 49749d4..072a02d 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -1925,6 +1925,41 @@ namespace CMS_CORE_Library.S7Net /// public override CmsError PLC_RProdInfo(ref 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); + + if (cmsError.IsError()) + return cmsError; + // converto! + currProdInfo = new 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()), + // 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()) + }; + //gaugeData = new GaugeModel() + //{ + // TimeAdv = Convert.ToUInt32(Values[0]), + // Power = Values[1], + // Vacuum = Values[2], + // Air = Values[3], + //}; + + + + + return NO_ERROR; } /// @@ -4366,6 +4401,7 @@ namespace CMS_CORE_Library.S7Net internal static MEMORY_CELL RISC_ICH_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 11776, 4096); // produzione + internal static MEMORY_CELL PROCESS_PROD_INFO = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 606, 0, 50); internal static MEMORY_CELL PROCESS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 605, 0, 2); // Machine number