Saltar al contenido principal

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 integrador integrate() 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, con posedge(), 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.