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 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 bool Debug_SimulacionCreado = false;
|
||||
|
||||
|
@ -1199,6 +1204,9 @@ namespace CtrEditor
|
|||
var timeBetweenCalls = stopwatch_Sim.Elapsed.TotalMilliseconds - stopwatch_SimModel_last;
|
||||
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)
|
||||
accumulatedSimTime += timeBetweenCalls;
|
||||
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>
|
||||
/// Resetea todos los contadores adaptativos de timing para empezar con mediciones limpias
|
||||
/// </summary>
|
||||
|
@ -1501,6 +1532,11 @@ namespace CtrEditor
|
|||
lastSimExecutionTime = 0;
|
||||
maxSimExecutionTime = 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
|
||||
lastPlcExecutionTime = 0;
|
||||
|
|
Loading…
Reference in New Issue