Después de trastear con controles de potencia, he desarrollado un control de aceleración máxima, que corta el regulador en caso de soprepasar una aceleración máxima dada. Este 'script' es de simulación, no de material. Personalmente me he inclinado a escribir todo lo relacionado con controles físicos en el 'script' de simulación y todo lo relacionado con el funcionamiento de controles sobre nodos y objetos en el 'script' del material. Aquí va:
- Código: Seleccionar todo
function Setup ()
end
function Update (inteval)
regulador = Call( "*:GetControlValue", "Regulator", 0 ) -- carga el valor del regulador
-- Control de aceleracion
if Call ( "*:GetAcceleration", 0 ) > 0.5 then -- llama al valor de aceleracion y establece la maxima aceleracion en 0.5 m/s^2
regulador = regulador - 0.01 -- baja el regulador un 1 por ciento
end
Call( "*:SetControlValue", "Regulator", 0, regulador ) -- aplica el regulador con el nuevo valor
end
Este 'script' es muy apropiado para el uso en locomotoras de gran potencia (BR101, por ejemplo) en tracción de pasajeros, proporcionando un control adecuado de confort. También impide que en maniobras, la locomotora aislada se nos descontrole.
He usado el valor de la variable del sistema 'Acceleration' en vez del control 'Accelerometer' por dos razones. La primera porque el dato del sistema es muy fácil de manejar y se encuentra en todos los vehículos. Y la segunda, porque el valor del control 'Accelerometer' no ofrece un valor real, si no un equivalente a la fuerza de tracción del vehículo en kN.