Académique Documents
Professionnel Documents
Culture Documents
Christopher Carvalho
Embry-Riddle Aeronautical
University Daytona Beach, Floride
Novembre 2,2012
Remerciements
Merci à nos épouses et à nos proches - Sara, Laura, Bailey et Lauren - qui ont
supporté patiemment les longues nuits, les corvées négligées et qui ont été nos
plus grands soutiens pour réussir cette aventure.
Merci à Brian DeRosa de nous avoir permis de prendre possession de sa
maison et de transformer sa table de salle à manger en hangar.
Merci à George Hicks, pilote radio-commandé de renommée mondiale,
pour avoir été notre pilote de sécurité, pour avoir été une grande source de
conseils et d'astuces pour les avions radio-commandés, pour avoir toujours eu
les pièces dont nous avions besoin, y compris des cellules entières, et pour
avoir toujours été prêt à voler sans préavis.
Merci à Richard Ruff de Mathworks pour son expertise technique et ses
conseils lors du développement de l'APM2 Blockset.
Résumé
1 Introduction 7
2 Configuration et utilisation 8
2.1 Matlab...................................................................................................8
2.2 Paramètres de configuration Simulink..................................................8
2.3 Matériel Run On Target........................................................................9
2.4 Répertoire des noyaux cibles Arduino..................................................9
2.5 Fichier IOWrappers.cpp............................................................................9
2.6 Chemin Simulink..................................................................................9
2.7 S-Function Build...................................................................................9
2.8 Téléchargement d'un modèle...................................................................10
3 2.0Blocs de la bibliothèque ArduPilot Mega 11
3.1 Blocs de capteurs.....................................................................................11
3.1.1 Unité de mesure inertielle.......................................................11
3.1.2 Capteur de pression barométrique...........................................12
3.1.3 Magnétomètre..............................................................................14
3.1.4 GPS..........................................................................................15
3.1.5 Sonde de Pitot.........................................................................19
3.2 Entrée récepteur / Sortie servo...................................................20
3.2.1 RC Read..................................................................................20
3.2.2 Écriture RC..............................................................................21
3.3 Timing..................................................................................................... 22
3.3.1 Horloge........................................................................................22
3.3.2 Moniteur en temps réel...........................................................22
3.4 Sortie de données............................................................................23
3.4.1 Télémétrie...................................................................................23
3.4.2 Sortie USB...............................................................................25
3.4.3 Puce de mémoire flash................................................................25
3.4.4 Téléchargement des données.......................................................26
3.5 Autres blocs divers..................................................................................27
3.5.1 Entrée discrète.........................................................................27
3.5.2 Sortie discrète..........................................................................29
3.5.3 LED Bleu.....................................................................................29
1
3.5.4 LED jaune...................................................................................29
3.5.5 LED rouge...................................................................................29
3.5.6 Entrée analogique........................................................................30
3.5.7 Sortie analogique.....................................................................30
3.5.8 Lecture en série...........................................................................30
3.5.9 Conversion d'un flotteur en uint8............................................30
4 Exemples 32
4.1 Exemple de base......................................................................................32
4.2 Exemple d'IMU et de sortie de données.............................................33
4.3 Exemple de capteurs................................................................................33
4.4 Téléchargement d'un modèle...................................................................35
4.5 Les prochaines étapes.........................................................................35
5 Architecture du jeu de blocs Simulink 36
5.1 Base de code C/C++ d'APM...............................................................36
5.2 Niveau S-Fonction2.................................................................................39
5.3 Compilateur du langage cible..................................................................39
6 Travaux futurs 42
6.1 Travaux futurs.....................................................................................42
7 Soutien 44
2
Liste des figures
3
Liste des tableaux
4
Nomenclature
5
développementintégré)
IMUInertialMeasurement Unit
(unité de mesure inertielle
LEDDiode électroluminescente
6
MbMegabyte
MEMS Système micro-électro-mécanique
MHzMegahertz
MIMO entrées multiples sorties multiples
msmilliseconds
NVM Mémoire non volatile
PWM Modulation de largeur
d'impulsion QFNQuadFlat No-
Leads
RCRemoteControl
ROTH Run On Target Hardware
SISOSingleInput Single
Output SPISerialPeripheral
Interface TMTelemetry
UAVUnmanned Aerial
Vehicle UINTEntier non signé
USBBus sériel universel
Temps universel coordonné (UTCCoordinatedUniversal Time), également
connu sous le nom de "temps zoulou".
7
Chapitre 1
Introduction
L'ArduPilot 2.0 est un produit prêt à l'emploi qui intègre une suite de capteurs
avec un processeur Atmega 2560 pour une utilisation en tant que pilote
automatique. Ce document décrit comment utiliser le blockset Simulink qui a
été développé pour ce produit, et décrit comment un modèle Simulink unique
peut être développé et intégré directement à l'ArduPilot 2.0. Ce modèle
comprendra le code nécessaire à la lecture des capteurs, à la lecture des
signaux PWM de l'émetteur RC, à la sortie des signaux PWM pour contrôler
les servos et un moteur, à la sortie des données vers un système de télémétrie
et à l'enregistrement des données sur une puce mémoire flash.
8
Chapitre 2
Configuration et utilisation
2.1 Matlab
Pour que les modèles Simulink puissent être intégrés au matériel cible,
l'utilisateur doit avoir accès à une version 2012a ou plus récente de Matlab. À
partir de la version 2012a, Mathworks a inclus une fonction Run On Target
Hardware (ROTH) qui remplit essentiellement la même fonction que le codeur
embarqué, mais le code compilé réel n'est pas visible par l'utilisateur. ROTH
est inclus dans la licence standard de Simulink, mais il convient de noter,
cependant, que ROTH ne fonctionne actuellement que sous Windows.
Mathworks a indiqué qu'il fonctionnera éventuellement sous Linux ou sur un
Mac, mais au moment de la publication de ce document, cette capacité n'a pas
été mise en œuvre.
Un compilateur supporté doit également être installé. Le document d'aide
de Matlab donne des indications sur les compilateurs pris en charge et sur la
manière de les faire reconnajtre par Matlab [6].
9
2.3 Matériel Run On Target
La première fois que ROTH est utilisé, le logiciel cible réel doit être installé.
Comme il s'agit d'un ArduPilot, avec une puce Arduino Mega 2560,
l'utilisateur doit installer le matériel cible Arduino. Pour ce faire, à partir de
Simulink, sélectionnez le menu Tools, puis Run On Target Hardware, et enfin
Install Target. Sélectionnez Arduino. Simulink installera la cible dans
l'emplacement suivant : C:/MATLAB-
/Targets/R2012b.
1
Une liste des compilateurs supportés par Matlab est fournie dans la référence
[6].
1
Blocs
ArduPilot/AP
M2 Arduino
Analog IO
Auxiliaire
Baro
DataTypeConversions
Discrete IO
FlashMemory
GPS
IMU
Magnétomètre
Pitot
RCChannels
Série
Timing
Tableau 2.1 : Dossiers à ajouter au chemin de Matlab
1
Chapitre 3
Blocs de la bibliothèque
ArduPilot Mega 2.0
1
détaillées dans le tableau ci-dessous.
3.1. Ces données passent par le bloc en simulation et ne sont pas utilisées
lorsque le modèle est intégré à l'APM2.
1
de la centrale de mesure inertielle, dont chacune est détaillée dans le Tableau
3.2.
1
Port n°. Étiquette Unité Description
s
1 p (sim) deg/s Valeur simulée du taux de roulis
de la carrosserie
2 q (sim) deg/s Valeur simulée de l'inclinaison
du corps
taux
3 r (sim) deg/s Valeur simulée de la vitesse de
lacet du corps
4 nx (sim) g Valeur simulée de l'axe x du
corps
composante de l'accélération
5 ny (sim) g Valeur simulée de l'axe y du
corps
composante de l'accélération
6 nz (sim) g Valeur simulée de l'axe z du
corps
composante de l'accélération
7 Température (sim) degC Valeur simulée de la températura
ture de l'IMU
1
7 Température degC Température de l'IMU
1
Pour plus d'informations concernant ce dispositif, voir la référence [11].
Les entrées de ce bloc sont simplement les valeurs simulées de la pression
statique et de la température, qui sont détaillées dans le tableau suivant 3.3.
Ces valeurs passent par le bloc en simulation et ne sont pas utilisées lorsque le
modèle est intégré à l'APM2. Les sorties du bloc sont les valeurs mesurées de
la pression statique et de la température, détaillées dans le Tableau . 3.4.
3.1.3 Magnétomètre
Le magnétomètre numérique à 3 axes Honeywell HMC5843 mesure l'intensité
du champ magnétique dans chacun des trois axes de l'appareil. Comme l'IMU,
il s'agit d'un dispositif numérique qui communique avec le microprocesseur
par l'intermédiaire d'un bus série à haute vitesse. Comme l'IMU, il possède
des fonctions d'auto-test qui sont excitées lors du démarrage de la carte afin de
calibrer l'unité à un offset induit connu.
Pour plus d'informations concernant ce dispositif, voir la référence [4].
1
Comme le champ terrestre est très faible, le magnétomètre est
extrêmement sensible. Si cela est bon pour la résolution, cela signifie
également que l'appareil est très sensible au bruit électromagnétique et aux
biais constants dus aux matériaux conducteurs locaux à proximité du capteur.
Le moteur, avec ses aimants en rotation et son important champ magnétique
induit, dégrade encore les performances de l'appareil en fonction de la vitesse du
moteur. Ces problèmes sont aggravés par l'obligation d'installer l'APM2 près
du centre de gravité - et donc près de l'axe de rotation du moteur.
afin de réduire les effets de la localisation inertielle. Un magnétomètre à circuit
2
intégré situé à distance qui se connecte au port de circuit intégré externe 2 de
l'APM2 est une option.
pour améliorer ce problème, mais n'a pas fait l'objet de recherches pour ce
projet ni d'un bloc Simulink créé dans le cadre du blockset APM2.
Pour calibrer le champ magnétique local, la référence [10] a été utilisée
pour obtenir l'intensité totale connue du champ magnétique pour un
emplacement donné. Ensuite, l'avion a été configuré pour enregistrer les trois
composantes du champ pendant que la cellule était tournée dans toutes les
positions possibles dans une zone exempte d'interférences et de gros objets
métalliques. Une fois les données téléchargées, une routine de minimisation
non linéaire telle que fmincon ou fminsearch de Matlab a été utilisée
pour trouver le
vecteur, C, qui minimise la fonction de coût suivante,
(
J 2
J = BT - Kbx(b x+ Ox) 2+ Kby(by + Oy) 2+ Kbz(bz + Oz)2 (3.1)
où,
Kbx
Kb
C= y
Kbz
Ox
Oy
Oz
et BT était l'intensité totale connue du champ.
Une fois le vecteur, C, déterminé, il a été entré directement dans le masque
du bloc magnétométrique, comme le montre la figure, et3.3 a donc été
appliqué à toutes les mesures en sortie du bloc.
Il convient de noter qu'une logique supplémentaire doit être insérée pour
tenir compte des décalages dy- namiques introduits par le moteur. Ce blockset
est destiné à reproduire les mesures brutes du capteur, donc tout effet sur le
moteur devra être traité séparément par l'utilisateur.
Les entrées du bloc sont simplement les valeurs simulées des composantes
du champ magnétique, qui sont détaillées dans le tableau ci-dessous. 3.5. Ces
valeurs passent par le bloc en simulation et ne sont pas utilisées lorsque le
modèle est intégré à l'APM2. Les sorties du bloc sont les champs magnétiques
mesurés, détaillés dans le Tableau . 3.6.
3.1.4 GPS
Le récepteur 10GPS MediaTek MT3329 Hz comprend un récepteur GPS, un
processeur et une antenne patch, le tout dans un très petit bojtier. Il
communique
1
Figure 3.3 : Bloc et masque du magnétomètre
2
Port n°. Étiquett Unité Description
e s
1 bx, nT nT Champ magnétique, axe x du corps
com-
ponent
2 par, nT nT Champ magnétique, axe y du corps
com-
ponent
3 bz, nT nT Champ magnétique, axe du corps z
com-
ponent
2
1Latitude(sim) deg Simulé valeur de lati-
Numéro
tude deport
LabelUnitsDescription
2Longitude(sim) deg Simulé valeur de la
longévité
tude
3Altitude(sim) ft Simulé valeur de l'alti-
tude
4 au sol(sim) ft/sec Valeur simulée du sol
vitesse
5 au sol(sim) deg Valeur simulée du sol
cours
6Nombrede satellites - Valeur simulée du num-
(sim)
Nombre de satellites
utilisés pour
GPS
7 fixation(sim) - Valeur simulée du type de
fixation
comme décrit ci-dessus
8 UTC(sim) chajn Valeur simulée de l'UTC
e de
caract
ères
Date
9 UTC(sim) ms Valeur simulée de l'UTC
temps
10HDOP(sim) ft Valeur simulée de hori-
dilution horizontale de la précision
Tableau 3.7 : Bloc GPS, entrées
2
inscrite ci-dessus
8 Date UTC chajn Valeur de la date UTC
e de
caract
ères
9 Heure UTC ms Valeur du temps UTC
10 HDOP ft Valeur de la dilution
horizontale
tion de la précision
2
3.1.5 Sonde de Pitot
La mesure de la vitesse de l'air est un paramètre très important pour
l'estimation de l'état et le contrôle. L'APM2, cependant, ne comprend pas de
moyen de mesurer la vitesse de l'air. Par conséquent, une sonde pitot
miniature a été installée dans le nez de l'avion pour mesurer la pression
d'impact à l'emplacement de la sonde. Les ports de la sonde ont été connectés
à un capteur de pression différentielle Freescale MPXV7002DP. Le capteur a
ensuite été connecté à l'APM2 via l'un des jeux de broches d'entrée
analogique. Ce capteur était le seul capteur analogique à bord de l'avion et
devait être calibré en utilisant un champ d'écoulement connu. Une fois calibré,
la sortie de ce capteur était une tension proportionnelle à la pression
dynamique et ce signal était utilisé pour calculer la vitesse aérodynamique
réelle.
Un comportement curieux concernant cette sonde était sa performance
atroce à basse vitesse. Par exemple, lorsque l'avion était à l'arrêt, il était
courant de voir la sonde Pitot rapporter un bruit très élevé de 20
pieds/seconde. Heureusement, la précision de l'appareil s'est améliorée et le
bruit a diminué lorsque la pression dynamique a augmenté.
Pour plus d'informations concernant ce dispositif, voir la référence [3].
L'entrée du bloc est simplement les valeurs simulées de la pression
dynamique, qui sont détaillées dans le tableau suivant 3.9. Cette valeur est
transmise par le bloc en simulation et n'est pas utilisée lorsque le modèle est
intégré à l'APM2. La sortie du bloc est la pression dynamique mesurée par la
sonde de Pitot et le capteur de pression différentielle, comme indiqué dans le
tableau. 3.8.
Numéro deport
LabelUnitsDescription
1 P dyn (sim) psfValeur simulée de la pres-
dynamique
sûr
Numéro deport
LabelUnitsDescription
1 P dyn (sim)psfPression dynamique
2
Tableau 3.10 : Bloc de la sonde de Pitot, sortie
2
3.2 Entrée récepteur / Sortie servo
3.2.1 RC Read
Le bloc RC Read lit les signaux PWM connectés aux canaux RC Input de l'APM.
Ces entrées sont généralement les sorties du récepteur RC. Les signaux PWM
sont exprimés en microsecondes de largeur d'impulsion. La figure 3.6 montre le
bloc et le masque de lecture RC. Les tableaux 3.11 et 3.12 détaillent les entrées
et les sorties du bloc RC Read.
2
Port n°. Étiquet Unité Description
te s
1 Ch 1 µs Valeur du signal PWM1 du canal
2 Ch 2 µs Valeur du signal PWM2 du canal
3 Ch 3 µs Valeur du signal PWM3 du canal
4 Ch 4 µs Valeur du signal PWM4 du canal
5 Ch 5 µs Valeur du signal PWM5 du canal
6 Ch 6 µs Valeur du signal PWM6 du canal
7 Ch 7 µs Valeur du signal PWM7 du canal
8 Ch 8 µs Valeur du signal PWM8 du canal
3.2.2 Écriture RC
Le bloc RC Write émet des signaux PWM vers les canaux de sortie de l'APM
qui sont généralement connectés aux servos. Les signaux PWM sont en
microsecondes de largeur d'impulsion. La figure 3.7 montre le bloc RC Write
et le masque. Tableau
3.13 et le tableau détaillent3.14 les entrées et les sorties du bloc RC Write.
2
Port n°. Étiquette Unité Description
s
1 Ch (1sim) µs Valeur simulée de canal 1
Signal PWM
2 Ch (2sim) µs Valeur simulée de canal 2
Signal PWM
3 Ch (3sim) µs Valeur simulée de canal 3
Signal PWM
4 Ch (4sim) µs Valeur simulée de canal 4
Signal PWM
5 Ch (5sim) µs Valeur simulée de canal 5
Signal PWM
6 Ch (6sim) µs Valeur simulée de canal 6
Signal PWM
7 Ch (7sim) µs Valeur simulée de canal 7
Signal PWM
8 Ch (8sim) µs Valeur simulée de canal 8
Signal PWM
3.3 Timing
3.3.1 Horloge
Le bloc horloge fournit le temps, en millisecondes, depuis la mise sous tension
de la carte. Il est exécuté à chaque pas de temps. La figure 3.8 montre le bloc
et le masque de l'horloge. Le tableau détaille3.15 les sorties du bloc Clock.
2
Port n°. Étiquette Unité Description
s
1 Temps écoulé ms Temps écoulé depuis que la
carte a été mise sous tension
2
peuvent être affichées à l'aide d'une interface de terminal. La deuxième
méthode fournit les données brutes, non codées et binaires, qui peuvent être
post-traitées au sol. Ceci est utile pour un protocole de station au sol qui peut
lire les données brutes et les analyser de manière appropriée pour le protocole
de la station au sol.
3
Numéro deport
LabelUnitsDescription
1N/AArrayof FloatsAffichele tableau de flottants sur
port série sélectionné
Tableau 3.17 : Bloc d'impression en série de données
flottantes, entrée
Écriture en série
Pour un système de télémétrie plus compliqué qui nécessite des données
binaires brutes, le bloc Serial Write écrit un vecteur d'octets sur le port série
de télémétrie de l'APM. Notez2. que le bus par défaut est UART0, cependant,
comme il est partagé avec le bus USB, on peut suivre les instructions du pont
de soudure sur la page ArduPilot (référence [2]) pour activer UART2 si on le
souhaite. Le bus à utiliser est sélectionnable dans le masque.
Notez que ce bloc écrit les octets bruts qui lui sont fournis. Cela signifie
généralement qu'une certaine quantité de code sera nécessaire du côté de la
réception pour reconstruire les données en un affichage utile.
Numéro deport
LabelUnitsDescription
1N/AArrayof BytesSortitle tableau d'octets sur se-
port aérien
3
les données en simulation.
3
L'activation de la puce mémoire flash pour enregistrer des données, ainsi
que le téléchargement des données enregistrées, sont décrits dans la section
3.4.4
La figure montre3.11 le bloc et le masque de la mémoire flash.
Numéro deport
LabelUnitsDescription
1N/A (sim)Float Port de débogage
desimulation ArraySimulation
Tableau 3.20 : Bloc Write Float Array, sortie
3
mémoire ne contient pas de données, l'utilisateur est invité à faire l'une des
choses suivantes :
• Armez le tableau pour l'enregistrement - l'utilisateur appuie sur la touche a.
3
• Effacer le tableau - l'utilisateur appuie sur la touche e
• Ne rien faire, laisser le tableau tranquille - l'utilisateur appuie sur la touche l
Si la puce mémoire contient des données, l'invite de l'utilisateur est
légèrement différente. Le menu est le suivant :
• Ecraser les données sur la carte - l'utilisateur appuie sur la touche o
• Effacer le tableau - l'utilisateur appuie sur la touche e
• Imprimer les données sur le terminal Putty - l'utilisateur appuie sur la touche p
• Ne rien faire, laisser le tableau tranquille - l'utilisateur appuie sur la touche
l La Figure et3.12 la Figure montrent 3.13l'affichage du terminal putty de
chacun des menus décrits ci-dessus.
3
Figure 3.13 : Menu d'interaction de la mémoire flash
- avec données
3
3.5.2 Sortie discrète
Ce bloc envoie une valeur discrète à une broche spécifiée sur la carte Arduino.
Numéro deport
LabelUnitsDescription
1On - Une entrée de fait tourner1 le bouton jaune
s'allume et éteint 0la LED jaune
3
3.5.6 Entrée analogique
Ce bloc lit l'entrée de tension analogique à partir de la broche d'entrée
analogique spécifiée sur la carte Arduino. La plage de l'entrée sur la broche
est comprise entre 0 et 5 volts, ce qui correspond à une sortie de bloc de to
01023.
Numéro deport
LabelUnitsDescription
1Pin NumberIntegerOutputsune valeur entre à0
1023 correspondant à à des
0volts5
Tableau 3.26 : Bloc d'entrée analogique, sortie
Numéro deport
LabelUnitsDescription
1N/AByteLectureun octet à partir de l'interface
série.
interface
Tableau 3.28 : Bloc de lecture en série, sortie
3
octets qui peuvent être transmis via le bloc Serial Write. Ceci est très utile
pour construire
3
un paquet de télémétrie.
Numéro deport
LabelUnitsDescription
1 point flottant
Tableau 3.29 : Bloc de conversion de flottant en
UINT8, entrée
Numéro deport
LabelUnitsDescription
1N/Auint8uint8valeur
Tableau 3.30 : Bloc de conversion de flottant en
UINT8, sortie
4
Chapitre 4
Exemples
4
4.2 Exemple d'IMU et de sortie de données
Pour tester l'APM2 au sol, le bloc IMU peut être connecté à un bloc de sortie
série pour une simple surveillance des accélérations linéaires et des taux de
rotation. Le bloc IMU fournira les valeurs mesurées et le bloc Serial Print
Floats produira un flux de données en série séparé par des virgules. Un simple
programme de lecture des données série à partir du port USB (Putty est un
choix populaire) peut être utilisé pour visualiser le flux de données série en
temps réel, ainsi que pour enregistrer les données pour une utilisation
ultérieure. La figure montre 4.2ce modèle simple, y compris les blocs de
synchronisation pour permettre les données horodatées.
4
Figure 4.3 : Modèle Simulink utilisant tous les blocs de capteurs, de
synchronisation et de mémoire flash.
4
4.4 Téléchargement d'un modèle
La section 2.8 décrit toutes les étapes nécessaires pour télécharger le modèle
sur l'APM2 en utilisant ROTH. Une fois la configuration terminée, il suffit de
connecter l'APM2 à l'ordinateur à l'aide d'un câble mini-USB, puis, à partir du
modèle, de sélectionner le menu Outils, suivi du menu Exécuter sur le
matériel cible, puis de l'option Exécuter.
4
Chapitre 5
Architecture du
jeu de blocs
Simulink
4
créer un code d'enveloppe.
4
Figure 5.1 : Bibliothèque Simulink2.0 d'ArduPilot Mega
4
comme,
4
/* Unité de mesure inertielle (calibrée) */
voidimu_init(uint32_t,uint32_t,
uint32_t) ; voidimu_flash_leds(bool) ;
voidimu_update(void) ;
voidimu_get_accels(float*) ;
voidimu_get_gyros(float*) ;
floatimu_temperature(void) ;
4
extern "C" floatimu_temperature(void)
{
retourner
} ins.temperature() ;
5
C'est là que les ressources supplémentaires sont démarrées, comme un bus
série nécessaire à l'opération d'un bloc spécifique, ou que les appels pour
calibrer les capteurs sont placés. Cela permet, par exemple, à la carte
d'exécuter sa calibration IMU uniquement lorsque le bloc IMU est
effectivement dans le modèle puisque le TLC pour le bloc IMU utilise la
fonction Start pour insérer un appel à imu init. Le TLC a également accès
aux paramètres de masque et peut insérer leurs valeurs dans le code C généré
pour des opérations telles que le réglage de la vitesse de transmission ou la
sélection des plages de capteurs IMU.
La première opération de chaque fonction Start est de vérifier si un autre
bloc a appelé Simulink APM2 Startup et d'insérer l'appel si nécessaire. Ainsi,
le code TLC suivant est commun à tous les blocs APM2,
: %if EXISTS("_DONE_SYSTEM_INIT_") == 0
Enfin, la fonction
%assign Output génère le code
: : _DONE_SYSTEM_INIT_ = 1qui est appelé par le
/* Fon/*ctFi onncdteiodnédmeadrréamgeardraugseysdtèumseyAstèPmMe2A. RPMeq2u. iRsepqouuisr tpoouusr lteosus les
ebmlobacrsq.buléocàs.chaque fois que le bloc est exécuté. C'est là que se trouve la majoIrnitséérdéIunpscaéordée: ppao
l'IMUBl,olce (fI%iMc<hUiTe6yr-pTDeL>OCF(%)q:<uIPiMagUréanm6è-SrDeeOtlteFinc*go/sd.FeuCncetisotnmNoamnteré>)c
SimSiumliunlkin_kA_PAMPM2_2S_tSatratrutpu(p)(); ;
%%EnFdoinfction : Outputs ===========================================
%%
%fonction Sorties(bloc, système) Sortie
%if (CompiledModel.TargetStyle!="SimulationTarget")
5
pinMode(40, OUTPUT) ; digitalWrite(40, HIGH) ;
Gardez à l'esprit qu'il existe un fichier TLC pour chaque bloc, et que le
code C généré à l'aide du TLC ci-dessus sera inséré dans une grande fonction
de mise à jour lors des étapes finales du processus de codage automatique.
L'ordre dans lequel Simulink Embedded Coder insère le code est variable et le
code doit être écrit de manière à pouvoir être appelé à tout moment. Les
fonctions qui doivent être prioritaires, par exemple l'initialisation des bus
périphériques partagés avant que les périphériques n'essaient d'y accéder, sont
traitées par la fonction Simulink APM2 Startup, comme décrit précédemment.
5
Chapitre 6
Travaux futurs
5
transmettent simplement toutes les entrées directement aux sorties dans
la simulation, mais il serait utile d'avoir des bruits,
5
La variance ou les effets de dérive peuvent être modélisés à l'aide du
masque de bloc. Ces paramètres de masque ne seraient utilisés qu'en
simulation, et non lors du chargement réel sur la carte.
- Développez l'automatisation pour effectuer les étapes de configuration
décrites au chapitre 2y compris la définition du chemin.
- Développer des fichiers d'aide Simulink correctement formatés.
Actuellement, ce guide pratique est la meilleure référence pour l'aide sur
le blockset.
5
Chapitre 7
Soutien
5
Références