20
Introduzione al RTW Introduzione al RTW Corso Meccatronica anno 2008/09 Paolo Tripicchio

Introduzione al RTW

  • Upload
    levia

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

Introduzione al RTW. Corso Meccatronica anno 2008/09 Paolo Tripicchio. Real-Time Workshop. Esecuzione di Modello. Interfaccia run-time + modello eseguibile ModelInizialize ModelOutputs ModelUpdate ModelDerivatives ModelTerminate. Modello Single-Tasking. rtOneStep() { - PowerPoint PPT Presentation

Citation preview

Page 1: Introduzione al RTW

Introduzione al RTWIntroduzione al RTW

Corso Meccatronica anno 2008/09

Paolo Tripicchio

Page 2: Introduzione al RTW

Real-Time WorkshopReal-Time Workshop

Page 3: Introduzione al RTW

Esecuzione di ModelloEsecuzione di Modello

Interfaccia run-time + modello eseguibile

• ModelInizialize• ModelOutputs• ModelUpdate• ModelDerivatives• ModelTerminate

Page 4: Introduzione al RTW

Modello Single-TaskingModello Single-Tasking rtOneStep(){Controllo interrupt overflowAttivazione interrupt "rtOneStep"ModelOutputs -- passo temporale maggiore.LogTXY -- Log Tempo, stati e porte di uscita.ModelUpdate -- passo temporale maggiore.Integrate -- Integrazione nei passi temporali minori per gli stati

continuiModelDerivativesDo 0 o Più

ModelOutputsModelDerivatives

EndDo (Il numero di iterazioni dipende dal solutore.)Calcolo derivate per aggiornare stati continui.

EndIntegrate}

Page 5: Introduzione al RTW

Modello Single-TaskingModello Single-Taskingmain(){Initializzazione (inclusa istallazione di rtOneStep comeinterrupt service routine, ISR, per un clock real-time).While(tempo < tempo finale)

Esecuzione processi in Background.EndWhileMask interrupts (Disattiva rtOneStep dall’esecuzione.)Completa tutti i Processi in Background.Shutdown}

Page 6: Introduzione al RTW

Modello Multi-TaskingModello Multi-TaskingrtOneStep(){Controllo interrupt overflowAttivazione interrupt "rtOneStep"ModelOutputs(tid=0)LogTXY ModelUpdate(tid=0) Integrate

ModelDerivativesDo 0 o Pi`u

ModelOutputs(tid=0)ModelDerivatives

EndDo Calcolo derivate per aggiornare stati continui.

EndIntegrate….

….For i=1:NumTasks

If (hit in task i)ModelOutputs(tid=i)ModelUpdate(tid=i)

EndIfEndFor}

Page 7: Introduzione al RTW

Modelli Multi RateModelli Multi Rate

• Continui e discreti, diversi rateTc multipli del base Ts

• Assegnamento priorità dei processi freq. maggiore priorità maggiore

• Assegnamento priorità blocchi asincroni• Transizioni nella frequenza di

campionamento

Page 8: Introduzione al RTW

Problemi di trasferimento datiProblemi di trasferimento dati

• Integrità dei dati (preemption)– Trasferimento dati protetto– Trasferimento dati non protetto

• Determinismo (predicibilità)– Disponibilità dati– Rates di campionamento dei blocchi– Tempo di ritardo blocco in ricezione

Page 9: Introduzione al RTW

Blocco Rate TransitionBlocco Rate Transition

• 3 differenti modalità– Zero Order Hold– Unit Delay

• Inserzione automatica

Page 10: Introduzione al RTW

S-FunctionsS-Functions

• Estendono funzionalità di Simulink• Interfaccia per il codice hand-written• Interfaccia per l’hardware• Scrittura codice embedded ottimizzato

l’API S-function genera overhead

Page 11: Introduzione al RTW

S-FunctionsS-Functions

• Non mi interessa l’efficienza– Non-Inlined S-function

• Voglio interfacciare il mio codice– Wrapper S-function

• Voglio implementare un algoritmo altamente ottimizzato– Fully Inlined S-function

Page 12: Introduzione al RTW

Blocchi asincroniBlocchi asincroni

• Meccanismo function call tramite ISR– Sottosistema triggered con enable fnc_call

Page 13: Introduzione al RTW

Blocchi asincroniBlocchi asincroni

• Approccio dual-model vs single-model

Page 14: Introduzione al RTW

RTW Embedded CoderRTW Embedded Coder

• Utilizzo di memoria, Velocità esecuzione, Leggibilità paragonabile al codice scritto a mano

• Partizione efficiente codice multi-rate• La struttura dati rtModel contiene

esclusivamente le informazioni richieste dal modello

Page 15: Introduzione al RTW

• Generazione programmi stand-alone senza necessità di utilizzare RTOS

• Funzioni modello Embedded– model_initialize– model_step(tid)

• model_output(tid)• model_update(tid)

– model_terminate (opzionale)

RTW Embedded CoderRTW Embedded Coder

Page 16: Introduzione al RTW

Codice Stand-AloneCodice Stand-Alone

main(){Inizializzazione (include l’installazione di rt_OneStep comeinterrupt service routine per un clock real-time)Inizializza e avvia timer hardwareAttiva interruptsWhile(not Error) and (time < final time)

Background taskEndWhileDisattiva interrupts (Disattiva rt_OneStep)Completa tutti i background tasksShutdown}

Page 17: Introduzione al RTW

Codice Stand-AloneCodice Stand-Alone

• Single-Tasking

rt_OneStep(){Controlla overflow dell’Interrupt o altri erroriAttiva "rt_OneStep" (timer) interruptModel_Step() -- Passo temporale con output,logging,update}

Page 18: Introduzione al RTW

Codice Stand-AloneCodice Stand-Alone• Multi-tasking multi-rate

rt_OneStep(){Controlla base-rate interrupt overrunAttiva "rt_OneStep" interruptDetermina quali rates devono eseguire in questo passoModel_Step0() -- esegui codice con il passo base-rateFor N=1:NumTasks-1 -- itera i sub-rate tasks

If (sub-rate task N `e schedulato)Controlla sub-rate interrupt overrunModel_StepN() -- esegui codice passo sub-rate

EndIfEndFor}

Page 19: Introduzione al RTW

Ottimizzazioni Fixed-PointOttimizzazioni Fixed-Point

• Molte famiglie di Micro hanno solo ALU• Ridurre consumo RAM , ROM, tempo

esecuzione• Rappresentazione Slope , [Slope Bias]

V = S*Q + B

Page 20: Introduzione al RTW

Ottimizzazioni Fixed-PointOttimizzazioni Fixed-Point

• Scelta del punto binario (range vs risoluzione)

• Metodo di arrotondamento– Floor , Ceiling , Zero , Nearest

• Gestione overflow– Wrap , Saturate