Vous êtes sur la page 1sur 9

Chapitre 1 Description des systèmes temps réel

Chapitre 1

Description des systèmes temps réel

1.1. Définitions

Un système temps réel est un système informatique dont le fonctionnement est assujetti
à l’évolution dynamique d’un procédé extérieur qui lui est connecté et dont il doit contrôler le
comportement.

En informatique temps réel, le comportement correct d’un système dépend, non


seulement des résultats logiques des traitements, mais aussi du temps au quel les résultats sont
produit.

Un système temps réel n’est pas un système qui va vite mais un système qui satisfait à
des contraintes temporelles (deadline).

Un système embarqué (embedded system ou système enfoui) est un système


informatique dans lequel le processeur (calculateur) est englobé dans un système plus large et
où le logiciel est entièrement dédié à une application donnée.
Exemple : sonde spatiale, terminal GSM, carte à puce.

Figure 1.1 : Architecture d’un système temps réel.

1
Chapitre 1 Description des systèmes temps réel

1.2. Fonctionnalité d’un système temps réel

Plusieurs contraintes à vérifier pour qu’un système temps réel soit fonctionnel :

 Exactitude logique (logical correctness) : Sorties adéquates en fonction des entrées,


assurant le comportement désiré pour le système suite à des événements et aux données
communiquées ;

 Déterminisme logique : les mêmes entrées appliquées au système produisent les mêmes
résultats ;

 Exactitude temporelle (timeliness) : respect des contraintes temporelles. Les sorties sont
présentées au bon moment ;

 Fiabilité : le système répond à des contraintes de disponibilité (fiabilité du logiciel et du


matériel).

1.3. Catégories des systèmes en temps réel

Il existe trois catégories des systèmes en temps réel selon le respect des contraintes
temporelles (degrés de tolérance) :

 Temps réel dur (hard real time) ;

 Temps réel ferme (firm real time) ;

 Temps réel mou (soft real time).

1.3.1. Temps réel dur ou critique

Le non respect des contraintes temporelles entraîne la faute du système. L’absence du


réponse est catastrophique.

Il s’agit d’un système où l’ensemble des contraintes temporelles doit absolument être
respecté. Pour ce faire il faut pouvoir définir les conditions de fonctionnement du système,
c’est-à-dire connaître parfaitement l’environnement du système. Il faut également être capable
de garantir la fiabilité du système avant son exécution. Tous les scénarios possibles
d’exécution doivent donc être étudiés et le bon fonctionnement du système doit être garanti
pour chacun de ces scénarios. L’ensemble du système doit évidemment être suffisamment
connu pour pouvoir fournir de telles garanties.
Exemple: contrôle de trafic aérien, contrôle d’une centrale nucléaire, systèmes embarqués
utilisés dans l’aéronautique (les avions), système de conduite de missile, etc.

2
Chapitre 1 Description des systèmes temps réel

Figure 1.2 : Valeur du calcul en fonction du temps (échéance dur).

1.3.2. Temps réel ferme

Temps réel souple avec le manquement occasionnel des échéances. La réponse du


système dans un temps imparti est essentielle. Le résultat est inutile une fois la deadline passé.
Exemple: téléphone.

Figure 1.3 : Valeur du calcul en fonction du temps (échéance ferme).

1.3.3. Temps réel mou ou souple

Le respect des échéances est important mais le non respect des échéances ne peut
occasionner de graves conséquences.
Les systèmes temps réel souple ont des contraintes de temps moins exigeantes que les
précédents. Une faute temporelle n’y est pas catastrophique pour le fonctionnement. Un tel
système pourra donc accepter un certain nombre de fautes temporelles, tout en pouvant
continuer son exécution.
Exemple: projection vidéo (décalage entre le son et l’image), multimédia.

Figure 1.4 : Valeur du calcul en fonction du temps (échéance souple).

3
Chapitre 1 Description des systèmes temps réel

1.4. Exemples des systèmes temps réel

Les applications temps réel couvrent un très grand domaine dont voici quelque
exemple:
 Produits de grande consommation : Cafetière, machines à laver, fours à micro-onde.
 Electronique grand public : Caméras numériques, appareils photo numériques,
multimédia, téléphonie (décodeur vidéo, téléphone portables, consoles de jeu).
 Automobile : Systèmes de freins, contrôle moteur.
 Contrôle de procédés industriels.
 Avionique, spatial, production d’énergie (nucléaire).
 Périphériques informatique : FAX, imprimantes, scanner… etc.

1.5. Etude de systèmes temps réel à base d’un Arduino

1.5.1. Types des cartes Arduino

Il existe plusieurs types tels que :

- La carte Arduino Nano ;

- La carte Arduino Uno ;

- La carte Arduino Mega ;

- La carte Arduino Leonardo.

1.5.2. Logiciel IDE

Le logiciel qui permet de programmer votre carte Arduino porte le nom d’IDE, ce qui
signifie en anglais : Integrated Development Environment ou encore Environnement de
Développement Intégré. En effet, cette application intègre l’édition des programmes, le
téléversement dans la carte Arduino et plusieurs bibliothèques. Le logiciel IDE est téléchargé
gratuitement sur internet « www.arduino.cc ».

1.5.3. Présentation de l’interface IDE

Le logiciel IDE Arduino a pour fonctions principales :


 De pouvoir écrire et compiler des programmes pour la carte Arduino ;
 De se connecter avec la carte Arduino pour y transférer les programmes ;
 De communiquer avec la carte Arduino.

4
Chapitre 1 Description des systèmes temps réel

Cet environnement de développement intégré (IDE) dédié au langage Arduino et à la


programmation des cartes Arduino comporte :
 Une BARRE DE MENUS comme pour tout logiciel une interface graphique (GUI) ;
 Une BARRE DE BOUTONS qui donne un accès direct aux fonctions essentielles du
logiciel et fait toute sa simplicité d'utilisation ;
 Un EDITEUR (à coloration syntaxique) pour écrire le code de vos programmes, avec
onglets de navigation ;
 Une ZONE DE MESSAGES qui affiche indique l'état des actions en cours,
 Une CONSOLE TEXTE qui affiche les messages concernant le résultat de la compilation
du programme.

Figure 1.5 : Présentation de la fenêtre IDE Arduino.


1.5.3. Principe général d’utilisation

Le code écrit avec le logiciel Arduino est appelé un programme (ou une séquence -
sketch en anglais) :
Ces programmes sont écrits dans l'éditeur de texte. Celui-ci a les fonctionnalités usuelles de
copier/coller et de rechercher/remplacer le texte.
 La zone de messages donne l'état de l'opération en cours lors des sauvegardes, des
exportations et affiche également les erreurs.
 La console texte affiche les messages produits par le logiciel Arduino incluant des
messages d'erreur détaillés et autres informations utiles.

5
Chapitre 1 Description des systèmes temps réel

 La barre de boutons vous permet de vérifier la syntaxe et de transférer les programmes,


créer, ouvrir et sauver votre code, et ouvrir le moniteur série.
 La barre des menus vous permet d'accéder à toutes les fonctionnalités du logiciel
Arduino.

1.5.4. Structure globale d’un programme langage Arduino

Le programme Arduino comprend :

 une entête déclarative


 une partie « configuration » qui ne sera exécutée qu'une fois (fonction setup( ) )
 une partie constituée d'une boucle sans fin que le programme répètera à l'infini « fonction
loop( ) » : c'est le cœur du programme.

 Déroulement du programme

Le programme se déroule de la façon suivante :

 Après avoir pris en compte les instructions de la partie déclarative,


 Puis après avoir exécuté la partie configuration ( fonction setup( ) ),
 Le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code
compris dans la boucle sans fin.

6
Chapitre 1 Description des systèmes temps réel

1.5.5. Exemple :

On désire clignoter une LED à l’aide d’un Arduino :


Le fonctionnement normal est décrit par le chronogramme suivant :

TA TE

TA= 1000 ms : LED Allumer ;


TE= 2000 ms : LED Eteint.

 Programme

const int LED = 13 ;// déclaration constante de la broche


Void setup()
{// instruction à éxecution au démarrage
pinMode(LED,OUTPUT) ; // met la broche en sortie
}// Fin de la fonction setup()
Void loop()
{// début de la fonction loop=boucle sans fin
digitalWrite(LED,HIGH) ; // met la broche au niveau haut (5 V), Allumer la LED)
delay(1000) ; // pause de 1000 ms
digitalWrite(LED,LOW) ;// met la broche au niveau bas (0 V), Eteint la LED
delay(2000) ; // pause de 2000 ms
} //Fin du programme et la fonction loop()
Dans ce programme (code), se trouvent deux fonctions. Les fonctions sont en fait des portions
de code.

7
Chapitre 1 Description des systèmes temps réel

 Première fonction:

void setup()
{
}

Cette fonction setup() est appelée une seule fois lorsque le programme commence. C'est
pourquoi c'est dans cette fonction que l'on va écrire le code qui n'a besoin d'être exécuté
qu’une seule fois. On appelle cette fonction : "fonction d'initialisation". On y retrouvera la
mise en place des différentes sorties et quelques autres réglages.
Une fois que l'on a initialisé le programme, il faut ensuite créer son "cœur", autrement dit le
programme en lui même.

 Deuxième fonction:

Void loop()
{
}
C'est donc dans cette fonction loop() que l’on va écrire le contenu du programme. Il faut
savoir que cette fonction est appelée en permanence, c'est-à-dire qu'elle est exécutée une fois,
puis lorsque son exécution est terminée, on la réexécute, encore et encore. On parle de boucle
infinie.

 Les instructions

Maintenant que nous avons vu la structure des fonctions, regardons ce qu’elles peuvent
contenir. Les instructions sont des lignes de code qui disent au programme : "fais ceci, fais
cela..." Ce sont donc les ordres qui seront exécutés par l’Arduino. Il est très important de
respecter exactement la syntaxe; faute de quoi, le code ne pourra pas être exécuté.

 Les points virgules ;


Les points virgules terminent les instructions. On doit mettre un point virgule après l'appel
de cette fonction. Lorsque le code ne fonctionne pas, c’est souvent parce qu’il manque un
point-virgule. Il faut donc être très attentif à ne pas les oublier.

 Les accolades { }

Les accolades sont les "conteneurs" du code du programme. Elles sont propres aux fonctions,
aux conditions et aux boucles. Les instructions du programme sont écrites à l'intérieur de ces
accolades.

8
Chapitre 1 Description des systèmes temps réel

 Les commentaires

Les commentaires sont des lignes de codes qui seront ignorées par le programme. Elles ne
servent en rien lors de l'exécution du programme. Ils permettent d'annoter et de commenter le
programme.
Ligne unique de commentaire :

//cette ligne est un commentaire sur UNE SEULE ligne

Ligne ou paragraphe sur plusieurs lignes :


/*cette ligne est un commentaire, sur PLUSIEURS lignes
qui sera ignoré par le programme, mais pas par celui qui lit le code ;) */

 Les accents

Il est formellement interdit de mettre des accents en programmation. Sauf dans les
commentaires...

1.5.6. Exercice

Ecrire un programme qui faire clignoter 3 LEDs en même temps, sachant que les LEDs sont
allumer pendant 2 s et éteindre pendant 3 s.