From 9716fcb39343cb1d3ef8160b3f4fcdec9fbd832f Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 11 May 2016 21:46:31 +0200 Subject: [PATCH] =?UTF-8?q?Aggiunte=20modifiche=20da=20testare=20x=20-=20m?= =?UTF-8?q?iglioramento=20modalit=C3=A0=20verifica=20ACK=5FDW0=20(dovrebbe?= =?UTF-8?q?=20essere=20pi=C3=B9=20corretto=20e=20veloce)=20-=20impostato?= =?UTF-8?q?=20nuovo=20sistema=20di=20copia=20da=20testare=20x=20byte=20mem?= =?UTF-8?q?oria=20allarmi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MTC_Sim/.vs/MTC_Sim/v14/.suo | Bin 240640 -> 237568 bytes MTC_Sim/MTC_Sim/AdapterFanuc.cs | 35 +++++++++++++++++++++--------- MTC_Sim/MTC_Sim/AdapterGeneric.cs | 2 +- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/MTC_Sim/.vs/MTC_Sim/v14/.suo b/MTC_Sim/.vs/MTC_Sim/v14/.suo index b04e4dcd7c6cf09e4f0fd6e93a5ec3000e806b6d..e097d288cae1cb19b72ccd22c0a0f52328a7b428 100644 GIT binary patch delta 5928 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 delta 5565 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 diff --git a/MTC_Sim/MTC_Sim/AdapterFanuc.cs b/MTC_Sim/MTC_Sim/AdapterFanuc.cs index 14e4d18..84983cc 100644 --- a/MTC_Sim/MTC_Sim/AdapterFanuc.cs +++ b/MTC_Sim/MTC_Sim/AdapterFanuc.cs @@ -248,6 +248,11 @@ namespace MTC_Sim { base.refreshAlarmState(Alarm2Refresh, giveAck); + // byte di acknowledge... + byte[] retACK_DW0 = new byte[4]; + // inizio impostando una bitmap x ACK che abbia i bit abbassati se lo strobe è disattivo: AND logico tra STR e ACK + retACK_DW0 = BitConverter.GetBytes(Convert.ToUInt32(STRB_DW0 & ACK_DW0)); + if (Alarm2Refresh != StFlag32.NONE) lg.Info("Richiesto refresh allarmi x bitmask: {0}", utils.binaryForm((int)Alarm2Refresh)); DateTime inizio = DateTime.Now; @@ -268,9 +273,6 @@ namespace MTC_Sim } else { - // byte di acknowledge... - byte[] retACK_DW0 = new byte[4]; - if (Alarm2Refresh != StFlag32.NONE) { // blocco memoria x lettura dati @@ -284,11 +286,20 @@ namespace MTC_Sim inizio = DateTime.Now; FANUC_ref.F_RW_Byte(R, FANUC.MemType.R, memIndex + i * 4, ref MemBlock); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW0", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); - // aggiorno nel vettore allarmi i byte interessati - for (int j = 0; j < 4; j++) + + // da testare metodo copia alternativo !!!FARE!!! + if (true) { - // copy array o byte?!? !!!FARE!!! verifica - AlarmFlags[i * 4 + j] = MemBlock[j]; + // aggiorno nel vettore allarmi i byte interessati + for (int j = 0; j < 4; j++) + { + // copy array o byte?!? !!!FARE!!! verifica + AlarmFlags[i * 4 + j] = MemBlock[j]; + } + } + else + { + Buffer.BlockCopy(MemBlock, i, AlarmFlags, i, MemBlock.Length); } // segnalo allarme letto! memorizzo allarme nel vettore ack.... @@ -310,13 +321,17 @@ namespace MTC_Sim } } + // !!!FARE!!! testare questa modifica + // ultimo controllo: se ho degli ACK sollevati mentre gli strobe sono abbassati li abbasso... - //if ((STRB_DW0 != ACK_DW0) && (STRB_DW0 ^ ACK_DW0) != StFlag32.NONE) - if ((STRB_DW0 ^ ACK_DW0) != (STRB_DW0 & ACK_DW0)) + //if ((STRB_DW0 ^ ACK_DW0) != (STRB_DW0 & ACK_DW0)) + + // se è diverso il vettorei degli ACK in memoria da quello PLC... + if (ACK_DW0 != (StFlag32)BitConverter.ToUInt32(retACK_DW0, 0)) { memIndex = 10500; // invio INTERO set ACK_DW0 con bit abbassati... - byte[] retACK_DW0 = BitConverter.GetBytes(Convert.ToUInt32(STRB_DW0 & ACK_DW0)); + retACK_DW0 = BitConverter.GetBytes(Convert.ToUInt32(STRB_DW0 & ACK_DW0)); inizio = DateTime.Now; FANUC_ref.F_RW_Byte(W, FANUC.MemType.R, memIndex, ref retACK_DW0); if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", retACK_DW0.Length), DateTime.Now.Subtract(inizio).Ticks); diff --git a/MTC_Sim/MTC_Sim/AdapterGeneric.cs b/MTC_Sim/MTC_Sim/AdapterGeneric.cs index 84ade9e..75608a9 100644 --- a/MTC_Sim/MTC_Sim/AdapterGeneric.cs +++ b/MTC_Sim/MTC_Sim/AdapterGeneric.cs @@ -1003,7 +1003,7 @@ namespace MTC_Sim { // parte che eseguo SEMPRE: RECUPERO stato di tutti gli strobe/status e degli ack attualmente noti getStrobeAndAckStatus(); - + // faccio refresh degli allarmi segnalati (da strobe su vettore locale) refreshAlarmState(STRB_DW0, true); // acquisizione degli status