CtrEditor/timestep_vs_response_exampl...

60 lines
2.5 KiB
C#

/*
* EJEMPLOS DE CONFIGURACIÓN TSNetRealTimeSimulator
* ================================================
*
* Este archivo contiene ejemplos de diferentes configuraciones para el simulador en tiempo real.
* Muestra las opciones de timestep y intervalos de respuesta disponibles.
*
* Para usar estos ejemplos, copia el código relevante al constructor de TSNetRealTimeSimulator.
*/
/*
// EJEMPLO 1: Configuración para respuesta cada 10ms (NO recomendado para producción)
// Uso: Sistemas que requieren respuesta muy rápida pero pueden ser inestables
public TSNetRealTimeSimulator()
{
_simulationManager = new TSNetSimulationManager();
_simulationManager.Configuration.Duration = 0.01; // 10ms de simulación
_simulationManager.Configuration.TimeStep = 0.001; // 1ms timestep interno
SimulationInterval = TimeSpan.FromMilliseconds(10); // Timer cada 10ms
_simulationTimer = new Timer(ExecuteSimulationCycle, null, Timeout.Infinite, Timeout.Infinite);
}
// EJEMPLO 2: Configuración para respuesta cada 100ms (más razonable)
// Uso: Sistemas de control que requieren respuesta rápida pero estable
public TSNetRealTimeSimulator()
{
_simulationManager = new TSNetSimulationManager();
_simulationManager.Configuration.Duration = 0.1; // 100ms de simulación
_simulationManager.Configuration.TimeStep = 0.01; // 10ms timestep interno
SimulationInterval = TimeSpan.FromMilliseconds(100); // Timer cada 100ms
_simulationTimer = new Timer(ExecuteSimulationCycle, null, Timeout.Infinite, Timeout.Infinite);
}
// EJEMPLO 3: Configuración actual (estable) - respuesta cada 1000ms
// Uso: Simulación general con buena estabilidad numérica
public TSNetRealTimeSimulator()
{
_simulationManager = new TSNetSimulationManager();
_simulationManager.Configuration.Duration = 1.0; // 1s de simulación
_simulationManager.Configuration.TimeStep = 0.1; // 100ms timestep interno
SimulationInterval = TimeSpan.FromSeconds(1.0); // Timer cada 1s
_simulationTimer = new Timer(ExecuteSimulationCycle, null, Timeout.Infinite, Timeout.Infinite);
}
// REGLAS GENERALES:
// - Duration: Tiempo total de cada ciclo de simulación
// - TimeStep: Paso interno de TSNet (debe ser menor que Duration)
// - SimulationInterval: Frecuencia del timer (debería coincidir con Duration)
//
// RECOMENDACIONES:
// - Para estabilidad: TimeStep = Duration / 10
// - Para sistemas críticos: Duration >= 100ms
// - Para desarrollo/testing: Duration = 1000ms
*/