diff --git a/IOB-UT-NEXT/Config/Base/CounterDto.cs b/IOB-UT-NEXT/Config/Base/CounterDto.cs
index f91fda64..262e5142 100644
--- a/IOB-UT-NEXT/Config/Base/CounterDto.cs
+++ b/IOB-UT-NEXT/Config/Base/CounterDto.cs
@@ -21,6 +21,11 @@ namespace IOB_UT_NEXT.Config.Base
///
public bool EnableSetPzReq { get; set; } = false;
+ ///
+ /// Valore massimo incremento contapezzi (in %)
+ ///
+ public int MaxIncrPzCountPerc { get; set; } = 200;
+
///
/// Abilita reset contapezzi a INIZIO setup
///
@@ -51,5 +56,10 @@ namespace IOB_UT_NEXT.Config.Base
///
public int SendPzcBlockMax { get; set; } = 100;
+ ///
+ /// Modalità set PzCount (contapezzi parziale) tra DIRECT / TASK
+ ///
+ public string SendPzCountMode { get; set; } = "";
+
}
}
diff --git a/IOB-UT-NEXT/Config/Base/DeviceDto.cs b/IOB-UT-NEXT/Config/Base/DeviceDto.cs
index ee539419..862a75a3 100644
--- a/IOB-UT-NEXT/Config/Base/DeviceDto.cs
+++ b/IOB-UT-NEXT/Config/Base/DeviceDto.cs
@@ -93,6 +93,11 @@ namespace IOB_UT_NEXT.Config.Base
///
public string NumOdlMode { get; set; } = "";
+ ///
+ /// Timeout in sec x dichiarare Poweroff (tipicamente IOB PING)
+ ///
+ public int PoweroffTimeOutSec { get; set; } = 100;
+
///
/// Modalità gestione lettura cadenza
///
diff --git a/IOB-UT-NEXT/Config/IobConfTree.cs b/IOB-UT-NEXT/Config/IobConfTree.cs
index 4f569638..cc4d620d 100644
--- a/IOB-UT-NEXT/Config/IobConfTree.cs
+++ b/IOB-UT-NEXT/Config/IobConfTree.cs
@@ -123,7 +123,7 @@ namespace IOB_UT_NEXT.Config
MaxErroriCheck = fIni.ReadInteger("OPTPAR", "MAX_ERR_CHECK", maxErrCheck),
MaxPingRetry = fIni.ReadInteger("OPTPAR", "MAX_PING_RETRY", 5),
MinDeltaSec = fIni.ReadInteger("IOB", "MinDeltaSec", 6),
- MultiIobList= fIni.ReadString("OPTPAR", "IOB_MULTI_CNAME", ""),
+ MultiIobList = fIni.ReadString("OPTPAR", "IOB_MULTI_CNAME", ""),
RelVers = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}",
ResetAlarmOnStart = bool.Parse(fIni.ReadString("OPTPAR", "SEND_ALARM_RESET", "false")),
SenMachineConf = bool.Parse(fIni.ReadString("OPTPAR", "SEND_MACHINE_CONF", "true")),
@@ -258,6 +258,7 @@ namespace IOB_UT_NEXT.Config
MinRespTimeMs = fIni.ReadInteger("OPTPAR", "MIN_RESP_TIME_MS", 5),
NumArtMode = fIni.ReadString("OPTPAR", "SET_NUM_ART", ""),
NumOdlMode = fIni.ReadString("OPTPAR", "SET_NUM_COM", ""),
+ PoweroffTimeOutSec= fIni.ReadInteger("OPTPAR", "POWEROFF_TIMEOUT_SEC", 120),
PzCadMode = fIni.ReadString("OPTPAR", "PZCAD_MODE", ""),
PzCountDelay = utils.CRI("pzCountDelay"),
PzCountMode = fIni.ReadString("OPTPAR", "PZCOUNT_MODE", ""),
@@ -283,6 +284,7 @@ namespace IOB_UT_NEXT.Config
exclOptPar.Add("MAX_TRY_PING");
exclOptPar.Add("MIN_RESP_TIME_MS");
exclOptPar.Add("NO_PING");
+ exclOptPar.Add("POWEROFF_TIMEOUT_SEC");
exclOptPar.Add("PZCAD_MODE");
exclOptPar.Add("PZCOUNT_MODE");
exclOptPar.Add("PZREQ_MODE");
@@ -341,11 +343,13 @@ namespace IOB_UT_NEXT.Config
newConfObj.Counters.EnabSendPzcBlock = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_SEND_PZC_BLOCK", "false"));
newConfObj.Counters.EnableSetPzCount = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_CNT", "false"));
newConfObj.Counters.EnableSetPzReq = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_REQ", "false"));
+ newConfObj.Counters.MaxIncrPzCountPerc = fIni.ReadInteger("OPTPAR", "MAX_PZ_INCR_PERC", 300);
newConfObj.Counters.ResetOnProdEnd = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_RESET_ENDPROD", "false"));
newConfObj.Counters.ResetOnSetupStart = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_RESET", "false"));
newConfObj.Counters.ResetOnSetupStop = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_RESET_stopSetup", "false"));
- newConfObj.Counters.SendPzcBlockMin = int.Parse(fIni.ReadString("OPTPAR", "MIN_SEND_PZC_BLOCK", "0"));
- newConfObj.Counters.SendPzcBlockMax = int.Parse(fIni.ReadString("OPTPAR", "MAX_SEND_PZC_BLOCK", "100"));
+ newConfObj.Counters.SendPzcBlockMin = fIni.ReadInteger("OPTPAR", "MIN_SEND_PZC_BLOCK", 0);
+ newConfObj.Counters.SendPzcBlockMax = fIni.ReadInteger("OPTPAR", "MAX_SEND_PZC_BLOCK", 100);
+ newConfObj.Counters.SendPzCountMode = fIni.ReadString("OPTPAR", "SEND_PZCNT_MODE", "DIRECT");
exclOptPar.Add("ENABLE_SEND_PZC_BLOCK");
exclOptPar.Add("ENABLE_PZ_CNT");
@@ -353,8 +357,40 @@ namespace IOB_UT_NEXT.Config
exclOptPar.Add("ENABLE_PZ_RESET_ENDPROD");
exclOptPar.Add("ENABLE_PZ_RESET");
exclOptPar.Add("ENABLE_PZ_RESET_stopSetup");
- exclOptPar.Add("MIN_SEND_PZC_BLOCK");
+ exclOptPar.Add("MAX_PZ_INCR_PERC");
exclOptPar.Add("MAX_SEND_PZC_BLOCK");
+ exclOptPar.Add("MIN_SEND_PZC_BLOCK");
+ exclOptPar.Add("SEND_PZCNT_MODE");
+
+ // FTP
+ string ftpServer = fIni.ReadString("OPTPAR", "FTP_SERVER", "");
+ if (!string.IsNullOrEmpty(ftpServer))
+ {
+ if(newConfObj.Special.FtpConf==null)
+ {
+ newConfObj.Special.FtpConf = new FtpDto()
+ {
+ Server=ftpServer,
+ User = fIni.ReadString("OPTPAR", "FTP_USER", ""),
+ Passwd = fIni.ReadString("OPTPAR", "FTP_PWD", ""),
+ CertValue = fIni.ReadString("OPTPAR", "FTP_CERT", ""),
+ CsvAddHeader = bool.Parse(fIni.ReadString("OPTPAR", "CSV_ADD_HEADER", "false")),
+ SkipCert = bool.Parse(fIni.ReadString("OPTPAR", "FTP_SKIP", "true")),
+ DirLocal = fIni.ReadString("OPTPAR", "FTP_LOC_DIR", ""),
+ DirRemote = fIni.ReadString("OPTPAR", "FTP_REM_DIR", ""),
+ };
+ // continuo col resto
+ }
+ }
+ exclOptPar.Add("FTP_SERVER");
+ exclOptPar.Add("FTP_USER");
+ exclOptPar.Add("FTP_PWD");
+ exclOptPar.Add("FTP_CERT");
+ exclOptPar.Add("CSV_ADD_HEADER");
+ exclOptPar.Add("FTP_SKIP");
+ exclOptPar.Add("FTP_LOC_DIR");
+ exclOptPar.Add("FTP_REM_DIR");
+
// allarmi...
string jsonAlarms = fIni.ReadString("OPTPAR", "ALARM_CONF", "");
@@ -912,7 +948,11 @@ namespace IOB_UT_NEXT.Config
}
else
{
+#if DEBUG
lgError($"OptParGet | key not found: {key}");
+#else
+ lgDebug($"OptParGet | key not found: {key}");
+#endif
}
return answ;
}
diff --git a/IOB-UT-NEXT/Config/Special/FtpDto.cs b/IOB-UT-NEXT/Config/Special/FtpDto.cs
new file mode 100644
index 00000000..455fe93c
--- /dev/null
+++ b/IOB-UT-NEXT/Config/Special/FtpDto.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IOB_UT_NEXT.Config.Special
+{
+ public class FtpDto
+ {
+ #region Public Properties
+
+ ///
+ /// indirizzo server FTP (IP/URI)
+ ///
+ public string Server { get; set; } = "";
+
+ ///
+ /// Utente x connessione FTP
+ ///
+ public string User { get; set; } = "";
+
+ ///
+ /// Password x connessione FTP
+ ///
+ public string Passwd { get; set; } = "";
+
+ ///
+ /// Indica se aggiungere header ai CSV trasmessi via FTP
+ ///
+ public bool CsvAddHeader { get; set; } = true;
+
+ ///
+ /// Certificato (firma) per connessione FTP
+ ///
+ public string CertValue { get; set; } = "";
+
+ ///
+ /// Indica se saltare la validazione del certificato FTP
+ ///
+ public bool SkipCert { get; set; } = true;
+
+ ///
+ /// Directory di lavoro Remota
+ ///
+ public string DirRemote { get; set; } = "";
+ ///
+ /// Directory di lavoro Locale
+ ///
+ public string DirLocal { get; set; } = "";
+
+ #endregion Public Properties
+ }
+}
\ No newline at end of file
diff --git a/IOB-UT-NEXT/Config/Special/SpecializedDto.cs b/IOB-UT-NEXT/Config/Special/SpecializedDto.cs
index 10a9a682..e7ad0c98 100644
--- a/IOB-UT-NEXT/Config/Special/SpecializedDto.cs
+++ b/IOB-UT-NEXT/Config/Special/SpecializedDto.cs
@@ -14,9 +14,9 @@ namespace IOB_UT_NEXT.Config.Special
{
///
- /// Configurazione specifica per gestione file esterni (es Saim x Giacovelli)
+ /// Configurazione specifica FANUC/Mitsubishi (ove applicabile)
///
- public FileDto FileConf { get; set; }
+ public MemBankDto BankConf { get; set; }
#if false
///
@@ -26,9 +26,14 @@ namespace IOB_UT_NEXT.Config.Special
#endif
///
- /// Configurazione specifica FANUC/Mitsubishi (ove applicabile)
+ /// Configurazione specifica per gestione file esterni (es Saim x Giacovelli)
///
- public MemBankDto BankConf { get; set; }
+ public FileDto FileConf { get; set; }
+
+ ///
+ /// Configurazione specifica FTP
+ ///
+ public FtpDto FtpConf { get; set; }
///
/// Parametri speciali per Modbus
diff --git a/IOB-UT-NEXT/IOB-UT-NEXT.csproj b/IOB-UT-NEXT/IOB-UT-NEXT.csproj
index 999fe999..9ace7b1e 100644
--- a/IOB-UT-NEXT/IOB-UT-NEXT.csproj
+++ b/IOB-UT-NEXT/IOB-UT-NEXT.csproj
@@ -173,6 +173,7 @@
+
diff --git a/IOB-WIN-FORM/Iob/Generic.Protected.cs b/IOB-WIN-FORM/Iob/Generic.Protected.cs
index 46463fc4..3c60bff0 100644
--- a/IOB-WIN-FORM/Iob/Generic.Protected.cs
+++ b/IOB-WIN-FORM/Iob/Generic.Protected.cs
@@ -309,13 +309,6 @@ namespace IOB_WIN_FORM.Iob
///
protected DateTime prgStarted = DateTime.Now;
-#if false
- ///
- /// Modalità cambio ODL
- ///
- protected string CHANGE_ODL_MODE = "";
-#endif
-
///
/// Ritardo minimo x invio contapezzi
///
@@ -1749,56 +1742,48 @@ namespace IOB_WIN_FORM.Iob
protected virtual bool iobSendFTP(string folderDir)
{
bool answ = false;
- //leggo CONF
- string ftpServ = getOptPar("FTP_SERVER");
- string ftpUser = getOptPar("FTP_USER");
- string ftpPass = getOptPar("FTP_PWD");
- string ftpCert = getOptPar("FTP_CERT");
- string doSkip = getOptPar("FTP_SKIP");
- string remDir = getOptPar("FTP_REM_DIR");
- string locDir = getOptPar("FTP_LOC_DIR");
+ // recupero CONF
+ var ftpConf = IOBConfFull.Special.FtpConf;
// procedo SE TROVO conf...
- if (string.IsNullOrEmpty($"{ftpServ}{ftpUser}{ftpPass}"))
+ if (string.IsNullOrEmpty($"{ftpConf.Server}{ftpConf.User}{ftpConf.Passwd}"))
{
- lgError($"Impossibile eseguire iobSendFTP x mancanza parametri | ftpServ: {ftpServ} | ftpUser: {ftpUser} | ftpPass: {ftpPass}");
+ lgError($"Impossibile eseguire iobSendFTP x mancanza parametri | ftpServ: {ftpConf.Server} | ftpUser: {ftpConf.User} | ftpPass: {ftpConf.Passwd}");
}
else
{
- bool ftpSkip = false;
- bool.TryParse(doSkip, out ftpSkip);
- var ftpClient = new Manager(ftpServ, ftpUser, ftpPass, ftpCert, ftpSkip);
+ var ftpClient = new Manager(ftpConf.Server, ftpConf.User, ftpConf.Passwd, ftpConf.CertValue, ftpConf.SkipCert);
var testServer = ftpClient.ServerOk();
if (testServer)
{
- lgInfo($"FTP: server found at {ftpServ}");
+ lgInfo($"FTP: server found at {ftpConf.Server}");
var srvType = ftpClient.ServerType();
lgInfo($"FTP Server type: {srvType}");
- var preTest = ftpClient.DirExists(remDir);
+ var preTest = ftpClient.DirExists(ftpConf.DirRemote);
if (!preTest)
{
- var dirCreate = ftpClient.CreateDir(remDir);
- lgInfo($"FTP: created remote dir {remDir}");
+ var dirCreate = ftpClient.CreateDir(ftpConf.DirRemote);
+ lgInfo($"FTP: created remote dir {ftpConf.DirRemote}");
}
// test directory...
string basePath = Application.StartupPath;
- string localPath = Path.Combine(basePath, locDir);
+ string localPath = Path.Combine(basePath, ftpConf.DirLocal);
lgInfo($"basePath: {basePath} | localPath: {localPath}");
var fileList = Directory.GetFiles(localPath, "*.csv");
int numfile = 0;
foreach (var file in fileList)
{
string fName = file.Split('\\').Last();
- string remName = $"{remDir}\\{fName}";
+ string remName = $"{ftpConf.DirRemote}\\{fName}";
ftpClient.SendFile(file, remName);
numfile++;
}
var dirUploaded = (numfile == fileList.Count());
if (dirUploaded)
{
- lgInfo($"FTP: uploaded dir content {locDir} --> {remDir}");
+ lgInfo($"FTP: uploaded dir content {ftpConf.DirLocal} --> {ftpConf.DirRemote}");
}
// se ok --> sposto invio
DateTime adesso = DateTime.Now;
@@ -1826,17 +1811,14 @@ namespace IOB_WIN_FORM.Iob
protected virtual bool iobWriteLocalCSV()
{
bool answ = false;
+ // conf ftp
+ var ftpConf = IOBConfFull.Special.FtpConf;
// salvo articoli
- string locDir = getOptPar("FTP_LOC_DIR");
- string sAddHeader = getOptPar("CSV_ADD_HEADER");
- bool addHeader = false;
- if (!string.IsNullOrEmpty(sAddHeader))
- {
- bool.TryParse(sAddHeader, out addHeader);
- }
+ string locDir = ftpConf.DirLocal;
+ bool addHeader = ftpConf.CsvAddHeader;
string basePath = Application.StartupPath;
string tempDir = Path.Combine(basePath, locDir);
- lgInfo($"iobWriteLocalCSV | locDir: {locDir} | sAddHeader: {sAddHeader} | tempDir: {tempDir}");
+ lgInfo($"iobWriteLocalCSV | locDir: {locDir} | addHeader: {addHeader} | tempDir: {tempDir}");
baseUtils.checkDir(tempDir);
string filePath = Path.Combine(tempDir, "articoli.csv");
answ = DataExport.SaveToCsv(ListaArticoli, filePath, addHeader);
@@ -2005,44 +1987,16 @@ namespace IOB_WIN_FORM.Iob
maxSendPzCountBlock = IOBConfFull.Counters.SendPzcBlockMax;
lgInfo("loadMemConf.02");
minRespTimeMs = IOBConfFull.Device.MinRespTimeMs;
-#if false
- currPar = getOptPar("MIN_RESP_TIME_MS");
- if (!string.IsNullOrEmpty(currPar))
- {
- int.TryParse(currPar, out minRespTimeMs);
- }
-#endif
-
// gruppo macchina
CodGruppoIob = IOBConfFull.General.CodGruppoIob;
-#if false
- CodGruppoIob = getOptPar("CodGruppoIob");
- CodGruppoIob = string.IsNullOrEmpty(CodGruppoIob) ? "ND-00" : CodGruppoIob;
-
-#endif
// gestione completa PODL
EnabelPodlManFull = IOBConfFull.General.EnabelPodlManFull;
-#if false
- string sEnabelPodlManFull = getOptPar("EnabelPodlManFull");
- if (!string.IsNullOrEmpty(sEnabelPodlManFull))
- {
- bool.TryParse(sEnabelPodlManFull, out EnabelPodlManFull);
- }
-#endif
// abilitazione invio WDST disabilitazione controllo range valori DynData
disableWdst = IOBConfFull.General.DisabWDST;
// disabilitazione controllo range valori DynData
disDynDataRangeCheck = IOBConfFull.FluxLog.DisDynDataRangeCheck;
-#if false
- if (!string.IsNullOrEmpty(getOptPar("disDynDataRangeCheck")))
- {
- bool checkDis = false;
- bool.TryParse(getOptPar("disDynDataRangeCheck"), out checkDis);
- disDynDataRangeCheck = checkDis;
- }
-#endif
lgInfo("loadMemConf.03");
// se ho info in IOBConfFull uso quello...
@@ -2069,13 +2023,6 @@ namespace IOB_WIN_FORM.Iob
try
{
memMap = JsonConvert.DeserializeObject(jsonData);
-#if false
- setupMemMap();
- setupOptMemPar();
- setupFileDecod();
- setupSpecialParams();
- lgInfo("loadMemConf.05");
-#endif
}
catch (Exception exc)
{
@@ -2119,53 +2066,6 @@ namespace IOB_WIN_FORM.Iob
}
lgInfo("loadMemConf | Fine setup allarmi");
}
-
-#if false
- string jsonAlarms = getOptPar("ALARM_CONF");
- if (!string.IsNullOrEmpty(jsonAlarms))
- {
- string jsonFileName = $"{Application.StartupPath}\\DATA\\CONF\\{jsonAlarms}";
- lgInfoStartup($"Apertura file {jsonFileName}");
- StreamReader reader = new StreamReader(jsonFileName);
- string jsonData = reader.ReadToEnd();
- reader.Dispose();
- if (!string.IsNullOrEmpty(jsonData))
- {
- lgInfoStartup($"File json ALLARMI composto da {jsonData.Length} caratteri");
- try
- {
- lgInfo("loadMemConf | Inizio setup allarmi");
- alarmMaps = JsonConvert.DeserializeObject>(jsonData);
- setupAlarmMap();
- // leggo il tipo gestione allarmi..
- string sAlarmType = getOptJsonKVP("alarmType");
- if (!string.IsNullOrEmpty(sAlarmType))
- {
- alarmType = (AlarmBlockType)Enum.Parse(typeof(AlarmBlockType), sAlarmType);
- }
- string sAlarmLMin = getOptJsonKVP("alarmLevelMin");
- if (!string.IsNullOrEmpty(sAlarmLMin))
- {
- alarmLevelMin = (AlarmLevel)Enum.Parse(typeof(AlarmLevel), sAlarmLMin);
- }
- lgInfo("loadMemConf | Fine setup allarmi");
- }
- catch (Exception exc)
- {
- lgError($"Eccezione in decodifica conf json degli ALLARMI{Environment.NewLine}{exc}");
- }
- }
- else
- {
- lgError("Errore in loadMemConf: file ALLARMI json vuoto!");
- }
- }
- else
- {
- lgInfoStartup("loadMemConf: non trovata opzione ALARM_CONF in file INI");
- }
-#endif
-
vetoReloadConf = DateTime.Now.AddMinutes(15);
// loggo
lgInfo($"loadMemConf.07, veto reload until {vetoReloadConf}");
@@ -4386,17 +4286,6 @@ namespace IOB_WIN_FORM.Iob
private void fixDemFactDynData()
{
demFactDynData = IOBConfFull.FluxLog.DemFactDynData;
-#if false
- var rawDemFact = getOptPar("DEM_FACT_DYN_DATA");
- if (string.IsNullOrEmpty(rawDemFact))
- {
- demFactDynData = 1;
- }
- else
- {
- int.TryParse(rawDemFact, out demFactDynData);
- }
-#endif
}
///
@@ -4854,56 +4743,12 @@ namespace IOB_WIN_FORM.Iob
vetoQueueIn = IOBConfFull.Device.StartupVetoQueueIN;
// fix slow data
enableSlowData = IOBConfFull.FluxLog.EnableSlowData;
-#if false
- string VETO_QUEUE_IN = getOptPar("VETO_QUEUE_IN");
- if (!string.IsNullOrEmpty(VETO_QUEUE_IN))
- {
- int.TryParse(VETO_QUEUE_IN, out vetoQueueIn);
- }
- string ENABLE_SLOW_DATA = getOptPar("ENABLE_SLOW_DATA");
- if (!string.IsNullOrEmpty(ENABLE_SLOW_DATA))
- {
- bool.TryParse(getOptPar("ENABLE_SLOW_DATA"), out enableSlowData);
- }
-#endif
-
-#if false
- // modalità change ODL
- CHANGE_ODL_MODE = "TIME";
- if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
- {
- CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
- }
-#endif
ENABLE_MEM_REWRITE = IOBConfFull.Device.EnabMemRewrite;
GLOBAL_DBAND = IOBConfFull.FluxLog.GlobalDeadBand;
enabSendMachineConf = IOBConfFull.General.SenMachineConf;
resetAlarmOnStart = IOBConfFull.General.ResetAlarmOnStart;
disableOdl = IOBConfFull.Odl.DisableOdl;
-
-#if false
- if (!string.IsNullOrEmpty(getOptPar("ENABLE_MEM_REWRITE")))
- {
- bool.TryParse(getOptPar("ENABLE_MEM_REWRITE"), out ENABLE_MEM_REWRITE);
- }
- if (!string.IsNullOrEmpty(getOptPar("GLOBAL_DBAND")))
- {
- float.TryParse(getOptPar("GLOBAL_DBAND"), out GLOBAL_DBAND);
- }
- if (!string.IsNullOrEmpty(getOptPar("SEND_MACHINE_CONF")))
- {
- bool.TryParse(getOptPar("SEND_MACHINE_CONF"), out enabSendMachineConf);
- }
- if (!string.IsNullOrEmpty(getOptPar("SEND_ALARM_RESET")))
- {
- bool.TryParse(getOptPar("SEND_ALARM_RESET"), out resetAlarmOnStart);
- }
- if (!string.IsNullOrEmpty(getOptPar("DISABLE_ODL")))
- {
- bool.TryParse(getOptPar("DISABLE_ODL"), out disableOdl);
- }
-#endif
}
private void svuotaCodaContapezzi()
diff --git a/IOB-WIN-FORM/Iob/Generic.Public.cs b/IOB-WIN-FORM/Iob/Generic.Public.cs
index e43e4baf..52e73e33 100644
--- a/IOB-WIN-FORM/Iob/Generic.Public.cs
+++ b/IOB-WIN-FORM/Iob/Generic.Public.cs
@@ -385,20 +385,7 @@ namespace IOB_WIN_FORM.Iob
///
public int maxPzDeltaPerc
{
- get
- {
- int answ = 250;
- // vera verifica su chiave...
- string MAX_PZ_INCR_PERC = getOptPar("MAX_PZ_INCR_PERC");
- if (!string.IsNullOrEmpty(MAX_PZ_INCR_PERC))
- {
- if (!int.TryParse(MAX_PZ_INCR_PERC, out answ))
- {
- answ = 300;
- }
- }
- return answ;
- }
+ get => IOBConfFull.Counters.MaxIncrPzCountPerc;
}
///
@@ -419,21 +406,6 @@ namespace IOB_WIN_FORM.Iob
}
}
-#if false
- ///
- /// Indica se ping disabilitato da optPar
- ///
- public bool pingDisabled
- {
- get
- {
- bool answ = false;
- bool.TryParse(getOptPar("NO_PING"), out answ);
- return answ;
- }
- }
-#endif
-
///
/// Valore medio del TC rilevato x verifica derive sul delta variazione contapezzi
///
@@ -655,11 +627,7 @@ namespace IOB_WIN_FORM.Iob
// mostro dati variati letti...
displayInData(ref currDispData);
// verifico veto a invio status macchina
-#if false
- string keyName = "VETO_SIG_IN";
- if (getOptPar(keyName).ToUpper() == "TRUE")
-#endif
- if(IOBConfFull.Device.DisabSigIn)
+ if (IOBConfFull.Device.DisabSigIn)
{
lgTrace($"Filtrato accodamento valore da conf IOB | DisabSigIn | [QUEUE-IN] {qEncodeIN}");
}
@@ -1054,7 +1022,6 @@ namespace IOB_WIN_FORM.Iob
{
string fullUrl = "";
string rawSplit = "";
- string IOB_MULTI_CNAME = "";
string[] elencoMulti = null;
try
@@ -1085,8 +1052,7 @@ namespace IOB_WIN_FORM.Iob
if (isMulti)
{
// devo chiamare cambio ODL x OGNI tavola: mi servono i parametri opzionali...
- IOB_MULTI_CNAME = getOptPar("IOB_MULTI_CNAME");
- elencoMulti = IOB_MULTI_CNAME.Split(',');
+ elencoMulti = IOBConfFull.General.MultiIobList.Split(',');
}
// se normale splitto!
if (!isMulti)
@@ -1903,11 +1869,6 @@ namespace IOB_WIN_FORM.Iob
if (isMulti)
{
// devo chiamare cambio ODL x OGNI tavola: mi servono i parametri opzionali...
-#if false
- string IOB_MULTI_CNAME = "";
- IOB_MULTI_CNAME = getOptPar("IOB_MULTI_CNAME");
- elencoMulti = IOB_MULTI_CNAME.Split(',');
-#endif
elencoMulti = IOBConfFull.General.MultiIobList.Split(',');
}
@@ -1935,20 +1896,17 @@ namespace IOB_WIN_FORM.Iob
public void processAutoOdl()
{
bool fatto = false;
- //if (!string.IsNullOrEmpty(getOptPar("AUTO_CHANGE_ODL")))
if (IOBConfFull.Odl.AutoChangeOdl)
{
lgTrace("processAutoOdl | AutoChangeOdl abilitato");
// imposto il veto lettura contapezzi a 1 minuto x iniziare...
dtVetoReadPzCount = DateTime.Now.AddMinutes(delayMinReadPzCount);
- string IOB_MULTI_CNAME = "";
string[] elencoMulti = null;
string fullUrl = "";
if (isMulti)
{
// devo chiamare cambio ODL x OGNI tavola: mi servono i parametri opzionali...
- IOB_MULTI_CNAME = getOptPar("IOB_MULTI_CNAME");
- elencoMulti = IOB_MULTI_CNAME.Split(',');
+ elencoMulti = IOBConfFull.General.MultiIobList.Split(',');
}
DateTime adesso = DateTime.Now;
DateTime inizioOdl = adesso;
@@ -2090,129 +2048,6 @@ namespace IOB_WIN_FORM.Iob
break;
}
-#if false
- if (IOBConfFull.Odl.ChangeOdlMode == "PZCOUNT_RESET")
- {
- /* verifico se sia "armato" il reset cambio ODL, DEVO essere :
- * - NON in produzione
- * - contapezzi ACT < contapezzi LAST
- * */
- lgTrace("processAutoOdl: caso PZCOUNT_RESET");
- if ((!isRunning || forceResetInRun) && pzCountResetted)
- {
- callChangeODL = true;
- lgInfo("Attivato cambio ODL da PZCOUNT_RESET");
- }
- else
- {
- lgInfo($"isRunning: {isRunning} | pzCountResetted: {pzCountResetted} | forceResetInRun: {forceResetInRun} | contapezziIOB: {contapezziIOB} | contapezziPLC: {contapezziPLC}");
- }
- }
- else if (IOBConfFull.Odl.ChangeOdlMode == "DAILY")
- {
- // verifico inizio ODL, se è data di oggi NON eseguo...
- if (currOdlStart().Date < adesso.Date)
- {
- // imposto x prox controllo veto a 10 min
- VetoProcessAutoOdl = adesso.AddMinutes(10);
- // chiamo stored x creare ODL giornalieri alla data...
- string autoOdlRes = utils.callUrl(urlFixDailyOdl);
- fatto = autoOdlRes == "OK";
- }
- }
- else if (IOBConfFull.Odl.ChangeOdlMode == "DAILY_CONF_PZ")
- {
- // verifico inizio ODL, se è data di oggi NON eseguo...
- if (currOdlStart().Date < adesso.Date)
- {
- // imposto x prox controllo veto a 10 min
- VetoProcessAutoOdl = adesso.AddMinutes(10);
- // chiamo stored x creare ODL giornalieri alla data + conferma pezzi...
- string autoOdlRes = utils.callUrl(urlFixDailyOdlConfPzCount);
- fatto = autoOdlRes == "OK";
- }
- }
- else if (IOBConfFull.Odl.ChangeOdlMode == "TIME" || IOBConfFull.Odl.ChangeOdlMode == "SIMUL")
- {
- // imposto x prox controllo veto a 1 min
- VetoProcessAutoOdl = adesso.AddMinutes(1);
- // carico i parametri di configurazione x reset ODL...
- string CHANGE_ODL_HOURS = getOptPar("CHANGE_ODL_HOURS");
- string CHANGE_ODL_IDLE_MIN = getOptPar("CHANGE_ODL_IDLE_MIN");
- if (!string.IsNullOrEmpty(CHANGE_ODL_HOURS) && !string.IsNullOrEmpty(CHANGE_ODL_IDLE_MIN))
- {
- int minOdlDurHours = -1;
- int minPlcIdelMin = -1;
- int.TryParse(CHANGE_ODL_HOURS, out minOdlDurHours);
- int.TryParse(CHANGE_ODL_IDLE_MIN, out minPlcIdelMin);
- // controllo parametri validi
- if (minOdlDurHours > 0 && minPlcIdelMin >= 0)
- {
- // leggo da server inizio ODL... se non multi 1 solo...
- inizioOdl = DateTime.Now;
- rawDataInizio = "";
- if (!isMulti)
- {
- rawDataInizio = callUrl(urlInizioOdlIob, false);
- DateTime.TryParse(rawDataInizio, out inizioOdl);
- }
- else
- {
- DateTime tmpData = DateTime.Now;
- // prendo il + vecchio...
- foreach (var item in elencoMulti)
- {
- fullUrl = $"{urlInizioOdlIob}|{item}";
- rawDataInizio = callUrl(fullUrl, false);
- DateTime.TryParse(rawDataInizio, out tmpData);
- inizioOdl = (tmpData < inizioOdl) ? tmpData : inizioOdl;
- }
- }
- // verifico se sia scaduto...
- if (inizioOdl.AddHours(minOdlDurHours) < adesso)
- {
- string rawIdle = "";
- int idlePeriod = 0;
- if (!isMulti)
- {
- // controllo SE sono fermo (spento o in manuale) per il
- // periodo minimo richiesto...
- rawIdle = callUrl(urlIdleTime, false);
- int.TryParse(rawIdle, out idlePeriod);
- }
- else
- {
- int tmpIdle = 0;
- // prendo il + grande...
- foreach (var item in elencoMulti)
- {
- fullUrl = $"{urlIdleTime}|{item}";
- rawIdle = callUrl(fullUrl, false);
- int.TryParse(rawIdle, out tmpIdle);
- idlePeriod = tmpIdle > idlePeriod ? tmpIdle : idlePeriod;
- }
- }
- if (idlePeriod >= minPlcIdelMin)
- {
- callChangeODL = true;
- }
- }
- }
- // se NON fosse scaduto MA è simulato esegue controllo sul num pezzi da
- // fare, se sfora (RANDOM) > +(50...110)% --> cambia!
- if (!callChangeODL && IOBConfFull.Odl.ChangeOdlMode == "SIMUL")
- {
- var rawCount = callUrl(urlGetNumPzCurrODL, false);
- if (int.TryParse(rawCount, out var numPzReqOdl))
- {
- int limitQty = (numPzReqOdl * rndGen.Next(150, 210)) / 100;
- callChangeODL = contapezziPLC > limitQty;
- }
- }
- }
- }
-#endif
-
// vero processing...
if (callChangeODL)
{
@@ -2341,13 +2176,6 @@ namespace IOB_WIN_FORM.Iob
{
// FixMe Todo: generalizzare parametri nell'obj?
bool enableByApp = utils.CRB("enableDynData");
-#if false
- bool enableByIob = (getOptPar("ENABLE_DYN_DATA") == "TRUE");
- bool sendDynDataRec = (getOptPar("SEND_DYN_DATA_FLOG") == "TRUE");
- bool disableDynData = (getOptPar("DISABLE_DYN_DATA") == "TRUE");
- bool forceSendByIob = (getOptPar("FORCE_DYN_DATA") == "TRUE");
- bool copyDynToProd = (getOptPar("COPY_DYN2PROD_DATA") == "TRUE");
-#endif
Dictionary currDynData = new Dictionary();
if (enableByApp || IOBConfFull.FluxLog.EnableDynData)
@@ -2519,9 +2347,6 @@ namespace IOB_WIN_FORM.Iob
public virtual void processOverride()
{
bool enableByApp = utils.CRB("enableOverrides");
-#if false
- bool enableByIob = (getOptPar("ENABLE_OVERRIDES") == "TRUE");
-#endif
Dictionary currOverride = new Dictionary();
if (enableByApp || IOBConfFull.FluxLog.EnableOverrides)
{
diff --git a/IOB-WIN-FORM/Iob/PingWatchDog.cs b/IOB-WIN-FORM/Iob/PingWatchDog.cs
index 10ed2074..2fec481d 100644
--- a/IOB-WIN-FORM/Iob/PingWatchDog.cs
+++ b/IOB-WIN-FORM/Iob/PingWatchDog.cs
@@ -30,11 +30,7 @@ namespace IOB_WIN_FORM.Iob
// 2023.09.05 imposto anche primo ping e check disconnected...
lastPING = adesso;
lastDisconnCheck = adesso;
- var POWEROFF_TIMEOUT_SEC = getOptPar("POWEROFF_TIMEOUT_SEC");
- if (!string.IsNullOrEmpty(POWEROFF_TIMEOUT_SEC))
- {
- int.TryParse(POWEROFF_TIMEOUT_SEC, out PoweroffTimeoutSec);
- }
+ PoweroffTimeoutSec = IOBConfFull.Device.PoweroffTimeOutSec;
// fix coda ping
PingQueue = new DataQueue("000", "PingQueue", false);
lgDebug($"L'adapter effettuera' PING di controllo all'indirizzo {IOBConfFull.Device.Connect.IpAddr} per forzare stato poweroff dopo {PoweroffTimeoutSec} sec");
diff --git a/IOB-WIN-FORM/Iob/Simula.cs b/IOB-WIN-FORM/Iob/Simula.cs
index 7e16c335..1fd630ce 100644
--- a/IOB-WIN-FORM/Iob/Simula.cs
+++ b/IOB-WIN-FORM/Iob/Simula.cs
@@ -637,9 +637,8 @@ namespace IOB_WIN_FORM.Iob
{
case urlType.ULog:
string[] elencoMulti = null;
- // devo chiamare cambio ODL x OGNI tavola: mi servono i parametri opzionali...
- string IOB_MULTI_CNAME = getOptPar("IOB_MULTI_CNAME");
- elencoMulti = IOB_MULTI_CNAME.Split(',');
+ // devo chiamare cambio ODL x OGNI tavola: mi servono i parametri opzionali...
+ elencoMulti = IOBConfFull.General.MultiIobList.Split(',');
// aggiungo tav 1 / 2 a caso secondo secondi attuali, se pari/dispari
int idxTav = DateTime.Now.Second % 2;
answ += $"#{elencoMulti[idxTav]}";
diff --git a/IOB-WIN-OPC-UA/DATA/CONF/2014.json b/IOB-WIN-OPC-UA/DATA/CONF/2014.json
index 5e963c1a..7bb8f452 100644
--- a/IOB-WIN-OPC-UA/DATA/CONF/2014.json
+++ b/IOB-WIN-OPC-UA/DATA/CONF/2014.json
@@ -88,7 +88,6 @@
"filterItemsNodeId": [
"ns=2;s=/Axis",
"ns=2;s=/Bag",
- "ns=2;s=/Channel/State/actFeedRateIpo",
"ns=2;s=/Channel/State/actProgNetTime",
"ns=2;s=/Channel/AuxiliaryFunctions",
"ns=2;s=/Channel/GenericCoupling",
@@ -188,7 +187,58 @@
"ns=2;s=/Plc/DB75",
"ns=2;s=/Plc/DB76",
"ns=2;s=/Plc/DB77",
- "ns=2;s=/Plc/DB78"
+ "ns=2;s=/Plc/DB78",
+ "ns=2;s=/Plc/DB92",
+ "ns=2;s=/Plc/DB93",
+ "ns=2;s=/Plc/DB100",
+ "ns=2;s=/Plc/DB101",
+ "ns=2;s=/Plc/DB102",
+ "ns=2;s=/Plc/DB103",
+ "ns=2;s=/Plc/DB104",
+ "ns=2;s=/Plc/DB105",
+ "ns=2;s=/Plc/DB111",
+ "ns=2;s=/Plc/DB114",
+ "ns=2;s=/Plc/DB115",
+ "ns=2;s=/Plc/DB116",
+ "ns=2;s=/Plc/DB120",
+ "ns=2;s=/Plc/DB121",
+ "ns=2;s=/Plc/DB140",
+ "ns=2;s=/Plc/DB154",
+ "ns=2;s=/Plc/DB170",
+ "ns=2;s=/Plc/DB171",
+ "ns=2;s=/Plc/DB172",
+ "ns=2;s=/Plc/DB173",
+ "ns=2;s=/Plc/DB174",
+ "ns=2;s=/Plc/DB200",
+ "ns=2;s=/Plc/DB201",
+ "ns=2;s=/Plc/DB202",
+ "ns=2;s=/Plc/DB203",
+ "ns=2;s=/Plc/DB204",
+ "ns=2;s=/Plc/DB213",
+ "ns=2;s=/Plc/DB272",
+ "ns=2;s=/Plc/DB283",
+ "ns=2;s=/Plc/DB284",
+ "ns=2;s=/Plc/DB310",
+ "ns=2;s=/Plc/DB325",
+ "ns=2;s=/Plc/DB326",
+ "ns=2;s=/Plc/DB332",
+ "ns=2;s=/Plc/DB333",
+ "ns=2;s=/Plc/DB334",
+ "ns=2;s=/Plc/DB335",
+ "ns=2;s=/Plc/DB336",
+ "ns=2;s=/Plc/DB505",
+ "ns=2;s=/Plc/DB506",
+ "ns=2;s=/Plc/DB507",
+ "ns=2;s=/Plc/DB508",
+ "ns=2;s=/Plc/DB509",
+ "ns=2;s=/Plc/DB510",
+ "ns=2;s=/Plc/DB650",
+ "ns=2;s=/Plc/DB651",
+ "ns=2;s=/Plc/DB1000",
+ "ns=2;s=/Plc/DB1001",
+ "ns=2;s=/Plc/DB1002",
+ "ns=2;s=/Plc/DB1071",
+ "ns=2;s=/Plc/DB1072"
],
"subscribedItems": [
"ns=2;s=/Channel/State/actParts",
@@ -199,7 +249,8 @@
"ns=2;s=/Channel/State/actTNumber",
"ns=2;s=/Channel/ProgramInfo/selectedWorkPProg",
"ns=2;s=/Channel/ProgramInfo/progName",
- "ns=2;s=/Channel/State/actFeedRateIpoOvr",
+ "ns=2;s=/Channel/State/actFeedRateIpo",
+ "ns=2;s=/Channel/State/acTotalOvr",
"ns=2;s=/Channel/State/feedRateIpoOvr",
"ns=2;s=/Nck/State/aStopesi",
"ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_ARTICOLO",
@@ -232,6 +283,14 @@
"index": 0,
"size": 4
},
+ "forceResetPzCount": {
+ "name": "forceResetPzCount",
+ "description": "Set Contapezzi",
+ "tipoMem": "Int",
+ "memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_PRODOTTA",
+ "index": 0,
+ "size": 4
+ },
"forceSetPzCount": {
"name": "forceSetPzCount",
"description": "Set Contapezzi",
diff --git a/IOB-WIN-OPC-UA/DATA/CONF/2015.json b/IOB-WIN-OPC-UA/DATA/CONF/2015.json
index 98ac82fe..7bb8f452 100644
--- a/IOB-WIN-OPC-UA/DATA/CONF/2015.json
+++ b/IOB-WIN-OPC-UA/DATA/CONF/2015.json
@@ -39,15 +39,11 @@
]
},
"condEStop": {
- "checkMode": "OR",
+ "checkMode": "AND",
"checkList": [
{
"keyName": "aStopesi",
"targetValue": "0"
- },
- {
- "keyName": "aStopesi",
- "targetValue": ""
}
]
},
@@ -92,9 +88,40 @@
"filterItemsNodeId": [
"ns=2;s=/Axis",
"ns=2;s=/Bag",
+ "ns=2;s=/Channel/State/actProgNetTime",
+ "ns=2;s=/Channel/AuxiliaryFunctions",
+ "ns=2;s=/Channel/GenericCoupling",
+ "ns=2;s=/Channel/Diagnose",
+ "ns=2;s=/Channel/ChannelDiagnose",
+ "ns=2;s=/Channel/ProtocolEvent",
+ "ns=2;s=/Channel/ActualFrame",
+ "ns=2;s=/Channel/BaseFrame",
+ "ns=2;s=/Channel/ExternFrame",
+ "ns=2;s=/Channel/GrindingFrame",
+ "ns=2;s=/Channel/SystemFrame",
+ "ns=2;s=/Channel/UserFrame",
+ "ns=2;s=/Channel/Drive",
+ "ns=2;s=/Channel/Nibbling",
+ "ns=2;s=/Channel/Parameter",
+ "ns=2;s=/Channel/ProtectedArea",
+ "ns=2;s=/Channel/Settings",
+ "ns=2;s=/Channel/GeometricAxis",
+ "ns=2;s=/Channel/MachineAxis",
+ "ns=2;s=/Channel/ProgramModification",
+ "ns=2;s=/Channel/SelectedFunctions",
+ "ns=2;s=/Channel/Search",
+ "ns=2;s=/Channel/InterruptionSearch",
+ "ns=2;s=/Channel/ProgramPointer",
+ "ns=2;s=/Channel/LogicalSpindle",
+ "ns=2;s=/Channel/Compensation",
+ "ns=2;s=/Channel/SelectedFunctionData",
+ "ns=2;s=/Channel/CoordSysWorkAreaLimits",
+ "ns=2;s=/Channel/Configuration",
+ "ns=2;s=/Channel/Spindle",
"ns=2;s=/DriveVsa",
"ns=2;s=Sinumerik/FileSystem",
"ns=2;s=/Methods",
+ "ns=2;s=/NC",
"ns=2;s=/NC/_N_NC_GD1_ACX",
"ns=2;s=/NC/_N_NC_GD4_ACX",
"ns=2;s=/NC/_N_CH_GD1_ACX",
@@ -104,10 +131,114 @@
"ns=2;s=/SEA",
"ns=2;s=/TEA",
"ns=2;s=/Tool",
+ "ns=2;s=/Plc/Clock",
+ "ns=2;s=/Plc/C",
+ "ns=2;s=/Plc/T",
+ "ns=2;s=/Plc/I",
+ "ns=2;s=/Plc/IB",
+ "ns=2;s=/Plc/IW",
+ "ns=2;s=/Plc/ID",
+ "ns=2;s=/Plc/M",
+ "ns=2;s=/Plc/MB",
+ "ns=2;s=/Plc/MW",
+ "ns=2;s=/Plc/MD",
+ "ns=2;s=/Plc/Q",
+ "ns=2;s=/Plc/QB",
+ "ns=2;s=/Plc/QW",
+ "ns=2;s=/Plc/QD",
+ "ns=2;s=/Plc/ID",
+ "ns=2;s=/Plc/ID",
"ns=2;s=IArea",
"ns=2;s=QArea",
"ns=2;s=MArea",
- "ns=2;s=/Plc/"
+ "ns=2;s=/Plc/DB1",
+ "ns=2;s=/Plc/DB2",
+ "ns=2;s=/Plc/DB3",
+ "ns=2;s=/Plc/DB4",
+ "ns=2;s=/Plc/DB5",
+ "ns=2;s=/Plc/DB6",
+ "ns=2;s=/Plc/DB7",
+ "ns=2;s=/Plc/DB8",
+ "ns=2;s=/Plc/DB9",
+ "ns=2;s=/Plc/DB10",
+ "ns=2;s=/Plc/DB11",
+ "ns=2;s=/Plc/DB15",
+ "ns=2;s=/Plc/DB16",
+ "ns=2;s=/Plc/DB17",
+ "ns=2;s=/Plc/DB18",
+ "ns=2;s=/Plc/DB19",
+ "ns=2;s=/Plc/DB20",
+ "ns=2;s=/Plc/DB21",
+ "ns=2;s=/Plc/DB31",
+ "ns=2;s=/Plc/DB32",
+ "ns=2;s=/Plc/DB33",
+ "ns=2;s=/Plc/DB34",
+ "ns=2;s=/Plc/DB35",
+ "ns=2;s=/Plc/DB36",
+ "ns=2;s=/Plc/DB53",
+ "ns=2;s=/Plc/DB62",
+ "ns=2;s=/Plc/DB63",
+ "ns=2;s=/Plc/DB64",
+ "ns=2;s=/Plc/DB65",
+ "ns=2;s=/Plc/DB66",
+ "ns=2;s=/Plc/DB71",
+ "ns=2;s=/Plc/DB72",
+ "ns=2;s=/Plc/DB74",
+ "ns=2;s=/Plc/DB75",
+ "ns=2;s=/Plc/DB76",
+ "ns=2;s=/Plc/DB77",
+ "ns=2;s=/Plc/DB78",
+ "ns=2;s=/Plc/DB92",
+ "ns=2;s=/Plc/DB93",
+ "ns=2;s=/Plc/DB100",
+ "ns=2;s=/Plc/DB101",
+ "ns=2;s=/Plc/DB102",
+ "ns=2;s=/Plc/DB103",
+ "ns=2;s=/Plc/DB104",
+ "ns=2;s=/Plc/DB105",
+ "ns=2;s=/Plc/DB111",
+ "ns=2;s=/Plc/DB114",
+ "ns=2;s=/Plc/DB115",
+ "ns=2;s=/Plc/DB116",
+ "ns=2;s=/Plc/DB120",
+ "ns=2;s=/Plc/DB121",
+ "ns=2;s=/Plc/DB140",
+ "ns=2;s=/Plc/DB154",
+ "ns=2;s=/Plc/DB170",
+ "ns=2;s=/Plc/DB171",
+ "ns=2;s=/Plc/DB172",
+ "ns=2;s=/Plc/DB173",
+ "ns=2;s=/Plc/DB174",
+ "ns=2;s=/Plc/DB200",
+ "ns=2;s=/Plc/DB201",
+ "ns=2;s=/Plc/DB202",
+ "ns=2;s=/Plc/DB203",
+ "ns=2;s=/Plc/DB204",
+ "ns=2;s=/Plc/DB213",
+ "ns=2;s=/Plc/DB272",
+ "ns=2;s=/Plc/DB283",
+ "ns=2;s=/Plc/DB284",
+ "ns=2;s=/Plc/DB310",
+ "ns=2;s=/Plc/DB325",
+ "ns=2;s=/Plc/DB326",
+ "ns=2;s=/Plc/DB332",
+ "ns=2;s=/Plc/DB333",
+ "ns=2;s=/Plc/DB334",
+ "ns=2;s=/Plc/DB335",
+ "ns=2;s=/Plc/DB336",
+ "ns=2;s=/Plc/DB505",
+ "ns=2;s=/Plc/DB506",
+ "ns=2;s=/Plc/DB507",
+ "ns=2;s=/Plc/DB508",
+ "ns=2;s=/Plc/DB509",
+ "ns=2;s=/Plc/DB510",
+ "ns=2;s=/Plc/DB650",
+ "ns=2;s=/Plc/DB651",
+ "ns=2;s=/Plc/DB1000",
+ "ns=2;s=/Plc/DB1001",
+ "ns=2;s=/Plc/DB1002",
+ "ns=2;s=/Plc/DB1071",
+ "ns=2;s=/Plc/DB1072"
],
"subscribedItems": [
"ns=2;s=/Channel/State/actParts",
@@ -118,7 +249,8 @@
"ns=2;s=/Channel/State/actTNumber",
"ns=2;s=/Channel/ProgramInfo/selectedWorkPProg",
"ns=2;s=/Channel/ProgramInfo/progName",
- "ns=2;s=/Channel/State/actFeedRateIpoOvr",
+ "ns=2;s=/Channel/State/actFeedRateIpo",
+ "ns=2;s=/Channel/State/acTotalOvr",
"ns=2;s=/Channel/State/feedRateIpoOvr",
"ns=2;s=/Nck/State/aStopesi",
"ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_ARTICOLO",
@@ -151,6 +283,14 @@
"index": 0,
"size": 4
},
+ "forceResetPzCount": {
+ "name": "forceResetPzCount",
+ "description": "Set Contapezzi",
+ "tipoMem": "Int",
+ "memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_PRODOTTA",
+ "index": 0,
+ "size": 4
+ },
"forceSetPzCount": {
"name": "forceSetPzCount",
"description": "Set Contapezzi",
diff --git a/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs b/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs
index 4c122048..69aafcf0 100644
--- a/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs
+++ b/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs
@@ -49,23 +49,10 @@ namespace IOB_WIN_OPC_UA.IobOpc
lastWarnODL = adesso;
lastCurrent = adesso;
lgTrace($"Aggiornato IobOpcUa.lastCurrent: {lastCurrent}");
- if (IOBConfFull.Special.OpcUaConf == null)
- {
- // ora leggo il file di conf specifico....
- string jsonFileName = getOptPar("OPC_PARAM_CONF");
- if (!string.IsNullOrEmpty(jsonFileName))
- {
- // leggo il file...
- loadOpcUaConf(jsonFileName);
- }
- }
- else
- {
- opcUaParams = IOBConfFull.Special.OpcUaConf;
- setupMemMap();
- setupOptMemPar();
- setupFileDecod();
- }
+ opcUaParams = IOBConfFull.Special.OpcUaConf;
+ setupMemMap();
+ setupOptMemPar();
+ setupFileDecod();
}
#endregion Public Constructors
diff --git a/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs b/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs
index 9e5d4455..b71d2fa4 100644
--- a/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs
+++ b/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs
@@ -70,10 +70,18 @@ namespace IOB_WIN_OPC_UA.IobOpc
break;
case taskType.endProd:
+ forceDbSync = true;
+ // reset contapezzi inizio setup
+ if (IOBConfFull.Counters.ResetOnProdEnd)
+ {
+ addResetPzCount = true;
+ }
+ lgInfo($"Chiamato {tName} | addResetPzCount: {addResetPzCount}");
+ break;
case taskType.startSetup:
forceDbSync = true;
- // se richiesto reset aggiungo!
- if (IOBConfFull.OptPar.Count > 0 && getOptPar("ENABLE_PZ_RESET") == "TRUE")
+ // reset contapezzi inizio setup
+ if (IOBConfFull.Counters.ResetOnSetupStart)
{
addResetPzCount = true;
}
@@ -112,8 +120,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
lgInfo("OpcUaSiemens.resetContapezziPLC 01");
bool answ = false;
// ...SE abilitato da conf IOB
- //if (IOBConfFull.OptPar.Count > 0 && getOptPar("ENABLE_PZ_RESET") == "TRUE")
- if(IOBConfFull.Counters.ResetOnSetupStart || IOBConfFull.Counters.ResetOnSetupStop || IOBConfFull.Counters.EnableSetPzCount || IOBConfFull.Counters.ResetOnProdEnd)
+ if (IOBConfFull.Counters.ResetOnSetupStart || IOBConfFull.Counters.ResetOnSetupStop || IOBConfFull.Counters.EnableSetPzCount || IOBConfFull.Counters.ResetOnProdEnd)
{
lgInfo("OpcUaSiemens.resetContapezziPLC 02");
// imposto un veto in lettura cmq x evitare problemi
@@ -152,7 +159,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
else
{
- lgError("Impossibile effettuare RESET contapezzi, mancanza parametro OPT:ENABLE_PZ_RESET");
+ lgError("Impossibile effettuare RESET contapezzi, mancanza parametri IOBConfFull.Counters.*");
}
return answ;
}
@@ -168,17 +175,15 @@ namespace IOB_WIN_OPC_UA.IobOpc
if (memMap != null && memMap.mMapWrite.ContainsKey("forceSetPzCount"))
{
// modalità invio secondo richiesta
- string sendMode = getOptPar("SEND_PZCNT_MODE");
- if (sendMode == "TASK")
+ lgDebug($"OpcUaSiemens.setcontapezziPLC | {IOBConfFull.Counters.SendPzCountMode}");
+ if (IOBConfFull.Counters.SendPzCountMode == "TASK")
{
- lgDebug($"Generic.executeTasks | TASK");
Dictionary task2add = new Dictionary();
task2add.Add("forceSetPzCount", $"{newPzCount}");
executeTasks(task2add);
}
else
{
- lgDebug($"Generic.executeTasks | plcWriteParams");
// provare x Donati EMCO e Siemens Rama Tenditalia
var ListTempParams = new List();
// aggiungo reset caricamento
@@ -193,7 +198,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
plcWriteParams(ref ListTempParams);
}
answ = true;
- lgInfo($"Eseguito scrittura OPC-UA su nodo setcontapezziPLC | sendMode: {sendMode}");
+ lgInfo($"Eseguito scrittura OPC-UA su nodo setcontapezziPLC | sendMode: {IOBConfFull.Counters.SendPzCountMode}");
}
else
{