Ingénieur MBD Simulink et SCADE : modèles, tests MIL/SIL et code généré

L'ingénieur model-based conçoit le logiciel sous forme de modèles Simulink, Stateflow ou SCADE, les vérifie en simulation puis en tire le code C par génération automatique. Un bon profil explique aussi ce que devient chaque bloc dans le code, et pourquoi un résultat change entre le modèle et la cible.

Recevoir la fiche complète

Mis à jour le Par l'équipe Delectus5 min de lecture

La fiche Ingénieur MBD Simulink / SCADE : technologies, chaîne du poste, une question et la grille d'évaluation

Le poste se situe entre l'automatique et le logiciel embarqué. La personne reçoit des exigences fonctionnelles, construit le modèle d'une loi de commande ou d'une logique de modes, le teste en boucle fermée avec un modèle du système (MIL), génère le code avec Embedded Coder, TargetLink ou le générateur KCG de SCADE, puis compare le code au modèle en SIL et en PIL. Les offres parlent d'ingénieur MBD, d'ingénieur Matlab Simulink ou de développeur logiciel embarqué MBD.

Le recrutement voit souvent arriver deux profils. L'automaticien sait concevoir une régulation mais n'a jamais regardé le code généré ni manipulé la virgule fixe. Le développeur embarqué connaît le C mais modélise comme il coderait, avec des blocs MATLAB Function partout. Le poste demande les deux moitiés. L'expérience s'entend quand la personne parle de solveur à pas fixe, de transitions entre fréquences, de règles MAB contrôlées par Model Advisor, ou d'un écart entre modèle et code qu'elle a dû expliquer.

Un petit modèle à relire à l'écran, avec deux ou trois défauts, apprend plus qu'une liste de blocs connus. Le PDF propose un cas de 20 minutes sur un écart de comportement entre le modèle et le calculateur.

Outils et étapes du développement par modèles

MATLAB et Simulink

L'environnement de MathWorks où le logiciel se dessine en schémas-blocs. Pour du code embarqué, le modèle tourne avec un solveur à pas fixe, les signaux ont des types et des dimensions explicites, et les paramètres sont rangés dans un dictionnaire de données plutôt que dans l'espace de travail.

Stateflow

Les machines à états et diagrammes de flux intégrés à Simulink, pour la logique de modes, les séquences et la gestion des défauts. Les erreurs courantes portent sur l'ordre d'évaluation des transitions et sur des actions placées au mauvais endroit (entry, during, exit).

Embedded Coder et TargetLink

Les générateurs de code C de production. Embedded Coder est celui de MathWorks, TargetLink celui de dSPACE. Leur configuration fixe l'interface du code : noms et classes de stockage des signaux, fonctions réutilisables ou non, paramètres figés ou réglables en calibration.

SCADE

L'outil d'Ansys, aujourd'hui rattaché à Synopsys, pour le logiciel critique. Son langage est formellement défini, et son générateur KCG est qualifié pour DO-178C au niveau TQL-1 et certifié pour ISO 26262, IEC 61508 et la norme ferroviaire EN 50128. La vérification du code généré s'en trouve allégée.

MIL, SIL, PIL et HIL

Les étapes de test. MIL simule le modèle, SIL compile le code généré sur le PC et compare ses sorties à celles du modèle, PIL exécute le code sur le processeur cible ou un simulateur, HIL teste le calculateur réel sur un banc qui simule son environnement. Les mêmes cas de test servent d'une étape à l'autre.

Simulink Test, Coverage et Design Verifier

Simulink Test gère les harnais et les cas de test, Simulink Coverage mesure la couverture du modèle et du code jusqu'à la MC/DC, Simulink Design Verifier génère des tests et prouve des propriétés. Requirements Toolbox relie blocs et tests aux exigences.

Règles MAB et Simulink Check

Les règles du MathWorks Advisory Board (MAB), qui reprennent le travail des groupes MAAB nord-américain et japonais (JMAAB), fixent le nommage, la présentation et les constructions autorisées. Simulink Check les contrôle avec Model Advisor et vérifie aussi les règles liées aux normes de sûreté.

Virgule fixe

Beaucoup de microcontrôleurs n'ont pas d'unité de calcul flottant, ou le projet l'interdit. Les signaux sont alors codés en entiers avec une pente et un décalage. Fixed-Point Designer aide à choisir les échelles, mais la personne doit comprendre débordements et perte de précision.

Les intitulés changent d'une offre à l'autre : ingénieur MBD, ingénieur modélisation Matlab Simulink, développeur logiciel embarqué MBD, ingénieur model-based design, design leader logiciel MBD. Certains postes portent surtout sur la conception de lois de commande, d'autres sur la mise en code et l'intégration, d'autres sur la vérification des modèles. Les offres associent souvent AUTOSAR, quand les modèles produisent des composants logiciels, ISO 26262 ou DO-178C avec son supplément DO-331, et les bancs HIL de dSPACE ou de NI. Le niveau se vérifie mieux sur un modèle relu pendant l'entretien que sur la liste des boîtes à outils citées dans le CV.

Les compétences d'un ingénieur MBD à évaluer

  • Modélisation Simulink pour le code embarqué
  • Logique de modes en Stateflow
  • Génération de code et interface
  • Tests MIL, SIL et PIL
  • Virgule fixe et précision numérique
  • Règles de modélisation et vérification

Cinq situations tirées du travail d'un ingénieur MBD

Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.

  1. Question 1 · confirmé

    En SIL, les sorties du code généré s'écartent de 0,3 % de la simulation du modèle sur un signal. Comment cherchez-vous la cause ?

    Une bonne réponseIl localise d'abord l'écart : avec le même vecteur de test, il compare les signaux internes du modèle et du code dans Simulation Data Inspector pour trouver le premier bloc qui diverge. Les causes classiques : un type différent entre modèle et code (double en simulation, single ou entier dans le code), l'arrondi et la saturation en virgule fixe, un ordre d'exécution différent, un bloc qui dépend du pas, une fonction de bibliothèque remplacée par une version optimisée pour la cible. Il vérifie que la tolérance acceptée est écrite dans le plan de test.

    Signal d'alerte« 0,3 %, c'est négligeable », sans chercher, ou des modifications du modèle au hasard.

  2. Question 2 · junior à confirmé

    Pourquoi un modèle destiné à la génération de code utilise-t-il un solveur à pas fixe, et comment gérez-vous deux parties qui tournent à 1 ms et à 10 ms ?

    Une bonne réponseLe code embarqué s'exécute à période fixe, et un solveur à pas variable n'a pas d'équivalent en code. Pour plusieurs fréquences, chaque partie reçoit son temps d'échantillonnage, et les échanges passent par des blocs Rate Transition qui garantissent l'intégrité et le déterminisme des données. Il connaît le choix entre une tâche par fréquence et une exécution en tâche unique, et son effet sur le code généré.

    Signal d'alerteNe sait pas ce qu'est un Rate Transition, ou laisse Simulink insérer des conversions sans les regarder.

  3. Question 3 · confirmé

    Comment configurez-vous un modèle pour que le code généré s'intègre dans un logiciel écrit à la main ?

    Une bonne réponseIl fixe l'interface : prototype de la fonction d'entrée, noms et types des entrées et sorties, classes de stockage (variable globale importée ou exportée, structure, zone de calibration), types définis dans un fichier commun. Il utilise le dictionnaire de données et l'éditeur de mapping du code, et évite que le code appelant dépende de noms générés automatiquement. Avec AUTOSAR, l'interface suit les ports et les runnables du composant.

    Signal d'alerte« Je génère, et le développeur s'adapte. »

  4. Question 4 · confirmé

    Dans un diagramme Stateflow, deux transitions sortent du même état et leurs conditions peuvent être vraies en même temps. Que se passe-t-il, et comment l'évitez-vous ?

    Une bonne réponseStateflow évalue les transitions dans un ordre défini, affiché par un numéro sur chaque transition, et prend la première dont la condition est vraie. Le comportement dépend d'un ordre que le relecteur ne remarque pas toujours. Il rend les conditions exclusives, travaille en ordre explicite et utilise Model Advisor ou Design Verifier pour repérer les conditions qui se recouvrent.

    Signal d'alerte« Les deux transitions sont prises », ou aucune idée de l'ordre d'évaluation.

  5. Question 5 · confirmé à senior

    Un gain de 0,37 doit s'appliquer à un signal codé sur 16 bits, sur un microcontrôleur sans unité flottante. Comment le représentez-vous, et que vérifiez-vous ?

    Une bonne réponseIl choisit une représentation en virgule fixe avec une pente adaptée, ou une multiplication entière suivie d'un décalage, et calcule la plage du résultat intermédiaire pour éviter le débordement, souvent en passant par 32 bits. Il fixe le mode d'arrondi et la saturation, puis mesure l'erreur de quantification sur toute la plage d'entrée en comparant avec la version en double précision du modèle.

    Signal d'alerteLaisser le signal en double « parce que le compilateur s'en occupe » sur une cible sans unité flottante.

Recevez la fiche d'entretien complète en PDF

La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.

  • 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
  • Le niveau visé pour chaque question
  • Une mise en situation de 20 minutes et ce qu'on attend du candidat
  • La grille d'évaluation de 1 à 4, axe par axe

Vos questions sur l'embauche d'un ingénieur MBD

Un automaticien peut-il occuper un poste d'ingénieur MBD ?

Oui, si le poste porte surtout sur la conception des lois de commande et leur validation en simulation. Pour un poste qui va jusqu'au code embarqué, vérifiez qu'il a déjà configuré la génération, manipulé la virgule fixe et analysé un écart entre modèle et code. Sinon, prévoyez un accompagnement par un développeur embarqué pendant les premiers mois. L'inverse fonctionne aussi : un développeur C qui apprend Simulink.

Simulink ou SCADE : faut-il exiger l'outil exact du projet ?

Les principes se transfèrent : flux de données, temps d'échantillonnage, logique de modes, génération de code, vérification. Une personne solide en Simulink prend SCADE en main en quelques semaines, et l'inverse aussi. Exigez l'outil exact si le projet démarre tout de suite, si l'équipe ne peut pas former, ou si le poste demande d'expliquer la qualification de l'outil devant un auditeur.

Un test technique sur Simulink est-il utile ?

Oui, à condition qu'il soit court et fait pendant l'entretien. Préparez un modèle de vingt à trente blocs avec une boucle algébrique, un Rate Transition manquant et un type mal choisi, ou un diagramme Stateflow avec deux transitions qui se recouvrent. Demandez à la personne de le relire et de dire ce qu'elle corrige. En vingt minutes, vous voyez si elle a déjà livré du code généré.

Quelles boîtes à outils MathWorks citer dans l'offre ?

Citez celles que l'équipe utilise vraiment : Simulink et Stateflow presque toujours, Embedded Coder pour la génération, Simulink Test et Simulink Coverage pour la vérification, Simulink Check pour les règles de modélisation, AUTOSAR Blockset si les modèles produisent des composants AUTOSAR, Fixed-Point Designer pour une cible sans unité flottante. Une liste trop longue décourage de bons profils qui n'ont touché qu'une partie de l'outillage.

Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.

Les fiches voisines

Toutes les fiches →

Voyez Delectus sur vos propres offres.

Commencez gratuitement. Passez à l'échelle quand vous êtes prêt.

Demander une démo

Votre ATS, connecté à Delectus

  • Workable
  • Teamtailor
  • iCIMS
  • Lever
  • SmartRecruiters
  • Jobvite
  • Greenhouse
  • Pinpoint