From 9b2e741992a1c58ff4b95a4706c4ca53feaaba4c Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 5 Feb 2021 12:23:50 +0100 Subject: [PATCH] modifica metodi x scrittura sul PLC --- CMS_CORE_Library/NcThermo.cs | 37 ++++++++++ CMS_CORE_Library/S7Net/Nc_S7Net.cs | 104 ++++++++++++++++++++++++++++- 2 files changed, 140 insertions(+), 1 deletion(-) diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs index 52124f4..f46acf5 100644 --- a/CMS_CORE_Library/NcThermo.cs +++ b/CMS_CORE_Library/NcThermo.cs @@ -808,6 +808,43 @@ namespace CMS_CORE_Library /// Indicates if values are forced by UI /// Values forced by UI public abstract CmsError PLC_RIOChannelsVal(ref ThermoModels.ChanIOVal currThermoIOVal, ref ThermoModels.ChanIOFor currThermoIOFor, ref ThermoModels.ChanIOValFor currThermoIOValFor); + /// + /// Write MULTIPLE Digital Out values (+ force) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public abstract CmsError PLC_W_IO_DO_Val(Dictionary newValues, int nMaxParamWrite, int delayParamWrite); + /// + /// Write MULTIPLE Analog Out values (+ force) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public abstract CmsError PLC_W_IO_AO_Val(Dictionary newValues, int nMaxParamWrite, int delayParamWrite); + /// + /// Reset MULTIPLE Digital Out FORCED Status (bitmap) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public abstract CmsError PLC_W_IO_DO_Reset(Dictionary newValues, int nMaxParamWrite, int delayParamWrite); + /// + /// Reset MULTIPLE Digital Out FORCED Status (bitmap) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public abstract CmsError PLC_W_IO_AO_Reset(Dictionary newValues, int nMaxParamWrite, int delayParamWrite); + /// + /// Reset ALL DO / AO forced bitmap + /// + /// + public abstract CmsError PLC_W_IO_ResetAll(); #endregion THERMO high level data diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index 45203ab..7f6633d 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -3749,7 +3749,7 @@ namespace CMS_CORE_Library.S7Net // copio liste in output... currThermoIOVis = ThermoIOVis; - + // esco return currError; } @@ -3899,6 +3899,108 @@ namespace CMS_CORE_Library.S7Net return libraryError; } + + /// + /// Write MULTIPLE Digital Out values (+ force) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public override CmsError PLC_W_IO_DO_Val(Dictionary newValues, int nMaxParamWrite, int delayParamWrite) + { + CmsError libraryError = NO_ERROR; + + + // leggo valori attuali + + // aggiorno valori ricevuti + + // scrivo valori + + // scrivo forced + + return libraryError; + } + /// + /// Write MULTIPLE Analog Out values (+ force) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public override CmsError PLC_W_IO_AO_Val(Dictionary newValues, int nMaxParamWrite, int delayParamWrite) + { + CmsError libraryError = NO_ERROR; + + // leggo valori attuali + + // aggiorno valori ricevuti + + // scrivo valori + + // scrivo forced + + return libraryError; + } + /// + /// Write MULTIPLE Digital Out FORCED Status (bitmap) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public override CmsError PLC_W_IO_DO_Reset(Dictionary newValues, int nMaxParamWrite, int delayParamWrite) + { + CmsError libraryError = NO_ERROR; + + return libraryError; + } + /// + /// Write MULTIPLE Digital Out FORCED Status (bitmap) + /// + /// Oggetto valori da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli + /// + public override CmsError PLC_W_IO_AO_Reset(Dictionary newValues, int nMaxParamWrite, int delayParamWrite) + { + CmsError libraryError = NO_ERROR; + + return libraryError; + } + /// + /// Reset ALL DO / AO forced bitmap + /// + /// + public override CmsError PLC_W_IO_ResetAll() + { + CmsError libraryError = NO_ERROR; + + List writeValuesDO = new List(); + List writeValuesAO = new List(); + // imposto a zero... + for (int i = 0; i < IO_DO_FORCE.Size; i++) + { + writeValuesDO.Add(0); + } + for (int i = 0; i < IO_AO_FORCE.Size; i++) + { + writeValuesAO.Add(0); + } + + // leggo da PLC a array di byte di appoggio x visibilità DO... + libraryError = MEM_RWWordList(W, 0, IO_DO_FORCE.MemType, IO_DO_FORCE.Address, IO_DO_FORCE.SubAddress, IO_DO_FORCE.Size, ref writeValuesDO); + if (libraryError.IsError()) + return libraryError; + // leggo da PLC a array di byte di appoggio x visibilità AO... + libraryError = MEM_RWWordList(W, 0, IO_AO_FORCE.MemType, IO_AO_FORCE.Address, IO_AO_FORCE.SubAddress, IO_AO_FORCE.Size, ref writeValuesAO); + if (libraryError.IsError()) + return libraryError; + + return libraryError; + } + #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////