Esempio 2 - Distanza percorsa dalla velocità
Esempio 2 - Distanza percorsa dalla velocità:
Compito:
Il contachilometri di un veicolo VEH_DIST_KM, che conta solo "km" interi, deve essere ampliato con l'aiuto del segnale di velocità VEH_SPEED_KMPH in modo da rendere disponibile una risoluzione più fine.
Soluzione:
// 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
Funzioni utilizzate
Spiegazione:
-
uConv_kmph2mps, uConv_m2km: Per prima cosa vengono definiti i fattori per la conversione delle unità. Ciò migliora la leggibilità del codice seguente. È opportuno collocare tali definizioni in modo centralizzato all'inizio del set di formule. -
SPEED: Il segnale di velocità del veicolo, misurato in km/h, viene dapprima convertito in m/s. Questa velocità è facilmente integrabile. -
DIST_KM: (Bonus!) Dal segnale di velocità è possibile ricavare il chilometraggio totale. L'integratoreintegrate()aggiunge al proprio integrando la dimensione tempo con l'unità s (secondo). Ne risulta così la distanza in m (metri), che viene poi convertita nell'unità desiderata km. -
DIST_FRAC: Anche qui una distanza viene integrata a partire dal segnale di velocità. Tuttavia essa viene azzerata ogni volta che, conposedge(), nel contachilometri del veicolo viene rilevato il passaggio al chilometro successivo. -
VEH_DISTFINE: La distanza del veicolo con risoluzione più fine risulta aggiungendo la quota parziale determinata in precedenza alla lettura del contachilometri del veicolo.