Aggiunte modifiche da testare x
- miglioramento modalità verifica ACK_DW0 (dovrebbe essere più corretto e veloce) - impostato nuovo sistema di copia da testare x byte memoria allarmi
This commit is contained in:
Binary file not shown.
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user