From f1d7da00c09d47a8cd2672f3478c9519203ec6b4 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 15 Jun 2020 11:41:31 +0200 Subject: [PATCH] Added method for mode selection --- CMS_CORE_Library/NcThermo.cs | 6 +++++ CMS_CORE_Library/S7Net/Nc_S7Net.cs | 37 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs index fa58356..f7d3c91 100644 --- a/CMS_CORE_Library/NcThermo.cs +++ b/CMS_CORE_Library/NcThermo.cs @@ -730,6 +730,12 @@ namespace CMS_CORE_Library /// /// public abstract CmsError PLC_RProdCycle(ref ThermoModels.ProdCycleModel currProdCycle); + /// + /// Request for mode selection via strobe + /// + /// 1: MAN, 2: AUTO, 3: SETUP + /// + public abstract CmsError PLC_WModeSel(int mode); #endregion THERMO high level data diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index 9ea14c9..a346610 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -2931,7 +2931,40 @@ namespace CMS_CORE_Library.S7Net return NO_ERROR; } + /// + /// Request for mode selection via strobe + /// + /// 1: MAN, 2: AUTO, 3: SETUP + /// + public override CmsError PLC_WModeSel(int mode) + { + // se update --> scrivo strobe comando update... + if (mode == 1) + { + // Call confirm update + CmsError cmsError = PLC_WStrobe(REQ_MODE_ACK, REQ_MODE_STROBE, 6); + if (cmsError.IsError()) + return cmsError; + } + else + if (mode == 2) + { + // Call confirm update + CmsError cmsError = PLC_WStrobe(REQ_MODE_ACK, REQ_MODE_STROBE, 5); + if (cmsError.IsError()) + return cmsError; + } + else + if (mode == 3) + { + // Call confirm update + CmsError cmsError = PLC_WStrobe(REQ_MODE_ACK, REQ_MODE_STROBE, 7); + if (cmsError.IsError()) + return cmsError; + } + return NO_ERROR; + } #endregion @@ -4928,6 +4961,10 @@ namespace CMS_CORE_Library.S7Net internal static MEMORY_CELL PARAMETER_EDIT_ACK = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 0, 2); internal static MEMORY_CELL PARAMETER_EDIT_STROBE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 2, 2); + // Mode request strobe/ack + internal static MEMORY_CELL REQ_MODE_ACK = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 0, 2); + internal static MEMORY_CELL REQ_MODE_STROBE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 2, 2); + // strobe received from PLC internal static MEMORY_CELL REQ_CONF_STROBE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 0, 2); internal static MEMORY_CELL REQ_CONF_ACK = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 2, 2);