• Aucun résultat trouvé

Application : Le Contrôleur de Moteurs

4.3 Applications Résultant de MUSIC : Outil de Co-conception

4.3.2 Application : Le Contrôleur de Moteurs

Cette partie montre les résultats d’une application de co-conception multilangage dans le cas

d’un modèle multilangage. L’application concerne le contrôle d’un bras de robot. Ce système

peut être divisé en deux parties : les moteurs commandant le bras du robot et le contrôleur. Le

langage SDL est utilisé pour modéliser le contrôleur alors que MATLAB, ou COSSAP dans

une autre configuration, modélisent le comportement physique des moteurs. Le contrôleur du

bras du robot peut ajuster les paramètres de vitesse et de position de deux moteurs. Quatre

signaux sont échangés entre le modèle MATLAB et le modèle SDL (2 pour chaque moteurs).

Le premier signal contrôle le moteur et le second lit la position courante du bras. Le schéma de

base est représenté sur la figure 4.8a). Le bloc GENERATEUR calcule une trajectoire pour tous

les moteurs commandant le bras du robot. Le bloc CAPTEUR reçoit les positions et les transmet

au contrôleur. Le bloc contrôleur a pour rôle de donner les ordres aux moteurs seulement lorsque

c’est possible.

La spécification SDL est composée de quatre blocs comprenant six processus : un

géné-rateur, un distributeur, un contrôleur par moteur et un échantillonneur par moteur. La figure

4.8b montre la structure des processus du système du contrôleur. Le générateur produit deux

si-gnaux, un ordre et une adresse. Le distributeur renvoie l’ordre au contrôleur du moteur désigné

Applications Résultant de MUSIC : Outil de Co-conception 110

Controleur

Générateur

Echantillonneur

Moteur 2

Moteur 1

Modèle SDL Modèle mécanique

Gener Dist

Ctrl2

Ctrl1

Echant1

Echant2

Echantillonneur M1 Position M2 Position Generateur Générateur Ord Adr Controleur Ack Pos2 Pos1 Consm1 Cosm2 Moteur 1 Consigne Moteur 2 Consigne

(a)

(b)

FIG. 4.8 – Application du contrôleur de moteurs

par l’adresse. Un processus de contrôle donne l’ordre au moteur et “scan” sa position. Quand un

moteur est sur le point de réaliser son ordre, le processus de contrôle informe le générateur qu’il

est disponible pour une nouvelle opération. Etant donné que la position est un signal continu,

chaque processus échantillonneur se charge de digitaliser les signaux.

La modélisation du comportement physique des moteurs a été réalisée dans deux

configu-rations différentes : l’une en MATLAB et l’autre en COSSAP.

Enfin, le système complet et ses interconnexions sont décrits dans un fichier de coordination

qui sert d’entrée à MCI. A ce niveau le fichier est constitué de deux blocs interconnectés par

des canaux abstraits. On utilise donc le format SOLAR pour décrire notre système à simuler.

Pour les étapes suivantes l’utilisation de MUSIC permet de générer automatiquement le fichier

de coordination pour pouvoir cosimuler avec MCI.

Dans un premier temps, il est intéressant de modéliser les moteurs en MATLAB ou en

COS-SAP et de garder la spécification SDL initiale. La première vérification consiste en la validation

du système complet dont les sous-systèmes modélisant les moteurs sont réalisés en MATLAB

ou en COSSAP. Les copies d’écran de la figure 4.9 représentent deux cosimulations de très haut

niveau d’abstraction SDL-MATLAB sur la figure a et SDL-COSSAP sur la figure b. Ce type

de modélisation et de cosimulation présente un sérieux avantage. MATLAB est très approprié

pour simuler un moteur et offre donc toutes les possibilités pour modifier les paramètres au

cours de la simulation. De plus, elle permet de séparer les moteurs de la spécification SDL, qui

est introduite dans l’outil de co-conception. Avec ce type de cosimulation, on vérifie ainsi que

la spécification réalisée à haut niveau est conforme au cahier des charges. Il est vrai que la

mo-délisation et la simulation entière du système peut se faire directement en SDL, mais certains

sous-systèmes comme la modélisation des moteurs est plus rapide à réaliser en MATLAB qu’en

SDL. C’est pourquoi, le concepteur est amené à découper sa spécification avant de la modéliser.

Applications Résultant de MUSIC : Outil de Co-conception 111

(a) (b)

FIG. 4.9 – Cosimulations à haut niveau

Il sera beaucoup plus rapide de modéliser la partie mécanique (environnement extérieur) et le

reste en SDL et de cosimuler l’ensemble du système, plutôt que de tout modéliser en SDL et de

le simuler, pour ensuite le partitionner.

Dans ce type de simulation, le système est validé à très haut niveau avec son environnement

extérieur avant d’être raffiné par un outil de co-conception.

Cosimulation Non Temporelle au Niveau Architecture

Le C généré par MUSIC est un C non dédié à un processeur. Le VHDL est un VHDL

RTL qui peut directement passer à l’étape de synthèse. MUSIC génère également les modèles

directement utilisables par l’outil de cosimulation et fournit un fichier SOLAR de coordination

pour décrire les connexions des modules générés.

A ce nouveau niveau, la cosimulation C-VHDL-Environnement peut être exécutée (figure

4.10). Le modèle VHDL est simulé sur un déboggueur VHDL, l’environnement est toujours

simulé par son ou ses simulateurs appropriés (MATLAB sur la figure 4.10), et le C sera exécuté

sur la machine ou par l’intermédiaire d’un déboggueur pour analyser son exécution (l’outil

DDD ”Data Display Debugger” sur la figure). Si un modèle nécessite d’être simulé sur une

autre machine, l’utilisateur doit tout simplement éditer ce fichier de coordination et y adjoindre

le nom de la nouvelle machine désirée.

Le concepteur peut parfois avoir besoin de simuler son système avec la notion de temps

sans pour autant utiliser un modèle du processeur. Il est possible à ce niveau d’obtenir la notion

de temps par l’annotation temporelle approximative des temps d’exécution du langage C et

par adjonction d’une propriété “TIMESTEP” dans le fichier de coordination. Les fichiers C sont

recompilés en mode temps-réel, et l’outil de cosimulation synchronise les “temps semi-virtuels”

des simulateurs entre eux. Le programme C généré par MUSIC est en fait annoté en temps à

chaque passage dans la boucle de la machine d’état. Les simulateurs du modèle extérieur sont

inclus dans cette synchronisation temporelle uniquement s’ils contiennent la gestion du temps

à l’intérieur de leurs simulations (MATLAB par exemple). Ce type de cosimulation en mode

annotation permet plus souvent d’ajuster les vitesses des simulateurs entre eux, plutôt que de

permettre une vérification temporelle.

Applications Résultant de MUSIC : Outil de Co-conception 112

FIG. 4.10 – Cosimulation par exécution native

4.3.2.1 Cosimulation Temporelle au Niveau Cycle

Pour pouvoir à nouveau descendre dans les niveaux d’abstraction, l’introduction de modèles

de processeur est indispensable. Le C généré est donc modifié suivant les caractéristiques du

processeur et des ports dont il dispose pour échanger ses données. Si ces ports ne sont pas

suffi-sants, il faut ajouter des interfaces, etc.. Le “targeting”

3

permet de correctement implanter le C

généré dans un processeur. Le C obtenu est compilé par le compilateur associé au processeur et

le code binaire obtenu est inscrit dans sa mémoire. La cosimulation synchronisée de l’ensemble

processeur(s)-VHDL et de l’environnement extérieur est la dernière étape de validation avant

l’implémentation du prototype virtuel.

Cette cosimulation est synchronisée en respectant le modèle de la barrière temporelle et

permet de valider par simulation le système complet, à l’origine en SDL, à très bas niveau. La

simulation de l’environnement extérieur est toujours réalisée avec le simulateur MATLAB. La

figure 4.11) représente cette simulation avec un microcontrôleur (Intel 8051). De nombreuses

configurations ont été réalisées autour du 8051 et/ou du ST10 et de nouveaux travaux

inter-viennent également dans l’étude des performances en fonction du partitionnement des modules

matériels et logiciels sur différents processeurs.

Applications Résultant de MUSIC : Outil de Co-conception 113

FIG. 4.11 – Simulation au niveau cycle d’horloge

même machine Machine différente

C-C Proc-Proc C-C Proc-Proc

Temps d’un cycle (ms) 39.9 43.2 68.3 70.7

Nb Cycle/s 25 23 15 14

TAB. 4.1 – Temps de cosimulation