Conf parameters per gestione scrittura recipe
This commit is contained in:
@@ -3,6 +3,7 @@ using CMS_CORE_Library.Models;
|
||||
using CMS_CORE_Library.S7Net;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Thermo.Active.Database.Controllers;
|
||||
@@ -53,6 +54,31 @@ namespace Thermo.Active.NC
|
||||
/// </summary>
|
||||
public static LiveData RecipeLiveData = new LiveData();
|
||||
|
||||
/// <summary>
|
||||
/// Max number of param writable as single operation
|
||||
/// </summary>
|
||||
public int nMaxParamWrite
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 5;
|
||||
int.TryParse(ConfigurationManager.AppSettings["nMaxParamWrite"], out answ);
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Delay between single param write operation
|
||||
/// </summary>
|
||||
public int delayParamWrite
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 5;
|
||||
int.TryParse(ConfigurationManager.AppSettings["delayParamWrite"], out answ);
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
public NcAdapter() =>
|
||||
// Choose NC
|
||||
numericalControl = SetNumericalControl();
|
||||
@@ -388,7 +414,7 @@ namespace Thermo.Active.NC
|
||||
}
|
||||
}
|
||||
// se si in questo caso scrivo configurazione attuale...
|
||||
WriteRecipeParams(updtRecipe);
|
||||
WriteRecipeParams(updtRecipe, nMaxParamWrite, delayParamWrite);
|
||||
// Ack !
|
||||
libraryError = numericalControl.PLC_WAckConfRecipeRequest();
|
||||
if (libraryError.IsError())
|
||||
@@ -1780,9 +1806,11 @@ namespace Thermo.Active.NC
|
||||
/// <summary>
|
||||
/// Recipe Parameters write to PLC (only SetpointHMI)
|
||||
/// </summary>
|
||||
/// <param name="updtRecipe"></param>
|
||||
/// <param name="updtRecipe">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 CmsError WriteRecipeParametersToPLC(Dictionary<string, DTORecipeParam> updtRecipe)
|
||||
public CmsError WriteRecipeParametersToPLC(Dictionary<string, DTORecipeParam> updtRecipe, int nMaxParamWrite, int delayParamWrite)
|
||||
{
|
||||
Dictionary<int, int> newParameters = new Dictionary<int, int>();
|
||||
// solo x S7...
|
||||
@@ -1794,7 +1822,7 @@ namespace Thermo.Active.NC
|
||||
newParameters.Add(item.Value.Id, (int)(item.Value.SetpointHMI * item.Value.ScaleFactor));
|
||||
}
|
||||
// scrivo!
|
||||
CmsError libraryError = numericalControl.PLC_WRecipeParameters(newParameters);
|
||||
CmsError libraryError = numericalControl.PLC_WRecipeParameters(newParameters, nMaxParamWrite, delayParamWrite);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
}
|
||||
@@ -2264,10 +2292,12 @@ namespace Thermo.Active.NC
|
||||
/// Scrive tutti i parametri della ricetta indicati
|
||||
/// </summary>
|
||||
/// <param name="updtRecipe">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 CmsError WriteRecipeParams(Dictionary<string, DTORecipeParam> updtRecipe)
|
||||
public CmsError WriteRecipeParams(Dictionary<string, DTORecipeParam> updtRecipe, int nMaxParamWrite, int delayParamWrite)
|
||||
{
|
||||
CmsError libraryError = WriteRecipeParametersToPLC(updtRecipe);
|
||||
CmsError libraryError = WriteRecipeParametersToPLC(updtRecipe, nMaxParamWrite, delayParamWrite);
|
||||
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
<add key="enableDirectoryBrowsing" value="true" />
|
||||
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||
<add key="ServerServiceName" value="MariaDB" />
|
||||
<add key="nMaxParamWrite" value="5" />
|
||||
<add key="delayParamWrite" value="10" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<compilation debug="true" targetFramework="4.6.2" />
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using CMS_CORE_Library.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
@@ -118,8 +119,8 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
|
||||
if (updtRecipe.Count > 0)
|
||||
{
|
||||
// scrivo sul PLC
|
||||
ncAdapter.WriteRecipeParams(updtRecipe);
|
||||
// scrivo sul PLC con i parametri specificati x ritardo/raggruppamento
|
||||
ncAdapter.WriteRecipeParams(updtRecipe, ncAdapter.nMaxParamWrite, ncAdapter.delayParamWrite);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
@@ -621,7 +622,7 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
}
|
||||
|
||||
// write to PLC
|
||||
checkError = ncAdapter.WriteRecipeParams(updtRecipe);
|
||||
checkError = ncAdapter.WriteRecipeParams(updtRecipe, ncAdapter.nMaxParamWrite, ncAdapter.delayParamWrite);
|
||||
if (checkError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"WriteCurrentRecipeToPlc | WriteRecipeParams error | {checkError.exception}");
|
||||
|
||||
Reference in New Issue
Block a user