Passa al contenuto principale

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