diff --git a/IOB-UT-NEXT/ToMapo.cs b/IOB-UT-NEXT/ToMapo.cs
index 25c7a879..cac2af0e 100644
--- a/IOB-UT-NEXT/ToMapo.cs
+++ b/IOB-UT-NEXT/ToMapo.cs
@@ -26,7 +26,7 @@ namespace IOB_UT_NEXT
#region Public Properties
///
- /// Elenco dei contatori blink (x gestione caso frponte salita/discesa segnale hce blinka)
+ /// Elenco dei contatori blink (x gestione caso fronte salita/discesa segnale che blinka)
///
public int[] alarmsBlinkCounter { get; set; }
diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs
index 418f4f7d..3e72adce 100644
--- a/IOB-WIN-NEXT/IobGeneric.cs
+++ b/IOB-WIN-NEXT/IobGeneric.cs
@@ -541,6 +541,11 @@ namespace IOB_WIN_NEXT
int maxRetry = maxPingRetry + 1;
int numRetry = 1;
string ipAddr = cIobConf.serverData.MPIP.Replace($"{cIobConf.serverData.TRANSP}://", "");
+ // fix se fosse ip + porta...
+ if (ipAddr.IndexOf(":") >= 0)
+ {
+ ipAddr = ipAddr.Substring(0, ipAddr.IndexOf(":"));
+ }
IPAddress.TryParse(ipAddr, out address);
// se null --> provo DNS...
if (address == null)
@@ -4127,10 +4132,7 @@ namespace IOB_WIN_NEXT
if (enableByApp || enableByIob)
{
- if (periodicLog)
- {
- lgInfo("Inizio processDynData");
- }
+ lgInfo("Inizio processDynData");
if (connectionOk)
{
currDynData = getDynData();
diff --git a/IOB-WIN-NEXT/IobModbusTCP.cs b/IOB-WIN-NEXT/IobModbusTCP.cs
index 0874ca84..7d798664 100644
--- a/IOB-WIN-NEXT/IobModbusTCP.cs
+++ b/IOB-WIN-NEXT/IobModbusTCP.cs
@@ -222,6 +222,7 @@ namespace IOB_WIN_NEXT
foreach (var item in memItemList)
{
double valore = 0;
+ double valoreScal = 0;
bool dataOk = false;
// in primis DEVO determinare di quale TIPO di valore ho bisogno... dalla PRIMA cifra di memAddr...
modBusAddrType memAddrType = getAddrType(item.Value.memAddr);
@@ -257,12 +258,13 @@ namespace IOB_WIN_NEXT
if (dataOk)
{
// moltiplico x fattore conversione...
- valore = valore * item.Value.factor;
- saveValue(ref outVal, valore, item.Key);
+ valoreScal = valore * item.Value.factor;
+ saveValue(ref outVal, valoreScal, item.Key);
+ lgInfo($"getDynData: valore ricevuto | {item.Key} | val: {valore} | valoreScal: {valoreScal}");
}
else
{
- lgError($"getDynData: valore scartato x limiti min/max | {item.Key} | val: {valore} | min-max: {item.Value.minVal}-{item.Value.maxVal} | deltaVal: {deltaVal}");
+ lgError($"getDynData: valore scartato x limiti min/max | {item.Key} | val: {valore} | valoreScal: {valoreScal} | min-max: {item.Value.minVal}-{item.Value.maxVal} | deltaVal: {deltaVal}");
readErrorList.Add(item.Key, item.Value);
lgInfo($"--> rimesso in coda lettura | parametro: {item.Key} | index: {item.Value.index} | size: {item.Value.size}");
}
@@ -779,15 +781,16 @@ namespace IOB_WIN_NEXT
// se qualcosa รจ andato storto riprovo a caricare SOLO gli errori... 1 sola volta
if (readErrorList.Count > 0)
{
+ lgInfo($"Effettuo rilettura per {readErrorList.Count} variabili");
readErrorListRepeat = getDataDictionary(readErrorList, ref outVal);
}
- // se avessi acnora errori --> disconnetto
+ // se avessi ancora errori --> disconnetto
if (readErrorListRepeat.Count > 0)
{
- lgInfo("Trovati valori non validi al secondo tentativo --> resetto adapter con tryDisconnect!");
- //// rendo non valida lettura dati
- //lastReadPLC = DateTime.Now.AddMinutes(-4);
+ lgInfo("Trovati valori non validi al secondo tentativo --> invalido valori letti e resetto adapter con tryDisconnect!");
tryDisconnect();
+ // invalido output
+ outVal = new Dictionary();
tryConnect();
}
else
@@ -804,6 +807,7 @@ namespace IOB_WIN_NEXT
{
lgError(exc, "Errore in getDynData x ModBus TCP PLC --> ciclo disconnect/reconnect");
tryDisconnect();
+ outVal = new Dictionary();
tryConnect();
}
}
diff --git a/IOB-WIN-NEXT/IobModbusTCPHam.cs b/IOB-WIN-NEXT/IobModbusTCPHam.cs
index 749664e4..f25353d8 100644
--- a/IOB-WIN-NEXT/IobModbusTCPHam.cs
+++ b/IOB-WIN-NEXT/IobModbusTCPHam.cs
@@ -185,83 +185,6 @@ namespace IOB_WIN_NEXT
#endregion Protected Methods
-#if false
- ///
- /// Processo i task richiesti e li elimino dalla coda 1:1
- ///
- ///
- public override Dictionary executeTasks(Dictionary task2exe)
- {
- lgInfo($"Chiamata executeTasks specifica ModBus TCP HAM: {task2exe.Count} task ricevuti");
- // Verificare il protocollo: dovrebeb togliere SOLO i task eseguiti...
- Dictionary taskDone = new Dictionary();
- bool taskOk = false;
- string taskVal = "";
- // inizio con 1 byte di default
- byte[] MemBlock = new byte[1];
- string memAddrWrite = "";
- if (task2exe != null)
- {
- // cerco task specifici
- foreach (var item in task2exe)
- {
- taskOk = false;
- taskVal = "";
- // converto richiesta in enum...
- taskType tName = taskType.nihil;
- Enum.TryParse(item.Key, out tName);
- // controllo sulla KEY
- switch (tName)
- {
- case taskType.nihil:
- case taskType.fixStopSetup:
- case taskType.forceResetPzCount:
- case taskType.forceSetPzCount:
- case taskType.setProg:
- case taskType.sendWatchDogMes2Plc:
- case taskType.startSetup:
- case taskType.stopSetup:
- case taskType.setPzComm:
- case taskType.setArt:
- case taskType.setComm:
- taskVal = $"taskReq: {tName} | key: {item.Key} | val: {item.Value} | SKIPPED | NO EXEC";
- break;
-
- case taskType.setParameter:
- // richiedo da URL i parametri WRITE da popolare
- lgInfo("Chiamata processMemWriteRequests");
-
- taskVal = processMemWriteRequests();
- // se restituiscce "" faccio altra prova...
- if (string.IsNullOrEmpty(taskVal))
- {
- // i parametri me li aspetto come stringa composta paramName|paramvalue
- if (item.Value.Contains("|"))
- {
- string[] paramsJob = item.Value.Split('|');
- taskVal = $"REQUEST SET PARAMETERS: {paramsJob[0]} --> {paramsJob[1]}";
- }
- else
- {
- taskVal = $"WRONG REQUEST FOR SET PARAMETERS: {item.Value} doesnt contain pipe for splitting key/value";
- }
- }
-
- break;
-
- default:
- taskVal = "SKIPPED | NO EXEC";
- break;
- }
- // aggiungo task!
- taskDone.Add(item.Key, taskVal);
- taskOk = true;
- }
- }
- return taskDone;
- }
-#endif
-
#region Public Methods
///