Gestione strobe/ack su comeca x scrittura parametri
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user