Gestione strobe/ack su comeca x scrittura parametri

This commit is contained in:
Samuele Locatelli
2021-10-26 17:28:38 +02:00
parent aff454bedf
commit ad4a555865
2 changed files with 47 additions and 5 deletions
+4 -5
View File
@@ -2032,7 +2032,7 @@ namespace IOB_WIN_NEXT
/// </summary>
private void svuotaCodaFLog()
{
//controllo se è passato oltre watchdog e non ho inviato nulla --> RE-INVIO (ultimo inviato)!!!!
// controllo se è passato oltre watchdog e non ho inviato nulla --> RE-INVIO (ultimo inviato)!!!!
if (DateTime.Now.Subtract(lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec"))
{
string wdStatus = "elapsed";
@@ -2069,6 +2069,7 @@ namespace IOB_WIN_NEXT
listaValori.Add(currVal);
}
sendDataBlock(urlType.FLog, listaValori);
lastWatchDog = DateTime.Now;
}
else
{
@@ -2078,6 +2079,7 @@ namespace IOB_WIN_NEXT
sendDataBlock(urlType.FLog, listaValori);
// svuoto!
QueueFLog = new ConcurrentQueue<string>();
lastWatchDog = DateTime.Now;
}
}
else
@@ -2085,6 +2087,7 @@ namespace IOB_WIN_NEXT
// INVIO SINGOLO...!!!
QueueFLog.TryDequeue(out currVal);
sendToMoonPro(urlType.FLog, currVal);
lastWatchDog = DateTime.Now;
}
}
else
@@ -4753,10 +4756,6 @@ namespace IOB_WIN_NEXT
lgInfo(string.Format("{0} -> [SIM]", queueVal));
}
nSendOut++;
// riporto cosa inviato
#if false
displayOutData();
#endif
currDispData.newUrlCallData = lastUrl;
// aggiorno data ultimo watchdog...
lastWatchDog = DateTime.Now;
+43
View File
@@ -35,6 +35,12 @@ namespace IOB_WIN_NEXT
*
* -------------------------------------------------------------------------------- */
#region Protected Fields
protected int strobeVal = 0;
#endregion Protected Fields
#region Public Constructors
/// <summary>
@@ -91,6 +97,35 @@ namespace IOB_WIN_NEXT
#endregion Protected Properties
#region Private Methods
private void checkStrobeHack()
{
// verifico SE ho un hack sulla var DB85.DB268
byte[] byteCtrlW = new byte[2];
bool fatto = S7ReadBB(ref byteCtrlW, "DB85.DBB268", 2);
ushort valCtrlW = S7.Net.Types.Word.FromByteArray(byteCtrlW.ToArray());
// se vale 1 --> resetto strobe!
if (valCtrlW == 1)
{
// aggiunta finale bit a 0 x chiusura processing..
var MemBlock = S7.Net.Types.Int.ToByteArray(0);
var memAddrWrite = "DB85.DBB308";
// imposto valore strobe x check successivi
var taskOk = S7WriteBB(ref MemBlock, memAddrWrite);
if (taskOk)
{
strobeVal = 0;
}
}
else
{
lgInfo("SiemensComeca: Strobe attivo su DBB308, ack non rilevato su DBB268");
}
}
#endregion Private Methods
#region Protected Methods
/// <summary>
@@ -133,6 +168,11 @@ namespace IOB_WIN_NEXT
byteSignals += (1 << 1);
}
// verifico SE ho strobe/hack da chiudere
if (strobeVal != 0)
{
checkStrobeHack();
}
// salvo!
B_input = byteSignals;
}
@@ -185,6 +225,7 @@ namespace IOB_WIN_NEXT
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))
@@ -204,6 +245,8 @@ namespace IOB_WIN_NEXT
// aggiunta finale bit a 1 x richiesta processing..
MemBlock = S7.Net.Types.Int.ToByteArray(1);
memAddrWrite = "DB85.DBB308";
// imposto valore strobe x check successivi
strobeVal = 1;
break;