More fix for avoiding PLC write error for recipe

This commit is contained in:
Samuele Locatelli
2020-09-03 12:01:48 +02:00
parent 2bba7adafd
commit 69ae63f60f
2 changed files with 13 additions and 7 deletions
+4 -2
View File
@@ -636,9 +636,11 @@ namespace CMS_CORE_Library
/// <summary>
/// Write recipe updated MULTIPLE parameter
/// </summary>
/// <param name="updtParam"></param>
/// <param name="newParameters">Oggetto parametri da aggiornare (from HMI)</param>
/// <param name="nMaxParamWrite">num max parametri da scrivere singolarmente</param>
/// <param name="delayParamWrite">delay in scriottura multi parametri singoli</param>
/// <returns></returns>
public abstract CmsError PLC_WRecipeParameters(Dictionary<int, int> newParameters);
public abstract CmsError PLC_WRecipeParameters(Dictionary<int, int> newParameters, int nMaxParamWrite, int delayParamWrite);
/// <summary>
/// Confirm/Cancel recipe modifications
/// </summary>
+9 -5
View File
@@ -2098,9 +2098,11 @@ namespace CMS_CORE_Library.S7Net
/// <summary>
/// Write recipe updated MULTIPLE parameter
/// </summary>
/// <param name="updtParam"></param>
/// <param name="newParameters">Oggetto parametri da aggiornare (from HMI)</param>
/// <param name="nMaxParamWrite">num max parametri da scrivere singolarmente</param>
/// <param name="delayParamWrite">delay in scriottura multi parametri singoli</param>
/// <returns></returns>
public override CmsError PLC_WRecipeParameters(Dictionary<int, int> newParameters)
public override CmsError PLC_WRecipeParameters(Dictionary<int, int> newParameters, int nMaxParamWrite, int delayParamWrite)
{
// 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
{