Ejemplo 2 - Distancia recorrida a partir de la velocidad
Ejemplo 2 - Distancia recorrida a partir de la velocidad:
Tarea:
El cuentakilómetros de un vehículo VEH_DIST_KM, que solo cuenta "km" enteros, se debe ampliar con ayuda de la señal de velocidad VEH_SPEED_KMPH de modo que se disponga de una resolución más fina.
Solución:
// Konstanten zur Einheitenumrechnung
uConv_kmph2mps = 1.0 / 3.6; // km/h -> m/s
uConv_m2km = 1e-3; // m -> km
SPEED = VEH_SPEED_KMPH * uConv_kmph2mps; // m/s
DIST_KM = integrate(SPEED, {storage: 'sto_DIST'})
* uConv_m2km; // km
DIST_FRAC = integrate(SPEED, posedge(VEH_DIST_KM), {storage: 'sto_DIST_frac'})
* uConv_m2km; // km
VEH_DISTFINE = VEH_DIST_KM + DIST_FRAC; // km
Funciones utilizadas
Explicación:
-
uConv_kmph2mps, uConv_m2km: en primer lugar se definen factores para la conversión de unidades. Esto mejora la legibilidad del código siguiente. Conviene colocar estas definiciones de forma centralizada al principio del conjunto de fórmulas. -
SPEED: la señal de velocidad del vehículo, que se mide en km/h, se convierte primero a m/s. Esta velocidad es fácil de integrar. -
DIST_KM: (¡extra!) A partir de la señal de velocidad puede determinarse el kilometraje total. El integradorintegrate()añade a su integrando la dimensión tiempo con la unidad s (segundo). De este modo se obtiene la distancia recorrida en m (metros), que después se convierte a la unidad de destino deseada, km. -
DIST_FRAC: también aquí se integra una distancia a partir de la señal de velocidad. Sin embargo, esta se pone a cero cada vez que, conposedge(), se detecta en el contador de kilómetros del vehículo un salto al siguiente valor de kilometraje. -
VEH_DISTFINE: la distancia recorrida por el vehículo con mayor resolución se obtiene sumando la parte fraccionaria determinada anteriormente a la lectura del contador del vehículo.