From 42abe4da4218d14fa48523e7619553b0c8a37a02 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 24 Jul 2017 19:05:43 +0200 Subject: [PATCH] Aggiunta gestione doppio watchdog... --- MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index 2e4c291..18e5e44 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -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); } } ///