60 lines
2.5 KiB
C#
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
|
|
*/ |