From a5ada18ced0da325ee5e5a12ffdbc1b8d2326db0 Mon Sep 17 00:00:00 2001 From: Thermo_SIM Date: Fri, 19 Mar 2021 22:22:16 +0100 Subject: [PATCH] Added HistorySheets values --- CMS_CORE_Library/Models/ThermoModels.cs | 18 ++++++++++ CMS_CORE_Library/NcThermo.cs | 11 ++++++ CMS_CORE_Library/S7Net/Nc_S7Net.cs | 48 +++++++++++++++++++++++++ 3 files changed, 77 insertions(+) diff --git a/CMS_CORE_Library/Models/ThermoModels.cs b/CMS_CORE_Library/Models/ThermoModels.cs index 84ceae4..01e6639 100644 --- a/CMS_CORE_Library/Models/ThermoModels.cs +++ b/CMS_CORE_Library/Models/ThermoModels.cs @@ -817,6 +817,24 @@ namespace CMS_CORE_Library.Models #endregion Public Methods } + /// + /// Recipe Parameters + /// + public class HistorySheet + { + #region Public Properties + + public bool newData { get; set; } = false; + public double Value1 { get; set; } = 0; + public double Value2 { get; set; } = 0; + public double Value3 { get; set; } = 0; + + #endregion Public Properties + + #region Public Methods + + #endregion Public Methods + } #endregion Public Classes } diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs index fd896a5..3dc0f8d 100644 --- a/CMS_CORE_Library/NcThermo.cs +++ b/CMS_CORE_Library/NcThermo.cs @@ -823,6 +823,17 @@ namespace CMS_CORE_Library /// public abstract CmsError PLC_RProdCycle(ref ThermoModels.ProdCycleModel currProdCycle); /// + /// Get current HistorySheets + /// + /// + /// + public abstract CmsError PLC_RHistorySheets(ref ThermoModels.HistorySheet historySheet); + /// + /// Write ack + /// + /// + public abstract CmsError PLC_WAckHistorySheets(); + /// /// Request for mode selection via strobe /// /// 1: MAN, 2: AUTO, 3: SETUP diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index 074f315..967dff7 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -183,6 +183,9 @@ namespace CMS_CORE_Library.S7Net internal static MEMORY_CELL PROCESS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 605, 0, 2); + internal static MEMORY_CELL HISTORY_SHEETS = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 143, 2, 14); + internal static MEMORY_CELL HISTORY_ACK_SHEETS = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 143, 0, 2); + // Prod strobe/ack internal static MEMORY_CELL PROD_ACK = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 0, 2); @@ -3743,6 +3746,51 @@ namespace CMS_CORE_Library.S7Net return NO_ERROR; } + + /// + /// Get current HistorySheets + /// + /// + /// + /// + public override CmsError PLC_RHistorySheets(ref ThermoModels.HistorySheet historySheet) + { + List currMem = new List(); + CmsError libraryError = MEM_RWByteList(R, 0, HISTORY_SHEETS.MemType, HISTORY_SHEETS.Address, HISTORY_SHEETS.SubAddress, 0, HISTORY_SHEETS.Size, ref currMem); + if (libraryError.IsError()) + return libraryError; + + // converto! + historySheet = new ThermoModels.HistorySheet() + { + newData = (S7.Net.Types.Int.FromByteArray(currMem.Skip(0).Take(2).ToArray()) & 1) == 1, + Value1 = S7.Net.Types.Real.FromByteArray(currMem.Skip(2).Take(4).ToArray()), + Value2 = S7.Net.Types.Real.FromByteArray(currMem.Skip(6).Take(4).ToArray()), + Value3 = S7.Net.Types.Real.FromByteArray(currMem.Skip(10).Take(4).ToArray()), + }; + + return NO_ERROR; + } + + /// + /// WriteAck HistorySheets + /// + /// + /// + + public override CmsError PLC_WAckHistorySheets() + { + + CmsError libraryError = NO_ERROR; + + // Call ack for config request RISK + libraryError = PLC_WAck(true,HISTORY_ACK_SHEETS, HISTORY_SHEETS, 1); + if (libraryError.IsError()) + return libraryError; + + return libraryError; + } + /// /// read current recipe parameter list ///