Prototypage Rapide

Model Based Design

[Lab] - L.Kerhuel - R.Delpoux

Plan:

  • Model Based Design

    • Model
  • De la simulation au programme embarqué

    • Différences temporelles
    • type de données et optimisation

Model Based Design (MDB)

./Picooz_01_Close.jpg

Model Based Design (MDB)

./Picooz_01_Open.jpg

Model Based Design (MDB)

./Picooz_03_Close.jpg

Model Based Design (MDB)

./Picooz_IdentificatoinBlockPresentation.png

Model Based Design (MDB)

./Picooz_Identificatoin_eq_01.png

./Picooz_Identificatoin_eq_02.png

./Picooz_SuperTwistingController.png

Model Based Design

  1. Identification
  2. Simulation / synthèse commande
  3. Test

TP: Validation du modèle de moteur DC fournit

  • log de command & réponse
  • Simulation comparaison
    • commande avec modèle moteur vs
    • système réel

TP: Validation du modèle de moteur DC fournit

./Simulink_DCMotorPravalux_LogVsSimu.png

De la simulation au programme embarqué

Pendule inverse

./Inverted_Pendulum_ControlLoopCloseUp.png

Aspect Temporel:

Simulation

Modélisation en temps continue:

transformé de Laplace en p (s)

  • Solver résoud les équations différentielles
    • approximation numérique
  • Pas de contraintes temps réelle
    • différent solveurs (Runge-Kutta, ODEx,…)

Aspect Temporel:

Implémentation

Implémentation en temps discret:

“pas” de calcul fixe

  • pas de solveur
  • Contrainte temps réel
    • model Single-Rate & Multi-Rate
    • implementation Single-Tasking & Multi-Tasking

Discrete times

  • Single-rate:

    • Les blocks ont tous la même période d’exécution (Même couleur)
  • Multi-Rate

    • Les blocks peuvent avoir des périodes d’exécution différentes (Schéma multicolore)

Modèle multi-rate

Charge CPU d’un modèle multi-rate single-tasking (@70 mips)

./Scope_SingleTasking_70MIPS.png

Charge CPU d’un modèle multi-rate single-tasking (@20 mips)

./Scope_SingleTasking_20MIPS.png

Single-Tasking

Single-Tasking: Dans le slot de temps, l’exécution de tous les blocks doit se terminer avant la fin du slot.

Multi-Tasking

Multi-Tasking: Préemption possible -> Monotonic Rate Scheduler

  • La tâche la plus fréquente à la priorité maximale
    • Préemptera une tache plus lente
    • Beaucoup plus flexible
    • Mode par défaut (voir options du solveur)

Charge CPU d’un modèle multi-rate multi-tasking (@70 mips)

./Scope_MultiTasking_70MIPS.png

Charge CPU d’un modèle multi-rate multi-tasking (@20 mips)

./Scope_MultiTasking_20MIPS.png

./Scope_MultiTasking_70MIPS.png

Tasking Conclusion

  • Single-Tasking @ 20 MIPS -> Overload

    • dispatcher la tache la plus lente sur plusieurs slots
    • (option d’offset dans Time Step -> [.001 .005])
  • Multi-Tasking @ 20 MIPS -> Ok

    • Rate transfert block options
      • Data Integrity
      • Deterministic data transfert

Optimisation

type de données

  • Virgule Fixe
  • Virgule Flottante

Virgule fixe

int8

$\underbrace{1}_{sign\ (1)} \ \underbrace{1111111}_{mantisse\ (7)} * \underbrace{slope}_{\text{LSB value}}$

  • $v = (mantisse-sign*128) * slope $

  • plage: $\pm 2^{7} * slope$

  • 2 digit [0-9] significatifs

Virgule flotante

Single (32 bits)

$\underbrace{1}_{sign\ (1)} \ \underbrace{11111111}_{exponent\ (8)} \ \color{yellow}{1}\underbrace{11111111111111111111111}_{mantisse\ (23)} $

  • $v \approx (1-2 sign) * mantisse * 2^{exponent-127}$

  • plage: $\pm 2^{128} = \pm 3.4*10^{38}$

  • 7 digit [0-9] significatifs

IEEE 754SingleDouble
Format width3264
Sign bit11
exponent width811
Precision width23+152+1

1st phantom bitof the significand is always 1.

Virgule flotante

Custom (8 bits)

$\underbrace{1}_{sign\ (1)} \ \underbrace{1111}_{exponent\ (4)} \ \color{yellow}{1}\underbrace{111}_{mantisse\ (3)} $

  • $v \approx (1-2 sign) * mantisse * 2^{exponent-127}$

  • plage: $\pm 2^{128} = 3.4*10^{38}$

  • 0.9 digit [0-9] significatifs

Custom 8 bit Floating point

ParameterSingleDoubleCustom
Format width32648
Sign bit111
exponent width8114
Precision width23+152+13+1

Script Matlab pour tester un flottant 8 bits

% 4 bit exponent (signed)
emin = -7; emax = 6; 
% 3 bits significand
p = 3;

exps = 2.^[emin:emax]; 
vals = (2^p) + [0:(2^p-1)];  % significand with leading 1

TotalVal = vals'*exps;

% add denormalized values
8bitFloat = unique([TotalVal  ; 2^emin * [0:(2^m-1)]']);
8bitFloat = unique(flipud(-TotalVal) ;TotalVal]); % with neg vals

Simulink

Data-type

Data-type notation

  • int8…uint23
  • fixdt(1,16)
    • signed (1)
    • 16 bit width
    • Scaling is derived from defined min & max
  • fixdt(1,16,15)
    • Scaling is En15 (Exp neg $\rightarrow 2^{-15}$)
  • fixdt(1,16,-15)
    • Scaling is E15 (Exp $\rightarrow 2^{15}$)

Datatype notation

./Simulink_TypeCast_SlopeAndBias.png

  • fixdt(1,16,.01,0)
    • Scaling is sfix16Sp01
      • Slope point 01

./Simulink_TypeCast_SlopeAndBias_Sat.png

  • SI: Stored Integer
  • RWV: Real World Value

TP

https://rtdc.ctrl-elec.fr/

download

Elements de correction

Liens:

Slide control:

  • Next: Right Arrow or Space
  • Previous: Left Arrow
  • Start: Home
  • Finish: End
  • Overview: Esc
  • Speaker notes: S
  • Fullscreen: F
  • Zoom: Alt + Click