feat: Update simulation speed display in UI for improved user feedback
This commit is contained in:
parent
322d335edd
commit
3635169f86
|
@ -66,6 +66,11 @@ namespace CtrEditor
|
||||||
private const double MAX_SIM_INTERVAL = 100; // Máximo intervalo simulación (ms)
|
private const double MAX_SIM_INTERVAL = 100; // Máximo intervalo simulación (ms)
|
||||||
private const double SIM_BUFFER_TIME = 2; // Buffer de 2ms extra respecto al tiempo real
|
private const double SIM_BUFFER_TIME = 2; // Buffer de 2ms extra respecto al tiempo real
|
||||||
|
|
||||||
|
// Variables para promedio móvil de SimulationSpeed
|
||||||
|
private Queue<double> simSpeedSamples = new Queue<double>();
|
||||||
|
private double totalSimSpeedTime = 0;
|
||||||
|
private const double SIM_SPEED_WINDOW_MS = 500; // Ventana de 500ms para promedio
|
||||||
|
|
||||||
private float TiempoDesdeStartSimulacion;
|
private float TiempoDesdeStartSimulacion;
|
||||||
private bool Debug_SimulacionCreado = false;
|
private bool Debug_SimulacionCreado = false;
|
||||||
|
|
||||||
|
@ -1199,6 +1204,9 @@ namespace CtrEditor
|
||||||
var timeBetweenCalls = stopwatch_Sim.Elapsed.TotalMilliseconds - stopwatch_SimModel_last;
|
var timeBetweenCalls = stopwatch_Sim.Elapsed.TotalMilliseconds - stopwatch_SimModel_last;
|
||||||
stopwatch_SimModel_last = stopwatch_Sim.Elapsed.TotalMilliseconds;
|
stopwatch_SimModel_last = stopwatch_Sim.Elapsed.TotalMilliseconds;
|
||||||
|
|
||||||
|
// ✅ NUEVO: Actualizar velocidad de simulación con promedio móvil de 500ms
|
||||||
|
UpdateSimulationSpeedAverage(timeBetweenCalls);
|
||||||
|
|
||||||
// Acumular tiempo para el promedio (usando tiempo real del timer)
|
// Acumular tiempo para el promedio (usando tiempo real del timer)
|
||||||
accumulatedSimTime += timeBetweenCalls;
|
accumulatedSimTime += timeBetweenCalls;
|
||||||
simSampleCount++;
|
simSampleCount++;
|
||||||
|
@ -1492,6 +1500,29 @@ namespace CtrEditor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Actualiza el promedio móvil de velocidad de simulación en una ventana de 500ms
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateSimulationSpeedAverage(double timeBetweenCalls)
|
||||||
|
{
|
||||||
|
// Agregar la nueva muestra
|
||||||
|
simSpeedSamples.Enqueue(timeBetweenCalls);
|
||||||
|
totalSimSpeedTime += timeBetweenCalls;
|
||||||
|
|
||||||
|
// Remover muestras antiguas que estén fuera de la ventana de 500ms
|
||||||
|
while (simSpeedSamples.Count > 0 && totalSimSpeedTime > SIM_SPEED_WINDOW_MS)
|
||||||
|
{
|
||||||
|
var oldestSample = simSpeedSamples.Dequeue();
|
||||||
|
totalSimSpeedTime -= oldestSample;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calcular y actualizar el promedio
|
||||||
|
if (simSpeedSamples.Count > 0)
|
||||||
|
{
|
||||||
|
SimulationSpeed = totalSimSpeedTime / simSpeedSamples.Count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resetea todos los contadores adaptativos de timing para empezar con mediciones limpias
|
/// Resetea todos los contadores adaptativos de timing para empezar con mediciones limpias
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1501,6 +1532,11 @@ namespace CtrEditor
|
||||||
lastSimExecutionTime = 0;
|
lastSimExecutionTime = 0;
|
||||||
maxSimExecutionTime = 0;
|
maxSimExecutionTime = 0;
|
||||||
simTimingAdaptationCounter = 0;
|
simTimingAdaptationCounter = 0;
|
||||||
|
SimulationSpeed = 0.0; // Reset del display de velocidad de simulación
|
||||||
|
|
||||||
|
// Reset promedio móvil de SimulationSpeed
|
||||||
|
simSpeedSamples.Clear();
|
||||||
|
totalSimSpeedTime = 0;
|
||||||
|
|
||||||
// Reset contadores de PLC
|
// Reset contadores de PLC
|
||||||
lastPlcExecutionTime = 0;
|
lastPlcExecutionTime = 0;
|
||||||
|
|
Loading…
Reference in New Issue