From 08c50e80a82d8ee5b19d5aa33911c24de3d85bdf Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 26 Apr 2017 09:56:32 +0200 Subject: [PATCH] update gestioen watchdog: meno chiamate + miglior calcolo impiego canale --- MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 4 ++++ MTC_Adapter/MTC_Adapter/AdapterOsai.cs | 28 ++++++++++++++--------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index 50b6e44..ed4b3ef 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -629,6 +629,10 @@ namespace MTC_Adapter /// public bool adpTryRestart; /// + /// Ultimo valore watchdog rilevato + /// + public bool lastWatchDog = false; + /// /// Determina se utilizzare blocchi di memoria IOT contigui (e quindi processing "monoblocco" semplificato"= /// public bool procIotMem = false; diff --git a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs index 1c6e52e..3da430c 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs @@ -458,7 +458,7 @@ namespace MTC_Adapter { inizio = DateTime.Now; OsaiMemRW_Byte(W, OSAI.MemTypeWord.MW_CODE, memIndexAck, 0, ref currACK_DW); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-B", currACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", currACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks); } } /// @@ -504,7 +504,7 @@ namespace MTC_Adapter { inizio = DateTime.Now; OsaiMemRW_Byte(W, OSAI.MemTypeWord.MW_CODE, memIndexAck, memOrderStart, ref currACK_DW); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-B", currACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", currACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks); } } /// @@ -513,19 +513,25 @@ namespace MTC_Adapter private void sendWatchDog() { int memIndex = 0; + bool setFlag = false; byte[] retACK_DW = new byte[1]; // 2016.10.18 aggiungo scrittura del bit di "watchdog" al primo bit della DW2... come resto tra secondi / 2 if (utils.CRB("sendWatchDog")) { int resto = 0; Math.DivRem(DateTime.Now.Second, 2, out resto); - bool setFlag = resto == 0; - retACK_DW = utils.setBitOnStFlag(retACK_DW, setFlag, 0); // imposto primo bit!!! - // scrivo su area PLC - memIndex = 19022; - inizio = DateTime.Now; - OsaiMemRW_Byte(W, OSAI.MemTypeWord.MW_CODE, memIndex, 0, ref retACK_DW); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-B", retACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks); + setFlag = resto == 0; + // se watchdog è cambiato lo invio, altrimenti lascio come è... + if (setFlag != lastWatchDog) + { + lastWatchDog = setFlag; + retACK_DW = utils.setBitOnStFlag(retACK_DW, setFlag, 0); // imposto primo bit!!! + // scrivo su area PLC + memIndex = 19022; + inizio = DateTime.Now; + OsaiMemRW_Byte(W, OSAI.MemTypeWord.MW_CODE, memIndex, 0, ref retACK_DW); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-WatchDog", retACK_DW.Length), DateTime.Now.Subtract(inizio).Ticks); + } } } /// @@ -1544,7 +1550,7 @@ namespace MTC_Adapter { // recupero vettore generale G MODE inizio = DateTime.Now; - ushort[] vettGCodes= new ushort[14]; + ushort[] vettGCodes = new ushort[14]; OSAI_ref.getPathGCodeMod(ref vettGCodes); if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); @@ -1615,7 +1621,7 @@ namespace MTC_Adapter parentForm.dataMonitor_2 += sb_2.ToString(); parentForm.dataMonitor_3 += sb_3.ToString(); - } + } } public override void getAxis()