đ MATLAB â Engineering & Safety-Critical Workflows
MATLAB nâest pas (souvent) le langage âembarquĂ©â final : câest la plateforme dâingĂ©nierie (calcul, identification, conception, simulation, validation) qui alimente des implĂ©mentations certifiables via Model-Based Design (Simulink) et code generation.
MATLAB : le âworkbenchâ de lâavionique moderne.
De la loi de commande (GNC / FCS) aux algorithmes de dĂ©tection/anomalies, MATLAB/Simulink sert Ă modĂ©liser, simuler, tester, valider, puis souvent Ă gĂ©nĂ©rer du code C/Ada pour lâembarquĂ©.

MATLAB, câest quoi (vraiment) ?
Langage + environnement : matrices, scripts, fonctions, toolboxes. Différence MATLAB vs Simulink (modÚle bloc).
NumericsToolboxesEngineeringSimulink & Model-Based Design
Du schéma fonctionnel à la simulation temporelle : plant model, controller, buses, states, scheduling, fixed-step.
SimulinkControlPlantCommande & estimation
PID/State-space, observateurs, filtres (Kalman), identification systÚme, linéarisation, robustesse, marges.
GNCKalmanIDCode Generation (Embedded)
Passage au monde déterministe : fixed-step, types fixes, saturation, anti-UB, limitations supportées, style MISRA-ready.
CodegenDeterminismCV&V : tests, couverture, traçabilité
Requirements-based testing, back-to-back tests (model vs code), SIL/PIL/HIL, gestion des cas limites.
V&VBack-to-backCoverageSafety-critical : DO-178C / DO-331
Model-based certification : exigences, modĂšles qualifiĂ©s, preuves, outillage, configuration, audits, âevidence packageâ.
DO-178CDO-331ProcessDomaines avionique & exemples âavionsâ
A320/737 : usage typique en conception (lois de commande, sim, V&V). Sur lâembarquĂ© : C/Ada gĂ©nĂ©rĂ© ou recodĂ©.
A320737FCSArchitecture âmodel â codeâ
De lâexigence au modĂšle : data dictionary, interfaces, buses, rate transitions, scheduling, diagnostics, safe states.
InterfacesRatesDiagnosticsChecklist âMATLAB/Simulink safe-readyâ
RÚgles concrÚtes pour modÚles déterministes, codegen-friendly, testables, traçables, auditables.
ReviewMBDSafetyMini-projet : filtre + clamp + diagnostic
Exemple MATLAB âprototypeâ + version âembedded-styleâ (types fixes) + tests + tableau de cas limites.
ExampleFixed-pointTestsRessources & docs
Toolboxes clés, concepts MBD, SIL/PIL/HIL, notion de back-to-back, et repÚres safety.
DocsToolboxesStandardsâMATLAB en avion, ça tourne ?â
RĂ©ponse claire : rarement âtel quelâ. On parle plutĂŽt de modĂšles + gĂ©nĂ©ration de code + V&V + contraintes temps rĂ©el.
FAQReality-checkEmbeddedForces âingĂ©nierie avioniqueâ
- Prototypage rapide : tester des lois/algos sur des données réelles.
- Numérique : matrices, optimisation, identification, signal processing.
- ĂcosystĂšme : toolboxes (control, signal, optimization, aerospace, etc.).
- Traçabilité possible via workflows MBD (Simulink + tests + rapports).
Exemple MATLAB (filtre + clamp)
function [y, diag] = safe_filter(x, state)
% Simple 1st order low-pass + clamp + diagnostic
% x: input sample, state: previous output
alpha = 0.1;
y = (1-alpha)*state + alpha*x;
diag = struct();
diag.saturated = false;
% clamp
if y > 1.0
y = 1.0; diag.saturated = true;
elseif y < -1.0
y = -1.0; diag.saturated = true;
end
Limites âembarquĂ© & safetyâ
- Non dĂ©terminisme potentiel (types dynamiques, allocations implicites) si on reste en prototype âdesktopâ.
- Performance & timing : lâembarquĂ© exige des boucles bornĂ©es, types fixes, budgets WCET.
- Certification : le code final doit ĂȘtre prouvable (tests, coverage, traçabilitĂ©).
Architecture conceptuelle dâun modĂšle avionique
flowchart LR
Req[Requirements] --> M[Simulink Model]
M --> P[Plant Model / Environment]
M --> C[Controller / Laws]
C --> O[Outputs / Actuators]
P --> S[Sensors]
S --> C
C --> D[Diagnostics / Monitoring]
D --> M
Points clés (safety-ready)
| Concept | Pourquoi | Risque à éviter |
|---|---|---|
| Fixed-step | déterminisme temporel | variable-step non embarquable |
| Rates & scheduling | multi-tùches / périodes | jitter, transitions de rate mal gérées |
| Interfaces (buses) | API explicite | signaux implicites / connexions floues |
| State machines | modes, transitions | modes implicites / logique dispersée |
Cas dâusage (GNC / FCS)
- Design de correcteurs (PID, LQR, Hâ) + marges / robustesse.
- Observateurs (Kalman, complementary) + fusion capteurs.
- Identification systĂšme (modĂšles Ă partir de donnĂ©es dâessai).
- Simulation scénarios : turbulence, capteur bruité, panne, saturation.
Mini-exemple âdiscretâ (concept)
% Discrete state-space: x(k+1)=A x(k)+B u(k), y(k)=C x(k)
A = [0.98 0; 0 0.95]; B = [0.02; 0.01]; C = [1 0];
x = [0;0];
for k=1:100
u = 0.5; % command
x = A*x + B*u; % update
y = C*x; % output
end
Ce qui devient âsafety-criticalâ
- Saturation & rate-limits (actuateurs).
- Plausibility checks capteurs + dégradations.
- Modes (active/degraded/fault) via machines à états.
- Bornage : loops, temps, mémoire, types.
Le âmurâ prototype â embarquĂ©
| Aspect | Prototype MATLAB | Embedded deterministic |
|---|---|---|
| Types | dynamique / double par défaut | types fixes, éventuellement fixed-point |
| Timing | non contraint | périodes, WCET, fixed-step |
| MĂ©moire | allocations implicites possibles | buffers bornĂ©s, pas dâalloc dans la boucle |
| Safety | scripts âflexiblesâ | rĂšgles, restrictions, analyse statique, V&V |
Diagramme : model â code â back-to-back
flowchart LR
M[Simulink Model] --> CG[Code Generation]
CG --> C[C / Embedded Code]
M --> T1[Model Tests]
C --> T2[Code Tests]
T1 --> B2B[Back-to-back Comparison]
T2 --> B2B
B2B --> REP[Evidence Reports]
SIL / PIL / HIL (lecture pratique)
| Mode | But | Ce quâon dĂ©couvre |
|---|---|---|
| SIL | code tournant sur PC | écarts modÚle/code, erreurs logiques, overflow |
| PIL | code sur target | timing, compilateur, ABI, précision numérique |
| HIL | target + plant temps réel | latences, interfaces, jitter, comportements limites |
Requirements-based testing
Req-CTRL-001: Output must be saturated to [-1..+1]
Test-CTRL-001A: x=2.3 -> y=+1
Test-CTRL-001B: x=-9 -> y=-1
Test-CTRL-001C: x=0.2 -> y=0.2
Evidence: report + traceability matrix
Couverture (concept)
- Couverture modÚle : décisions, conditions, états/transitions (machines à états).
- Couverture code : statement/branch (et parfois plus selon criticité/process).
- Justifications : tout ce qui nâest pas couvert doit ĂȘtre justifiĂ© (code mort, unreachable, etc.).
Pour lâavionique, le sujet nâest pas âMATLAB certifiĂ©â, mais comment un workflow model-based produit des preuves acceptables. Cela implique : exigences, modĂšles, vĂ©rification, outillage, configuration, audits.
âEvidence packageâ (vue process)
flowchart TB
R[System Requirements] --> SR[Software Requirements]
SR --> M[Model (Simulink/Stateflow)]
M --> TG[Test Generation / Scenarios]
TG --> MR[Model Test Reports]
M --> CG[Code Generation]
CG --> C[Generated C Code]
C --> CR[Code Test Reports]
SR --> TM[Traceability Matrix]
MR --> PKG[Certification Evidence Package]
CR --> PKG
TM --> PKG
Ce qui est âscrutĂ©â en audit
| Zone | Question typique | Preuve attendue |
|---|---|---|
| ModÚle | est-il déterministe, clair, et maßtrisé ? | guidelines, revues, restrictions, logs |
| Outillage | peut-il masquer un défaut ? | justification/qualification selon usage |
| TraçabilitĂ© | Req â modĂšle â tests â rĂ©sultats ? | matrices + rapports |
| Tests | cas limites et scénarios critiques couverts ? | campaign reports + coverage |
OĂč MATLAB apparaĂźt typiquement dans un programme avion
| Phase | Usage MATLAB/Simulink | Livrables |
|---|---|---|
| Conception | design laws, estimation, identification | modĂšles, scripts, rapports |
| Simulation | plant + controller + scénarios | campagnes de sim, KPI |
| V&V | tests req-based, back-to-back | rapports, coverage, traçabilité |
| Industrialisation | codegen ou spécification vers C/Ada | code, tests target, evidence |
RĂ©fĂ©rence â737 MAX / MCASâ (lecture engineering, sans sensationalisme)
- Les systÚmes de commande et logiques de modes sont typiquement conçus/validés via modÚles + scénarios.
- Ce qui compte cĂŽtĂ© safety : validation des entrĂ©es, modes explicites, dĂ©gradations, limites dâautoritĂ©, tests robustesse.
- MATLAB/Simulink sert à éprouver ces transitions et cas limites avant implémentation embarquée.
Pattern recommandé (safety-ready)
flowchart LR
In[Sensors] --> Val[Validate & plausibility]
Val --> Norm[Normalize / filter]
Norm --> Ctrl[Control law]
Ctrl --> Lim[Clamp / rate limit]
Lim --> Out[Actuators]
Val --> Diag[Fault flags]
Norm --> Diag
Ctrl --> Diag
Diag --> Mode[Mode manager (FSM)]
Mode --> Ctrl
Table : rĂšgles âdesign for verificationâ
| RĂšgle | Pourquoi | Comment |
|---|---|---|
| Interfaces explicites | traçabilité & test | buses, naming, dictionnaire de données |
| Modes centralisés | éviter logique dispersée | FSM / Stateflow, transitions revues |
| Bornes partout | sécurité + déterminisme | clamp/rate-limit, ranges, saturations |
| Logs bornĂ©s | timing stable | buffer circulaire, quotas, âmonitoring taskâ |
[MATLAB/Simulink Safety-Ready Checklist]
A) Determinism
- [ ] Fixed-step solver for embedded-intent models
- [ ] Explicit sample times; rate transitions handled
- [ ] No hidden dynamic memory patterns in real-time path
B) Data & Types
- [ ] Explicit data dictionary; no implicit signal typing
- [ ] Fixed-width types where needed; consider fixed-point strategy
- [ ] Saturation/clamp everywhere a boundary exists
C) Architecture
- [ ] Modes via explicit state machine (FSM)
- [ ] Separation: control loop vs monitoring/logging
- [ ] Diagnostics flags + counters (observable behavior)
D) Verification
- [ ] Requirements-based tests exist for each key requirement
- [ ] Edge cases covered: sensor out-of-range, spikes, intermittence
- [ ] Back-to-back tests between model and generated/hand code
E) Evidence
- [ ] Traceability matrix: Req -> Model element -> Test -> Report
- [ ] Coverage evidence (model and/or code as required)
- [ ] Configuration management: versioning, reproducible builds and reports
Prototype MATLAB simple
function [y, state, diag] = lp1_safe(x, state)
alpha = 0.2;
y = (1-alpha)*state + alpha*x;
diag = struct('sat', false);
if y > 1.0
y = 1.0; diag.sat = true;
elseif y < -1.0
y = -1.0; diag.sat = true;
end
state = y;
Embedded-style (intention : types fixes + bornes)
% Intent: fixed-point-ish style (concept)
% Use explicit scaling to int16 range [-32768..32767]
function [y_q15, state_q15, diag] = lp1_q15(x_q15, state_q15)
% x_q15: int32 representing Q15
alpha_q15 = int32(6553); % ~0.2 in Q15 (0.2*32768)
y_q15 = ( (int32(32768)-alpha_q15) * state_q15 + alpha_q15 * x_q15 ) / int32(32768);
diag = struct('sat', false);
if y_q15 > int32(32767)
y_q15 = int32(32767); diag.sat = true;
elseif y_q15 < int32(-32768)
y_q15 = int32(-32768); diag.sat = true;
end
state_q15 = y_q15;
Table de tests (cas limites)
| Test | Entrée | Attendu | Diag |
|---|---|---|---|
| T1 | x=0, state=0 | y=0 | sat=false |
| T2 | x=+10, state=0 | y=+1 (clamp) | sat=true |
| T3 | x=-10, state=0 | y=-1 (clamp) | sat=true |
| T4 | x=0.1, state=0.1 | yâ0.1 | sat=false |
Toolboxes / briques utiles (typique aéronautique)
| Brique | Usage |
|---|---|
| Control / Robust control | design de lois, marges, stabilité |
| System identification | modĂšles Ă partir de donnĂ©es dâessai |
| Signal processing | filtrage, spectral, détection |
| Simulink + State machines | modélisation exécutable, modes |
| Code generation | industrialisation vers C (et workflows V&V) |
| Test / coverage | campagnes, rapports, traçabilité |
Q1 â MATLAB est-il exĂ©cutĂ© âtel quelâ sur avion ?
Q2 â Alors pourquoi MATLAB est central ?
- AccĂ©lĂšre les itĂ©rations dâalgorithmes.
- Permet des campagnes de simulation massives.
- Structure le V&V via MBD : tests + rapports + back-to-back.
Q3 â Le risque principal ?
1) Prototype algorithm in MATLAB using real flight/test data
2) Move to Simulink for executable model + timing intent
3) Enforce determinism: fixed-step, explicit sample times, bounded logic
4) Model modes explicitly (state machine) + diagnostics flags
5) Define data dictionary: types, ranges, units, scaling
6) Add clamps/rate limits + plausibility checks everywhere
7) Create requirements-based tests + edge cases
8) Run back-to-back tests (model vs generated/hand code)
9) Validate on SIL then PIL then HIL for timing/IO behavior
10) Produce evidence: reports, coverage, traceability, config management
