Introduzione al RTW
Corso Meccatronica anno 2008/09
Paolo Tripicchio
Real-Time Workshop
Esecuzione di Modello
Interfaccia run-time + modello
•
•
•
•
•
ModelInizialize
ModelOutputs
ModelUpdate
ModelDerivatives
ModelTerminate
eseguibile
Modello Single-Tasking
rtOneStep()
{
Controllo interrupt overflow
Attivazione 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 continui
ModelDerivatives
Do 0 o Più
ModelOutputs
ModelDerivatives
EndDo (Il numero di iterazioni dipende dal solutore.)
Calcolo derivate per aggiornare stati continui.
EndIntegrate
}
Modello Single-Tasking
main()
{
Initializzazione (inclusa istallazione di rtOneStep come
interrupt service routine, ISR, per un clock real-time).
While(tempo < tempo finale)
Esecuzione processi in Background.
EndWhile
Mask interrupts (Disattiva rtOneStep dall’esecuzione.)
Completa tutti i Processi in Background.
Shutdown
}
Modello Multi-Tasking
rtOneStep()
{
….
Controllo interrupt overflow
For i=1:NumTasks
Attivazione interrupt "rtOneStep"
If (hit in task i)
ModelOutputs(tid=0)
ModelOutputs(tid=i)
LogTXY
ModelUpdate(tid=i)
ModelUpdate(tid=0)
EndIf
Integrate
EndFor
ModelDerivatives
}
Do 0 o Pi`u
ModelOutputs(tid=0)
ModelDerivatives
EndDo
Calcolo derivate per aggiornare stati continui.
EndIntegrate
….
Modelli Multi Rate
• Continui e discreti, diversi rate
Tc multipli del base Ts
• Assegnamento priorità dei processi
freq. maggiore
priorità maggiore
• Assegnamento priorità blocchi asincroni
• Transizioni nella frequenza di
campionamento
Problemi 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
Blocco Rate Transition
• 3 differenti modalità
– Zero Order Hold
– Unit Delay
• Inserzione automatica
S-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
S-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
Blocchi asincroni
• Meccanismo function call tramite ISR
– Sottosistema triggered con enable fnc_call
Blocchi asincroni
• Approccio dual-model vs single-model
RTW 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
RTW Embedded Coder
• 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)
Codice Stand-Alone
main()
{
Inizializzazione (include l’installazione di rt_OneStep come
interrupt service routine per un clock real-time)
Inizializza e avvia timer hardware
Attiva interrupts
While(not Error) and (time < final time)
Background task
EndWhile
Disattiva interrupts (Disattiva rt_OneStep)
Completa tutti i background tasks
Shutdown
}
Codice Stand-Alone
• Single-Tasking
rt_OneStep()
{
Controlla overflow dell’Interrupt o altri errori
Attiva "rt_OneStep" (timer) interrupt
Model_Step() -- Passo temporale con output,logging,update
}
Codice Stand-Alone
• Multi-tasking multi-rate
rt_OneStep()
{
Controlla base-rate interrupt overrun
Attiva "rt_OneStep" interrupt
Determina quali rates devono eseguire in questo passo
Model_Step0() -- esegui codice con il passo base-rate
For N=1:NumTasks-1 -- itera i sub-rate tasks
If (sub-rate task N `e schedulato)
Controlla sub-rate interrupt overrun
Model_StepN() -- esegui codice passo sub-rate
EndIf
EndFor
}
Ottimizzazioni Fixed-Point
• Molte famiglie di Micro hanno solo ALU
• Ridurre consumo RAM , ROM, tempo
esecuzione
• Rappresentazione Slope , [Slope Bias]
V = S*Q + B
Ottimizzazioni Fixed-Point
• Scelta del punto binario (range vs risoluzione)
• Metodo di arrotondamento
– Floor , Ceiling , Zero , Nearest
• Gestione overflow
– Wrap , Saturate
Scarica

Sviluppo di software per centralina di controllo motore