diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs index 1d486f0..2354e4a 100644 --- a/CMS_CORE_Library/NcThermo.cs +++ b/CMS_CORE_Library/NcThermo.cs @@ -636,9 +636,11 @@ namespace CMS_CORE_Library /// /// Write recipe updated MULTIPLE parameter /// - /// + /// Oggetto parametri da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente + /// delay in scriottura multi parametri singoli /// - public abstract CmsError PLC_WRecipeParameters(Dictionary newParameters); + public abstract CmsError PLC_WRecipeParameters(Dictionary newParameters, int nMaxParamWrite, int delayParamWrite); /// /// Confirm/Cancel recipe modifications /// diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index cfec263..ab576bd 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -1268,7 +1268,7 @@ namespace CMS_CORE_Library.S7Net // If PLC is true --> reset if (readValue) { - bool forceVal =false; + bool forceVal = false; libraryError = MEM_RWBoolean(W, fixEndian, 0, strobeCell.MemType, strobeCell.Address, strobeByte, alarmBitId, ref forceVal); } @@ -1742,13 +1742,13 @@ namespace CMS_CORE_Library.S7Net return libraryError; #endif - // FIXME TODO --> forzato tutto a true... eventualmente rivedere in futuro x processo caricatore vs processo principale - bool forceValues = true; + // FIXME TODO --> forzato tutto a true... eventualmente rivedere in futuro x processo caricatore vs processo principale + bool forceValues = true; if (forceValues) { processData.Visible = true; - processData.Type = "WORK" ; + processData.Type = "WORK"; processData.IsSelected = true; processData.IsInAlarm = false; processData.CanLoadProgram = true; @@ -2098,9 +2098,11 @@ namespace CMS_CORE_Library.S7Net /// /// Write recipe updated MULTIPLE parameter /// - /// + /// Oggetto parametri da aggiornare (from HMI) + /// num max parametri da scrivere singolarmente, default = 10 + /// delay in scriottura multi parametri singoli, default = 20ms /// - public override CmsError PLC_WRecipeParameters(Dictionary newParameters) + public override CmsError PLC_WRecipeParameters(Dictionary newParameters, int nMaxParamWrite = 10, int delayParamWrite = 20) { // init variabili accessorie CmsError libraryError = NO_ERROR; @@ -2108,9 +2110,9 @@ namespace CMS_CORE_Library.S7Net int memIndex = 0; int packSize = 20; - // 2020.08.07 - // limite a 5 parametri x scrivere tutto (era 30) - bool writeSingle = newParameters.Count < 5; + + // 2020.09.03: ricevuto da chiamata, dovrebbe essere 5 parametri x scrivere tutto (era 30 prima di 2008.08.07) + bool writeSingle = newParameters.Count < nMaxParamWrite; // leggo da PLC a array di byte di appoggio... libraryError = MEM_RWByteList(R, 0, PARAMETER_DATA.MemType, PARAMETER_DATA.Address, PARAMETER_DATA.SubAddress, 0, PARAMETER_DATA.Size, ref currMem); @@ -2143,6 +2145,8 @@ namespace CMS_CORE_Library.S7Net libraryError = MEM_RWByteList(W, 0, PARAMETER_DATA.MemType, PARAMETER_DATA.Address, PARAMETER_DATA.SubAddress + packSize * (currParam.Id - 1) + 2, 0, 4, ref newMem); if (libraryError.IsError()) return libraryError; + // attendo x sicurezza... + Thread.Sleep(delayParamWrite); } else {