Aggiunta gestione doppio watchdog...

This commit is contained in:
Samuele E. Locatelli
2017-07-24 19:05:43 +02:00
parent b7049fe25f
commit 42abe4da42
+15 -5
View File
@@ -2523,7 +2523,17 @@ namespace MTC_Adapter
public void sendWatchDog()
{
bool setFlag = false;
byte[] retACK_DW = new byte[1];
// 2017.07.24 gestisco 32 bit perché c'è la aprte finale del doppio watchdog incrociato...
byte[] retACK_DW = new byte[4];
// gestione su ultimi 2 bit della DW2 STR/ACK: il PRIMO bit è gestito in master da ADAPTER, il secondo da PLC; in primis io COPIO il valore del bit finale (di cui è slave...)
retACK_DW = utils.setBitOnStFlag(retACK_DW, STRB_DW2.HasFlag(StFlag32.B31), 31);
// ...poi gestisco il penultimo bit di cui è master...
if (STRB_DW2.HasFlag(StFlag32.B30) == ACK_DW2.HasFlag(StFlag32.B30))
{
// ... SE in ingresso ho strobe uguale lo cambio!!!
retACK_DW = utils.setBitOnStFlag(retACK_DW, !ACK_DW2.HasFlag(StFlag32.B30), 30);
}
// 2016.10.18 aggiungo scrittura del bit di "watchdog" al primo bit della DW2... come resto tra secondi / 2
if (utils.CRB("sendWatchDog"))
{
@@ -2535,11 +2545,11 @@ namespace MTC_Adapter
{
lastWatchDog = setFlag;
retACK_DW = utils.setBitOnStFlag(retACK_DW, setFlag, 0); // imposto primo bit!!!
// scrivo su area PLC
inizio = DateTime.Now;
writeWatchDog(ref retACK_DW);
if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-WatchDog", retACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks);
}
// scrivo su area PLC
inizio = DateTime.Now;
writeWatchDog(ref retACK_DW);
if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-WatchDog", retACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks);
}
}
/// <summary>