Vous êtes sur la page 1sur 153

AU TO M AT I Q U E - R O B OT I Q U E

Ti660 - Automatique et ingénierie système

Supervision des systèmes


industriels

Réf. Internet : 42396 | 2nde édition

Actualisation permanente sur


www.techniques-ingenieur.fr
Tec h n ique s de l ’I n gé ni eur
La plus impor tante ressource documentaire scientifique
et technique en français

Une information fiable, claire et actualisée


Validés par un comité scientifique et mis à jour en permanence sur Internet,
les articles Techniques de l’Ingénieur s’adressent à tous les ingénieurs et
scientifiques, en poste ou en formation.
Outil d’accompagnement de la formation et de la carrière des ingénieurs,
les ressources documentaires Techniques de l’Ingénieur constituent le socle
commun de connaissances des acteurs de la recherche et de l’industrie.

Les meilleurs experts techniques et scientifiques


Plus de 200 conseillers scientifiques et 3 500 auteurs, industriels, chercheurs,
professeurs collaborent pour faire de Techniques de l’Ingénieur l’éditeur
scientifique et technique de référence.
Les meilleurs spécialistes sont réunis pour constituer une base de
connaissances inégalée, vous former et vous accompagner dans vos projets.

Une collection 100 % en ligne


• Accessibles sur www.techniques-ingenieur.fr, les dernières nouveautés et
actualisations de votre ressource documentaire
• Les articles téléchargeables en version PDF

Des services associés


Rendez-vous sur votre espace « Mon compte » en ligne pour retrouver la liste
des services associés à vos droits d’accès et les utiliser.

 Des services associés


Pour toute information, le service clientèle reste à votre disposition :
Tél : 01 53 35 20 20 l Fax : 01 53 26 79 18 l Mail : infos.clients@teching.com

III
Cet ouvrage fait par tie de
Automatique et ingénierie système
(Réf. Internet ti660)
composé de  :

Modélisation et analyse de systèmes asservis Réf. Internet : 42391

Régulation et commande des systèmes asservis Réf. Internet : 42394

Automatique avancée Réf. Internet : 42393

Automatique séquentielle Réf. Internet : 42395

Supervision des systèmes industriels Réf. Internet : 42396

Systèmes d'information et de communication Réf. Internet : 42397

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires

IV
Cet ouvrage fait par tie de
Automatique et ingénierie système
(Réf. Internet ti660)

dont les exper ts scientifiques sont  :

Pierre VIDAL
Professeur honoraire des universités

Chékib GHARBI
Directeur du Centre d'Innovation des Technologies sans Contact (CITC
EuraRFID), Lille

Christian TAHON
Professeur à l'Université de Valenciennes et du Hainaut Cambrésis (UVHC)

Étienne DOMBRE
Directeur de Recherche Émérite du CNRS au LIRMM, UMR 5506 Université
Montpellier-CNRS

Éric BONJOUR
Professeur à l'université de Lorraine / ENSGSI, Vice-président Enseignement
-Recherche de l'AFIS

Dominique LUZEAUX
Ingénieur général de l'armement, HDR

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires

V
Les auteurs ayant contribué à cet ouvrage sont :

Philippe ALLOT Emmanuel GROLLEAU Frédéric PÉTROT


Pour les articles : S8005 – S8006 Pour les articles : S8055 – Pour l’article : H8200
S8057 – S8059
Arona AW Michaël RICHARD
Pour l’article : S7610 Sébastien GÉRARD Pour les articles : S8055 –
Pour l’article : S8070 S8057 – S8059
Fathi BOUDRA
Pour l’article : S8058 Roger D. HERSCH Pascal RICHARD
Pour l’article : S8035 Pour les articles : S8055 –
Henri BRENIER S8057 – S8059
Pour l’article : S8100 Jean-Marie HUOT
Pour l’article : S8090 Frédéric RIDOUARD
Xavier CORNU Pour les articles : S8055 –
Pour l’article : S8068 Robert JAY S8057 – S8059
Pour l’article : S8058
Francis COTTET Jean-Claude ROUHET
Pour l’article : S8056 Sylvie JONAS Pour l’article : S7610
Pour l’article : S8104
Joëlle DELACROIX Moamar
Pour l’article : S8056 Nicolas JOUVRAY SAYED MOUCHAWEH
Pour les articles : S8030 – S8031 Pour l’article : BE6001
Claude DELANNOY
Pour les articles : S8065 – S8066 Claude KAISER François TERRIER
Pour l’article : S8056 Pour l’article : S8070
Henri DELEBECQUE
Pour l’article : S8063 Zoubir MAMMERI Arnaud TESSALONIKOS
Pour l’article : S8056 Pour l’article : S8090
David DUBOIS
Pour l’article : S8032 Jacky MONTMAIN Yvon TRINQUET
Pour l’article : S7620 Pour les articles : S8050 – S8052
Daniel DUPONT
Pour l’article : S8032 Edouard PIEGAY Matthieu VIAL
Pour l’article : S8102 Pour l’article : S8058
Pierre FICHEUX
Pour l’article : H1570 Michel PINARD Élisabeth WALTI
Pour les articles : S8205 – S8206 Pour l’article : R8080

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires

VI
Supervision des systèmes industriels
(Réf. Internet 42396)

SOMMAIRE

1– Méthodes fonctionnelles et outils Réf. Internet page

Présentation du MES. Pilotage et suivi des fabrications pensés comme un système S8005 11
intégré
Exemple d'application MES. Cas du projet BIOPROD du groupe SARIA S8006 13

Protection des systèmes de contrôle-commande contre les cyberattaques BE6001 15

2– Systèmes d'exploitation temps réel Réf. Internet page

Systèmes d'exploitation temps réel. Principes S8050 21

Systèmes d'exploitation temps réel - Exemples d'exécutifs industriels S8052 27

Ordonnancement temps réel. Ordonnancement monoprocesseur S8055 31

Ordonnancement temps réel. Ordonnancement réparti S8056 37

Ordonnancement temps réel. Ordonnancement multiprocesseur S8057 43

Linux pour le temps réel S8058 47

Ordonnancement temps réel. Ordonnancement centralisé S8059 51

3– Technologies logicielles et programmation Réf. Internet page

Langages de programmation pour systèmes automatisés : norme CEI 61131-3 S8030 59

Norme CEI 61499 : programmation distribuée et événementielle des procédés S8031 65

Réalisation technologique du GRAFCET S8032 67

Microcontrôleurs  : principes et aspects temps réel S8035 73

Approche objet S8063 79

Programmation en langage C++. Concepts S8065 83

Programmation en langage C++. Exemples S8066 87

Linux embarqué H1570 89

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires

VII
OS embarqués H8200 93

Java dans les systèmes embarqués et temps réel S8068 97

UML pour temps réel S8070 101

Qualité des logiciels industriels R8080 105

Contrefaçon de logiciel S8090 109

Spéciications fonctionnelles. Génération automatique de code S8100 115

Programmation graphique des applications de contrôle-commande. Notions S8205 121


générales et langage G
Programmation graphique des applications de contrôle-commande. Logiciel LabVIEW S8206 127
et applications industrielles

4– Interaction homme-machine Réf. Internet page

Ergonomie. Système homme-machine S7610 135

Supervision homme-machine S7620 139

5– Exigences contractuelles Réf. Internet page

Expertise judiciaire en informatique industrielle S8102 147

Les contrats informatiques S8104 149

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires
Supervision des systèmes industriels
(Réf. Internet 42396)


1– Méthodes fonctionnelles et outils Réf. Internet page

Présentation du MES. Pilotage et suivi des fabrications pensés comme un système S8005 11
intégré
Exemple d'application MES. Cas du projet BIOPROD du groupe SARIA S8006 13

Protection des systèmes de contrôle-commande contre les cyberattaques BE6001 15

2– Systèmes d'exploitation temps réel

3– Technologies logicielles et programmation

4– Interaction homme-machine

5– Exigences contractuelles

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires


QP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPPU

Présentation du MES
Pilotage et suivi des fabrications pensés
comme un système intégré
par Philippe ALLOT

Ingénieur de l’École Centrale de Paris
PDG d’ORDINAL Software

1. Le rôle décisif du standard ISA-95 (IEC 62264) ........................ S 8 005 – 2


1.1 La genèse du MES – les onze fonctions ............................................ — 2
1.2 L’ISA et les objectifs de l’ISA-95 ........................................................ — 2
1.3 Le modèle fonctionnel de l’ISA-95 .................................................... — 3
1.4 Relation avec les niveaux du CIM...................................................... — 3
1.5 Le modèle objet d’échange ................................................................ — 4
1.6 La hiérarchie des équipements .......................................................... — 4
1.7 Le modèle opérationnel (modèle d’activités) .................................... — 4
1.8 Les échanges avec le niveau 4 du CIM (ERP/GPAO) ......................... — 5
1.9 La fusion ISA-95/ISA-88 ..................................................................... — 5
1.10 Intégration verticale et standardisation ............................................. — 5
2. Typologie des logiciels de MES .................................................... — 6
2.1 L’importance des procédés ciblés ...................................................... — 6
2.2 Approche spécifique (métier) ............................................................ — 6
2.3 Assemblage de logiciels différents .................................................... — 6
2.4 Approche hybride ............................................................................... — 7
2.5 Progiciels intégrés .............................................................................. — 7
2.6 Intégration MES et supervision ......................................................... — 7
3. Le déploiement d’un MES.............................................................. — 8
3.1 Un projet informatique ...................................................................... — 8
3.2 Technologies mises en œuvre ........................................................... — 8
3.3 Compétences requises ....................................................................... — 8
3.4 Facteurs de succès et causes d’échec ............................................... — 8
3.5 Capitalisation et « modèle cœur » ..................................................... — 9
4. Conclusion........................................................................................ — 9
Pour en savoir plus.................................................................................. Doc. S 8 005

e quel fournisseur provenait le colorant utilisé dans ce yaourt refusé par le


D contrôle qualité ? L’équipe du matin est-elle plus performante que celle de
l’après-midi ? La cuve de mélange ayant servi à la préparation des produits du
13/9 avait-elle été lavée ? Combien de points de productivité perdons-nous sur
la ligne 4 à cause des réglages ? Avons-nous le temps de passer la promo avant
la livraison prévue pour demain matin ? Les opérateurs préfèrent utiliser la
machine SESKA pour ce produit car elle connait moins de problèmes, mais
n’est-on pas perdant au global ?
Voilà le genre de questions auxquelles un MES (Manufacturing Execution
System) va tenter de répondre. Et très rapidement, les industriels ont pu s’aper-
cevoir que ni les systèmes dont ils disposaient pour la production (contrôle-
commande et supervision), ni les progiciels de gestion, en particulier les ERP
(Enterprise Resource Planning) ne le permettaient. Il y avait donc bien un
domaine non couvert.
Au début des années 1990, une association américaine a créé le terme de
Manufacturing Execution System pour désigner ce nouveau domaine, qui a
p。イオエゥッョ@Z@ェオゥョ@RPQQ

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 005 – 1

QQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPPU

PRÉSENTATION DU MES ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

d’ailleurs donné son nom à l’association elle-même (MESA). Le MESA s’est aussi
fait connaı̂tre par les « onze fonctions du MES » que nous verrons par la suite.
Néanmoins, arrivé nettement après les autres logiciels, le MES a d’abord pâti
de cette situation. Un peu comme dans les auberges espagnoles d’antan, où les
clients apportaient eux-mêmes à manger, les industriels ont cherché à définir
comme appartenant au MES tout ce qu’ils ne trouvaient pas dans leurs outils
existants…

Q Aujourd’hui, comme nous allons le voir, grâce à des travaux importants tels
que ceux menés par l’ISA (International Standard of Automation), et aux efforts
de recherche des éditeurs de logiciels, le MES a réellement pris sa place dans la
palette des outils indispensables de l’entreprise pour relever ses défis.

pas indépendantes et séparables, mais forment un tout. La figure 1


1. Le rôle décisif du standard montre comment les tâches généralement identifiées dans le MES
ISA-95 (IEC 62264) peuvent s’organiser en fonctions opérationnelles et en services
transversaux, susceptibles d’être utilisés par toutes les fonctions
opérationnelles.

1.1 La genèse du MES – les onze fonctions


1.2 L’ISA et les objectifs de l’ISA-95
Les premiers pas du MES se sont traduits par l’identification par
le MESA de onze fonctions qu’il était amené à couvrir (voir enca- L’ISA, présentée en introduction, est une association américaine
dré). Pendant longtemps, ces onze fonctions ont pratiquement forte de 39 000 membres de l’industrie. À l’origine tournée vers
servi de définition au MES lui-même. Le périmètre du MES était-il l’instrumentation, elle a étendu le champ de ses travaux à
clarifié ? En fait, pas tant que cela. l’ensemble de l’automation, et est à l’origine de nombreux stan-
dards indépendants, dont un nombre conséquent a été repris au
Les onze fonctions du MES niveau européen sous les dénominations IEC. Cela a été le cas en
– Gestion des ressources particulier pour le standard ISA-95, repris au niveau européen sous
– Ordonnancement la dénomination IEC 62264.
– Cheminement des produits et des lots Les objectifs de l’ISA-95 sont multiples. Un premier, en appa-
– Gestion des documents rence modeste, a été de faire partager aux industriels une termino-
– Collecte et acquisition de données logie commune pour les notions manipulées par le MES. En effet,
– Gestion du personnel
– Gestion de la qualité
– Gestion du procédé
Gestion du personnel

– Gestion de la maintenance
Ordonnancement

– Traçabilité produit et généalogie


– Analyse des performances Gestion procédé

Maintenance
Qualité

Le premier problème tient aux fonctions énumérées dans l’enca-


Suivi

dré. On distingue en effet la gestion des ressources et la gestion du Opérations


personnel. Mais du point de vue de l’informatique industrielle, le
Services
personnel n’est-il pas une ressource ? Le MES aurait pour fonction
la Gestion des documents ; cela veut-il dire que toute la gestion des Gestion des ressources
documents d’une entreprise doit être prise en charge par le MES ?
Cheminement des produits
Claire à première lecture, on voit que cette définition du MES prête et des lots
à beaucoup d’ambiguı̈tés.
Le second problème est plutôt sémantique. En définissant le Interface homme/machine
MES par la liste des fonctionnalités qu’il est supposé assurer, on
laisse penser que le tout se résume à la somme de ses parties. Or, Collecte et acquisition
la plupart des fonctions listées ont été mises en œuvre avant la des données
création du terme MES, même partiellement. Ainsi, un grand nom-
Gestion des documents
bre d’industriels ont utilisé le MES sans le savoir.
Mais l’on passe à coté de l’essentiel défini dans le terme même Analyse des documents
de MES, et que les initiales tendaient à faire oublier. La seconde let-
tre du sigle désigne en effet l’exécution : les fonctions du MES sont
Traçabilité
orchestrées autour d’un processus central qui est l’exécution des
fabrications, c’est-à-dire l’enchaı̂nement des opérations qui abou-
tissent à la fabrication des produits. La troisième lettre du sigle
désigne un système. Or, dans un système, les fonctions ne sont Figure 1 – Le MES est un système (source ORDINAL)

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 005 – 2 est strictement interdite. – © Editions T.I.

QR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPPV

Exemple d’application MES


Cas du projet BIOPROD du groupe SARIA

par Philippe ALLOT
Ingénieur de l’École centrale de Paris
PDG d’Ordinal Software

1. Enjeux industriels du projet.......................................................... AF S 8006 – 2


2. Sites du projet ................................................................................. — 2
2.1 Procédé de broyage de viande .......................................................... — 2
2.1.1 Généralités ............................................................................... — 2
2.1.2 Recette ..................................................................................... — 2
2.1.3 Équipements de process ......................................................... — 2
2.1.4 Déroulement du procédé ......................................................... — 2
2.2 Procédé de séparation mécanique de viande (volaille) .................... — 3
2.2.1 Généralités ............................................................................... — 3
2.2.2 Recette ..................................................................................... — 3
2.2.3 Équipements de process ......................................................... — 3
2.2.4 Déroulement du procédé ......................................................... — 3
2.3 Commentaire sur les niveaux d’automatisation ............................... — 3
3. Démarche de déploiement ............................................................ — 4
3.1 Périmètre fonctionnel ......................................................................... — 4
3.2 Core model et capitalisation initiale .................................................. — 4
3.3 Généralisation de la solution ............................................................. — 4
4. Résultats et conclusion ................................................................. — 4
Pour en savoir plus.................................................................................. Doc. S 8 006

e Groupe SARIA est un acteur majeur dans la valorisation de la biomasse.


L Ce domaine s’inscrit parfaitement dans les démarches actuelles de préser-
vation maximale des ressources alimentaires, ainsi que de valorisation énergé-
tique des déchets.
Poussé par son développement, le groupe a engagé une démarche de moder-
nisation et d’extension portant sur l’ensemble de ses sites lui permettant d’anti-
ciper les exigences les plus sévères en termes de sécurité, de qualité et de tra-
çabilité, tout en améliorant le niveau de performance de ses installations.
Le déploiement de ce projet, déjà en production sur un nombre significatif de
sites, est un excellent exemple des démarches de capitalisation qui peuvent être
mises en place dans le cadre d’un projet MES en s’appuyant sur une forte base
technologique.
p。イオエゥッョ@Z@、←」・ュ「イ・@RPQQ

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 006 – 1

QS

QT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
beVPPQ

Protection des systèmes


de contrôle-commande
contre les cyberattaques

Par Moamar SAYED MOUCHAWEH
Professeur titulaire
Institut des Mines-Telecom (IMT) Lille Douai, Douai, France

1. Systèmes de contrôle-commande industriels


comme systèmes cyberphysiques ...................................................... BE 6 001 - 2
2. Cyberattaques contre les systèmes
de contrôle-commande industriels..................................................... — 5
2.1 Classification des cyberattaques ............................................................... — 5
2.2 Exigences pour des systèmes sûrs............................................................ — 5
2.3 Évaluation et mesures de l’impact des cyberattaques ............................ — 6
3. Détection des cyberattaques ............................................................... — 7
3.1 Détection d’intrusion par des modèles ..................................................... — 8
3.2 Détection d’intrusion par signatures ......................................................... — 9
3.3 Détection d’intrusion par anomalies ......................................................... — 11
4. Conclusion et discussion ...................................................................... — 13
5. Glossaire .................................................................................................... — 13
Pour en savoir plus ......................................................................................... Doc. BE 6 001

es systèmes de contrôle-commande industriels (SCI) sont des systèmes


L cyberphysiques qui combinent des couches de calcul, de communication
et de physique afin de réaliser un ensemble de tâches. Ils sont utilisés pour
surveiller et contrôler des installations, services, processus, applications et
systèmes tels que la production et la distribution d’énergie (électricité,
gaz, etc.), les réseaux de transport, les systèmes de communication
avancés, etc. L’utilisation de ces systèmes devient plus critique dans le
contexte de la transition énergétique en raison de la taille importante et
croissante des communications et des échanges de données et d’informa-
tions entre les consommateurs et les opérateurs du réseau électrique en
fonction de multiples services fournis (micro-réseaux, gestion de la
demande, etc.). Par conséquent, le rôle des systèmes de contrôle-commande
industriels devient essentiel puisqu’ils surveillent la stabilité et la fiabilité de
la production et de la distribution d’énergie, optimisent la consommation et
la production d’énergie à des échelles centralisées/distribuées, renforcent
l’impact de l’énergie renouvelable dans le réseau, etc. Cependant, les SCI
sont vulnérables aux cyberattaques, dans la mesure où ils sont conçus pour
effectuer des tâches de production prédéfinies et répondre aux défis de la
sécurité sans se soucier des problèmes de la sûreté. Ces attaques modifient
la programmation du contrôleur pour endommager gravement l’équipement
physique. L’attaque Stuxnet contre le programme nucléaire iranien en est un
bon exemple. Elle a modifié le programme de contrôle des centrifugeuses
d’enrichissement de l’uranium pour les forcer à tourner trop rapidement et
p。イオエゥッョ@Z@ッ」エッ「イ・@RPQY

trop longtemps, et entraîner leur destruction. Il est donc primordial de déve-

Copyright © – Techniques de l’Ingénieur – Tous droits réservés BE 6 001 – 1

QU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
beVPPQ

PROTECTION DES SYSTÈMES DE CONTRÔLE-COMMANDE CONTRE LES CYBERATTAQUES ________________________________________________________

lopper un système de détection de cyberattaques capable de détecter le plus


tôt possible ces attaques pour en arrêter ou en limiter les conséquences
catastrophiques sur l’équipement physique critique. Le présent article se
penche sur le problème de la détection et de l’atténuation des risques repré-
sentés par la cyberattaque au sein des SCI, dans le contexte de la transition
énergétique. Il abordera tout d’abord la structure d’un système cyberphy-
sique et les composants de ses cybercouches et couches physiques. Il

Q classera ensuite les différentes cyberattaques en fonction des composants


d’un système cyberphysique et évaluera leurs impacts sur l’intégrité et les
performances du système. Enfin, l’article classera les approches permettant
de concevoir un système de détection des intrusions. Ces méthodes sont
regroupées en trois familles principales : approche basée sur les modèles,
approche basée sur les signatures, et détection des anomalies. Les avantages
et les inconvénients de ces approches sont traités selon le type d’attaque et
les informations sur la structure du système dont dispose le pirate. Un
exemple de système cyberphysique composé d’une pompe, d’une soupape,
d’un réservoir, de capteurs, et d’un contrôleur servira dans cet article pour
illustrer les différents concepts et méthodes présentés.

1. Systèmes de contrôle- Prenons l’exemple d’un SCI simple présenté sur la figure 2. Le
domaine physique se compose de deux actionneurs (pompe P et sou-
commande industriels pape V), d’un réservoir T, et de deux capteurs, L1 pour indiquer le
niveau haut du réservoir, Lh = 35 cm3, et L2 pour indiquer le niveau bas
comme systèmes du réservoir, Lw = 5 cm. Le tableau 1 présente les valeurs numériques
de cet exemple. Lorsque L1 = 1, ou L2 = 1, le niveau de liquide dans le
cyberphysiques réservoir est haut, ou bas. La section transversale S du réservoir est
égale à 10 cm2, le débit Qp de la pompe est de 20 cm3/sec, et le débit
Qv de la soupape de 10 cm3/sec. Le niveau maximal du réservoir est
Les systèmes cyberphysiques [1], [2] font référence à l’applica- Lmax = 45 cm. La séquence de contrôle est définie comme ci-après
tion des éléments de calcul et de la technologie de communication (figure 3). À l’étape 0, la pompe est à l’arrêt, la soupape fermée, et le
embarquée dans les multiples composants et processus physiques niveau de liquide dans le réservoir est bas (L2 = 1, L1 = 0).
dans différents domaines, tels que le transport, la fabrication, les Étape 1 : le contrôleur envoie la commande « Démarrage de la
systèmes d’alimentation électrique, l’infrastructure civile, la santé, pompe ».
la chimie, l’aérospatiale, etc. Le cyberdomaine comporte des élé-
ments (matériel/logiciel) réalisant des calculs permettant une com- Étape 2 : le liquide dans le réservoir quitte le niveau bas (L2 = 0).
munication en duplex intégral, et des actions de contrôle. Le Étape 3 : le liquide dans le réservoir atteint le niveau haut indiqué
domaine physique comprend des actionneurs, capteurs et tout sys- par le capteur L1 (L1 = 1).
tème naturel créé par l’homme, régi par des lois physiques et fonc- Étape 4 : le contrôleur envoie la commande « Arrêt de la pompe »,
tionnant en permanence. puis attend 5 secondes.
Les systèmes de contrôle-commande industriels (SCI) [3] ont Étape 5 : le contrôleur envoie la commande « Ouverture de la sou-
été rattachés aux systèmes cyberphysiques du fait de l’utilisa- pape ».
tion accrue des réseaux de communication et des technologies Étape 6 : le liquide dans le réservoir est vidé, et le niveau quitte le
d’information pour surveiller et contrôler des systèmes phy- niveau haut (L1 = 0).
siques (figure 1). Les SCI sont des systèmes de contrôle combi- Étape 7 : le niveau de liquide atteint le niveau bas indiqué par la
nant des composants matériels et logiciels afin de surveiller, valeur L2 = 1.
coordonner et contrôler un ensemble d’opérations exécutées par
un système physique dans les environnements industriels. Leurs Étape 8 : le contrôleur envoie la commande « Fermeture soupape ».
cybercouches comprennent principalement des automates pro- Puis le système relance le même cycle (étapes 1 à 8). L’état de la
grammables industriels (API) et des systèmes de contrôle et soupape est représenté par la variable booléenne P. Lorsque P = 1, ou
d’acquisition de données (SCADA) en plus d’une interface V = 1, la pompe est en marche, ou la soupape ouverte. P = 0, ou V = 0,
homme-machine (IHM). L’API est un ordinateur industriel à l’état lorsque la pompe est à l’arrêt, ou la soupape fermée. La figure 3 illustre
solide intégrant une interface d’entrée, une interface de sortie, un automate à l’état fini représentant le modèle opérationnel de cet
une mémoire de programme et de données, un processeur, une exemple. Chaque état est représenté par quatre variables booléennes :
interface de communication, ainsi qu’une alimentation élec- (P, V, L1, L2). Par exemple, à l’état initial, la pompe est à l’arrêt (P = 0),
trique [4]. L’API émet une séquence de commandes selon l’état la soupape est fermée (V = 0) et le niveau de liquide dans le réservoir
du système physique estimé en utilisant les données senso- est bas (L1 = 0 et L2 = 1).
rielles. Ces dernières sont délivrées par les capteurs et trans-
mises par le réseau de communication. Les commandes
contrôlent l’état des actionneurs afin de leur permettre de fonc- Les SCI sont vulnérables aux cyberattaques du fait de l’utilisa-
tionner dans le système physique. Les systèmes SCADA col- tion de grands réseaux de communication ouverts et de technolo-
lectent les données distantes du processus de contrôle affiché gies d’information (TI). La vulnérabilité de ces systèmes augmente
sur l’IHM. de manière significative dans le contexte de la transition éner-

BE 6 001 – 2 Copyright © – Techniques de l’Ingénieur – Tous droits réservés

QV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
beVPPQ

_________________________________________________________ PROTECTION DES SYSTÈMES DE CONTRÔLE-COMMANDE CONTRE LES CYBERATTAQUES

Cyberdomaine

Salle de contrôle/serveurs SCADA/stations techniques/serveur de maintenance

Ordres de travail Rapports



Réseau de communication de contrôle (protocole basé sur Ethernet)

API API … API

Contrôle-commandes Données sensorielles

Réseau de communication de processus (pair à pair/sans fil/bus de terrain/etc.)

Contrôle-commandes Données sensorielles

Domaine physique

Actionneurs (pompe/soupape, etc.) Installation Capteurs


(réservoir) (débit/niveau/température, etc.)

Figure 1 – Système de contrôle-commande industriel (SCI) en tant que système cyberphysique

gique. Dans ce dernier cas, le réseau de distribution électrique tra- troniques intelligents, ainsi que de nouveaux services (réponse à
versera une période de transition vers un réseau intelligent où les la demande, gestion intelligente de l’énergie, etc.), le rôle des SCI
cyberdomaines et domaines physiques sont étroitement liés. Les devient critique et requiert une communication intensive avec le
réseaux intelligents constituent un flux d’alimentation et de don- nombre toujours plus important de nœuds (consommateurs) sur
nées bidirectionnel entre producteurs et consommateurs. Pour ce le réseau. Du fait de la complexité des réseaux intelligents en
faire, il est nécessaire de recourir à des centres et des stratégies fonction de leur taille (nombre de nœuds), de la forte inter-
de contrôle d’avant-garde afin de contrôler le flux et la demande connexion entre le cybersystème et le système physique (produc-
de charge. Du fait de l’utilisation croissante de ressources en éner- tion, transmission, distribution), ainsi que de la communication
gie renouvelable, en particulier au niveau du consommateur intensive (SCADA, compteur intelligent, etc.) entre les consomma-
(distribution de ressources en énergie renouvelable), et de l’inté- teurs et les centres de contrôle (SCI), les points d’entrée pour les
gration de nouvelles charges telles que les véhicules hybrides pirates sur le réseau et les conséquences des attaques augmen-
rechargeables, batteries de stockage d’énergie, et dispositifs élec- tent de manière significative.

Tableau 1 – Valeurs numériques pour l’exemple de réservoir de la figure 2


Réservoir Soupape Pompe
Valeurs des capteurs État soupape État pompe

Soupape-ouverte Soupape-fermée Arrêt pompe Marche pompe


V = 0 V = 1 P = 0 P = 1

Niveau bas Niveau haut


Sortie Entrée
L1 = 0, L2 = 1 L1 = 1, L2 = 1
Constantes niveau/section (cm, cm2)
Qv = 10 cm3/sec Qp = 20 cm3/sec
Lw = 5, Lh = 35, Lmax = 45, S = 10

Copyright © – Techniques de l’Ingénieur – Tous droits réservés BE 6 001 – 3

QW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
beVPPQ

PROTECTION DES SYSTÈMES DE CONTRÔLE-COMMANDE CONTRE LES CYBERATTAQUES ________________________________________________________

Démarrage pompe


Arrêt pompe

L1
Pompe P
Contrôleur
Qp

L2

Attaque

Ouverture soupape
Fermeture soupape

Soupape V

Qv

Figure 2 – Exemple d’un système de contrôle-commande industriel (SCI)

(P V L1 L2)

Démarrage
q1 pompe q2 L2 = 0 q3 L1 = 1 q4
(0001) (1001) (1000) (1010)

Fermeture Arrêt
soupape pompe

Ouverture
q8 L2 = 1 q7 L1 = 0 q6 soupape q5
(0101) (0100) (0110) (0010)

Figure 3 – Modèle de contrôle sous forme d’un automate à l’état fini pour l’exemple de la figure 2

BE 6 001 – 4 Copyright © – Techniques de l’Ingénieur – Tous droits réservés

QX
Supervision des systèmes industriels
(Réf. Internet 42396)

1– Méthodes fonctionnelles et outils R


2– Systèmes d'exploitation temps réel Réf. Internet page

Systèmes d'exploitation temps réel. Principes S8050 21

Systèmes d'exploitation temps réel - Exemples d'exécutifs industriels S8052 27

Ordonnancement temps réel. Ordonnancement monoprocesseur S8055 31

Ordonnancement temps réel. Ordonnancement réparti S8056 37

Ordonnancement temps réel. Ordonnancement multiprocesseur S8057 43

Linux pour le temps réel S8058 47

Ordonnancement temps réel. Ordonnancement centralisé S8059 51

3– Technologies logicielles et programmation

4– Interaction homme-machine

5– Exigences contractuelles

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires

QY

RP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUP

Systèmes d’exploitation temps réel


Principes
par Yvon TRINQUET
Professeur à l’université de Nantes (IUT de Nantes)
Responsable de l’équipe « Systèmes Temps Réel » de l’Institut de recherche en
communications et cybernétique de Nantes (IRCCyN)

et Jean-Pierre ELLOY
Professeur à l’École Centrale de Nantes
Responsable de la valorisation à l’Institut de recherche en communications et

cybernétique de Nantes (IRCCyN)

1. Contexte ........................................................................................... S 8 050 – 2


1.1 Cadres et enjeux industriels .............................................................. — 2
1.2 Systèmes réactifs ............................................................................... — 2
2. Application temps réel .................................................................. — 3
2.1 Architecture fonctionnelle d’une application .................................... — 3
2.2 Architecture matérielle d’une application ......................................... — 4
3. Approches synchrone et asynchrone .......................................... — 4
3.1 Démarche synchrone .......................................................................... — 5
3.2 Démarche asynchrone et exécutif ...................................................... — 5
3.3 Démarche dirigée par le temps.......................................................... — 7
3.4 Architectures réparties ....................................................................... — 7
4. Exécutif temps réel......................................................................... — 7
4.1 Rôle de l’exécutif ................................................................................ — 7
4.2 Structure de l’exécutif ........................................................................ — 8
5. Ordonnancement............................................................................. — 10
5.1 Calcul de séquences ........................................................................... — 11
5.2 Ordonnancement optimal .................................................................. — 11
5.3 Caractérisation des tâches et des contraintes ................................... — 12
5.4 Métriques de l’ordonnancement ....................................................... — 12
5.5 Algorithmes d’ordonnancement ........................................................ — 13
6. Services de base d’un exécutif généraliste ............................... — 16
6.1 Services pour les tâches .................................................................... — 17
6.2 Synchronisation par les événements ................................................ — 19
6.3 Partage de ressources ........................................................................ — 20
6.4 Communication .................................................................................. — 21
6.5 Gestion de la mémoire ...................................................................... — 23
6.6 Gestion du temps ............................................................................... — 23
6.7 Structure de prise en compte des interruptions ............................... — 24
6.8 Structure de prise en compte des exceptions ................................... — 24
6.9 Environnement de développement pour un exécutif généraliste .... — 25
7. Performances d’un exécutif temps réel généraliste ................ — 25
8. Historique de quelques systèmes d’exploitation temps réel
académiques .................................................................................... — 26
9. Exécutifs UNIX temps réel ............................................................ — 27
Pour en savoir plus.................................................................................. Doc. S 8 050

C et article présente les principes de base utilisés dans les exécutifs temps
réel. Ce terme désigne les systèmes d’exploitation adaptés au contexte par-
ticulier, par ses exigences temporelles, de l’informatique qualifiée de « temps
réel ».
p。イオエゥッョ@Z@ェオゥョ@RPQP

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 050 – 1

RQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUP

SYSTÈMES D’EXPLOITATION TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

L’article présente d’abord la problématique de l’informatique temps réel et les


approches possibles.
Puis, la structure de l’exécutif et les politiques d’ordonnancement envisagea-
bles sont évoquées, ce qui conduit à présenter les services génériques que l’on
peut rencontrer dans les produits industriels.
Dans un second fascicule [S 8 052], certains produits bien représentatifs de
leur catégorie, seront succinctement décrits.


La garantie de bon fonctionnement est un critère primordial de
1. Contexte conception et de développement de ces systèmes. Exemples : aéro-
nautique, ferroviaire, nucléaire… ;
 Les systèmes embarqués produits en très grande quantité, et à
intégrer dans des équipements classiques. Ils doivent être à la fois
1.1 Cadres et enjeux industriels de coût modéré, offrir des garanties de fonctionnement sûr sous
des hypothèses fixées, présenter des propriétés essentielles de
D’abord marginal, devenu phénomène quasi explosif, l’utilisation
modularité, extensibilité, maintenance… Exemples : automobile,
de l’informatique dans la mise en œuvre des systèmes automatisés
équipements ménagers, capteurs et actionneurs intelligents, signa-
a pris une place considérable ces deux dernières décennies dans le
lisation et gestion technique… ;
monde industriel et, également, dans les objets de la vie courante.
L’ordinateur, sous des formes très variées, du microcontrôleur au  Les systèmes à l’architecture matérielle ou logicielle dyna-
calculateur vectoriel, s’installe dans de très nombreuses applica- mique. Ce caractère dynamique peut être dû : au nombre chan-
tions, où sa capacité d’adaptation fait merveille et contribue pro- geant d’équipements de l’application, ou au nombre variable de
gressivement à introduire de nouvelles fonctionnalités, mais aussi fonctions gérées par le système informatique en fonction de la
à réaliser des fonctions jusqu’alors à base d’autres technologies. charge, ou mode de fonctionnement du procédé.
Cette nature dynamique peut n’apparaı̂tre qu’au moment de la
Par exemple, la part de l’électronique embarquée dans les véhicu- configuration de l’installation ou au cours de la vie de l’application.
les automobiles s’accroı̂t constamment : Dans le premier cas, elle influe sur la démarche de conception du
– système contrôlant l’injection au niveau du moteur ; système de pilotage. Dans le second cas, elle conditionne la
– commande électronique des essuie-glaces ; conception des outils de mise en œuvre de l’application. Exemples :
– système de contrôle de la stabilité du véhicule ; unités de production en continu (unités chimiques, centrales de
– gestion des équipements multimédia intégrés dans l’habitacle, production d’énergie), lignes de fabrication d’équipements en
etc. série, agroalimentaire, réseaux de communication…
& La problématique du temps réel est apparue au travers des tech-
niques et outils qui ont été progressivement développés pour per-
Actuellement, à l’instar de ce qui se passe dans l’avionique, mettre la mise en œuvre de ces applications. En premier lieu issus
émerge la notion de « tout électronique » (terme anglo-saxon du monde industriel, et en particulier des entreprises et sociétés de
habituel : « X-by-Wire ») qui désigne le remplacement des sys- service intégrateurs de systèmes automatisés, ces outils subissent
tèmes de contrôle mécaniques et/ou hydrauliques par des systè- actuellement des évolutions très importantes en conception et
mes uniquement numériques. architecture. Elles sont dues à l’utilisation croissante de paradig-
mes informatiques modernes qui en accroissent la modularité,
ainsi qu’à la conceptualisation du fonctionnement des systèmes
Des études, déjà avancées chez de nombreux constructeurs auto-
temps réel, travail effectué dans les organismes de recherche aca-
mobiles, sont consacrées, par exemple, au contrôle de direction
démiques ou industriels en vue de pouvoir prouver (et certifier) le
(« Steer-by-Wire »). Il s’agit d’un système qui est, pour des raisons
bon fonctionnement des applications implémentées.
topologiques, entièrement distribué. De plus, les lois de contrôle,
par exemple celles qui commandent la crémaillère d’entraı̂nement Dans le même temps, de nouveaux champs d’application, origi-
de l’axe de direction, imposent des propriétés temporelles fortes au nellement purement informatiques, s’ouvrent à ces techniques,
système. comme le multimédia. Désormais, cette problématique est devenue
Enfin, le bon fonctionnement de ce système est crucial pour la passerelle entre l’automatique et l’informatique avec sa spécificité
sécurité du véhicule, d’où l’importance que prend la sûreté de fonc- intrinsèque : le temps.
tionnement pour les systèmes embarqués temps réel.
1.2 Systèmes réactifs
& Les domaines industriels d’application qui s’ouvrent ainsi à
Synthétiquement définie, une application temps réel « met en
l’informatique « temps réel » peuvent être sommairement classés
œuvre des systèmes informatiques ou informatisés coopérant
en trois groupes.
avec l’homme et destinés à la perception, l’observation, l’aide à la
 Les systèmes embarqués dans des équipements de haute décision et la conduite de procédés dynamiques ». Dans ce but ont
technologie, et dont la sécurité est un souci majeur. Le prix de été élaborés des concepts, des modèles, des méthodes et des outils
l’informatique y est considéré comme de peu d’importance, relati- en vue de la conception et de la réalisation matérielle et logicielle
vement aux coûts qui seraient engendrés par la défaillance du pro- des systèmes réactifs informatisés. Tous ces études et produits
cédé piloté. reposent sur la même perception du temps réel.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 050 – 2 est strictement interdite. – © Editions T.I.

RR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUP

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– SYSTÈMES D’EXPLOITATION TEMPS RÉEL

 Il se réfère ensuite au « temps ». Les interactions entre procédé


Par le CNRS [12] « est qualifié de temps réel le comportement et système doivent être « instantanées ». Fondamentalement, un
d’un système informatique lorsqu’il est assujetti à l’évolution système temps réel doit être à l’écoute permanente des variations
dynamique d’un procédé qui lui est connecté, et qu’il doit piloter du procédé, et agir en retour aussitôt que nécessaire sur le procédé
ou suivre en “réagissant” à tous ses changements d’état ». afin de le contraindre à adopter le comportement souhaité. Ces
 Dans [35] : « Toute activité ou système de traitement de l’in- interactions ne prennent en fait le sens de « temps réel » que si le
formation doit répondre aux stimuli externes dans un temps procédé est actif, c’est-à-dire s’il continue d’évoluer en l’absence de
donné ». nouvelles commandes, c’est-à-dire en cas d’inactivité ou de retard
 Dans [23] : « Un système de calcul où début et fin des acti- du système de pilotage.
vités sont gérés afin de respecter des contraintes temporelles Ce concept s’applique donc essentiellement aux procédés qui
spécifiques. Des données temporelles sont associées aux fins possèdent des dynamiques internes. Or, par principe, le fonction-
d’activité. Le comportement du système est déterminé par des nement d’un système informatique ne permet qu’une observation
algorithmes conçus pour maximiser une fonction de valeur glo- échantillonnée de son environnement. Par ailleurs, émettre une


bale dépendant du temps. » nouvelle commande est une opération du système informatique
qui ne peut être instantanée car elle requiert un temps de calcul
 Dans [14] citant la norme allemande DIN 44 300 : « Le mode qui peut être conséquent.
de fonctionnement d’un système informatique dans lequel les
programmes de traitement des données entrantes sont cons- Pour un système de pilotage, réagir « dans les temps » implique
tamment prêts afin que leurs résultats soient disponibles dans donc une observation et une action suffisamment rapides pour
des périodes de temps prédéterminées ». que le procédé n’ait pas le temps d’évoluer de façon significa-
 Dans [26] : « Un système temps-réel est un système dont on tive entre une variation d’état et l’action qui en résulte.
exige qu’il réagisse aux stimuli de l’environnement (incluant le Le temps réel reflète donc une capacité de réaction à l’échelle
passage de temps) dans l’intervalle de temps relatif imposé par de temps du procédé : c’est un temps relatif.
l’environnement ».
 Dans l’« Oxford Dictionary of Computing », cité dans [43] :
« Tout système pour lequel la date à laquelle un résultat est pro-
duit s’avère significative ».
2. Application temps réel
Ces définitions permettent de bien mettre en évidence le particu- 2.1 Architecture fonctionnelle
larisme du temps réel vis-à-vis des autres classes de systèmes
informatiques : la prise en compte du temps. En effet, on en distin-
d’une application
gue généralement trois. Exemple
& Les systèmes transformationnels, comme en relèvent, par exem- Prenons le cas d’une application de régulation de niveau d’un
fluide dans un réservoir à fuite constante (figure 1) où, le rôle du sys-
ple, le calcul scientifique ou la gestion de bases de données, qui
tème de pilotage (un poste de conduite) consiste à asservir le niveau
utilisent des programmes dont les résultats sont élaborés à partir
du fluide à partir de la mesure prélevée par un capteur analogique. Il
de données disponibles à l’initialisation de l’application, et dont
s’agit d’une commande à exécuter périodiquement et dont l’action
les instants de production ne sont pas contraints.
est l’ajustement de l’ouverture de la vanne d’alimentation du
& Les systèmes interactifs, comme les systèmes transactionnels réservoir.
ou les utilitaires de bureautique, qui gèrent des programmes dont À cette fonction de base, on adjoint deux autres missions
les résultats sont fonction de données produites par l’environne- complémentaires :
ment du système (essentiellement l’utilisateur), et dont on souhaite – commuter de boucle ouverte en boucle fermée (et inversement)
que les instants de production respectent des valeurs statistiques. sur ordre de l’opérateur ;
– en cas d’alarme signalant l’imminence d’un débordement (situa-
& Enfin, les systèmes « réactifs » qui gèrent des programmes dont tion pouvant survenir en cas de panne non détectée du capteur prin-
les résultats sont entièrement conditionnés par le comportement cipal), commuter en boucle ouverte et fixer l’ouverture de la vanne à
de l’environnement connecté (le procédé industriel), et dont les ins- une valeur prédéfinie.
tants de production des résultats sont contraints par les dynami-
ques de cet environnement.
Le vocable « réactif », souvent utilisé en synonyme de « temps Commande
réel », a l’intérêt de souligner deux concepts à la base de ces
V
systèmes. Vanne
 Il se réfère d’abord aux « interactions » entre le procédé et le
système tout d’abord. Le système informatique réactif doit réagir carac I
aux variations d’état constatées du procédé en lui appliquant les
commandes appropriées, ou en signalant cette variation à l’opéra- A
teur. Une forme de « dialogue » s’établit donc entre le procédé et le
Détecteur Événement
système informatique de pilotage, et ce via trois types de de niveau
grandeurs : « haut »
– des « mesures » que le procédé produit en continu sans signa- N
lisation particulière et que le système de pilotage doit prélever de
lui-même pour assurer sa mission ; Capteur Mesure
de niveau
– des « événements » que le procédé signale au système de pilo-
A Alarme
tage, mais qui sont souvent intrinsèquement fugaces (c’est-à-dire I Information
qui disparaissent sitôt émis), et donc que le système doit saisir N Niveau
« au vol » ; V Vanne
– enfin, et en retour, des « commandes » qui sont des signaux carac Caractère
logiques, ou analogiques, maintenus technologiquement sur les
actionneurs du procédé. Figure 1 – Régulation de niveau

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 050 – 3

RS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUP

SYSTÈMES D’EXPLOITATION TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

 Contraintes « temporelles »
N Comme les tâches sont sollicitées par des événements aux occur-
rences asynchrones, il se peut qu’à certains moments plusieurs
carac tâches entrent en concurrence pour leur exécution.
HTR
Acquisition BO Æ BF Directives Si le nombre ou la puissance des processeurs du système de
Filtrage Visualisation pilotage sont sous-dimensionnés, il se peut qu’ils ne puissent satis-
I
Commande faire les contraintes temporelles de toutes les tâches en concur-
rence, c’est-à-dire répondre à toutes « à temps ». Pour éviter pareil
BF Æ BO
cas, il faudra modifier l’architecture matérielle en conséquence :
A accroissement de la puissance des unités de traitement, utilisation
V
Émission Alarme de processeurs spécialisés, répartition des tâches sur les
processeurs…


& Ainsi, pour satisfaire une ou plusieurs de ces contraintes, on
Figure 2 – Architecture fonctionnelle de la régulation de niveau peut être amené à adopter un système informatique de pilotage
composé de plusieurs stations de traitement interconnectées en
réseau. Le « réseau » devient alors la colonne vertébrale des com-
Nota : un système est dit en boucle ouverte, si la commande du système est calculée munications intra-système et ses performances et capacités jouent,
sans utiliser d’information de valeur de la grandeur contrôlée. Dans l’exemple, l’ouver-
ture de la vanne est faite indépendamment du niveau dans la cuve.
à leur tour, un rôle essentiel dans le respect des contraintes de
À l’inverse, le système est dit en boucle fermée, si le calcul de la commande utilise sûreté et de temps.
une information sur la grandeur contrôlée. Dans l’exemple, l’ouverture de la vanne tient
compte du niveau réel dans la cuve.
Cependant, l’introduction des réseaux amène son lot de difficul-
tés nouvelles qui n’apparaissent pas dans le cas monoprocesseur.
L’analyse du cahier des charges de cette simple application En effet, lorsque les actions à entreprendre sur le procédé sont cal-
conduit au recensement des actions élémentaires que doit effectuer culées en parallèle sur des stations distantes, leurs observations de
le système de pilotage et que l’on regroupe en tâches. Une « tâche » l’état du procédé peuvent différer de l’une à l’autre en raison de
rassemble des fonctions de l’application qui sont exécutées dans l’asynchronisme du fonctionnement des processeurs et des délais
les mêmes conditions événementielles. Dans l’exemple de la de communication. Dans ce cas, les actions appliquées au système
figure 2, on peut ainsi recenser les tâches suivantes : séparément par ces stations peuvent ne pas être cohérentes entre
– « acquisition-filtrage » et calcul de la « commande » de vanne elles. C’est pourquoi l’introduction d’un réseau dans l’architecture
(activité périodique liée à l’horloge temps réel HTR) ; matérielle du système de commande est une donnée qui en condi-
– « émission » de la commande vers l’actionneur ; tionne également la réalisation logicielle. Ces deux aspects ne sont
– commutation de « boucle ouverte en boucle fermée » ; plus à dissocier et leur développement conjoint est nécessaire à la
– commutation de « boucle fermée en boucle ouverte » ; réalisation de l’application.
– réception et analyse des « directives » de l’opérateur ;
– réception et traitement de « l’alarme ». L’aboutissement de ce développement conduit alors à la défini-
tion d’un matériel, d’une décomposition fonctionnelle et d’une
La figure 2 illustre l’architecture fonctionnelle résultante sous la répartition de ces fonctions sur le matériel, le tout garantissant,
forme d’un schéma à flots d’événements. ensemble, les contraintes temporelles de l’application. Ce
résultat est appelé « architecture opérationnelle » de
l’application.
2.2 Architecture matérielle
d’une application
Implémenter cette application passe par le choix de la configura-
tion matérielle du système de pilotage sur lequel seront implémen-
3. Approches synchrone
tées les tâches de l’application. Plusieurs structures de cette confi- et asynchrone
guration sont envisageables, même dans le cas de l’exemple
simple précédent, et pour chaque structure, on peut a priori envisa-
ger l’utilisation de toute une variété d’équipements (processeurs,
Si on poursuit l’étude de l’application de la régulation de niveau
cartes d’interfaces, réseaux) aux performances différentes.
de la figure 1, il faut maintenant spécifier l’architecture matérielle
& Le choix de la configuration et la sélection des équipements du système de pilotage. Plusieurs possibilités se présentent,
sont naturellement et intimement liés. De plus, outre les critères même dans ce cas de l’exemple pourtant simple ; tout dépend des
de coût ou de fiabilité, ils dépendent essentiellement de trois fonctions que l’on décide de déporter dans le capteur (de niveau) et
types de contraintes. dans l’actionneur (la vanne de régulation).
 Contraintes « topologiques » Choisissons ici la solution la plus classique : des capteurs et
actionneurs sans intelligence déportée, un poste de conduite
Ces contraintes apparaissent lorsque le procédé est une installa- constitué d’un calculateur monoprocesseur équipé des interfaces
tion éclatée géographiquement, ou quand le procédé est doté d’entrées-sorties appropriées à l’application, une console opéra-
d’une instrumentation intelligente qui en déporte certains traite- teur. C’est la solution illustrée sur la figure 1. Il s’agit maintenant
ments (dans l’exemple présenté, cas où les fonctions d’acquisition de procéder à l’implémentation dans ce calculateur des tâches pré-
et de filtrage seraient intégrées au capteur) ; cédemment décrites.
 Contraintes de « sûreté de fonctionnement » À première vue, il pourrait sembler que cette phase d’implémen-
C’est l’impératif de maintien du service du système de pilotage tation relève uniquement de techniques de développement, et que
(nominal ou dégradé) en cas d’anomalie partielle des équipements. les décisions qui conditionnent le bon fonctionnement de l’applica-
Satisfaire cet impératif se traite par la redondance. tion sont déjà prises. Or si cela est vrai sur le plan fonctionnel, rien
Cette redondance peut concerner l’instrumentation (dans l’exemple n’est encore vraiment résolu sur le plan temporel.
présenté, le détecteur de niveau haut supplée un dysfonctionnement Et le traitement des contraintes temporelles va être étroitement
du capteur), mais elle concerne également le système informatique conditionné à ce moment par un choix majeur : celui de la réalisa-
car sa défaillance engendre la perte totale du contrôle du procédé ; tion du « lien entre les tâches et leurs événements activeurs ». En

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 050 – 4 est strictement interdite. – © Editions T.I.

RT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUP

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– SYSTÈMES D’EXPLOITATION TEMPS RÉEL

effet, quels que soient les langages ou formalismes utilisés, pour valide, c’est-à-dire n’engendre pas le dépassement de certaines
décrire l’application, et les outils adoptés pour l’implémentation, échéances temporelles quand on passe en situation réelle, c’est-à-
tous peuvent conduire, au niveau « machine », à deux techniques dire avec les véritables durées d’exécution des actions.
différentes de réalisation du mécanisme d’appel des tâches. Et ces
deux techniques relèvent de deux principes fondamentaux diffé- & Comme le système de pilotage ne constate l’arrivée de nou-
rents, « synchrone » et « asynchrone ». veaux événements qu’à la terminaison de chaque tâche, voire à la
terminaison d’un groupe de tâches, il reçoit à cet instant tous les
événements en attente sans connaı̂tre leur ordre d’arrivée. Si cet
3.1 Démarche synchrone ordre est important pour l’application, c’est-à-dire conditionne l’ac-
tion du système de pilotage, quelle action entreprendre alors ?
La technique de mise en œuvre synchrone consiste à cons- La technique adoptée dans l’approche synchrone, pour traiter
truire directement le lien entre une tâche et son événement acti- cette circonstance, consiste à considérer tous les événements
veur sans se préoccuper de l’existence d’éventuels conflits de observés au même instant comme étant survenus en même


cette tâche avec les autres au cours du fonctionnement de temps, c’est-à-dire comme simultanés. Cette « simultanéité » peut
l’application. être perçue alors comme un nouvel événement pour lequel l’utili-
sateur peut définir une action spécifique à entreprendre en ce cas.
Il s’agit donc d’une construction aveugle, et cette technique ne La figure 3 illustre le chronogramme des deux tâches Directives
fonctionne que si cet aveuglement n’engendre pas de fautes com- et Alarme exécutées suite à l’occurrence des événements carac et A
portementales, ni temporelles. dans le cas d’une implémentation synchrone. On suppose que
Sur le plan comportemental, en particulier, aucune tâche ne l’alarme survient au cours de l’exécution du traitement d’une direc-
devra accéder à une ressource partagée alors qu’elle est en cours tive de l’opérateur. Sur cette figure carac’ et A’ désignent les événe-
d’utilisation par d’autres, et qui risquerait alors de devenir incohé- ments réellement perçus par le système de pilotage. On trouvera
rente, car dans cette démarche aucun mécanisme ne peut en proté- plus d’informations dans [3].
ger l’accès exclusif. La solution pour y parvenir consiste à séquen-
tialiser l’exécution des tâches, donc à éviter la « préemption » (voir
Nota) de toute tâche par une autre et à y encapsuler l’utilisation de 3.2 Démarche asynchrone et exécutif
toute ressource partagée.
Nota : la préemption est l’action qui consiste à suspendre l’exécution d’une action au
profit d’une autre jugée plus prioritaire (critère d’urgence par exemple).
La technique de mise en œuvre asynchrone consiste à obser-
ver en permanence les occurrences d’événement, y compris au
Mais, adopter la non-préemption n’est pas sans conséquences cours de l’exécution des tâches. Leurs dates d’arrivée et leurs
sur le plan temporel : ordres relatifs sont donc connus : la nature de l’action à entre-
& La perception qu’a le système de l’occurrence de tout événe- prendre n’est pas ambiguë et son urgence peut être immédiate-
ment est différée du temps d’exécution de la tâche en cours (au ment prise en compte.
moment de l’occurrence). Ce « retard » à la prise en compte peut
affecter n’importe quel événement, quelle qu’en soit la gravité Malheureusement, la préemption, outre son coût temporel,
pour l’application. En outre, ce retard peut être conséquent, en cas engendre de nouveaux problèmes.
d’événements en rafale, pour la tâche traitée en dernier. Il faut donc
à tout prix concevoir l’architecture fonctionnelle, et particulière- & À la différence de la démarche synchrone, il devient beaucoup
ment le découpage des tâches, de façon à éviter qu’une tâche d’im- plus difficile d’observer et, donc, de vérifier le « bon » comporte-
portance faible mobilise le processeur. ment du système informatique de pilotage. Il serait a priori néces-
Dans l’exemple de la figure 1, ce pourrait être le cas de la tâche saire d’envisager toutes les situations de préemption pour vérifier
consacrée à la réception des directives si sa durée est fonction de la qu’aucune n’engendre le non-respect d’une contrainte temporelle
vitesse de saisie de l’opérateur. On constate donc qu’avec cette quelconque, ce qui est naturellement impossible. Il faut, comme
technique les contraintes temporelles de l’application doivent être en synchrone d’ailleurs, passer par une modélisation formelle du
analysées à la conception de l’application. Il faudra vérifier, sur l’ar- comportement de l’application pour pouvoir la vérifier, mais les
chitecture opérationnelle choisie, si l’hypothèse « d’instantanéité » modèles asynchrones qui permettent une telle preuve sont actuel-
des actions, en fait implicite dans la démarche synchrone, est lement plus complexes qu’en démarche synchrone.

En n’observant les
Alarme occurrences
d'événements émis
par le procédé qu’à la
Application fin de l’exécution de
Directives
chaque action, la
réaction du système
est perçue comme
Occurrences carac’ A' immédiate … par le
observées système de contrôle.

Système La prise en compte


retardée de certaines
Occurrences A occurrences
émises d'évènements est une
par le procédé carac Temps réaction perçue
comme différée … par
le procédé.

Figure 3 – Chronogramme d’une exécution « synchrone »

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 050 – 5

RU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUP

SYSTÈMES D’EXPLOITATION TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Cela est en partie dû au fait que, macroscopiquement, des occur-  Cette technique souffre de plusieurs difficultés. Tout d’abord,
rences d’événement très voisines peuvent engendrer des réactions quel est ce paramètre qui définit l’importance d’une tâche : son
parfois bien différentes du même système. Certes, à l’examen très échéance (c’est-à-dire son urgence) ou sa gravité (c’est-à-dire l’am-
fin du déroulement de l’évolution de chaque tâche, ces différences pleur des dommages encourus en cas de non-respect de cette
de réaction sont parfaitement justifiées. Mais, à l’échelle temporelle échéance) ? La réponse n’est pas unique. Certes, si les échéances
du procédé, on prête souvent aux réactions asynchrones le carac- sont toutes satisfaites, la question des dommages ne se pose pas,
tère « d’indéterministes » pour cette raison. mais en cas de l’éventualité du non-respect de toutes les échéan-
ces ? En ce cas, nombre d’applications ne permettent pas de tra-
& À l’instant d’arrivée de tout nouvel événement, on peut mainte- duire l’importance d’une tâche sous la forme d’un indicateur
nant décider à qui allouer le processeur entre : unique, valide pour tous les cas d’occurrence d’événements et
– la nouvelle tâche activée par cet événement ; dans toutes les situations de concurrence des tâches.
– celle qui était déjà en exécution à ce même moment ;  De nombreuses variantes de réalisation tentent alors de traduire
– une autre tâche en attente d’un processeur. l’importance multicritères d’une tâche par une priorité variable dans

R  De ce choix dépend le respect des contraintes temporelles. Les le temps, en fonction de l’état du procédé ou de la charge du sys-
modalités de ce choix sont donc primordiales pour le bon fonction- tème de pilotage. La priorité perd son sens initial et ces réalisations
nement de l’application : elles constituent ce qu’on appelle une ne suivent alors plus la politique d’ordonnancement, qui avait peut-
« politique d’ordonnancement ». De nombreuses politiques d’or- être pourtant été choisie pour sa garantie de respect des contraintes
donnancement ont été proposées dans la littérature, mais à chaque temporelles. On atteint alors les limites de ce mécanisme.
fois pour satisfaire des contraintes temporelles d’une classe d’ap- & Une fois l’ordonnancement choisi pour sa garantie de respect
plications spécifique. des contraintes, une fois son mécanisme de mise en œuvre défini,
Pour certaines politiques, il existe même une condition formelle qui il s’agit de le réaliser. Reste alors à construire le dispositif qui cen-
permet d’établir hors-ligne si, oui ou non, les contraintes temporelles tralisera la réception de tous les événements, qui suivra l’évolution
seront respectées dans toutes les situations possibles que peuvent de l’exécution des tâches et qui, en conséquence, effectuera le
rencontrer les tâches appartenant à la classe d’application concernée. choix à tout instant des tâches à exécuter. Ce centralisateur s’ap-
Dans ces cas spécifiques, le risque de non-respect des contraintes pelle « l’exécutif », et la composante de l’exécutif qui met en
peut donc être identifié dès la phase de conception et traité par une œuvre la politique d’ordonnancement s’appelle « l’ordonnanceur ».
modification en conséquence de l’architecture matérielle. Adopter la démarche asynchrone conduit à la construction ou à
l’acquisition d’un exécutif temps réel.
 Mais, hors de ces cas, pour obtenir le respect des contraintes
temporelles, il faut avoir recours à des palliatifs variés : & À propos de la gestion des ressources partagées. Comme toute
– modification du cahier des charges de l’application pour la tâche est susceptible d’être préemptée à tout moment par d’autres
ramener à un cas standard ; tâches plus prioritaires, les ressources qu’elles se partagent ris-
– construction hors-ligne d’une séquence valide en balayant quent de devenir incohérentes en cas de préemption au milieu de
exhaustivement les situations dangereuses ; leur manipulation. Il devient nécessaire de garantir cette cohérence
– simulation hors-ligne des séquences engendrées par diverses par un mécanisme approprié. C’est un des rôles qui est confié à
politiques fixées a priori, etc. l’exécutif, puisqu’il est indépendant des tâches et déjà gestionnaire
de la ressource commune qu’est le processeur. Mais, la politique
& La mise en œuvre en ligne de la plupart de ces politiques s’ap- de gestion des ressources partagées vient alors se superposer à
puie sur un mécanisme de base bien connu, la « priorité ». Ce celle de l’allocation des processeurs, qui, toutes deux, ont pour
mécanisme est utilisable lorsque la politique d’ordonnancement rôle de décider l’ordre d’exécution des tâches.
consiste à définir l’importance relative de chaque tâche (vis-à-vis Comme leurs critères de décision sont différents, il est inéluc-
des autres) en fonction d’un paramètre unique, comme son table que ces deux politiques entrent en conflit. Dans ce contexte,
échéance, sa période ou sa gravité ; la priorité de chaque tâche est établir a priori si, pour les tâches d’une application donnée, cette
alors une fonction de ce paramètre. superposition de politiques d’ordonnancement garantit le respect
 L’emploi de ce mécanisme en ligne est alors très simple. Pour des contraintes temporelles devient encore plus délicat, et ne peut
suivre la politique d’ordonnancement adoptée, il suffit de choisir être vérifié que dans des cas bien spécifiques.
comme tâche à exécuter celle de plus forte priorité parmi toutes La figure 4 illustre le chronogramme des deux mêmes tâches
celles en concurrence. Encore faut-il que l’importance d’une tâche visibles sur la figure 3, mais cette fois dans le cas d’une implémen-
ne dépende que de ce seul paramètre tout au long de l’application. tation asynchrone.

Le système peut
Alarme suspendre le
traitement d’une
action (déclenchée par
Application "carac") au bénéfice
Directives
d’une autre, jugée
plus « importante »,
(déclenchée
Occurrences carac’ A' par « A ») pour
observées le fonctionnement
du procédé.

Système
Les occurrences
Occurrences d'événements émis
émises par le procédé sont
par le procédé carac A Temps immédiatement perçues
par le système.

Figure 4 – Chronogramme d’une exécution « asynchrone »

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 050 – 6 est strictement interdite. – © Editions T.I.

RV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUR

Systèmes d’exploitation temps


réel – Exemples d’exécutifs
industriels
par Yvon TRINQUET
Professeur à l’Université de Nantes (IUT de Nantes)


Responsable de l’Équipe « Systèmes Temps Réel » de l’Institut de Recherche en
Communications et Cybernétique de Nantes (IRCCyN)

et Jean-Pierre ELLOY
Professeur à l’École Centrale de Nantes
Responsable de la valorisation à l’Institut de Recherche en Communications et
Cybernétique de Nantes (IRCCyN)

1. Situation de l’offre ......................................................................... S 8 052 – 2


2. Exemples d’exécutifs généralistes .............................................. — 2
3. Exécutifs UNIX temps réel ............................................................ — 3
3.1 Aperçu de POSIX ................................................................................ — 3
3.1.1 Historique de POSIX ................................................................ — 3
3.1.2 Aperçu de quelques caractéristiques de POSIX‚ 1003.1 ....... — 3
3.1.3 Les profils temps réel .............................................................. — 6
3.1.4 Exemple de produits ............................................................... — 6
3.2 L’approche LINUX temps réel ............................................................ — 7
3.2.1 Historique de l’approche ......................................................... — 7
3.2.2 Approche par préemption du noyau LINUX ........................... — 7
3.2.3 Approche par noyau temps réel .............................................. — 7
3.2.4 Exemples de produits .............................................................. — 7
4. Le standard OSEK/VDX .................................................................. — 8
4.1 Historique de la proposition OSEK/VDX ........................................... — 8
4.2 La gestion des tâches ......................................................................... — 8
4.3 La synchronisation des tâches ........................................................... — 8
4.4 Partage de ressources et exclusion mutuelle .................................... — 9
4.5 Les objets Alarme et Compteur ......................................................... — 9
4.6 La communication .............................................................................. — 9
4.7 Les classes de conformité .................................................................. — 10
4.8 L’approche dirigée par le temps : OSEKtime ..................................... — 10
4.9 L’évolution vers AUTOSAR ................................................................. — 10
4.10 Exemples de produits ........................................................................ — 11
5. Le standard ARINC 653.................................................................. — 11
5.1 Aperçu du standard ............................................................................ — 11
5.2 Aperçu sur les produits ...................................................................... — 12
Pour en savoir plus.................................................................................. Doc. S 8 050

C et article fait suite au fascicule [R 8 050] et présente certains produits bien


représentatifs de leur catégorie.
p。イオエゥッョ@Z@ウ・ーエ・ュ「イ・@RPQP

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 052 – 1

RW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUR

SYSTÈMES D’EXPLOITATION TEMPS RÉEL – EXEMPLES D’EXÉCUTIFS INDUSTRIELS ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Enfin, POSIX‚ (Portable operating system interface for computer


1. Situation de l’offre environments) qui complète UNIX‚ de fonctionnalités temps réel
est le fruit de travaux menés depuis 1984, avec une révision
majeure en 2001, et a conduit à plusieurs standards IEEE et ISO.
L’offre industrielle pour les systèmes d’exploitation temps réel La présentation qui suit est organisée comme indiqué ci-après.
est importante et variée. On trouve des exécutifs pour microcontrô- Tout d’abord quelques exécutifs généralistes seront présentés,
leurs, des exécutifs pour les processeurs « classiques » (architec- puis nous aborderons le domaine des exécutifs UNIX‚ temps réel,
ture CISC : Complexed instruction set computer) et enfin des exé- à la fois au travers du standard POSIX‚ et des développements
cutifs pour les machines à architecture RISC (Reduced instruction LINUX‚ temps réel. Nous continuerons par l’exposé des principales
set computer). Les exécutifs peuvent être conçus pour une architec- caractéristiques du standard OSEK/VDX, complété par quelques
ture monoprocesseur, multiprocesseur à mémoire partagée (par- indications sur AUTOSAR. Enfin nous évoquerons le standard
tiellement ou totalement), ou encore multiprocesseur sans ARINC 653.
mémoire commune (utilisation d’un réseau de communication).
La présentation même un peu détaillée de systèmes d’exploitation


Régulièrement des études de marché paraissent dans la presse temps réel est un exercice extrêmement délicat car il faudrait avoir à
spécialisée ou sont effectuées par des sociétés offrant un service disposition l’ensemble des documentations techniques les concer-
de conseil (donc payantes). D’une manière générale, les résultats nant, ce qui n’est évidemment pas possible, et qui de plus demande-
de ces enquêtes ne sont pas faciles à analyser, même si des ten- rait beaucoup trop de temps et d’espace pour prétendre à l’exhausti-
dances s’en dégagent, la communication des éditeurs de logiciel vité dans un article. Les sites web des constructeurs sont très riches
n’étant pas toujours claire entre ceux qui se disent leaders, ceux d’informations, pas toujours faciles à décrypter car évidemment
qui ont la plus forte croissance, en intégrant bien sûr les chiffres leurs produits sont toujours les meilleurs et les seuls capables de
de croissance du marché qui sont importants chaque année. Une répondre aux besoins. L’objectif de cette description est donc surtout
étude publiée en juin 2006 (http://www.embedded.com) montre la d’arriver à situer les contributions les unes par rapport aux autres, à
répartition entre les types de systèmes d’exploitation utilisés pour charge ensuite à la personne intéressée d’analyser dans le détail les
les systèmes embarqués. La moitié (51 %) sont des OS commer- caractéristiques pertinentes répondant à ses besoins.
ciaux, 21 % sont des OS « propriétaires », 16 % sont des OS open
source et 12 % sont des OS open source avec support commercial.
Dans les OS commerciaux la société Wind River est (depuis long-
temps) leader avec son produit VxWorks et ses déclinaisons, suivi
par les versions « embedded » de Windows‚ (XP embedded et CE).
2. Exemples d’exécutifs
Dans ces résultats, on peut observer une proportion non négli-
geable des réalisations « propriétaires ». Le choix d’une telle solu-
généralistes
tion peut être guidé :
– par des considérations économiques (droit de licence), On donne ci-après les références de quelques exécutifs généra-
– par des considérations techniques qui conduisent à réaliser un listes que l’on peut trouver sur le marché.
produit parfaitement adapté aux besoins des applications visées, et & Société : Wind River (http://www.windriver.com)
donc moins généraliste ou alors apportant une plus-value par rap-
port aux produits du marché, VxWorks 5.x : ce produit est l’avant-dernière version du système
– par des raisons de stratégie d’entreprise (maı̂trise complète du d’exploitation qui a fait la réputation de la société, c’est aussi la ver-
produit). sion la plus répandue. C’est un très complet RTOS avec beaucoup
de services, offrant ainsi de nombreux et parfois complexes modè-
Les produits se rattachent souvent à un standard. Ainsi autant les d’applications (car difficiles à analyser d’un point de vue com-
que l’offre de produits il faut parler de l’offre de standards car portemental, et donc de la prédictibilité). Il offre une certaine com-
c’est cela qui infléchit l’offre (commerciale ou non). Historique- patibilité POSIX‚ 1003.1 et anciennement 1003.1b et 1003.1c.
ment, de nombreuses tentatives de standardisation des exécutifs L’offre, en termes de processeurs cibles est très importante, et la
généralistes ont eu lieu sans qu’aucune n’ait obtenu un crédit suffi- plateforme de développement très riche (Tornado pour la série 5.
sant auprès des utilisateurs et/ou des fournisseurs. On peut citer en x). La société a été rachetée en 2009 par Intel.
premier lieu MOSI (Microprocessor operating system interface & Société : GreenHILLs Software Inc. (http://www.ghs.com)
standard) [38] influencé par iRMX d’Intel, qui est devenu le stan-
dard IEEE 855 en 1984. De même RTEID (Real time executive inter- La société s’enorgueillit d’être celle qui a la plus forte croissante
face definition) fut proposé, peu après, par Motorola auprès des observée sur les années 2002 à 2007 (source : VDC Embedded Mar-
utilisateurs du produit VME Exec. ORKID (Open real time kernel ket Study 2007).
interface definition) fut proposé par l’organisme VITA, regroupe- velOSity RTOS : c’est le noyau d’INTEGRITY, le produit phare et
ment d’utilisateurs du bus VME. ORKID a semblé être influencé complet de la société. Il est conçu pour utiliser une mémoire non
par pSOS d’Integrated System (produit repris ensuite par Wind protégée. Il possède une petite empreinte mémoire très rapide
River). SCEPTRE 2 (1992) fut une proposition française issue d’un (latence minimale obtenue par validation quasi permanente des
groupe de travail financé par le programme STRIN (Solutions interruptions).
temps réel pour l’industrie). Ces travaux faisaient suite à ceux de
m-velOSity Real-Time Microkernel : c’est un noyau temps réel
1982 qui avaient conduit au rapport SCEPTRE, proposition de stan-
basique offrant des services pour le multitâches avec une
dardisation du cœur des exécutifs, qui a influencé la réalisation de
empreinte très faible (quelques kilooctets ROM et RAM).
plusieurs exécutifs français (RTC de GSI-Tecsi, par exemple).
Dès 1995, les travaux dans le milieu automobile débouchèrent & Société : OSE ENEA (http://www.enea.com)
dans les années 2000 sur la proposition OSEK/VDX (Offene systeme La famille de produits de la société ne se réfère à aucun stan-
und deren schnittstellen für die elektronik im kraftfahrzeug/vehicle dard. Trois produits sont proposés, très optimisés pour une
distributed executive), support d’exécution temps réel pour l’« élec- gamme d’application.
tronique embarquée » dans les automobiles. Ces travaux ont ensuite Enea OSE Multicore RTOS : c’est le produit phare, pensé pour
été poursuivis par le consortium AUTOSAR en 2003, en s’appuyant, des architectures multicœurs (architectures AMP/SMP) et les systè-
pour le logiciel de base, sur la proposition OSEK/VDX. mes répartis. La réputation de ce produit a souvent été fondée sur
Vers la même époque, les travaux dans le milieu aéronautique un service d’IPC (Inter process communication) très efficace (direct-
débouchèrent en 1996 sur la première publication de ARINC 653, message-passing model) : tous les processus ne communiquent
standard d’interface Application/OS pour les applications avioniques. que par message.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 052 – 2 est strictement interdite. – © Editions T.I.

RX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUR

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– SYSTÈMES D’EXPLOITATION TEMPS RÉEL – EXEMPLES D’EXÉCUTIFS INDUSTRIELS

Enea OSEck : cette version, moins riche que le précédent produit, À partir de 1998 des travaux communs se sont déroulés au sein
est spécialisée pour les DSP (la société a beaucoup de débouchés d’un groupe de travail nommé « Austin group » (du lieu de la réu-
dans les télécommunications). nion fondatrice au Texas). Ce groupe comprenait des membres de
Enea OSE Epsilon : une version très compacte du système d’ex- l’IEEE PASC (Portable applications standards commitee), des mem-
ploitation, optimisé pour les systèmes à faible ressource à base de bres de l’Open group et des membres de l’ISO/IEC Joint technical
microcontrôleurs. commitee 1 ; il s’agit donc d’un effort combiné de comités de nor-
malisation et d’industriels du logiciel. L’objectif du groupe était de
& Société : Micrium (http://www.micrium.com) réviser et combiner différents standards en partant de la spécifica-
mC/OS-II : il s’agit d’un noyau multitâches préemptif certifié DO- tion « Single UNIX‚ specification, version 2 » de l’Open group car
178B niveau A. elle était un sur ensemble des travaux POSIX‚ (hors 1003.13). Les
premiers résultats ont été produits en 2001, l’IEEE Std 1003.1,
& Société : FreeRTOS (http://www.freertos.org) l’ISO/IEC 9945 et l’Open group base specifications issue 6 consti-
FreeRTOS : il s’agit d’un noyau temps réel en version open tuant le cœur de la Single UNIX‚ specification version 3. Une
mise à jour correctrice a ensuite été éditée en 2004, et des travaux


source. Un autre produit de la même société, SafeRTOS, est une
version similaire mais certifié par un organisme de certification sont toujours en cours organisés par l’Austin group. Nous utilise-
allemand (TÜV SÜD). rons dans la suite la dénomination POSIX‚ 1003.1.

& Société : DDC-I (http://www.ddci.com) 3.1.2 Aperçu de quelques caractéristiques


Deos (DDC-I embedded operating system) : Deos est un RTOS de POSIX 1003.1
certifié DO-178B niveau A. Il affiche une protection mémoire qui
Le standard est organisé autour de quatre parties représentant
est en fait une séparation entre les espaces mémoire noyau et
plus de 400 pages :
tâches utilisateur. Dans cette protection spatiale les tâches peuvent
cependant être contraintes quant à la mémoire utilisée. Dans le – les définitions et conventions utilisées dans la spécification
domaine temporel on peut avoir des budgets temporels alloués ainsi que les prototypes nécessaires en langage C,
aux tâches (pourcentage d’utilisation CPU). De plus un algorithme – les interfaces applicatives,
d’utilisation du « slack » (le temps libre) permet de le réallouer (les – la description du shell (langage de commandes) et les
tâches « anytime » sont évoquées, c’est un type de tâches qui amé- utilitaires,
liorent les résultats produits au fur et à mesure de leur exécution). – un ensemble de justifications de ce qui a été proposé.
& Société : Microsoft (http://www.microsoft.com/windowsembedded) Nota : Pour se le procurer voir : http://www.unix.org/version3

Windows Embedded CE : un système d’exploitation temps réel, Le standard est une définition d’interfaces, en aucun cas une
modulaire qui apporte la dimension temps réel aux autres produits implémentation. Il a pour objectif principal de permettre la portabi-
Microsoft, avec lesquels il est prévu pour coopérer. La version lité des applications, au niveau source, sur les systèmes UNIX‚,
actuelle est 6.0R2. quel qu’en soit le fournisseur, en s’appuyant principalement sur le
langage C. POSIX‚ 1003.1 rassemble ce qui été auparavant dis-
persé dans divers standards (1003.1, 1003.1b, 1003.1c, 1003.1d…,
1003.2…), suite au travaux de l’Austin group, et les aspects temps
3. Exécutifs UNIX temps réel réel se retrouvent sous forme optionnelle (le cœur du standard est
tout de même l’UNIX‚ historique !).

3.1.2.1 Gestion des threads, l’ordonnancement


On rappelle, comme cela a été indiqué en [R 8 050], que deux
approches principales ont été suivies dans les développements Un processus UNIX‚ est un espace mémoire protégé dans lequel
temps réel autour d’UNIX‚ : peuvent s’exécuter un ou plusieurs threads (la notion de tâche dans
l’exécutif généraliste) concurrents et coopérants. Les threads ne
1) l’une dans la mouvance du standard POSIX‚ : elle consiste à
peuvent exister qu’à l’intérieur d’un processus ; aussi, si le proces-
enrichir le standard par des services adaptés aux temps réel ;
sus est détruit, les threads le sont également. La gestion de la
2) l’autre, plus tardive, dans la mouvance de LINUX‚. Cette der- « vie » d’un thread se fait en trois étapes :
nière peut être à nouveau scindée en deux approches :
1) la création d’une structure de données et son initialisation (les
– celle qui consiste à rendre le noyau préemptif, conférant ainsi attributs du thread). Les types des éléments de cette structure ne
des capacités de réaction temps réel pour les applications, sont pas manipulés directement par l’application (types dits « opa-
– celle qui consiste à utiliser un noyau temps réel qui considère ques ») ; ils sont manipulés au travers de fonctions ;
LINUX‚ comme l’une de ses tâches, avec une faible priorité. C’est
le noyau qui prend le contrôle des interruptions et du processeur. 2) la création et l’activation du thread ;
3) la terminaison du thread (si nécessaire) et l’exécution des
fonctions de nettoyage (cleanup) associées.
3.1 Aperçu de POSIX
Les structures de données associées à un thread indiquent les
principaux éléments suivants :
3.1.1 Historique de POSIX
– la taille (minimale) de sa pile,
Le nom POSIX‚ est une marque enregistrée de l’IEEE. Il signifie – sa priorité statique,
portable operating system interface, le X étant là pour rappeler le – le type d’ordonnanceur utilisé,
lien avec UNIX‚. C’est dans les années 1980 qu’ont commencé les – un booléen qui indique si, oui ou non, le futur thread hérite du
travaux pour standardiser l’interface applicative d’UNIX‚, au niveau type d’ordonnanceur et de la priorité de son créateur (celui qui
source, ce besoin se faisant alors fortement ressentir. La première invoque le service de création). Dans ce cas, les deux champs pré-
proposition à laquelle a été associé le nom POSIX‚ est l’IEEE Std cédents ne sont pas significatifs.
1003.1-1988, à laquelle ont succédé des révisions. Celle de 1990 a
également été approuvée comme un standard international ISO/ La création du thread se fait dans le contexte du processus cou-
IEC 9945-1:1990, et elle a apporté les services pour le temps réel rant à l’aide des attributs de la structure mentionnée ci-avant. De
avec les parties 1003.1b et 1003.1c. C’est dans la version de 1998 plus, on associe au thread une fonction (cas du langage C) conte-
que les profils temps réel sont apparus (IEEE Std 1003.13-1998). nant son algorithme, et un identificateur lui est alloué par le noyau.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 052 – 3

RY

SP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUU

Ordonnancement temps réel


Ordonnancement monoprocesseur
par Emmanuel GROLLEAU
Professeur des universités en Informatique à l’ISAE-ENSMA (Chasseneuil du Poitou)

Michaël RICHARD


Maı̂tre de conférences en Informatique à l’ISAE-ENSMA (Chasseneuil du Poitou)

Pascal RICHARD
Professeur des universités en Informatique à l’université de Poitiers

et Frédéric RIDOUARD
Maı̂tre de conférences en Informatique à l’université de Poitiers

1. Architectures des applications temps réel ................................ S 8055v2 –4


1.1 Architecture matérielle ....................................................................... — 4
1.1.1 Systèmes centralisés ............................................................... — 4
1.1.2 Systèmes répartis .................................................................... — 5
1.2 Architecture logicielle ........................................................................ — 6
1.2.1 Systèmes d’exploitation et exécutifs ...................................... — 6
1.2.2 Développement des applications ............................................ — 8
1.3 Principes fondamentaux de l’ordonnancement temps réel .............. — 10
1.3.1 Principales problématiques ..................................................... — 10
1.3.2 Faisabilité et ordonnançabilité ................................................ — 11
1.4 Modèles de tâche ............................................................................... — 12
1.5 Algorithmes d’ordonnancement ........................................................ — 13
1.5.1 Ordonnancement généraliste .................................................. — 13
1.5.2 Principales politiques d’ordonnancement pour le temps réel — 14
1.5.3 Propriétés ................................................................................. — 15
1.5.4 Mesures de performance ........................................................ — 17
2. Tests d’ordonnançabilité ............................................................... — 17
2.1 Principes ............................................................................................. — 17
2.2 Tâches indépendantes ........................................................................ — 18
2.2.1 Ordonnancement à priorité fixe aux tâches ........................... — 18
2.2.2 Ordonnancement à priorités fixes au travaux ........................ — 21
2.2.3 Ordonnancement à priorité dynamique ................................. — 23
2.3 Tâches dépendantes ........................................................................... — 23
2.3.1 Précédences ............................................................................. — 23
2.3.2 Partage de ressources ............................................................. — 25
2.4 Tâches apériodiques ........................................................................... — 26
2.4.1 Serveurs à priorités fixes aux tâches ...................................... — 26
2.4.2 Serveurs à priorités fixes aux travaux .................................... — 27
Pour en savoir plus.................................................................................. Doc. S 8 055v2

es systèmes informatiques peuvent être classés en trois catégories : les sys-


L tèmes transformationnels, les systèmes réactifs et les systèmes interactifs.
Les systèmes transformationnels transforment des données d’entrée en don-
nées de sortie à leur propre rythme, sans interaction avec leur environnement.
Les systèmes interactifs représentent typiquement la classe des programmes
avec une interface graphique. Ils répondent aux demandes d’un utilisateur, et
il est bienvenu qu’ils y répondent rapidement. Les systèmes réactifs sont en
charge de contrôler des procédés. Un procédé est un système physique à
contrôler, possédant son propre environnement. Par conséquent, le système
réactif doit réagir suffisamment rapidement par rapport à la dynamique du
p。イオエゥッョ@Z@ェオゥョ@RPQS

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 055v2 – 1

SQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUU

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

procédé contrôlé et de son environnement. Contrairement aux autres catégo-


ries, les systèmes réactifs ne présentent pas de comportements récurrents : le
procédé évoluant avec sa propre dynamique dans un environnement souvent
complexe, il est rare que des scénarios d’exécution système réactif/évolution du
procédé dans son environnement soient reproductibles.
Les systèmes informatiques contrôlant des procédés physiques critiques,
notamment dans le domaine du transport, de l’exploration autonome, etc.,
sont typiquement embarqués sur le procédé lui-même. On parle alors de sys-
tème embarqué critique. De tels systèmes sont souvent soumis à des contrain-
tes de temps inhérentes à la dynamique du procédé contrôlé. On dit alors qu’ils
sont temps réel. Un système temps réel est un système réactif, en charge de
s’assurer du maintien d’un procédé (drone, système automobile ou avionique,
R etc.) dans un état désiré, tout en assurant une réactivité du système qui soit
cohérente avec les contraintes de temps inhérentes au procédé et à son envi-
ronnement. Malgré l’accroissement de la puissance des calculateurs, d’abord
en fréquence, puis en nombre de cœurs de calcul depuis le début des années
2000, les calculateurs embarqués sont dimensionnés au plus juste des besoins
en puissance de calcul de façon, notamment, à minimiser l’énergie consom-
mée, et donc l’autonomie du procédé.
Deux hypothèses sont communément à la base d’un partitionnement au
niveau des modèles, des méthodes et des problématiques traités : l’hypothèse
synchrone et l’hypothèse asynchrone. L’hypothèse synchrone considère que les
traitements sont déclenchés directement par l’arrivée d’événements. Les traite-
ments sont considérés comme ayant une durée nulle, ou en tout cas inférieure
à l’écart minimal séparant deux événements déclencheurs successifs. L’hypo-
thèse asynchrone se repose sur le paradigme de programmation multitâche :
des événements peuvent, comme dans le cas synchrone, déclencher des traite-
ments. Cependant, les traitements sont considérés de durée non nulle. Par
conséquent, un traitement peut être préempté par un autre, c’est-à-dire inter-
rompu, et mis en attente, pour affecter les ressources de calcul à un autre trai-
tement plus prioritaire par exemple.
Dans le cadre de cet article, nous considérons l’hypothèse asynchrone. Nous
considérons que cette hypothèse est réaliste, notamment dans le cas des systè-
mes embarqués. Dans ce cas, les ressources de calcul se doivent d’être dimen-
sionnées au plus juste de façon à maximiser l’autonomie énergétique du sys-
tème. L’un des points centraux sous-jacents à l’hypothèse asynchrone est la
gestion des ressources de calcul, et notamment du processeur. En fonction
des traitements à exécuter à un instant donné, que nous appellerons des
tâches, c’est le rôle de l’ordonnanceur de décider quelle tâche est exécutée
sur le processeur, en fonction d’une stratégie d’ordonnancement.
L’ordonnanceur est l’entité centrale du noyau, cœur de l’exécutif ou système
d’exploitation en charge de la gestion des ressources matérielles. Parmi les
tâches prêtes à être exécutées, il choisit la tâche à exécuter suivant une certaine
stratégie. Il y a deux grandes familles d’ordonnanceur : les ordonnanceurs en-
ligne connaissent l’état courant des tâches actives, et se basent souvent sur des
priorités pour choisir la tâche à élire. Les ordonnanceurs hors-ligne, souvent
appelés séquenceurs, se basent sur la connaissance totale du système actuel,
et de son futur, qui a permis, hors-ligne, de bâtir à l’avance une séquence
d’ordonnancement qui est suivie à l’exécution. Dans cet article, nous parlerons
principalement d’ordonnancement en-ligne qui est le type d’ordonnancement le
plus répandu.
Le système de contrôle est donc multitâche, et les tâches sont ordonnancées
par l’ordonnanceur. Il s’informe de l’état courant du procédé contrôlé à l’aide de
capteurs, et agit sur celui-ci à l’aide d’actionneurs. Les contraintes de temps
peuvent être de deux natures : les contraintes de bout-en-bout concernent
une chaı̂ne de traitement partant d’un ensemble de capteurs et se terminant à
un ensemble d’actionneurs ; des contraintes locales dues à des limitations
matérielles. Ainsi, lorsqu’un capteur fournit des informations au système en
utilisant un bus de communication, sans l’aide d’un dispositif de mémorisation

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 055v2 – 2 est strictement interdite. – © Editions T.I.

SR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUU

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ORDONNANCEMENT TEMPS RÉEL

(de type buffer), le système doit lire des données entrantes avant qu’elles ne
soient écrasées par les suivantes. Il arrive aussi qu’une commande envoyée à
un actionneur doive absolument être rafraı̂chie à un certain rythme. De façon
générale, dans la théorie utilisée pour la validation temporelle, toutes les
contraintes temporelles, qu’elles soient locales ou de bout-en-bout, sont tradui-
tes sous forme de contraintes locales sur les tâches.
Le respect des contraintes temporelles est plus ou moins important : la viola-
tion de certaines contraintes peut mettre le système ou bien son environnement
en péril : on parle alors de contraintes strictes. Au contraire, certaines contrain-
tes concernent uniquement la qualité du service rendu par le système, dans ce
cas on parle de contraintes relatives. Par exemple, l’attitude d’un aéronef peut
être instable si le contrôle d’attitude (tangage, roulis) ne peut être exécuté une
fois toutes les 50 millisecondes. Les contraintes de temps appliquées aux tâches
du contrôle d’attitude sont strictes. On parle de contraintes fermes lorsque, sur

une fenêtre temporelle donnée, un certain nombre de contraintes doivent être
respectées afin de garantir l’intégrité du système. Respecter toutes les contrain-
tes de temps augmente dans ce cas la qualité de service de l’application. On
trouve peu de contraintes relatives dans le domaine du transport, mais on
peut en trouver dans les applications non critiques telles les applications multi-
média, ou le jeu vidéo. Dans cet article, seules les contraintes strictes sont
considérées.
La problématique qui nous intéresse ici est comment assurer qu’étant donné
un système de tâches partageant des ressources de calcul, toutes les contrain-
tes temporelles seront toujours respectées : c’est la validation temporelle, qui
repose sur une étude d’ordonnançabilité. Résoudre ce problème permet aussi
de répondre à la question du dimensionnement : quelles ressources de calcul
sont-elles nécessaires à une application temps réel donnée ?
Il est important de garder à l’esprit que « temps réel » ne signifie pas « rapi-
dité », mais « temporellement déterministe ». Ainsi, on privilégie toujours le
déterminisme à la vitesse d’exécution moyenne. La validation temporelle
repose en effet sur le fonctionnement pire cas du système : il est primordial,
sur un système critique, que le système ne se comporte jamais de manière erro-
née, et il est généralement intolérable que le système ne se comporte très bien
qu’en moyenne, en étant parfois erroné. La validation des systèmes critiques se
base donc sur les pires comportements du système : elle se doit donc d’être
conservative, on parle aussi de pire cas.
Cet article est structuré de la façon suivante : afin de présenter le contexte
global dans lequel la problématique de l’ordonnancement est soulevée, le cha-
pitre 1 introduit les architectures matérielles et logicielles des applications.
Nous verrons en particulier le fonctionnement de base des systèmes d’exploi-
tation temps réel. Après avoir introduit les principes fondamentaux de l’ordon-
nancement temps réel, nous présentons les modèles temporels des tâches, qui
seront utilisés lors de la validation temporelle. Ce chapitre introduit enfin les
principaux types d’algorithmes d’ordonnancement, et les propriétés et mesures
permettant de les caractériser.
Le chapitre 2 se focalise sur les tests d’ordonnançabilité, c’est-à-dire sur les
moyens utilisés pour montrer qu’un système ordonnancé par un ordonnanceur
respectera toujours toutes ses contraintes de temps. Nous commençons par les
modèles les plus simples (tâches indépendantes), pour lesquels nous montrons
les types de tests, classés par familles d’algorithmes d’ordonnancement consi-
dérées. Nous élargissons ensuite ces tests au cas de tâches communicantes ou
se synchronisant.
Les derniers chapitres introduisent des outils liés à l’analyse d’ordonnançabi-
lité et des points d’entrée vers des travaux plus spécifiques. Tout au long de cet
article, certains points d’entrée de références bibliographiques seront cités. Le
lecteur est invité à consulter [Doc. S 8 055v2] pour trouver les références com-
plètes des travaux cités.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 055v2 – 3

SS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUU

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

1. Architectures Les systèmes embarqués centralisés comportent souvent un cal-


culateur à logique programmée (microprocesseur ou microcontrô-
des applications temps réel leur), sur lequel le système de contrôle s’exécute, et peut être aisé-
ment modifié. On lui adjoint un certain nombre de circuits intégrés
spécialisés effectuant les calculs trop longs ou complexes pour être
pris en charge par le calculateur. Par exemple, la numérisation
1.1 Architecture matérielle d’une vidéo en temps réel de qualité TV demande soit un proces-
seur cadencé à plusieurs centaines de MHz, soit l’utilisation d’un
Le type d’architecture matérielle servant à exécuter une applica- ASIC spécialisé pour cette tâche.
tion temps réel a un impact important non seulement sur l’architec- Depuis le début des années 2000, la miniaturisation des circuits
ture logicielle de l’application, mais aussi sur les moyens utilisés s’approchant des limites physiques (transistors de la taille de quel-
pour valider temporellement ce système. On classe les systèmes ques dizaines d’atomes), les améliorations des processeurs en fré-
en deux catégories : les systèmes centralisés, s’exécutant sur une quence de fonctionnement sont de moins en moins marquées au fil


seule puce, alors que les systèmes répartis s’exécutent sur diffé- des générations de processeurs. En effet, la consommation d’une
rents calculateurs distants les uns des autres. puce avec des transistors donnés (finesse de gravure) est fonction
du carré de la fréquence de fonctionnement de celle-ci. La puis-
1.1.1 Systèmes centralisés sance de calcul est donc améliorée par l’utilisation de plusieurs
cœurs de calcul fonctionnant en parallèle sur une même puce : on
1.1.1.1 Calculateurs parle de calculateurs multicœurs. Alors que l’avènement du multi-
On qualifie de centralisé un système qui s’exécute sur une seule cœur est déjà bien avancé dans le monde des ordinateurs person-
puce, même si cette puce peut avoir plusieurs cœurs de calcul. Le nels, l’utilisation des calculateurs multicœurs est en passe de se
type de support peut être un microcontrôleur, un microprocesseur, développer aussi dans le monde de l’embarqué, notamment en
un processeur de signal numérique, ou encore un circuit intégré avionique, domaine consommateur de puissance de calcul vu le
spécialisé ; à part les circuits intégrés qui sont à logique câblée, nombre toujours croissant de fonctionnalités gérées par le système
les autres supports physiques sont à logique programmée. Nous embarqué. La problématique de l’ordonnancement multicœur est
utiliserons le terme générique de calculateur ou processeur pour présentée dans l’article [S 8 052].
les supports à logique programmée. Le système peut s’appuyer
sur des calculateurs secondaires spécialisés dans certains traite- 1.1.1.2 Entrées/sorties
ments, qui peuvent être internes ou externes. Un système temps réel est, la plupart du temps, un système de
La puissance de calcul se mesure en FLOPS (nombre d’opéra- contrôle/commande. Il doit donc pouvoir mesurer l’état du procédé
tions en nombres flottants par secondes) ou bien en MIPS (millions contrôlé par le biais de capteur (des entrées) et modifier l’état du
d’instructions par seconde). La puissance de calcul dépend forte- procédé via des actionneurs (sorties). Le passage d’information
ment de la fréquence de fonctionnement interne du calculateur, entre le calculateur et les capteurs et actionneurs peut être de
mesurée en Hertz (en MHz-mégahertz ou GHz-gigahertz pour les trois types :
processeurs).  Par un signal électrique à deux états (typiquement 0 ou 5 V ou
Un microprocesseur, à l’instar des microprocesseurs présents encore - 2,5 V ou + 2,5 V), on parle d’entrée/sortie numérique. D’un
dans les ordinateurs personnels, se caractérise par une haute fré- point de vue logique, une ligne numérique est une information
quence de fonctionnement, mais aussi par une consommation binaire, qui, d’un point de vue logique, est associée à un bit d’infor-
électrique relativement élevée par rapport aux autres calculateurs, mation. Pour la plupart des calculateurs manipulant au minimum
et une absence quasi-totale de moyens d’entrées-sorties. Un micro- des octets (groupes de 8 bits), les lignes sont regroupées par 8, 16
processeur a besoin d’une carte-mère, qui dispose de moyens ou 32 en ce que l’on appelle des ports. Ainsi, supposons qu’un cal-
d’entrées-sorties ou bien permet de disposer d’entrées/sorties par culateur soit lié à 8 capteurs de passage, fournissant chacun une
le biais de carte d’extension comme les cartes d’acquisition. Par tension de 0 V si pas de passage, ou 5 V si un véhicule passe sur
conséquent, un couple microprocesseur/carte-mère est relative- le capteur : on branche typiquement les 8 lignes numériques cor-
ment encombrant, a une consommation électrique élevée et donc respondantes à un même port d’entrée numérique du calculateur.
une production de chaleur relativement importante, pour une puis- La lecture du port donne l’état des 8 capteurs, chaque bit corres-
sance de calcul importante. pondant à l’état d’un capteur. Il en va de même pour les action-
Un microcontrôleur est doté d’entrées-sorties et peut fonctionner neurs : par exemple le pilotage d’un relai électrique est typique-
indépendamment d’une carte-mère. Il peut être directement mis ment une sortie numérique. On peut noter que d’un point de vue
sur un circuit relativement simple. Peu consommateur d’énergie, il électronique, il est assez simple d’utiliser physiquement le même
est en revanche considérablement plus lent que les microproces- connecteur qui sera configuré, via le logiciel, soit en entrée, soit
seurs de la même génération. Parmi les calculateurs à logique pro- en sortie. Ainsi, sur les microcontrôleurs, ou bien sur les cartes
grammée, le microcontrôleur est le plus représentatif des calcula- d’extension dites cartes d’acquisition, on parle d’entrées/sorties
teurs embarqués sur des systèmes critiques, grâce à ses qualités numériques.
multiples : faible coût, faible encombrement, faible déperdition de  Par un signal électrique évoluant de façon continue entre deux
chaleur, entrées/sorties intégrées, simplicité d’intégration. bornes, typiquement entre 0 et 10 V, on parle d’entrée analogique
Les circuits intégrés spécialisés (ASIC), peuvent être réalisés tota- ou de sortie analogique. Un exemple typique d’entrée analogique
lement sur mesure pour les besoins d’une fonctionnalité, ce qui est un débitmètre : après étalonnage, on définit une fonction de
entraı̂ne un rapport puissance/coût unitaire très bas, mais nécessi- conversion qui prend en entrée le voltage de la ligne, et donne en
tent alors un long et coûteux processus de conception. Ce type sortie le débit correspondant. Une électrovanne à débit variable est
d’ASIC est développé pour des fonctionnalités très répandues (par un exemple typique d’actionneur analogique : le système peut pilo-
exemple des puces 3G, 4G, ou encore des contrôleurs présents sur ter l’ouverture de l’électrovanne en lui envoyant une tension com-
la plupart des micro-ordinateurs, ou dans les MODEM). Pour un prise entre 0 et 10 V. Ces circuits nécessitent des conversions rela-
plus haut coût unitaire, mais plus de flexibilité (notamment la pos- tivement complexes : voltage vers représentation numérique point
sibilité de modification du comportement par système de patch, fixe, ou point fixe vers voltage. Par conséquent, les entrées et les
c’est-à-dire sans remplacement matériel) et une rapidité de concep- sorties analogiques sont généralement des éléments disjoints. Sou-
tion comparable à celle d’un logiciel, les ASIC peuvent aussi utiliser vent les entrées analogiques partagent un même circuit de conver-
des circuits programmables tels que le FPGA. sion analogique-numérique par le biais du multiplexage ; en

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 055v2 – 4 est strictement interdite. – © Editions T.I.

ST
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUU

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ORDONNANCEMENT TEMPS RÉEL

revanche, chaque sortie analogique doit posséder son propre cir- 2. Un récepteur GPS est muni d’une antenne patch qui permet,
cuit de conversion numérique analogique. par triangulation de signaux satellites, de calculer notamment la
position, la vitesse, la vitesse ascensionnelle, et le cap. Ce capteur
 Via un bus de communication, comme les bus série (EIA RS- intelligent envoie les informations sous la forme de trames, trans-
232), USB (Universal Serial Bus), CAN (Controller Area Network), mises octet par octet sur un bus série. Le drone utilise une station
etc. Dans ce cas, le capteur, ou l’actionneur, comprend un sol comme organe de dialogue avec l’opérateur.
ensemble de protocoles et le système considéré doit être capable
de comprendre et/ou parler ces protocoles. Par exemple, un récep- 3. Un MODEM sans fil, permettant une communication bidirec-
teur GPS tel que celui du drone utilisé en exemple possède sa pro- tionnelle entre le drone et la station sol. L’opérateur utilise donc la
pre ressource de calcul (un microcontrôleur interne), dont le rôle station sol de façon à dialoguer avec le système du drone. Ce
est de scruter les signaux perçus des satellites de façon à opérer modem communique via un bus série bidirectionnel avec le calcu-
une triangulation, et calculer sa position, sa vitesse, sa vitesse lateur central. Il agit sur la dynamique du procédé à l’aide de deux
ascensionnelle, son cap, etc. Le calculateur du GPS élabore alors, actionneurs : des servomoteurs et un variateur de moteur.
en respectant l’un des formats NMEA (ensemble de formats de 4. Des servomoteurs pilotant des gouvernes : en différentiel, les


représentation des informations GPS défini par un ensemble de gouvernes commandent l’aéronef en roulis, alors qu’en parallèle
fabricants), une trame, c’est-à-dire un ensemble d’octets d’informa- elles le commandent en tangage. Pour la commande, on utilise
tion. Cette trame, d’une centaine d’octets environ, est émise quatre une sortie numérique, couplée à un circuit matériel d’horlogerie,
fois par seconde sur une liaison série EIA RS-232, octet par octet. permettant de générer des fronts hauts ou bas d’une certaine
Le calculateur du drone doit alors non seulement être muni d’un durée (signal PPM – Pulse Position Modulation).
port série au format RS-232 lui permettant de recevoir les octets 5. Un variateur de moteur permettant de commander la puis-
un par un, mais aussi d’être doté d’un programme capable d’inter- sance moteur, commandé lui aussi en PPM.
préter les données au format NMEA afin d’interpréter les trames
reçues lorsqu’elles sont complètes. De façon duale, l’émission Les contraintes de temps, strictes, sont d’un ordre de grandeur
d’informations vers le MODEM (considéré alors comme un action- de quelques dizaines de millisecondes pour la chaı̂ne de traitement
neur) sans fil s’effectue en utilisant une seconde liaison série RS- de contrôle d’attitude constituée des traitements suivants :
232, en respectant un protocole de représentation de l’information (1) calcul, à l’aide d’une centrale inertielle, de l’attitude (tangage,
qui soit commun au drone et à la station sol. Puisque les capteurs roulis) d’un aéronef ;
ou actionneurs considérés sont capables de lire ou parler en res-
(1’) en mode assisté, lecture des consignes (données sous la
pectant des protocoles, nous les qualifions de capteurs ou action-
forme de vitesse ascensionnelle, angle de virage, vitesse) reçues
neurs intelligents : ils possèdent forcément un calculateur interne.
de la station sol via une liaison radio ou bien, en mode autonome,
Le type de capteurs et d’actionneurs utilisés, de base ou intelli- calcul des consignes à partir d’un algorithme de navigation prenant
gents, a un impact important sur la conception et sur la validation en entrée le plan de vol, la position courante, le cap courant et la
du système. vitesse ascensionnelle courante ;
(2) utilisation d’algorithmes d’asservissement pour calculer les
1.1.1.3 Exemple d’un aéronef miniature commandes de vol à appliquer ;
Le procédé considéré pour illustrer de nombreux concepts est un (3) application des commandes sur les gouvernes et le moteur.
mini-drone (figure 1), aéronef de moins d’un kilogramme, équipé Ce système est considéré comme un système centralisé utilisant
afin d’être capable de vol autonome. Il embarque les capteurs un microcontrôleur monocœur, même si en y regardant de plus
suivants : près, nous trouvons, en plus du processeur utilisé pour contrôler
1. Une centrale inertielle qui contient trois gyromètres montés en le système un microcontrôleur embarqué sur le récepteur GPS, et
trièdre, permettant de calculer la vitesse angulaire autour des trois un calculateur FPGA embarqué sur la centrale inertielle. Ces pro-
axes, couplés à trois accéléromètres permettant de caler l’informa- cesseurs secondaires font partie intégrante de ce que nous appe-
tion donnée par les gyromètres sur l’information fournie par la gra- lons des capteurs intelligents. En effet, le récepteur GPS et la cen-
vité. C’est un capteur intelligent, envoyant les informations au cal- trale inertielle, bien que bénéficiant de ressources de calcul
culateur central sous forme de trames CAN (réseau de terrain propres, ne sont pas disponibles pour d’autres calculs que ce pour
Control Area Network). quoi ces capteurs ont été conçus, et nous n’en avons pas la
maı̂trise.
L’opérationnel en charge de la gestion des ressources matériel-
les, et de l’ordonnancement, est conforme à la norme Osek, qui
Période = 150 ms
est l’une des nombreuses normes définissant les interfaces de pro-
Envoyer grammation et les fonctionnalités des exécutifs temps réel (§ 1.2.1).
données
MODEM 1.1.2 Systèmes répartis
Commandes On parle de système réparti lorsque le système considéré est
Période = 20 ms constitué de plusieurs calculateurs connectés par un réseau de
Gouvernes communication. Dans le domaine des systèmes temps réel, les
Réguler réseaux de communication utilisés sont généralement des bus
attitude dits de terrain car ils sont relativement simples, déterministes et
Centrale robustes aux conditions extérieures. Exemples de bus de ter-
inertielle Moteur
rain [S 8 140] et [S 8 152] : CAN (Control Area Network), AFDX Avio-
nics Full DupleX), FlexRay, etc.
Période = 100 ms Période = 250 ms
Lire La validation de systèmes répartis a lieu en deux phases interdé-
Lire
consignes GPS
pendantes : validation au niveau temps de transmission pire cas
Récepteur des messages, et impact sur l’ordonnancement des calculateurs.
MODEM
GPS Les techniques utilisées pour mesurer l’impact sur l’ordonnance-
ment des calculateurs sont similaires à celles que nous verrons
dans cet article. La validation des systèmes répartis est abordée
Figure 1 – Un mini-drone et son système embarqué dans l’article [S 8 056].

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 055v2 – 5

SU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUU

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

1.2 Architecture logicielle variables locales sont placées en sommet de pile. À la terminaison
du sous-programme, ses variables locales sont « dépilées » (sup-
primées du sommet de la pile), ainsi que les paramètres d’appel,
1.2.1 Systèmes d’exploitation et exécutifs et l’adresse de retour qui permet de trouver l’endroit dans le code
Le noyau est une couche logicielle permettant la gestion de auquel revenir à la fin du sous-programme. La pile se retrouve
l’accès aux ressources matérielles. Le noyau possède au minimum alors dans le même état qu’avant l’appel de sous-programme.
un ordonnanceur permettant d’allouer le (ou les) processeur(s) aux Toute exécution séquentielle nécessite donc l’emploi d’une pile, et
différentes entités parallèles de l’application. Il gère les interrup- chaque tâche, ainsi que le programme principal, possède sa propre
tions matérielles et permet de déclencher des traitements appelés pile. On peut donc voir une tâche comme un sous-programme
routines de traitement d’interruption (ISR-Interrupt Service Routine) muni d’une pile, ce qui lui permet de s’exécuter parallèlement au
sur occurrence d’interruption matérielle. Il permet aussi, sur cer- programme principal et aux autres tâches. Mais la structure d’une
tains systèmes, d’assurer la gestion de la mémoire. tâche fait qu’elle est elle-même séquentielle. Notons que toutes les
tâches d’une même application peuvent accéder sans limite et sans
Un exécutif est constitué d’un noyau, et d’un ensemble de pilo-
contrôle à toute la mémoire de l’application.


tes de périphériques. Par exemple, un exécutif peut posséder une
pile IP (Internet Protocol) avec un certain nombre de protocoles Dans les systèmes d’exploitation généralistes, et dans de rares
d’accès au medium de communication, ou bien des pilotes permet- RTOS, un second niveau de parallélisme est introduit : c’est le pro-
tant de gérer les communications via les ports série du calculateur. cessus. Un processus est une entité parallèle, elle-même pouvant
être multitâche, dont la mémoire est isolée du reste des processus.
Enfin, un système d’exploitation est constitué d’un exécutif, et Ainsi, les systèmes d’exploitation généralistes permettent de parti-
fournit à l’utilisateur des moyens de gestion du système, tels un
tionner totalement les processus, garantissant ainsi confidentialité
shell permettant une interaction utilisateur/système, un certain
et robustesse entre processus s’exécutant sur un même système.
nombre d’outils de développement, de déverminage et de traçage.
En effet, qu’un processus ait un comportement erroné ou byzantin
La différence entre noyau, exécutif et système d’exploitation est ne peut pas, en théorie, nuire aux autres processus s’exécutant sur
illustrée sur la figure 2. le même système. La notion de processus est rarement présente
Aujourd’hui, seul un type de systèmes d’exploitation, UNIX, basé dans les RTOS, car elle nécessite plus de ressources de calcul, et
sur la norme POSIX, et un système d’exploitation propriétaire, une gestion de la mémoire assistée par un dispositif matériel, la
Microsoft Windows, se partagent le marché des ordinateurs per- MMU (Memory Management Unit) que l’on ne trouve qu’occasion-
sonnels : ce sont des systèmes d’exploitation généralistes. Dans nellement sur les microcontrôleurs.
le domaine de l’embarqué, on trouve de nombreux systèmes Par la suite, nous utiliserons toujours les tâches pour définir le
d’exploitation et exécutifs temps réel (RTOS-Real-Time Operating comportement des ordonnanceurs, mais les concepts sont aussi
System), basés soit sur des normes (POSIX, OSEK, Ada, ITRON, valides pour les processus. Notons aussi que les processus sont
ARINC 653, etc.), soit sur des spécifications propriétaires (VxWorks souvent hiérarchisés d’un point de vue ordonnancement. Par
de Wind River, RTEMS, etc.). Pour plus de détails concernant les exemple, dans l’amendement 1003.1b de la norme POSIX (amende-
RTOS, le lecteur peut se référer à l’article [S 8 052]. ment concernant les aspects multiprocessus), chaque processus est
Tous les noyaux permettent le parallélisme par le biais de tâches : muni d’un ordonnanceur interne servant à ordonnancer les sous-
une tâche est une entité logicielle dont le code séquentiel est exé- tâches et sous-processus.
cuté en parallèle des autres tâches. Une tâche, appelée thread en Les états possibles d’une tâche (figure 3) varient en fonction du
anglais, représente un fil d’exécution. noyau, mais on trouve généralement au moins trois états :
En mémoire, une application multitâche est caractérisée par son  prête : la tâche doit être exécutée, dès obtention d’un cœur de
code, contenant l’ensemble des instructions et sous-programmes calcul ;
utilisés, ses données dans lequel on stocke les variables globales,  endormie ou bloquée : la tâche est en attente d’un événement,
ainsi que la mémoire allouée dynamiquement, et enfin une pile par exemple l’arrivée d’une date, ou bien l’arrivée d’un mes-
par tâche. La pile permet de suivre l’exécution dynamique d’un pro- sage attendu, ou encore la libération d’une ressource, avant
gramme séquentiel pouvant appeler des sous-programmes : lors- d’être à nouveau prête ;
qu’une tâche appelle un sous-programme, l’adresse de retour du
 exécutée : la tâche utilise un cœur de calcul unique (une tâche
sous-programme, ainsi que les paramètres d’appel, sont disposés
ne peut pas être parallélisée) pour exécuter séquentiellement
en sommet de pile. Lors de l’exécution du sous-programme, ses
ses instructions.
L’ordonnanceur du noyau connaı̂t et gère la liste des tâches : à
chaque fois que cela est nécessaire, l’ordonnanceur choisit parmi
les tâches prêtes une tâche à exécuter. La tâche qui était exécutée
Système d’exploitation (shell et ne l’est plus est dite préemptée : son contexte (état des registres)
maintenance, déverminage, etc.) est sauvegardé pour être restauré lorsqu’elle sera à nouveau

Créati
Inexistante on
Exécutif (pilotes, protocoles)
Suppression
tion

tion

Prête
Élec

p
Préem

Donne ou ressource
Noyau disponible Terminée
(ordonnancement, Suppression
gestion mémoire, Exécutée Bloquée
interruptions) Attente d’une
donnée ou ressource
Terminaison

Figure 2 – Noyau, exécutif, système d’exploitation Figure 3 – États d’une tâche

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 055v2 – 6 est strictement interdite. – © Editions T.I.

SV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUV

Ordonnancement temps réel


Ordonnancement réparti
par Francis COTTET
Professeur d’université (ENSMA, Poitiers Futuroscope)


Ingénieur de l’Institut national polytechnique de Grenoble
Docteur ès sciences
Joëlle DELACROIX
Maître de conférences (Conservatoire national des arts et métiers, Paris)
Docteur en informatique de l’université Pierre-et-Marie-Curie
Claude KAISER
Professeur (Conservatoire national des arts et métiers, Paris)
Ingénieur de l’École polytechnique, ingénieur du génie maritime
Docteur ès sciences
et Zoubir MAMMERI
Professeur d’université (université Paul-Sabatier, Toulouse)
Ingénieur, docteur en informatique
Habilité à diriger des recherches

1. Introduction aux systèmes temps réel et répartis ......................... S 8 056 - 3


1.1 Systèmes répartis généraux : caractéristiques et problèmes
de conception............................................................................................... — 3
1.2 Répartition matérielle et logique................................................................ — 4
1.3 Problèmes liés aux systèmes temps réel et répartis ................................ — 4
2. Placement et migration de tâches ...................................................... — 5
2.1 Ordonnancement local et ordonnancement global.................................. — 5
2.2 Placement de tâches.................................................................................... — 5
2.3 Placement dynamique de tâches ............................................................... — 6
2.4 Migration de tâches..................................................................................... — 8
3. Ordonnancement de messages ............................................................ — 9
3.1 Introduction.................................................................................................. — 9
3.2 Communication et réseaux temps réel...................................................... — 10
3.3 Caractéristiques des messages et qualité de service ............................... — 11
3.4 Protocoles de niveau MAC (Medium Access Control).............................. — 12
3.5 Ordonnancement de messages : principes généraux et propriétés ....... — 14
3.6 Ordonnancement de messages périodiques ............................................ — 15
3.7 Ordonnancement de messages apériodiques .......................................... — 18
3.8 Tableau récapitulatif .................................................................................... — 20
4. Produits et exemples de réalisations ................................................. — 20
4.1 Exemples de systèmes d’exploitation temps réel et répartis .................. — 20
4.2 Méthodes et outils de validation d’applications temps réel .................... — 23
5. Conclusion ................................................................................................. — 24
Références bibliographiques ......................................................................... — 25

L a complexité des procédés à commander ou à superviser, le nombre élevé


de données et d’événements à traiter, la répartition géographique des procé-
dés, d’une part, et l’arrivée depuis plusieurs années, sur le marché, de réseaux
locaux industriels, d’autre part, sont tous des facteurs qui ont conduit à repenser
les applications temps réel centralisées. Aujourd’hui, la notion d’architectures
p。イオエゥッョ@Z@ュ。イウ@RPPP

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 056 − 1

SW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUV

ORDONNANCEMENT TEMPS RÉEL _________________________________________________________________________________________________________

temps réel et réparties est communément acceptée dans le milieu industriel. À


titre indicatif, les domaines d’applications qui font couramment appel aux systè-
mes temps réel et répartis sont :
— les télécommunications (systèmes de commutation…) ;
— le domaine médical (assistance et contrôle de malades…) ;
— le contrôle d’équipements (moteur, freins, suspension...) dans les
véhicules ;
— le contrôle et la régulation de trafic en milieu urbain ;
— les industries (contrôle/commande de procédés…) ;
— le domaine militaire (suivi de trajectoires de missiles…) ;
— le domaine aérospatial (suivi de satellites, pilotage automatique…) ;

R — le multimedia (téléconférences, téléachat...) ;


— la domotique (sécurité d’habitations…).
Un système informatique destiné à commander ou à superviser des opéra-
tions est composé, le plus souvent, de plusieurs unités de traitement (des ordi-
nateurs ou des automates programmables), des capteurs, des actionneurs, des
périphériques de visualisation et de dialogue avec les opérateurs. L’ensemble de
ces éléments est interconnecté par un réseau ou toute une pléiade de réseaux
interconnectés entre eux (des réseaux industriels, des réseaux bureautiques, des
bus de terrain, etc.), comme le montre la figure A. Ce type de système est quali-
fié de système temps réel et réparti (ou distribué ou encore décentralisé).
Dans ce type de système, l’ordonnancement de tâches et de messages joue un
rôle fondamental. L’ordonnancement centralisé de tâches est traité dans l’article
« Ordonnancement temps réel. Ordonnancement centralisé » de ce traité. C’est
l’ordonnancement de messages qui fait l’objet de cet article.

Calculateur Calculateur Calculateur


CFAO GPAO de gestion

Réseau d'usine
Passerelle

Contrôleur Gestion de
de qualité Superviseur maintenance

Réseau de cellule

Automate Commande Commande


programmable numérique de robot

C C Capteurs C C
Bus de Bus de
terrain terrain
A A Actionneurs A A A

Figure A – Exemple de système temps réel et réparti

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 056 − 2 © Techniques de l’Ingénieur, traité Informatique industrielle

SX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUV

________________________________________________________________________________________________________ ORDONNANCEMENT TEMPS RÉEL

1. Introduction aux systèmes Le développement des systèmes répartis est motivé par plusieurs
raisons, notamment :
temps réel et répartis — la demande d’interconnecter le plus possible les applications
existantes, en particulier pour les services multimédias (téléconfé-
rence, télé-enseignement, télémédecine, ingénierie coopérative...) ;
On appelle système temps réel et réparti tout système composé
de plusieurs entités interconnectées par un sous-système de com- — la volonté d’augmenter la disponibilité d’un système informa-
munication et qui coopèrent à la réalisation d’un ensemble de fonc- tique pour permettre le remplacement d’un composant du système
tions sujettes à des contraintes de temps (ces contraintes pouvant par un autre sans dégradation significative (voire sans aucune
être strictes ou non selon la nature de l’application à laquelle est dégradation) du service rendu. Cet aspect est primordial dans les
associé le système) [9] [28] [56]. Les systèmes temps réel et répartis applications temps réel et réparties pour lesquelles les situations
sont des cas particuliers des systèmes répartis. C’est la raison pour d’arrêt doivent être les plus rares possibles. Dans les systèmes auto-


laquelle nous commençons par nous intéresser aux systèmes répar- matisés de production, l’arrêt du système temps réel est synonyme
tis qui ne prennent pas en compte explicitement des contraintes d’un arrêt de production ;
temporelles, pour voir les principaux problèmes posés par ces sys- — le souci de faciliter l’évolution matérielle ou fonctionnelle d’un
tèmes et nous verrons ensuite les difficultés à considérer pour tenir système en remplaçant ou en ajoutant certains éléments sans avoir
compte des contraintes de temps. à arrêter les autres éléments du système ;
— le partage de ressources matérielles (des imprimantes, des
unités de sauvegarde massive...) ou logicielles (des bases de don-
1.1 Systèmes répartis généraux : nées, des logiciels...) ;
caractéristiques et problèmes — la demande de plus de puissance de calcul au moindre coût
de conception (par exemple, plusieurs PC en réseau coûtent moins cher qu’un gros
ordinateur) ;
— enfin, les besoins d’adaptation du système informatique à son
Un système réparti est constitué d’un ensemble de processeurs environnement : aujourd’hui, que ce soit dans les applications
reliés entre eux par un sous-système de communication qui leur bureautiques ou dans les applications industrielles, les ordinateurs
permet d’échanger des informations. Selon la nature du sous-sys- participant à une application se répartissent sur des étendues géo-
tème de communication, on distingue les multiprocesseurs où la graphiques plus ou moins importantes − sur plusieurs étages d’un
communication peut se passer avec ou sans mémoire commune et immeuble, ou sur des dizaines de kilomètres carrés dans le cas de
les réseaux d’ordinateurs où la communication se passe obligatoire- raffineries de pétrole, par exemple. Il est donc important, pour le
ment sans mémoire commune (c’est-à-dire, avec échange de mes- système informatique, de tenir compte de cette répartition géogra-
sages). Les machines parallèles sont constituées de plusieurs phique.
processeurs, en général identiques, fortement couplés. Les réseaux
d’ordinateurs sont formés de machines autonomes, généralement Les systèmes répartis ont des caractéristiques qui les distinguent
hétérogènes, faiblement couplées. Les distances entre les proces- des systèmes centralisés :
seurs d’un réseau d’ordinateurs peuvent être courtes (quelques
dizaines de mètres, voire moins) ou très importantes (des milliers de — les délais de communication entre sites varient d’un message
kilomètres, voire plus, pour les réseaux de satellites). Les distances à l’autre et aussi selon les protocoles du réseau de communication
entre les processeurs d’une machine multiprocesseur sont infini- utilisés ;
ment plus petites (quelques centimètres, voire moins).
— ils n’ont pas d’horloge commune. Chaque site a sa propre per-
On dit qu’un système réparti est constitué d’un ensemble de pro- ception du temps et, comme les horloges physiques dérivent par
cesseurs, de sites ou de nœuds interconnectés entre eux (figure 1). rapport au temps de référence, les différents temps lus sur les sites
Par la suite, nous utiliserons indifféremment, lorsqu’il n’y a pas peuvent être différents à une même heure universelle ;
d’ambiguïté, les termes nœud, site et processeur et nous ne ferons
pas de distinction entre les systèmes répartis construits autour — l’absence d’une mémoire commune a pour conséquence
d’architectures multiprocesseurs et ceux construits autour de l’impossibilité de définir un état global à l’aide de variables commu-
réseaux d’ordinateurs. nes. Encore plus important, l’existence de délais de communication
variables et l’absence d’un référentiel temporel commun ont pour
conséquence que chaque site a sa propre vue qui peut être diffé-
rente de celles des autres sites à un même instant du temps
universel ;
Site — comme le nombre d’équipements d’un système réparti est
plus élevé que celui d’un système centralisé, les risques de
défaillances y sont plus importants. Des mécanismes de tolérance
aux fautes doivent être intégrés pour répondre à l’exigence de ne
Site Réseau Site pas dégrader la sûreté de fonctionnement et, en particulier, la dispo-
nibilité de ces systèmes [27] ;

de — l’existence d’interfaces de communication avec l’extérieur


rend les systèmes répartis plus vulnérables aux intrusions ;

Site communication Site — les applications réparties sont plus complexes à spécifier, à
concevoir, à implanter, à tester et à valider.

L’impossibilité de disposer instantanément d’un état global iden-


Site tique sur tous les sites pose beaucoup de problèmes pour la prise de
décisions relatives à la gestion et au partage de ressources, à la vali-
dation d’actions atomiques faisant intervenir plusieurs sites, à l’éta-
Figure 1 – Architecture générale d’un système réparti blissement d’une vue d’un groupe participant à une application

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 056 − 3

SY
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUV

ORDONNANCEMENT TEMPS RÉEL _________________________________________________________________________________________________________

coopérative, etc. C’est aussi l’une des principales sources de com- Il est important de signaler que la répartition (ou décentralisation)
plexité des algorithmes de placement de tâches (cf. § 2). doit être considérée séparément pour chaque fonction du système.
Selon les spécificités d’un système, on peut avoir des fonctions cen-
Exemple : un site i diffuse, à l’instant t, un message pour informer tralisées, d’autres partiellement réparties et d’autres complètement
les autres sites qu’il a une charge faible et qu’il est prêt à accueillir des
réparties. Par exemple, on peut avoir dans un même système : une
tâches en provenance des autres sites. Juste après l’instant t, une ava-
fonction complètement répartie pour la synchronisation d’horloges,
lanche d’événements locaux se produit et le site i est obligé d’exécuter
une base de données éclatées sur plusieurs sites, mais toutes les
un nombre important d’actions pour répondre aux événements surve-
transactions sur la base sont contrôlées par un seul site et une ges-
nus, ce qui conduit à une saturation momentanée de ce site. Les
tion centralisée des fichiers. Tout n’est pas réparti dans un système
autres sites recevant le message du site i décident de lui envoyer des
réparti ! Il est clair qu’il ne peut y avoir de répartition logicielle sans
tâches à exécuter. À la réception des tâches, le site i les rejette, car il
répartition matérielle, mais la réciproque n’est pas vraie. La décen-
est en situation de surcharge.
tralisation matérielle peut aider ou inciter à la répartition logicielle.


On remarque, à travers cet exemple, que les délais de communi-
cation donnent une image qui peut être dépassée et qui conduit à
entreprendre des opérations (de transfert de tâches, par exemple)
qui seront annulées.
1.3 Problèmes liés aux systèmes temps
Beaucoup de travaux ont été développés depuis plus d’une quin-
réel et répartis
zaine d’années sur les différents problèmes posés par les systèmes
répartis. Nous conseillons au lecteur désireux d’approfondir ses Dans le cas des systèmes temps réel, la répartition est parfois
connaissances sur les systèmes répartis de consulter des ouvrages indispensable : le procédé physique est fortement réparti, les traite-
tels que [4] [14] [25] [39] [45] [60]. ments, les contraintes temporelles dépassent les capacités d’un seul
processeur, l’arrêt du système est inacceptable…
La répartition des systèmes temps réel introduit de nouveaux pro-
1.2 Répartition matérielle et logique blèmes, notamment :
— les calculs fondés sur les contraintes temporelles qui font réfé-
rence au temps chronométrique ou à une date absolue risquent de
Les termes décentralisé, réparti et distribué sont souvent utilisés comporter des erreurs de calcul trop importantes et, partant, de ne
de manière ambiguë. Pour les préciser, il faut tout d’abord distin- pas être crédibles, à cause de dérives trop grandes entre les horlo-
guer la répartition matérielle et la répartition logique. ges des différents sites ;
— l’observation de l’évolution des différents constituants du pro-
■ La répartition matérielle (ou encore décentralisation physique)
cédé est retardée et différente d’un site à un autre à cause des délais
est obtenue en utilisant plusieurs unités de traitement qui sont inter-
de communication variables ;
connectées par un sous-système de communication. Par exemple,
— les tests d’ordonnançabilité et les calculs de garantie des con-
un système de contrôle/commande constitué de capteurs et
traintes de temps de tâches communicantes, donc l’ordonnance-
d’actionneurs en contact direct avec le procédé physique, d’automa-
ment temps réel réparti, sont tributaires de ces dérives d’horloges et
tes programmables dans les salles de commande et de stations de
de ces délais de communication ;
travail dans les salles de CAO, est un système avec une architecture
— la tolérance aux fautes est beaucoup plus complexe, ce qui
matérielle répartie (ou décentralisée).
rend encore plus difficile de tolérer des fautes tout en respectant les
■ La taxinomie est plus complexe lorsqu’il s’agit du logiciel. En contraintes de temps.
effet, il faut distinguer : Dans le cas de l’ordonnancement temps réel qui nous intéresse
— la répartition des données (ou répartition de l’information) ; ici, la répartition implique l’ordonnancement conjoint de tâches et
— la répartition des traitements ; de messages.
— la répartition du contrôle. Le respect ou non des contraintes temporelles des messages se
● L’ensemble des informations (variables simples, fichiers...) qui répercute de manière directe sur celui des tâches, car l’attente de
sont partagées entre des tâches distantes peut être stocké sur un réception d’un message par une tâche est équivalente à l’attente
seul site (on parle, dans ce cas, de stockage centralisé de l’informa- d’acquisition d’une ressource ; si le message n’arrive pas à temps,
tion) ou éclaté sur plusieurs sites (on parle, dans ce cas, de stockage les contraintes temporelles de la tâche ne peuvent être garanties.
décentralisé de l’information). Cette répartition ne préjuge en rien L’ordonnancement de tâches dans un système réparti se règle à
sur la façon dont le contrôle de l’accès aux informations partagées deux niveaux : au niveau de chaque processeur (ordonnancement
sera géré. local) et au niveau du placement de tâches sur les processeurs. Le
● La répartition des traitements conduit à affecter les program- problème d’ordonnancement local a été présenté dans l’article
mes (ou tâches) à des sites pour y être exécutés. Cette répartition ne [S 8 055] de ce traité ; le problème de placement sera étudié dans le
préjuge en rien de la façon dont l’exécution des programmes sera paragraphe suivant.
gérée, c’est-à-dire, de la façon dont sera effectué le contrôle de La conception et l’implantation des systèmes temps réel et répar-
l’exécution des tâches. tis nécessitent des protocoles de communication qui garantissent
● Le contrôle concerne le déclenchement et l’arrêt des tâches, le aux tâches communicantes de recevoir, dans les délais, les messa-
transfert des tâches d’un site vers un autre, l’accès aux ressources ges qui leur sont destinés. Pour les messages avec des échéances
partagées, la validation d’opérations faisant intervenir plusieurs strictes de délivrance, il faut que les protocoles donnent des garan-
sites, etc. Il peut être à la charge d’un seul site (il s’agit d’un contrôle ties et, pour les messages non critiques du point de vue temporel, la
complètement centralisé), d’une partie des sites (il s’agit d’un con- stratégie du protocole est le meilleur effort (c’est-à-dire, minimiser
trôle partiellement réparti) ou de tous les sites (il s’agit d’un contrôle le retard des messages et le nombre des messages tardifs). Toute-
complètement réparti). Lorsque le contrôle est distribué, la prise de fois, la notion de « meilleur effort » doit être utilisée avec certaines
décision (par exemple, pour valider une opération sur une base de précautions dans le cas de systèmes temps réel. Par exemple, per-
données, pour lancer la production d’un ensemble de pièces ou, dre une image sur dix dans le cas d’une animation vidéo dans une
encore, pour sortir le train d’atterrissage d’un avion) peut être prise salle de commande est souvent sans conséquence, par contre per-
par chaque site séparément, par tous les sites (dans ce cas, si un dre neuf images sur dix rend le système de supervision inutile aux
seul site manque, la décision ne peut être prise) ou à la majorité des yeux des opérateurs. La garantie des contraintes temporelles de
sites (on parle, dans ce cas, de décision par consensus). messages passe par un ordonnancement adéquat des messages.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 056 − 4 © Techniques de l’Ingénieur, traité Informatique industrielle

TP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUV

________________________________________________________________________________________________________ ORDONNANCEMENT TEMPS RÉEL

Le paragraphe 3 est réservé à l’étude du problème de l’ordonnance- qu’une tâche ne requiert qu’un seul processeur à la fois pour son
ment de messages et de ses solutions. exécution). On remarque aisément que si les paramètres n et p ont
Dans un système temps réel et réparti, les tâches sont synchroni- des valeurs élevées, l’obtention d’une solution au bout d’un temps
sées en utilisant le temps chronométrique (par exemple, activation raisonnable devient vite impossible. Sauf pour des cas très simples,
de tâches à des instants précis ou de manière périodique). Il en est le problème de placement de tâches est un problème NP-complet
de même pour la datation de données et d’événements apparais- [20] (c’est-à-dire, un problème qui ne se résout pas avec un algo-
sant sur les différents sites. Le bon fonctionnement d’un système rithme qui donne un résultat au bout d’un temps polynomial). C’est
réparti nécessite le plus souvent l’existence d’un temps global la raison pour laquelle la quasi-totalité des travaux qui ont traité le
accessible à tous les sites. La solution la plus couramment utilisée problème de placement de tâches utilisent des techniques approxi-
pour établir un temps global est la synchronisation d’horloges phy- matives et des heuristiques.
siques. D’autres solutions fondées sur l’utilisation de récepteur d’un Le problème de placement consiste souvent à rechercher d’abord
temps diffusé par une station de radio ou un satellite commencent à une solution qui respecte le plus possible les contraintes initiales


être envisagées. Beaucoup d’algorithmes ont été proposés pour puis à choisir le meilleur placement, si plusieurs placements ont été
régler le problème de synchronisation d’horloges. Le lecteur dési- trouvés. La recherche d’un placement doit tenir compte des con-
reux d’approfondir ses connaissances sur ce sujet peut consulter les traintes initiales des tâches, de l’environnement support ainsi que
références [19] [21]. des critères à optimiser.
Les contraintes initiales peuvent être diverses :
— existence ou non de tâches à contraintes strictes pour lesquel-
2. Placement et migration les la garantie des échéances est une nécessité quelle que soit la
charge du système ;
de tâches — obligation pour certaines tâches de résider sur un processeur
précis disposant de ressources matérielles ou logicielles spécifiques
(par exemple, une tâche d’acquisition de mesures doit se trouver
sur la machine en contact direct avec le procédé physique) ;
2.1 Ordonnancement local
— limitation du nombre de tâches s’exécutant sur chaque
et ordonnancement global processeur ;
— interdiction à deux tâches données de s’exécuter sur un même
Dans les systèmes répartis, on distingue deux types site (par exemple, pour des raisons de tolérance aux fautes, on
d’ordonnancement : l’ordonnancement local et l’ordonnancement exige qu’une tâche et sa copie ne s’exécutent pas sur un même
global. site) ;
L’ordonnancement local consiste à allouer un processeur aux — regroupement de tâches utilisant certaines ressources ;
tâches affectées à ce processeur, en tenant compte de leur urgence — etc.
et de leur importance.
Afin de chercher un bon placement, il est important de préciser
L’ordonnancement global a, quant à lui, pour mission d’essayer les critères (ou fonctions de coûts) à optimiser. Dans les systèmes
de garantir les contraintes de tâches en exploitant les capacités de temps réel, le critère le plus important est évidemment le respect
traitement des différents processeurs composant le système réparti des contraintes temporelles : (1) garantir le respect des contraintes
considéré (en procédant, éventuellement, à des migrations de temporelles des tâches à contraintes strictes et (2) minimiser le
tâches). nombre de tâches à contraintes relatives qui dépassent leurs
Ainsi, un ordonnanceur local a pour objectif de répondre à la échéances. D’autres critères peuvent être envisagés ensuite. Beau-
question « quand exécuter une tâche sur le processeur local, de coup de travaux ont été développés dans le contexte de l’ordonnan-
manière à respecter les contraintes imposées à cette tâche ? ». Un cement non temps réel (c’est-à-dire, dans des problèmes
ordonnanceur global, quant à lui, cherche à répondre à la question d’optimisation concernant, par exemple, la gestion de production
« quel est le site le mieux adapté pour exécuter une tâche donnée, ou des emplois du temps, le transport, l’intelligence artificielle, etc.)
de manière à respecter ses contraintes ? ». montrant comment on peut optimiser un ou plusieurs critères. Dans
le cas de l’ordonnancement dans des systèmes répartis, on peut
Le placement et l’ordonnancement sont indissociables dans le cas
avoir comme critère d’optimisation :
des applications temps réel : il faut placer les tâches sur l’ensemble
des processeurs de telle sorte que l’ordonnancement local conduise — la minimisation de la durée totale d’exécution de l’ensemble
impérativement au respect des contraintes de temps des tâches cri- des tâches ;
tiques du point de vue temporel. L’ordonnancement local utilise des — la minimisation du nombre de processeurs utilisés ;
algorithmes comme ceux présentés dans l’article [S 8 055]. Nous
nous intéressons ici aux différents aspects de l’ordonnancement — la minimisation de la charge de communication ;
global, c’est-à-dire, les aspects liés au placement et à la migration — l’équilibrage de charge des processeurs.
des tâches.
Selon la nature de l’application et le système support de l’applica-
tion, on est amené à privilégier certains critères. Par exemple, si le
réseau de communication utilisé est un réseau Ethernet − un réseau
2.2 Placement de tâches qui ne garantit pas de temps de réponse borné et dont le rendement
s’écroule si les demandes de transmission dépassent un certain
seuil − il est souvent conseillé de chercher particulièrement à mini-
2.2.1 Problème de placement de tâches miser les communications pour permettre aux tâches placées sur
des machines distantes de recevoir leurs messages à temps et donc
de se terminer à temps.
À première vue et de manière simplifiée, on peut considérer que
le problème de placement (ou allocation, en anglais − à noter aussi Les critères à optimiser sont parfois en contradiction les uns avec
que certains utilisent le terme « allocation de tâches » au lieu de les autres. Par exemple, réduire la charge de communication con-
« placement de tâches ») de n tâches sur p processeurs conduit à duit à regrouper les tâches sur un nombre réduit de processeurs, ce
étudier pn cas de placements possibles (en supposant évidemment qui aboutit donc à des processeurs plus chargés que d’autres.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 056 − 5

TQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUV

ORDONNANCEMENT TEMPS RÉEL _________________________________________________________________________________________________________

2.2.2 Classes d’algorithmes et techniques placement statique est la solution utilisée aujourd’hui dans les
de résolution du problème de placement applications temps réel réparties industrielles. Il y a deux principales
raisons à cela :
Selon le nombre de processeurs, le nombre de tâches à placer et — le placement dynamique est complexe, encore peu étudié, et
les contraintes temporelles, les contraintes de précédence et les donne rarement une garantie absolue quant au respect des con-
contraintes de ressources, deux familles d’algorithmes peuvent être traintes temporelles ;
utilisées : — le choix d’une architecture matérielle et logicielle (nombre et
— les algorithmes exacts (ou optimaux) qui procèdent par énu- types de processeurs, type de réseau, types de systèmes d’exploita-
mération pour trouver la solution optimale. De tels algorithmes tion...) est souvent dicté par les spécificités de l’application et on
deviennent très vite irréalistes lorsque la taille du problème est construit, par conséquent, une architecture « sur mesure » pour per-
importante, à cause de l’explosion combinatoire de cette mettre aux tâches de respecter leurs échéances tout en étant pla-
énumération ; cées de manière statique.

R — les algorithmes approchés (ou non optimaux) qui permettent On a dépassé aujourd’hui le stade des applications temps réel et
de trouver une solution qui ne respecte pas nécessairement toutes réparties composées uniquement de tâches cycliques de régulation
les contraintes. Parfois, la solution obtenue peut être la solution avec un nombre d’entrées et de sorties parfaitement connu et où
optimale. l’on prévoit un arrêt d’urgence dès qu’un événement survient. Impo-
ser une connaissance figée sur une application temps réel et répar-
Les méthodes utilisées par les algorithmes de placement de
tie complexe est synonyme d’un surdimensionnement parfois
tâches sont notamment :
excessif de l’architecture. C’est ainsi que des travaux sont effectués
— la technique du branch-and-bound, la programmation dynami- pour éviter ce surdimensionnement et proposer des mécanismes
que et la théorie des graphes, pour les algorithmes optimaux (la plus dynamiques [13] [52] [54] [56] [57] [74]. On s’oriente à la fois
théorie des graphes étant la technique la plus utilisée). Une des vers un ordonnancement local dynamique et un placement dynami-
méthodes utilisées dans les algorithmes de placement fondés sur la que.
théorie des graphes consiste à déterminer des coupes minimales
d’un graphe contenant les tâches, les processeurs et les liens de La technique idéale du placement serait celle qui permettrait de
communication, pour déterminer des solutions de placement. Les trouver instantanément le meilleur site pour accueillir une tâche qui
algorithmes fondés sur la programmation dynamique représentent est déclenchée ou qui doit reprendre son exécution après une inter-
le problème de placement sous forme d’un problème d’optimisation ruption. Le transfert d’une tâche d’un site vers un autre ne doit
avec minimisation d’une fonction de coût sous contraintes ; remettre en cause aucune des tâches plus prioritaires en cours
— les méthodes approximatives et heuristiques (telles que le d’exécution sur le système réparti et ne doit pas affecter les perfor-
recuit simulé, le tabou, les algorithmes génétiques, les réseaux de mances globales du système. Ce résultat est impossible à atteindre
neurones et les algorithmes gloutons) pour les algorithmes non dans la pratique à cause du délai nécessaire pour obtenir un état
optimaux. Les méthodes itératives (algorithmes génétiques, exact et valide de l’ensemble des sites d’un système réparti (parce
réseaux de neurones, recuit simulé et tabou) partent d’une solution que l’obtention de cet état demande de nombreux messages avec
et tentent de l’améliorer par des itérations successives. Les algorith- des délais de transfert variables). Par ailleurs, les transferts néces-
mes gloutons tentent d’atteindre la solution sans remettre en ques- saires pour la migration de tâches peuvent compromettre le respect
tion les choix déjà effectués. Ils fournissent en général des solutions des contraintes temporelles de tâches et les performances globales
moins bonnes que les autres méthodes. du système.

Dans les applications non temps réel, à l’exception des applica-


tions de petites tailles, les algorithmes non optimaux sont quasi-
ment les seuls à être utilisés dans la pratique. Pour des applications 2.3 Placement dynamique de tâches
temps réel à contraintes temporelles strictes, les algorithmes non
optimaux sont inadéquats, car ils ne donnent aucune garantie quant
au respect des contraintes temporelles des tâches. Par conséquent, On distingue deux grandes classes d’algorithmes de placement
des algorithmes optimaux doivent être utilisés. Pour éviter les pro- dynamique :
blèmes d’explosion combinatoire, on impose souvent des contrain- — le placement sans coopération (ou placement aveugle) : au
tes initiales restrictives permettant de trouver, au bout d’un temps moment où une requête d’exécution de tâche est créée, un site est
raisonnable, une solution garantissant le respect des contraintes choisi de manière aléatoire pour exécuter la tâche considérée ;
temporelles strictes des tâches. Par exemple, on impose que toute
— le placement avec coopération : les sites s’échangent des
tâche critique du point de vue temporel doit être périodique, ou
informations pour déterminer le site sur lequel sera placée la tâche
encore que toutes les ressources doivent être affectées à une tâche
dont la requête d’exécution vient d’être créée.
avant de démarrer son exécution.
Les techniques de placement sans coopération sont simples à
mettre en œuvre. Comme elles ne tiennent pas compte des charges
2.2.3 Placement statique et placement dynamique des sites, elles peuvent conduire à des surcharges de certains sites,
donc à des échéances de tâches qui ne seront pas respectées.
Les tâches constituant une application répartie peuvent être affec- Les techniques de placement avec coopération tiennent compte
tées de manière statique ou dynamique aux sites. Dans le premier de la charge d’exécution de chaque site avant de lui affecter de nou-
cas, on parle de placement statique, dans le deuxième, de place- velles tâches. Quand le surcoût en temps qu’elles introduisent est
ment dynamique. Dans le premier cas, il ne peut plus y avoir de pla- acceptable, elles sont alors plus efficaces pour l’équilibrage de
cement des tâches pendant l’exécution de l’application, le charge et le respect des échéances de tâches, mais elles sont plus
placement des tâches est donc figé à la configuration du système. complexes à mettre en œuvre.
Dans le deuxième cas, l’algorithme d’ordonnancement choisit de Un algorithme de placement avec coopération est composé d’une
placer chaque tâche sur le site le plus apte à respecter ses contrain- fonction de contrôle et, éventuellement, d’une fonction de collecte
tes temporelles, au moment où elle est déclenchée. d’informations [17], [59]. Cette dernière fonction, quand elle est pré-
Le placement statique utilise une connaissance statique : le nom- sente, a pour objectif de recueillir et de maintenir des informations
bre de tâches, les coûts de communication, la charge du réseau, les concernant l’état et la charge des sites du système réparti. La fonc-
bornes des temps de transfert de messages, les temps d’exécution tion de contrôle permet de déterminer les sites de placement des
sur les processeurs, etc. sont déterminés une fois pour toutes. Le tâches.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 056 − 6 © Techniques de l’Ingénieur, traité Informatique industrielle

TR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUW

Ordonnancement temps réel


Ordonnancement multiprocesseur
par Pascal RICHARD
Professeur des universités en Informatique à l’université de Poitiers

Emmanuel GROLLEAU


Professeur des universités en Informatique à l’ISAE-ENSMA (Chasseneuil-du-Poitou)

Michaël RICHARD
Maı̂tre de conférences en Informatique à l’ISAE-ENSMA (Chasseneuil-du-Poitou)

et Frédéric RIDOUARD
Maı̂tre de conférences en Informatique à l’université de Poitiers

1. Architectures des applications temps réel ................................ S 8 057 – 3


1.1 Architecture matérielle multiprocesseur ........................................... — 3
1.1.1 Systèmes centralisés ............................................................... — 3
1.1.2 Systèmes répartis .................................................................... — 4
1.2 Architecture logicielle ........................................................................ — 4
1.2.1 Types de tâches ....................................................................... — 4
1.3 Classification des ordonnanceurs multiprocesseurs ........................ — 5
1.3.1 Ordonnanceurs en-ligne et hors-ligne .................................... — 5
1.3.2 Préemptions et migrations des tâches ................................... — 6
1.3.3 Priorités des tâches ................................................................. — 6
1.3.4 Classification ............................................................................ — 6
1.4 Propriétés des ordonnanceurs ........................................................... — 6
1.4.1 Comparabilité des algorithmes ............................................... — 6
1.4.2 Optimalité et existence d’algorithme en-ligne ....................... — 7
1.4.3 Prédictibilité, viabilité et anomalies d’ordonnancement ........ — 8
1.4.4 Mesures de performance ........................................................ — 9
2. Principaux algorithmes d’ordonnancement .............................. — 10
2.1 Ordonnancement partitionné ............................................................. — 10
2.1.1 Algorithmes de partitionnement ............................................. — 10
2.1.2 Évaluation des algorithmes de partitionnement .................... — 12
2.2 Ordonnancement global .................................................................... — 13
2.2.1 Algorithmes équitables ........................................................... — 14
2.2.2 Généralisation des algorithmes d’ordonnancement
monoprocesseur ...................................................................... — 17
2.3 Approches hybrides entre ordonnancements global et partitionné . — 17
Pour en savoir plus.................................................................................. Doc. S 8 057

epuis le début des années 2000, on perçoit un ralentissement de l’accrois-


D sement exponentiel (loi de Moore) des vitesses de calcul d’une génération
de processeur à la suivante. Sur les ordinateurs personnels, l’accroissement en
puissance de calcul est maintenu par un accroissement du nombre de cœurs de
calcul sur une même puce. Ce phénomène peut être expliqué par la miniaturi-
sation atteinte par les fondeurs de processeurs sur une technologie basée sur
des transistors en silicium : pour une taille de transistors donnée, accélérer la
vitesse de calcul a un coût quadratique en énergie. Or, la taille d’un transistor
n’est aujourd’hui que de quelques atomes ; elle est donc de plus en plus difficile
p。イオエゥッョ@Z@ウ・ーエ・ュ「イ・@RPQS

à diminuer, et les gains en fréquence des calculateurs se font alors de moins en


moins sentir.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 057 – 1

TS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUW

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Lorsque les calculateurs sont embarqués sur un procédé (avion, automobile,


train, satellite artificiel, etc.) contrôlé par un système, le compromis entre puis-
sance de traitement et énergie consommée penche souvent en faveur de la limi-
tation des fréquences de calcul des processeurs embarqués lorsque ceux-ci
sont alimentés sur batterie, énergie ambiante ou en consommant du carburant.
La diminution de la puissance des calculateurs est alors compensée par la mul-
tiplication de leur nombre pour une même puissance globale de calcul.
On peut naturellement envisager deux façons de multiplier les calculateurs :
connecter plusieurs calculateurs par des réseaux de communication (on parle
alors de systèmes répartis) ou bien mettre sur une même puce plusieurs
cœurs de calculs (on parle alors de systèmes multiprocesseurs ou multicœurs
lorsque les cœurs de calcul sont sur une même puce). Bien entendu, on peut
R associer les deux et avoir des réseaux de communication reliant des systèmes
multicœurs.
Sur un système critique complexe, tel qu’un avion civil, le système de
contrôle est constitué d’un système réparti de systèmes monoprocesseurs.
L’architecture avionique de demain, et vraisemblablement celle des autres
types systèmes embarqués complexes doit augmenter les ressources de calcul
sans augmenter la complexité du réseau de communication déjà très complexe
dans ces systèmes. Ainsi, l’architecture des systèmes critiques de demain sera
constituée de systèmes répartis multicœurs.
Les systèmes embarqués critiques sont généralement soumis à des contrain-
tes de temps : chaque fonctionnalité doit s’exécuter dans un intervalle de temps
donné, malgré le fait que les ressources de calcul sont partagées entre plusieurs
fonctionnalités. On parle alors de systèmes embarqués temps réel, qui doivent
être non seulement valides fonctionnellement mais aussi temporellement.
L’objet de cet article est de présenter la problématique de la validation tem-
porelle d’applications temps réel sur processeurs multicœurs. Il peut être consi-
déré comme la suite de l’article [S 8 055v2] et de l’article [S 8 056].
L’avènement des systèmes multiprocesseurs dans les domaines des systè-
mes critiques pose de nombreux défis scientifiques et entre autres :
" la validation temporelle, à travers l’étude de l’ordonnancement des traite-
ments sur les cœurs de calcul, leurs migrations éventuelles, leurs place-
ments, etc. ;
" le calcul de pire durée d’exécution d’un traitement, en fonction des migra-
tions éventuelles. Dans certains cas, de nombreuses migrations simultanées
peuvent utiliser intensivement le réseau pour passer les données d’un cœur à
un autre, et ainsi une migration peut au pire subir un délai très important. De
même, sur certaines architectures avec caches hiérarchisés, la durée de
déplacement des données en cache d’un cœur vers un autre dépend du pla-
cement des cœurs source et de la destination dans la hiérarchie de caches ;
" le routage et l’optimisation de l’utilisation du réseau reliant les cœurs de cal-
cul : on parle de NOC (Network On Chip).
Cet article se focalise sur l’ordonnancement et la validation temporelle sur
systèmes multicœurs. La problématique étant en elle-même complexe, l’aspect
surcoût éventuel lié aux migrations est le plus souvent négligé dans les modè-
les utilisés. Cependant, il faut avoir conscience du fait que les migrations, sur-
tout lorsqu’elles sont nombreuses et simultanées, n’ont dans la réalité pas un
coût négligeable.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 057 – 2 est strictement interdite. – © Editions T.I.

TT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUW

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ORDONNANCEMENT TEMPS RÉEL

1. Architectures une mémoire distribuée (chaque processeur possède sa propre


mémoire). Dans le cas d’une mémoire distribuée, les données sont
des applications temps réel échangées par le biais de messages passés entre les processeurs,
sur des réseaux de communication qui peuvent être synchrones ou
asynchrones. Le problème de la validation temporelle étant très
complexe, l’architecture considérée consiste en une mémoire parta-
1.1 Architecture matérielle gée accédée par un bus. Dans le cas d’architectures multiprocesseur
multiprocesseur distribuées ou hiérarchisées, si les transferts de données, ou bien de
code lors d’une migration d’un traitement d’un processeur à un
Les architectures matérielles sont généralement classées en deux autre sont minimes, alors les résultats sur mémoire partagée accé-
catégories : les systèmes centralisés, qui s’exécutent sur une seule dée par un bus doivent pouvoir être généralisés aux architectures
puce et les systèmes répartis ou distribués qui s’exécutent sur dif- plus complexes. Les modèles considérés actuellement sont très
férentes puces distantes les unes des autres. simplistes, comme l’illustrent les figures 1 à 3 : dans la théorie


actuelle de l’ordonnancement, les aspects communication et cohé-
1.1.1 Systèmes centralisés rence de caches sont négligés. Bien entendu, il est clair que cette

1.1.1.1 Calculateurs
Même si cette puce peut avoir plusieurs cœurs de calcul, on qua- Cœur 1 +
lifie de centralisé un processeur contenu dans une seule puce, ou Mém 1
dans plusieurs puces « proches » se trouvant sur un même support
physique.
La taxinomie de Flynn peut être employée pour désigner les
familles de calculateurs :
" SISD (Single Instruction Multiple Data) désigne les architectu-
res de processeurs simples capables de traiter une instruction Cœur 4 + Cœur 2 +
à la fois ; Mém 4 Mém 2
" SIMD (Single Instruction Multiple Data) met en œuvre des
architectures vectorielles ou matricielles, comme sur les pro-
cesseurs graphiques (GPU) ou bien sur des jeux d’instructions
particulières permettant d’effectuer des calculs identiques sur
plusieurs données à la fois ;
" MISD (Multiple Instruction Single Data) traite parallèlement la
même donnée et le même calcul, mais n’a pas ou a peu de Cœur 3 +
mise en œuvre ; Mém 3
" MIMD (Multiple Instruction Multiple Data) est la catégorie
d’architecture qui contient les systèmes multiprocesseurs ou
multicœurs. Cette architecture permet d’exécuter simultané- Figure 2 – Architecture à mémoire distribuée avec un réseau de type
ment plusieurs instructions sur des données différentes. mesh ou hypercube
C’est ce type d’architecture sous-jacente que nous considé-
rons dans cet article.
Les architectures MIMD peuvent avoir une mémoire partagée
(accédée par un bus, ou bien de façon hiérarchique), ou bien avoir Cœur 1 Cœur 2

Cache Cache
Cœur 1 L1 L1

Cache L2

Mémoire

Cœur 4 Mémoire Cœur 2 Cache L2

Cache Cache
L1 L1

Cœur 3 Cœur 3 Cœur 4

Figure 1 – Architecture simplifiée généralement considérée lors Figure 3 – Architecture avec mémoire centralisée, utilisant
de l’étude d’ordonnançabilité une hiérarchie de caches

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 057 – 3

TU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUW

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

approximation est loin d’être réaliste. Par conséquent, on caracté- La validation de systèmes répartis a lieu en deux phases interdé-
rise de nombreux algorithmes d’ordonnancement par le nombre pendantes : validation au niveau temps de transmission pire cas des
de migrations qui peuvent avoir lieu, et de nombreux travaux s’inté- messages, et impact sur l’ordonnancement des calculateurs. Les tech-
ressent à les limiter. En effet, lors d’une migration, par exemple en niques utilisées pour mesurer l’impact sur l’ordonnancement des cal-
mémoire distribuée, le code et les données d’une tâche doivent être culateurs sont similaires à celles que nous verrons dans cet article. La
transférées ; dans le cas d’une mémoire à caches hiérarchiques, les validation des systèmes répartis est abordée dans l’article [S 8 056].
caches de données doivent être synchronisés, et par exemple une
migration du cœur 1 vers le cœur 2 devrait prendre moins de
temps qu’une migration du cœur 1 au cœur 3. 1.2 Architecture logicielle
Chaque cœur du système contient au moins une unité de contrôle La partie assurant la gestion des ressources matérielles s’appelle le
permettant de décoder et lancer l’exécution des instructions, et une noyau. Celui-ci est en charge de l’ordonnancement, de la gestion de
unité arithmétique et logique. Il peut être muni d’une mémoire cache la mémoire, et de la gestion des interruptions matérielles. Le noyau
de niveau 1 (L1) de façon à utiliser le principe de localité pour opti- est souvent enrichi de pilotes de périphériques (facilitant l’accès aux


miser les accès à la mémoire lorsque le cœur est plus rapide que la ports série, à l’écran, etc.) et de piles protocolaires (typiquement
mémoire. Il peut aussi s’adjoindre une unité de calcul spécialisée réseau, tel que IP, CAN, etc.) : cet ensemble noyau, pilotes, protoco-
dans la manipulation des nombres à virgules flottantes. Chaque les, se nomme l’exécutif. Dans le cas où l’opérateur peut dialoguer
cœur, comme dans un système monoprocesseur, est caractérisé par avec le système, ou le gérer, par exemple via une interface graphique
une fréquence de fonctionnement, exprimée en MHz (mégahertz) ou ou bien lignes de commandes, on parle de système d’exploitation.
GHz (gigahertz). Cette fréquence représente le nombre d’instructions L’application utilisateur, typiquement en charge d’un contrôle de
élémentaires que le cœur est capable d’exécuter. Par exemple, la procédé pour les systèmes temps réel, est généralement multitâ-
famille d’architecture ARM Cortex A, très répandue sur les smartpho- che. Chaque tâche représente un fil d’exécution capable de s’exécu-
nes, les petits systèmes multimédias, et les systèmes embarqués, ter parallèlement aux autres tâches. Souvent, une tâche est simple-
possède des cœurs cadencés entre 1 et 2 GHz. ment implémentée par une fonction munie d’une pile, et son état
est connu par le noyau. Les états possibles d’une tâche diffèrent
1.1.1.2 Communications suivant l’exécutif, mais il y a au moins trois états :
Lorsque les processeurs partagent la même mémoire centrale, la " prêt : lorsqu’une tâche est prête, un cœur de calcul doit pou-
communication a lieu soit via des caches partagés (ou des dérivés voir lui être accordé ;
de type scratchpad), soit via la mémoire centrale. Dans le cas de " bloqué : lorsqu’une tâche attend une certaine durée, jusqu’à
systèmes à mémoire distribuée, la communication a lieu sur des une certaine date (une interruption matérielle, un élément de
bus. Les bus de communication entre les cœurs fonctionnent de synchronisation tel qu’un sémaphore par exemple, ou encore
façon synchrone ou asynchrone. Le nombre de cœurs croissant un message provenant d’une boı̂te aux lettres) elle est blo-
empêche un maillage complet du réseau, par conséquent, les quée et ne peut pas se voir allouer un cœur de calcul. Lorsque
réseaux proposés sont de type mesh (chaque cœur est connecté à la condition bloquante est levée (délai écoulé, date atteinte,
ses voisins) ou de type hypercube (même principe mais en trois élément de synchronisation arrivé), la tâche devient prête ;
dimensions). Dans ce cas, un cœur peut servir de routeur pour le " exécuté : lorsqu’une tâche prête est élue par l’ordonnanceur
transfert de données entre deux cœurs non adjacents. Il en résulte du noyau, elle est placée sur un et un seul cœur de calcul.
que les durées de transmission peuvent être hétérogènes en fonc- Ses instructions sont alors exécutées par le cœur de calcul
tion des cœurs qui communiquent. jusqu’à ce qu’elle se bloque, ou bien qu’elle soit préemptée
par l’ordonnanceur.
1.1.1.3 Modèles des plateformes L’ordonnanceur choisit suivant une stratégie que l’on appelle
Les études sur l’ordonnancement multiprocesseur classifient les algorithme d’ordonnancement quelles sont les tâches à élire,
systèmes multiprocesseurs en trois catégories : parmi les tâches prêtes. Notons que si l’algorithme d’ordonnance-
ment ne laisse jamais une tâche dans l’état « Prêt » s’il existe un
" homogène ou identique : les processeurs et les capacités des
cœur disponible, on dit que l’algorithme est conservatif.
processeurs sont identiques. Le WCET d’un processeur est
donc valide pour tous les processeurs de la plateforme ;
1.2.1 Types de tâches
" uniforme : les processeurs ont des structures identiques, mais
leurs capacités sont proportionnelles. Le WCET sur le proces- Les tâches considérées peuvent être de nature diverse.
seur le plus lent (sans perte de généralité, il aura une capacité " Une tâche réveillée périodiquement par l’horloge interne est
unitaire) est multiplié par la capacité du processeur pour obtenir qualifiée de périodique. Typiquement, une tâche chargée de scruter
toutes les durées d’exécution d’une tâche sur les processeurs ; la valeur d’un capteur analogique, comme un débitmètre, est
" hétérogène ou non relié : chaque processeur possède sa pro- implémentée sous la forme d’une tâche périodique. Une tâche
pre capacité de traitement et ses propres caractéristiques périodique est donc caractérisée par sa période, totalement maı̂tri-
internes, indépendantes des autres processeurs. Dans ce cas, sée. De plus, si sa première date d’activation est connue, toute date
le WCET de chaque tâche devra être déterminé pour chacun de réveil future est connue.
des processeurs. " Une tâche déclenchée par un dispositif externe, comme l’arrivée
d’une trame sur un réseau de communication, est généralement
La très grande majorité des résultats connus porte sur les systè-
qualifiée de sporadique. Généralement on ne connaı̂t pas la pre-
mes multiprocesseurs homogènes.
mière date d’arrivée de l’événement déclencheur, donc on ne connaı̂t
pas la première date d’activation. On caractérise une tâche spora-
1.1.2 Systèmes répartis dique par le délai minimal séparant deux activations successives de
la tâche, que l’on appelle période de la tâche sporadique. Il faut noter
On parle de système réparti lorsque le système considéré est
que la période est ici un délai minimal, qui peut croı̂tre à l’infini.
constitué de plusieurs calculateurs connectés par un réseau de com-
munication. Dans le domaine des systèmes temps réel, les réseaux " Une tâche déclenchée par un dispositif externe ou interne, mais
de communication utilisés sont généralement des bus dits de ter- dont on ne peut pas caractériser le délai minimal entre deux activa-
rain car ils sont relativement simples, déterministes, et robustes tions successives, est qualifiée d’apériodique. Notons que les tâches
aux conditions extérieures. Exemples de bus de terrain : CAN apériodiques n’ayant pas ou peu été étudiées dans un contexte multi-
(Control Area Network), AFDX (Avionics Full DupleX), FlexRay, etc. processeur, nous n’étudierons pas ce type de tâches dans cet article.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 057 – 4 est strictement interdite. – © Editions T.I.

TV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUX

Linux pour le temps réel

par Robert JAY


Directeur technique, UXP
Fathi BOUDRA
Ingénieur applications, UXP R
et Matthieu VIAL
Ingénieur applications, UXP

1. Caractéristiques de Linux...................................................................... S 8 058 - 2


1.1 Avantages..................................................................................................... — 3
1.2 Principales utilisations ................................................................................ — 3
2. Problématique du temps réel ............................................................... — 4
2.1 Définitions .................................................................................................... — 4
2.2 Linux et le temps réel .................................................................................. — 4
2.3 Déterminisme............................................................................................... — 4
2.3.1 Postulats du modèle temporel .......................................................... — 5
2.3.2 Temps réel en automation ................................................................. — 5
2.4 Entrées/sorties ............................................................................................. — 5
3. Différentes approches et solutions .................................................... — 6
3.1 Linux, le noyau temps réel.......................................................................... — 6
3.1.1 Comment rendre Linux temps réel ................................................... — 6
3.1.2 Comparatif RTLinux/RTAI ................................................................... — 7
3.2 Entrées/sorties sur bus de terrain .............................................................. — 9
4. Étude d’une application : Alograf ....................................................... — 9
Pour en savoir plus........................................................................................... Doc. S 8 058

es notions de temps réel et de communication dans un système d’exploi-


L tation sont indispensables pour les applications techniques et industrielles,
et nous partageons ici notre expérience quotidienne du système Linux dans le
domaine de l’automation, particulièrement exigeant en termes de réactivité,
fiabilité et répétabilité.
En effet, les concepteurs de systèmes automatisés de production (SAP)
doivent faire face à des contraintes de plus en plus sévères, des exigences de
performances en terme de qualité et de productivité, l’utilisation et le suivi des
nouvelles technologies tant pour les capteurs et actionneurs qu’au niveau élec-
tronique de contrôle-commande, etc., sans parler des progrès énormes des
matériaux et de la mécanique.
Nous traitons ici des aspects temps réel et déterministes nécessaires aux
applications d’informatique industrielle, communication et automation, en lais-
sant le soin à l’utilisateur d’extrapoler vers d’autres domaines d’application.
Le monde industriel utilise de plus en plus de PC, déclinés sous toutes les
formes : bureautique, industriel en « rack », « shoe box », panel PC, etc. Leur
facilité de communication et de fonctionnement coopératif en réseau répond
aux besoins d’échanges d’informations pour assurer la réactivité de la produc-
tion. Ils sont donc entrés dans les ateliers en particulier pour superviser et
contrôler des machines de production. On leur confie des tâches de plus en
p。イオエゥッョ@Z@ュ。イウ@RPPT

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 058 − 1

TW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUX

LINUX POUR LE TEMPS RÉEL _____________________________________________________________________________________________________________

plus complexes, et ils supportent même des applications d’automatisme et de


commande numérique. Mais, dans ce cas, on exige d’eux des qualités de
robustesse, de fiabilité, de sécurité et bien sûr de performance.
Si le matériel répond aujourd’hui à ces critères, il n’en est pas de même pour
certains systèmes d’exploitation, développés à l’origine pour des applications
bureautiques, donc non critiques. L’utilisateur industriel doit se tourner vers un
système d’exploitation répondant à ses exigences, en étant assuré de la péren-
nité du système, de sa large diffusion et de son évolutivité. C’est le cas du
système Linux arrivé à présent à maturité avec un nombre de plus en plus
important de références dans les applications critiques et embarquées.
Linux est devenu un système d’exploitation robuste intégrant les fonctionna-
R lités d’Unix avec un choix important d’applications et de logiciels libres associés.
La qualité de ces logiciels et leur large diffusion font de Linux un produit
économique, offrant une plate-forme informatique supportée qui convient à
l’environnement de l’entreprise industrielle. Système stable et fiable, Linux
répond aux besoins des applications critiques et temps réel de l’entreprise
industrielle, en particulier au niveau de la communication dans l’atelier et du
contrôle-commande des systèmes automatisés de production.

Certaines informations font l’objet de travaux soumis à la propriété industrielle, notamment


l’application du paragraphe 4. Le lecteur trouvera des compléments d’information en consul-
tant les sites Internet cités dans [Doc. S 8 058].

1. Caractéristiques de Linux pendants (tels que Marc Andreesen, développeur de Mosaic,


premier véritable navigateur qui révolutionna les échanges, ou
Dave McAllister, directeur stratégique technologique de SGI)
comme très supérieurs à des systèmes commerciaux similaires.
Linux est un système d’exploitation de type Unix multi-utili-
sateur et multitâche fonctionnant sur de nombreuses plates- for- Cela permet à chaque utilisateur de modifier des composants du
mes, parmi lesquelles la famille des processeurs Intel x86. Linux système d’exploitation et de soumettre des améliorations aux inté-
est une libre implémentation, totalement gratuite, des spécifica- grateurs de la distribution officielle. Ce modèle accélère l’intégra-
tions POSIX (Portable Operating System Interface uniX), avec des tion de nouvelles fonctionnalités et permet aux utilisateurs de
extensions System V et Berkeley (ce qui signifie qu’il ressemble à régler les problèmes éventuels dans les plus brefs délais. La pré-
Unix, mais ne provient pas du tout des mêmes sources). Il est sence dans le processus de développement de développeurs
ouvert sur les réseaux et les autres systèmes d’exploitation. venant de divers horizons permet à Linux d’exister sur de nom-
Nota : POSIX est un ensemble de normes de l’IEEE ayant pour but de standardiser breuses plates-formes (Mac, Atari, Amiga, Alpha) autres que sa
l’interface entre les applications et les différents Unix. plate-forme d’origine (Intel).
La principale singularité de Linux est d’être un logiciel libre (des Linux n’est plus considéré comme un système en bêta-test
copies peuvent être distribuées si elles sont accompagnées du depuis que la version 1.0 a été rendue disponible le 14 mars 1994.
code source correspondant), développé de façon collaborative et Comme tout logiciel, il existe des bogues dans le système et de
pour une grande part bénévole par des milliers de programmeurs nouveaux bogues apparaîtront et seront corrigés rapidement grâce
répartis dans le monde. à son développement collaboratif/communautaire, ce qui lui
Bien que le terme Linux, issu du prénom de son créateur, Linus confère une grande réactivité en ce qui concerne la maintenance
Torvalds, fasse référence au noyau du système d’exploitation, ce corrective.
nom est communément utilisé pour désigner un ensemble de logi- Puisque Linux suit un modèle de développement ouvert, toutes
ciels qui, avec le noyau, forment un système d’exploitation les nouvelles versions seront accessibles au public, qu’elles soient
complet, le terme exact étant « distribution ». considérées comme suffisamment stables ou non. Cependant, afin
Cet environnement opérationnel incorpore : d’aider les utilisateurs à déterminer si une version donnée est ou
non considérée comme stable, une convention de numérotation
— des milliers de programmes, parmi lesquels des compilateurs,
spéciale a été mise au point. Les versions x.y.z, où y est un nombre
des interpréteurs, des éditeurs et des utilitaires divers ;
pair, sont stables, et seules des corrections de bogues sont
— des outils permettant la « connectivité » (Ethernet, SLIP et appliquées lorsque z est incrémenté. Par exemple, entre les ver-
PPP) et l’interopérabilité ; sions 1.2.2 et 1.2.3, il y a eu uniquement des corrections et aucun
— la production fréquente de nouvelles versions de logiciels, de ajout de fonctionnalités. Les versions x.y.z, où y est un nombre
même que des versions en cours de développement ; impair, sont des versions en bêta-test destinées aux développeurs
— une équipe de développement dispersée à travers le monde uniquement, peuvent être instables et contiennent de nouvelles
entier et travaillant à rendre Linux portable sur de nouvelles fonctionnalités qui sont ajoutées au cours du développement. De
plates-formes et à assurer un support à une communauté d’utilisa- temps en temps, quand le développement du noyau se stabilise,
teurs extrêmement diverse dans ses besoins. un « gel » intervient pour fournir une nouvelle version « stable »
Ce modèle de développement joue un grand rôle dans la qualité (paire) et le développement continue sur une nouvelle version
du résultat obtenu, qui est considérée par des analystes indé- (impaire).

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 058 − 2 © Techniques de l’Ingénieur

TX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUX

_____________________________________________________________________________________________________________ LINUX POUR LE TEMPS RÉEL

La version stable en 2003 est 2.4.z (z changeant au fur et à 1.1 Avantages


mesure que de nouvelles corrections de bogues sont intégrées au
noyau) et le développement devrait commencer sur des noyaux
expérimentaux, numérotés 2.5.z. Linux est un système :
— puissant : il permet de faire exécuter simultanément de nom-
Au 1er février 2003, la version stable de Linux est 2.4.20 et la breuses applications à sa machine ;
version de développement est 2.5.62. La version stable précédente
2.2.23 peut toujours être utilisée. — efficace : contrairement à des systèmes bien plus répandus, il
n’utilise pour ses besoins propres que très peu de ressources. Les
La version 2.4 est la référence stable destinée à servir de logiciels utilisés par la machine disposent donc de beaucoup plus
plate-forme fiable lors du développement de la version 2.5, qui va de puissance pour fonctionner ;
permettre d’ajouter de nouvelles possibilités et d’essayer des solu- — fiable : une machine sous Linux fonctionne 24 h/24 si besoin
tions audacieuses et modernes au cœur de Linux. Les versions 1.0 « sans se plaindre » (si le matériel est prévu pour, en particulier au
et 1.2 sont maintenant obsolètes. Une fois arrivée à maturité, cette


niveau thermique) ;
version 2.5 donnera naissance à Linux 2.6, et le jeu continuera de
— robuste : une erreur d’un utilisateur ou un « plantage » éven-
plus belle.
tuel d’une application n’affecte pas le reste du système. D’autre
Il faut garder à l’esprit que Linux est développé selon un modèle part, il est exceptionnel de devoir l’arrêter : la quasi-totalité des
ouvert et réparti, contrairement à la plupart des logiciels connus opérations de configuration, mise au point, etc., ne nécessite pas
qui évoluent souvent selon un modèle fermé et centralisé. Cela l’arrêt du système ;
signifie que la version courante de développement est toujours — très bon marché : le prix demandé par les sociétés qui
publique (avec une ou deux semaines de retard) afin que tout le vendent Linux sur CD-ROM ne sert qu’à couvrir leurs frais et à leur
monde puisse l’utiliser. Une version apportant de nouvelles fonc- permettre de financer dans une certaine mesure la poursuite de
tionnalités contient par conséquent presque toujours des bogues, cette activité. Linux étant développé par des passionnés pour le
mais ceux-ci sont découverts et corrigés rapidement, souvent en plaisir, personne n’a à supporter le coût de son développement ;
quelques heures, car ceux qui y travaillent sont nombreux. Il est — conforme à la norme POSIX et aux standards du marché, en
donc facile pour un utilisateur final de les éviter. particulier de l’Internet. Cela signifie qu’un logiciel conçu pour un
À l’opposé, le modèle fermé et centralisé signifie que seule une autre système de la même famille (Solaris de Sun, Digital Unix,
personne ou une équipe travaille sur le projet et qu’elle ne diffuse AIX d’IBM, SCO Unix...) peut être rapidement porté sous Linux et
un programme que lorsqu’elle considère qu’il fonctionne bien. vice versa, ce qui assure une protection de l’investissement logiciel
Cela implique souvent de longs intervalles entre les versions, de en cas d’obligation de changement de système.
longs délais avant correction des bogues et un développement
moins rapide. Bien sûr, la version la plus récente d’un programme
réalisé ainsi est souvent de bonne qualité, mais le développement
en est bien plus lent. 1.2 Principales utilisations
Les caractéristiques essentielles de Linux sont les suivantes :
■ Serveur de fichiers et d’impression : Linux supporte les trois prin-
— multitâche : exécute plusieurs programmes en pseudo-paral- cipaux protocoles de partage de fichiers, NFS pour clients Unix,
lélisme ; SMB pour clients Windows et AppleShare pour clients MacOS, ainsi
— multi-utilisateur : plusieurs utilisateurs actifs sur la même que les protocoles de partage d’imprimantes. Linux peut également
machine en même temps (et sans licence multi-utilisateur !) ; servir de serveur de fax.
— multi-plate-forme : il fonctionne sur différents processeurs, et
pas seulement sur Intel ; ■ Serveur Internet/intranet : on trouve dans les distributions
— exécution en mode protégé sur les processeurs x86 ; standards de Linux tous les logiciels nécessaires pour réaliser un
serveur Internet complet, même sur des machines de puissance
— protection de la mémoire entre les processus, afin qu’un pro- modeste. Cela inclut des fonctionnalités de :
gramme ne puisse à lui seul compromettre le fonctionnement de
l’ensemble du système ; — transfert et distribution du courrier électronique, des news
(Usenet) ;
— bibliothèques partagées liées dynamiquement (DLL, a.out et
ELF) ; des bibliothèques statiques sont bien entendu également — serveur Web ou FTP ;
disponibles ; — serveur de noms de machines ou de domaines.
— très conforme à POSIX, compatible System V et BSD au ■ Serveur d’applications client/serveur : un grand nombre de logi-
niveau du programme source ; ciels de serveurs de bases de données (SGBD), relationnels, rela-
— plusieurs systèmes de fichiers reconnus : minix-1, Xenix, UFS, tionnels-objets ou objets, commerciaux ou libres, sont disponibles
EFS, UDF, FAT, FAT32, NTFS, Ext2fs, Ext3fs, NFS, XFS, certains pour Linux. Avec ces logiciels, surtout du côté commercial, ce sont
offrant une journalisation ; des milliers d’applicatifs qui existent.
— support de l’USB v2, du FireWire, de l’I2O ;
— possibilité avancée de pare-feu (fonctionnalités de filtrage de ■ Station de développement : Linux dispose, le plus souvent sous
paquets, masquerading, load-sharing, quality of service, grâce à forme de logiciel libre, des outils de développement pour la plupart
Netfilter) ; des langages actuels (C, C++, Fortran, Java, Cobol, LISP, Prolog,
SmallTalk). On trouve aussi des outils pour le contrôle des sources,
— support de IPv6 ;
pour le travail en groupe, pour le suivi des erreurs, pour les tests.
— asynchronous I/O (AIO), l’interface POSIX fournissant une
efficacité élevée à l’accès des entrées/sorties asynchrone. Un pro- ■ Station bureautique : grâce à des suites bureautiques intégrées
cessus peut commencer une ou plusieurs demandes d’E/S à un ou commerciales comme Applix ou StarOffice et à des environnements
plusieurs fichiers et continuer son exécution. graphiques comme KDE ou fvwm95, les stations bureautiques sous
Linux offrent les mêmes fonctionnalités que leurs équivalents sous
Windows ou MacOS. L’utilisateur dispose par exemple de traite-
Pour plus de détails, le lecteur est invité à consulter l’article ment de texte, tableur, logiciel de présentation et de dessin, gestion
Système Linux [H 1 538]. de fichiers, partage de documents, intégration des technologies
Internet/intranet (courrier électronique, Web).

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 058 − 3

TY

UP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUY

Ordonnancement temps réel


Ordonnancement réparti
par Emmanuel GROLLEAU
Professeur des universités en Informatique à l’ISAE-ENSMA (Chasseneuil du Poitou)

Michaël RICHARD
Maı̂tre de conférences en Informatique à l’ISAE-ENSMA (Chasseneuil du Poitou)

Pascal RICHARD
Professeur des universités en Informatique à l’Université de Poitiers

et Frédéric RIDOUARD
Maı̂tre de conférences en Informatique à l’Université de Poitiers

1. Introduction aux systèmes temps réel et répartis ................... S 8 059 – 2


1.1 Systèmes répartis généraux : caractéristiques et problèmes
de conception ..................................................................................... — 2
1.2 Répartition matérielle et logique ....................................................... — 4
1.3 Systèmes temps réel répartis ............................................................ — 4
1.3.1 Définition ................................................................................. — 4
1.3.2 Problématique ......................................................................... — 5
2. Réseau ............................................................................................... — 5
2.1 Introduction ........................................................................................ — 5
2.2 Modèle OSI ......................................................................................... — 5
2.2.1 Définition ................................................................................. — 5
2.3 Délai de bout en bout ........................................................................ — 6
2.4 Protocoles ........................................................................................... — 6
2.5 Réseaux sans fil.................................................................................. — 6
2.6 Réseau CAN ........................................................................................ — 6
2.6.1 Présentation ............................................................................. — 6
2.6.2 Déterminisme .......................................................................... — 7
2.7 Réseau AFDX ...................................................................................... — 7
2.7.1 Présentation ............................................................................. — 7
2.7.2 Déterminisme .......................................................................... — 8
3. Ordonnancement et validation..................................................... — 8
3.1 Modèle de tâches ............................................................................... — 8
3.1.1 Analyse d’ordonnançabilité : cas d’un arbitrage de bus basé
sur les priorités ........................................................................ — 8
3.2 Analyse holistique .............................................................................. — 9
3.2.1 Définitions et principe de l’analyse holistique ....................... — 9
3.2.2 Calcul du pire temps de réponse des tâches .......................... — 10
3.2.3 Calcul du pire temps de réponse des messages .................... — 12
3.2.4 Exemple d’application ............................................................. — 13
3.3 Autre méthode : Network Calculus .................................................... — 14
3.3.1 Introduction ............................................................................. — 14
3.3.2 Modélisation d’un réseau AFDX par le Network Calculus ..... — 14
3.3.3 Délai de communication de bout en bout .............................. — 17
3.3.4 Optimisation du calcul réseau : sérialisation ......................... — 19
3.3.5 Algorithme ............................................................................... — 21
3.3.6 Exemple d’application ............................................................. — 22
4. Placement......................................................................................... — 23
4.1 Problèmes de validation .................................................................... — 23
4.2 Problèmes d’optimisation .................................................................. — 23
5. Conclusion........................................................................................ — 23
p。イオエゥッョ@Z@、←」・ュ「イ・@RPQS

Pour en savoir plus.................................................................................. Doc. S 8 059

Copyright © - Techniques de l’Ingénieur - Tous droits réservés S 8 059 – 1

UQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUY

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

a complexité des procédés temps réel à commander ou à superviser, le nom-


L bre élevé de données et d’événements à traiter, la répartition topologique des
procédés, d’une part, et l’apparition depuis plusieurs années de réseaux dédiés
aux systèmes embarqués, d’autre part, sont tous des facteurs qui ont conduit à
repenser les applications temps réel centralisées. Aujourd’hui, la notion d’archi-
tecture répartie, ou distribuée, est très utilisée dans le milieu industriel, notam-
ment dans l’industrie du transport. À titre d’exemple, les domaines d’applications
faisant couramment appel aux architectures réparties sont :
 le contrôle d’équipements dans les transports (avionique, automobile, ferro-
viaire…) ;


 le contrôle et la régulation de trafic en milieu urbain ;
 les industries (contrôle/commande de procédés…) ;
 le domaine militaire (suivi de trajectoires de missiles…) ;
 le domaine aérospatial (suivi de satellites, pilotage automatique…) ;
 la domotique (sécurité d’habitations…) ;
 les télécommunications (systèmes de commutation…) ;
 le domaine médical (assistance et contrôle de malades…).
Un système informatique destiné à commander ou à superviser des opéra-
tions est composé, le plus souvent, de plusieurs unités de traitement (ordina-
teurs, automates programmables, ECU [Electronic Control Unit]…), des cap-
teurs, des actionneurs, des périphériques de visualisation et de dialogue avec
les opérateurs. L’ensemble de ces éléments est interconnecté par un réseau ou
par plusieurs réseaux interconnectés entre eux (des réseaux industriels, des
réseaux bureautiques, des bus de terrain, etc.). Ce type de système est qualifié
de système temps réel et réparti (ou distribué ou encore décentralisé).
Dans ce type de système, l’ordonnancement des tâches et des messages joue
un rôle fondamental dans le processus de validation temporelle de ceux-ci.
Nous présentons dans cet article les différentes techniques d’analyse d’ordon-
nançabilité des tâches, en fonction de leur type, et des messages en fonction du
type de réseau utilisé (CAN, AFDX…).

de communication, on distingue les multiprocesseurs où la commu-


1. Introduction aux systèmes nication peut se passer avec ou sans mémoire commune et les
temps réel et répartis réseaux d’ordinateurs où la communication se passe obligatoirement
sans mémoire commune (c’est-à-dire, avec échange de messages).
Les machines parallèles sont constituées de plusieurs processeurs,
en général identiques et fortement couplés ; on trouve dans [S 8 057]
On appelle système temps réel et réparti tout système composé de une étude complète de ce type d’architecture. Les réseaux d’ordina-
plusieurs entités interconnectées par un sous-système de communi- teurs sont formés de machines autonomes, pouvant être hétérogènes
cation et qui coopèrent à la réalisation d’un ensemble de fonctions et faiblement couplées. Les distances entre les processeurs d’un
sujettes à des contraintes de temps (ces contraintes pouvant être réseau d’ordinateurs peuvent être courtes (quelques dizaines de
strictes ou non selon la nature de l’application à laquelle est associé mètres, voire moins) ou très importantes (des milliers de kilomètres,
le système) [1] [2] [3]. Les systèmes temps réel et répartis sont des cas voire plus, pour les réseaux de satellites). La figure 1 présente un
particuliers des systèmes répartis. Ainsi, nous commençons par nous exemple de système réparti.
intéresser aux systèmes répartis non temporellement contraints, afin On dit qu’un système réparti est constitué d’un ensemble de pro-
de présenter les principales problématiques rencontrées lors de cesseurs, de sites ou de nœuds interconnectés entre eux (figure 2).
l’étude de ceux-ci. Nous présentons ensuite les problématiques indui- Par la suite, nous utiliserons indifféremment, lorsqu’il n’y a pas
tes par l’adjonction de contraintes temporelles. d’ambiguı̈té, les termes « nœud », « site » et « processeur ».
Le développement des systèmes répartis est motivé par plu-
1.1 Systèmes répartis généraux : sieurs raisons, notamment :
caractéristiques et problèmes – la demande d’interconnecter le plus possible les applications
de conception existantes, en particulier pour les services multimedias (téléconfé-
rence, télé-enseignement, télémédecine, ingénierie coopérative…) ;
Un système réparti est constitué d’un ensemble de processeurs – la volonté d’augmenter la disponibilité d’un système informa-
reliés entre eux par un sous-système de communication leur permet- tique pour permettre le remplacement d’un composant du système
tant d’échanger des informations. Selon la nature du sous-système par un autre sans dégradation significative (voire sans aucune

S 8 059 – 2 Copyright © - Techniques de l’Ingénieur - Tous droits réservés

UR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUY

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ORDONNANCEMENT TEMPS RÉEL

Calculateur Calculateur Calculateur


CFAO GPAO de gestion

Réseau d'usine

Passerelle
Contrôleur Gestion de
Superviseur
de qualité maintenance

Réseau de cellule

Automate Commande Commande


programmable numérique de robot

C C Capteurs C C

Bus de Bus de
terrain terrain

A A Actionneurs A A A

Figure 1 – Un exemple de système réparti

automatisés de production, l’arrêt du système temps réel est syno-


nyme d’un arrêt de production ;
Site – le souci de faciliter l’évolution matérielle ou fonctionnelle d’un
système en remplaçant ou en ajoutant certains éléments sans avoir
à arrêter les autres éléments du système ;
– le partage de ressources matérielles (des imprimantes, des uni-
tés de sauvegarde massive…) ou logicielles (des bases de données,
des logiciels…) ;
Site Site
Réseau – la demande de plus de puissance de calcul au moindre coût
(par exemple, plusieurs PC en réseau coûtent moins cher qu’un
gros ordinateur) ;
– enfin, les besoins d’adaptation du système informatique à son
de environnement : aujourd’hui, que ce soit dans les applications
bureautiques ou dans les applications industrielles, les ordinateurs
participant à une application se répartissent sur des étendues géo-
graphiques plus ou moins importantes – sur plusieurs étages d’un
Site communication Site immeuble, ou sur des dizaines de kilomètres carrés dans le cas de
raffineries de pétrole, par exemple. Il est donc important, pour le
système informatique, de tenir compte de cette répartition
géographique.

Les systèmes répartis ont des caractéristiques qui les distinguent


Site des systèmes centralisés :
– les délais de communication entre sites varient d’un message à
l’autre et selon les protocoles du réseau de communication
Figure 2 – Architecture d’un système réparti utilisés ;
– ils n’ont pas d’horloge commune. Chaque site a sa propre per-
dégradation) du service rendu. Cet aspect est primordial dans les ception du temps et, comme les horloges physiques dérivent par
applications temps réel et réparties pour lesquelles les situations rapport au temps de référence, les différents temps lus sur les
d’arrêt doivent être les plus rares possibles. Dans les systèmes sites peuvent être différents à une même heure universelle ;

Copyright © - Techniques de l’Ingénieur - Tous droits réservés S 8 059 – 3

US
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUY

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

– l’absence d’une mémoire commune a pour conséquence l’impos- Selon les spécificités d’un système, on peut avoir des fonctions cen-
sibilité de définir un état global à l’aide de variables communes. tralisées, d’autres partiellement réparties et d’autres complètement
Encore plus important, l’existence de délais de communication varia- réparties. Par exemple, on peut avoir dans un même système : une
bles et l’absence d’un référentiel temporel commun ont pour consé- fonction complètement répartie pour la synchronisation d’horloges,
quence que chaque site a sa propre vue qui peut être différente de une base de données éclatées sur plusieurs sites, mais toutes les tran-
celles des autres sites à un même instant du temps universel ; sactions sur la base sont contrôlées par un seul site et une gestion
– comme le nombre d’équipements d’un système réparti est plus centralisée des fichiers. Tout n’est pas réparti dans un système réparti !
élevé que celui d’un système centralisé, les risques de défaillances Il est clair qu’il ne peut y avoir de répartition logicielle sans répartition
y sont plus importants. Des mécanismes de tolérance aux fautes matérielle, mais la réciproque n’est pas vraie. La décentralisation
doivent être intégrés pour répondre à l’exigence de ne pas dégra- matérielle peut aider ou inciter à la répartition logicielle.
der la sûreté de fonctionnement et, en particulier, la disponibilité
de ces systèmes [4] ; 1.3 Systèmes temps réel répartis
– l’existence d’interfaces de communication avec l’extérieur rend
les systèmes répartis plus vulnérables aux intrusions ; Les systèmes temps réel sont des systèmes informatiques qui doi-

R – les applications réparties sont plus complexes à spécifier, à


concevoir, à implanter, à tester et à valider.
L’impossibilité de disposer instantanément d’un état global iden-
vent réagir à des évènements tout en respectant des contraintes
temporelles. De nombreuses définitions différentes existent pour
les systèmes temps réel dans la littérature [5] [6] [7]. Nous utilisons
la définition employée par J.A. Stankovic : un système temps réel est
tique sur tous les sites pose beaucoup de problèmes pour la prise
un système pour lequel la correction ne dépend pas seulement des
de décisions relative à la gestion et au partage de ressources, à la
résultats, mais également du temps auquel ils sont fournis [8]. Ainsi,
validation d’actions atomiques faisant intervenir plusieurs sites,
les systèmes temps réel sont des systèmes réactifs [9] pour lesquels
etc. C’est aussi l’une des principales sources de complexité des
des contraintes temporelles doivent être respectées. Si les contrain-
algorithmes de placement de tâches sur les différents sites.
tes temporelles de l’application ne sont pas respectées, le système
subit alors une défaillance ; on parle aussi de faute temporelle.
1.2 Répartition matérielle et logique Dans le cas des systèmes temps réel, la répartition est parfois
Les termes « décentralisé », « réparti » et « distribué » sont sou- indispensable : le procédé physique est fortement réparti, les traite-
vent utilisés de manière ambiguë. Pour les préciser, il faut tout ments, les contraintes temporelles dépassent les capacités d’un
d’abord distinguer la répartition matérielle et la répartition logique. seul processeur, le nombre de fonctionnalités assurées par le sys-
tème est très important, l’arrêt du système est inacceptable…
La répartition matérielle (ou encore décentralisation physique)
est obtenue en utilisant plusieurs unités de traitement qui sont 1.3.1 Définition
interconnectées par un sous-système de communication. Par
exemple, un système de contrôle/commande constitué de capteurs La répartition des systèmes temps réel introduit de nouveaux
et d’actionneurs en contact direct avec le procédé physique, d’auto- problèmes, notamment :
mates programmables dans les salles de commande et de stations – les calculs fondés sur les contraintes temporelles qui font réfé-
de travail dans les salles de CAO, est un système avec une architec- rence au temps chronométrique ou à une date absolue risquent de
ture matérielle répartie (ou décentralisée). comporter des erreurs de calcul trop importantes et ainsi de ne pas
La taxinomie est plus complexe lorsqu’il s’agit du logiciel. En être crédibles, à cause de dérives trop grandes entre les horloges
effet, il faut distinguer : des différents sites ;
– l’observation de l’évolution des différents constituants du pro-
– la répartition des données (ou répartition de l’information) ;
cédé est retardée et différente d’un site à un autre de par des délais
– la répartition des traitements ;
de communication variables ;
– la répartition du contrôle.
– les tests d’ordonnançabilité et les calculs de garantie des
 L’ensemble des informations (variables simples, fichiers…) qui contraintes de temps des tâches communicantes, donc l’ordonnan-
sont partagées entre des tâches distantes peut être stocké sur un cement temps réel réparti, sont tributaires de ces dérives d’horlo-
seul site (on parle, dans ce cas, de stockage centralisé de l’informa- ges et de ces délais de communication ;
tion) ou éclaté sur plusieurs sites (on parle, dans ce cas, de stoc- – la tolérance aux fautes est beaucoup plus complexe, ce qui
kage décentralisé de l’information). Cette répartition ne préjuge en rend encore plus difficile de tolérer des fautes tout en respectant
rien sur la façon dont le contrôle de l’accès aux informations parta- les contraintes de temps.
gées sera géré.
Dans le cas de l’ordonnancement temps réel, qui nous intéresse
 La répartition des traitements conduit à affecter les program- ici, la répartition implique l’ordonnancement conjoint de tâches et
mes (ou tâches) à des sites pour y être exécutés. Cette répartition de messages. En effet, le respect ou non des contraintes temporel-
ne préjuge en rien de la façon dont l’exécution des programmes les des messages se répercute de manière directe sur celui des
sera gérée, c’est-à-dire, de la façon dont sera effectué le contrôle tâches puisque l’attente de réception d’un message par une tâche
de l’exécution des tâches. est équivalente à l’attente d’acquisition d’une ressource ; si le mes-
 Le contrôle concerne le déclenchement et l’arrêt des tâches, le sage n’arrive pas à temps, les contraintes temporelles de la tâche
transfert des tâches d’un site vers un autre, l’accès aux ressources peuvent ne pas être garanties.
partagées, la validation d’opérations faisant intervenir plusieurs L’ordonnancement de tâches dans un système réparti se règle à
sites, etc. Il peut être à la charge d’un seul site (il s’agit d’un contrôle deux niveaux : au niveau de chaque processeur et réseaux, et au
complètement centralisé), d’une partie des sites (il s’agit d’un niveau du placement des tâches sur les processeurs. Le problème
contrôle partiellement réparti) ou de tous les sites (il s’agit d’un d’ordonnancement conjoint des tâches et messages est traité dans
contrôle complètement réparti). Lorsque le contrôle est distribué, la le paragraphe 3 ; le problème de placement sera brièvement pré-
prise de décision (par exemple, pour valider une opération sur une senté dans le paragraphe 4. Pour avoir plus de détails sur les carac-
base de données, pour lancer la production d’un ensemble de pièces téristiques des algorithmes d’ordonnancement, nous recomman-
ou, encore, pour sortir le train d’atterrissage d’un avion) peut être dons au lecteur de se reporter à [S 8 055] et [S 8 057].
prise par chaque site séparément, par tous les sites (dans ce cas, si Dans toute la suite, les algorithmes d’ordonnancement utilisés
un seul site manque, la décision ne peut être prise) ou à la majorité sur les différents sites d’un système réparti sont considérés en-
des sites (on parle, dans ce cas, de décision par consensus). ligne, préemptifs et conservatifs.
Il est important de signaler que la répartition (ou décentralisation) La conception et l’implantation des systèmes temps réel et répar-
doit être considérée séparément pour chaque fonction du système. tis nécessitent des protocoles de communication qui garantissent

S 8 059 – 4 Copyright © - Techniques de l’Ingénieur - Tous droits réservés

UT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUY

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ORDONNANCEMENT TEMPS RÉEL

aux tâches communicantes de recevoir, dans les délais, les messa- – définition de l’ensemble des messages avec pour chaque mes-
ges qui leur sont destinés. Pour les messages avec des échéances sage : la tâche émettrice, la tâche réceptrice et la longueur du
strictes de délivrance, il faut que les protocoles donnent des garan- message ;
ties et, pour les messages non critiques du point de vue temporel, – protocole réseau définissant le support, l’échange et l’ordon-
la stratégie du protocole est le meilleur effort (c’est-à-dire, minimi- nancement des messages.
ser le retard des messages et le nombre des messages tardifs). Dans le paragraphe suivant, nous présentons les deux protocoles
Dans un système temps réel et réparti, les tâches sont synchroni- caractéristiques des systèmes répartis critiques : CAN et AFDX.
sées en utilisant le temps chronométrique (par exemple, activation
de tâches à des instants précis ou de manière périodique). Il en est
de même pour la datation de données et d’événements apparaissant
sur les différents sites. Le bon fonctionnement d’un système réparti
2. Réseau
nécessite le plus souvent l’existence d’un temps global accessible à
tous les sites. La solution la plus couramment utilisée pour établir un
2.1 Introduction

temps global est la synchronisation d’horloges physiques. D’autres
solutions fondées sur l’utilisation de récepteur d’un temps diffusé Un réseau se définit par un ensemble d’entités communicantes
par une station de radio ou un satellite peuvent être envisagées. Beau- entre elles via un média. Les entités peuvent être aussi bien des per-
coup d’algorithmes ont été proposés pour régler le problème de syn- sonnes (réseaux sociaux), des voitures (réseaux routiers) que des
chronisation d’horloges. Le lecteur désireux d’approfondir ses systèmes informatiques (réseaux informatiques). Un système réparti
connaissances sur ce sujet peut consulter les références [10] [11]. est composé d’un ensemble de processeurs reliés entre eux par un
réseau. Ce réseau permet l’échange de données conduisant au bon
1.3.2 Problématique fonctionnement du système. Ces données ou messages sont repré-
La validation d’un système temps réel passe par une vérification du sentés sous forme de paquets appelés aussi trames de données.
respect des contraintes temporelles de l’ensemble des tâches qui Dans un réseau de paquets, chaque élément permettant le transport
compose le système. Le système utilise un algorithme d’ordonnance- des paquets de bout en bout est appelé un « nœud ».
ment pour choisir à chaque instant la tâche à exécuter. L’algorithme
est en-ligne et se base sur les priorités pour élire la tâche. Les tâches 2.2 Modèle OSI
sont périodiques et la durée de vie du système est supposée infinie.
Les systèmes répartis sont définis par un ensemble de tâches 2.2.1 Définition
s’exécutant sur des processeurs et s’échangeant des messages. Le La complexité des communications réseau a conduit à les norma-
réseau est le seul moyen de communication entre les processeurs. liser par un modèle en couches. Défini en 1977, le modèle OSI (Open
Il représente donc une ressource partagée par les tâches. Le réseau System Interconnected) est composé de sept couches et a été nor-
permet l’échange de données (messages) assurant le bon fonction- malisé par l’ISO (International Organization for Standardization). Ce
nement du système. Plusieurs problèmes sont fonction des carac- modèle définit les principales fonctionnalités de la communication
téristiques du système réparti : entre deux éléments réseau. Pour plus de détails sur le modèle OSI,
– placement des tâches sur les processeurs ; le lecteur peur se référer à l’article [S 7 574], paragraphe 1.2.
– migration entre les processeurs des tâches au cours de leur Dans les réseaux, et plus particulièrement, dans les réseaux embar-
exécution ; qués (ou temps réel), le modèle OSI n’est pas totalement implé-
– synchronisation entre les tâches ; menté. Ainsi, la pile réseau utilisée, dans un contexte embarqué est
– répartition des tâches entre les processeurs : chaque tâche est simple et n’implémente généralement que les quatre premières cou-
assignée (définitivement) à un processeur (pas de migration) ; ches (voire moins). Le schéma général du modèle OSI adapté aux
– algorithme d’ordonnancement des tâches sur les processeurs ; réseaux temps réel est présenté par la figure 3.

ÉMETTEUR RÉCEPTEUR

4 4
Transport Transport

3 3
Réseau Réseau

2 2
Liaison de données Liaison de données

1 1
Physique Physique

Figure 3 – Modèle OSI adapté aux réseaux temps réel

Copyright © - Techniques de l’Ingénieur - Tous droits réservés S 8 059 – 5

UU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPUY

ORDONNANCEMENT TEMPS RÉEL ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

2.3 Délai de bout en bout Enfin, en utilisant les méthodes dynamiques par compétition,
chaque station du réseau essaie quand elle en a besoin d’accéder
Les communications peuvent être classées en deux catégories : au canal sans tenir compte des besoins des autres. Si deux stations
connecté et non-connecté. Le mode connecté est une communica- émettent en même temps, elles rentrent en conflit et une solution
tion de type « téléphonique » : l’émetteur prévient le destinataire doit être définie. La famille des CSMA (Carrier Sense Multiple
d’un envoi de messages qui confirme à l’émetteur sa disponibilité. Access) est un exemple de méthodes dynamiques par compétition.
En mode asynchrone, ou non-connecté, (communication de type Le principe général d’une méthode CSMA consiste à laisser les
« courrier »), l’émetteur envoie son message sans en avoir averti nœuds du réseau émettre librement des trames. Lorsque deux
préalablement le destinataire. nœuds émettent simultanément, une collision se produit. Chaque
Le mode connecté permet des communications point à point (ou station détecte la collision de sa trame, attend un temps aléatoire
unicast). Tandis que le mode non connecté permet le mode diffu- et réessaye d’émettre.
sion (ou multicast) : Pour une étude approfondie sur les protocoles, le lecteur peut se


– mode de diffusion : les paquets sont envoyés sur l’ensemble du reporter à l’article [H 2 285]. De plus, pour les méthodes d’accès, il
réseau (ou à un groupe prédéfini de destinataires). Il n’utilise qu’un pourra consulter l’article [S 8 120].
seul support et est adapté à une topologie en bus ou en anneau ;
– mode point à point : les messages sont envoyés de lien en lien
jusqu’à leur arrivée aux destinataires choisis. Ils s’utilisent sur des
topologies en étoile ou maillées. 2.5 Réseaux sans fil
On peut faire une analogie entre le mode non-connecté et l’envoi Les réseaux sans fil regroupent l’ensemble des réseaux qui inter-
de courrier. Il n’y a pas de garantie que le paquet ait été correcte- connectent des éléments entre eux sans aucun câble, uniquement
ment reçu. Pour remédier à ce problème, les réseaux embarqués par ondes. Comme pour les réseaux classiques, ils pourront être
sont définis avec des processus permettant de s’assurer de la fiabi- classifiés selon leur taille :
lité de la communication et par conséquent, de la non perte d’infor-
– les réseaux personnels sans fils (exemple : les réseaux blue-
mation. La majorité des réseaux embarqués fonctionne en mode
tooth) : ils font 1 ou 2 mètres de grandeur ;
non connecté.
– les réseaux locaux sans fil (exemple : le WiFi) : ils mesurent de
En plus de la non perte d’information, dans certains contextes l’ordre d’une dizaine de mètres ou un peu plus ;
critiques comme l’aéronautique, les réseaux ont besoin de garantir – les réseaux métropolitains sans fil (exemple : wimax) : ils
une borne supérieure sur le délai de bout en bout de chaque s’étendent sur plusieurs kilomètres ;
paquet échangé sur le réseau (certification requise du réseau). Le – les réseaux étendus sans fil (exemple : GSM, 4G) : ils s’éten-
délai de bout en bout d’un paquet désigne le temps mis par une dent sur plusieurs centaines de kilomètres.
trame entre son entrée sur le réseau et sa réception à son point de
sortie. Le déploiement d’un réseau sans fil définit le moyen de commu-
Un réseau est dit « déterministe » s’il peut certifier la non perte nication entre les éléments d’un réseau. Il existe deux modèles de
d’information et en plus, garantir une borne supérieure sur le délai déploiement :
de traversée d’un réseau de bout en bout de chaque paquet. Pour – le mode infrastructure : pour communiquer entre eux, les élé-
garantir le déterminisme, il y a deux familles de méthodes : ments réseaux doivent se connecter à des points d’accès et les
– interdire les collisions sur les liens ; données échangées passent de routeur en routeur jusqu’au
– détecter les collisions sur les liens et implémenter des procédu- destinataire ;
res de détection et de réémission. – le mode Ad-Hoc : les éléments réseaux se connectent directe-
ment entre eux pour communiquer.

La norme la plus couramment utilisée est la 802.11 et pour plus


2.4 Protocoles d’informations sur les réseaux sans fil, le lecteur peut se référer à
l’article [TE 7 375].
Les protocoles réseaux décrivent les mécanismes mis en place
dans les nœuds afin d’effectuer l’acheminement des paquets, mais
aussi pour la gestion des erreurs et le contrôle des flux sur le
medium de communication. 2.6 Réseau CAN
Les différentes méthodes d’accès au média de communication
peuvent se classer en trois catégories : 2.6.1 Présentation
– méthodes statiques ;
– méthodes dynamiques par élection ; Le bus CAN (Controller Area Network) a été développé par Bosch
– méthodes dynamiques par compétition. et Intel. Il fut présenté en 1985 et standardisé au début des années
1990 par la norme ISO 11898. Pour plus d’informations sur le bus
L’utilisation des méthodes statiques consiste à multiplexer le CAN, on pourra se référer à l’article [S 8 140]. À ses débuts, il fut
temps ou les fréquences d’émission statiquement entre les stations principalement utilisé dans le monde automobile mais maintenant,
émettrices. Par exemple, le TDMA (Time Division Multiple Access) il est utilisé dans la plupart des secteurs industriels comme l’aéro-
est un mode de multiplexage temporel appliqué sur le segment nautique. Le bus connecte par un câble (ou bus) un ensemble de
statique du réseau FlexRay [12]. Il définit pour chaque émetteur un stations (appelés aussi « nœuds ») qui vont communiquer tour à
intervalle de temps pendant lequel il sera le seul à transmettre des tour.
données sur le canal.
Le bus CAN n’implémente pas toutes les couches du modèle OSI
Les méthodes dynamiques par élection définissent un élément mais uniquement les deux premières (physique et liaison). Le bus
arbitraire qui choisira la station autorisée à émettre. Ce choix arbi- CAN repose sur une paire torsadée avec un débit maximum de
traire peut être fait soit par une station « maı̂tre » qui choisira en 1 Mbps. La longueur maximum du bus dépend du débit ; il est par
fonction de ses critères ou par un jeton qui circule entre les stations exemple de 40 m pour un débit de 1 Mbps. Au niveau de la sous-
et seule la station qui possède le jeton peut transmettre sur le couche MAC, il utilise le protocole CSMA/CR pour gérer l’accès des
canal. stations au bus.

S 8 059 – 6 Copyright © - Techniques de l’Ingénieur - Tous droits réservés

UV
Supervision des systèmes industriels
(Réf. Internet 42396)

1– Méthodes fonctionnelles et outils

2– Systèmes d'exploitation temps réel



3– Technologies logicielles et programmation Réf. Internet page

Langages de programmation pour systèmes automatisés : norme CEI 61131-3 S8030 59

Norme CEI 61499 : programmation distribuée et événementielle des procédés S8031 65

Réalisation technologique du GRAFCET S8032 67

Microcontrôleurs  : principes et aspects temps réel S8035 73

Approche objet S8063 79

Programmation en langage C++. Concepts S8065 83

Programmation en langage C++. Exemples S8066 87

Linux embarqué H1570 89

OS embarqués H8200 93

Java dans les systèmes embarqués et temps réel S8068 97

UML pour temps réel S8070 101

Qualité des logiciels industriels R8080 105

Contrefaçon de logiciel S8090 109

Spéciications fonctionnelles. Génération automatique de code S8100 115

Programmation graphique des applications de contrôle-commande. Notions S8205 121


générales et langage G
Programmation graphique des applications de contrôle-commande. Logiciel LabVIEW S8206 127
et applications industrielles

4– Interaction homme-machine

 Sur www.techniques-ingenieur.fr
• Saisissez la référence Internet pour accéder directement aux contenus en ligne
• Retrouvez la liste complète des ressources documentaires

UW
5– Exigences contractuelles

UX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSP

Langages de programmation pour systèmes


automatisés : norme CEI 61131-3

par Nicolas JOUVRAY


ICS Triplex France, ISaGRAF

Ce texte est la version actualisée de l’article écrit par Patricia JARGOT en 1999.


1. Architecture de projet ............................................................................ S 8 030v2 - 2
2. Objets communs ....................................................................................... — 4
3. Langage SFC .............................................................................................. — 10
4. Langage FC ................................................................................................. — 15
5. Langage FBD .............................................................................................. — 15
6. Langage LD................................................................................................. — 17
7. Langage ST ................................................................................................. — 21
8. Langage IL .................................................................................................. — 26
Pour en savoir plus ........................................................................................... Doc. S 8 030v3

es langages de programmation des systèmes automatisés sont décrits


L dans deux normes complémentaires :
– la norme CEI 61131-3 fait l’objet du présent article ;
– la norme CEI 61499 est décrite dans l’article [S 8 031].
La norme CE 61131-3 définit entre autres choses, cinq langages qui peuvent
être utilisés pour la programmation d’applications d’automates programma-
bles industriels (API). Les cinq langages sont :
– SFC (« Sequential Function Chart ») : issu du langage GRAFCET, ce lan-
gage, de haut niveau, permet la programmation aisée de tous les procédés
séquentiels ;
– FBD (« Function Block Diagram », ou schéma par blocs) : ce langage
permet de programmer graphiquement à l’aide de blocs, représentant des
variables, des opérateurs ou des fonctions. Il permet de manipuler tous les
types de variables ;
– LD (« Ladder Diagram », ou schéma à relais) : ce langage graphique est
essentiellement dédié à la programmation d’équations booléennes (true/false) ;
– ST (« Structured Text » ou texte structuré) : ce langage est un langage
textuel de haut niveau. Il permet la programmation de tout type d’algorithme
plus ou moins complexe ;
– IL (« Instruction List », ou liste d’instructions) : ce langage textuel de bas
niveau est un langage à une instruction par ligne. Il peut être comparé au
langage assembleur.
Cet article présente sommairement l’architecture d’un projet d’automatisme
et introduit la notion de programme, puis décrit de façon détaillée la syntaxe
des cinq langages de la norme CEI 61131-3.
p。イオエゥッョ@Z@ェオゥョ@RPPX

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 030v2 – 1

UY
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSP

LANGAGES DE PROGRAMMATION POUR SYSTÈMES AUTOMATISÉS : NORME CEI 61131-3 _________________________________________________________

Les POU de la section « Fonctions » sont des programmes qui


1. Architecture de projet peuvent être appelés par tout autre programme du projet. Ils
s’appellent fonctions. Une fonction peut appeler une autre fonction.
Un projet se compose de configurations. Une configuration est
Les POU de la section « Blocs fonctionnels » sont des pro-
une plate-forme matérielle comprenant une ou plusieurs ressour-
grammes qui peuvent être appelés par tout autre programme du
ces. Une ressource représente une machine virtuelle. Une
projet. Ils s’appellent blocs fonctionnels. Un bloc fonctionnel de
ressource est divisée en plusieurs unités de programmation appe-
cette section peut appeler d’autres fonctions ou blocs fonctionnels.
lées POU (program organization unit). Les POU d’une ressource
sont organisées en une architecture hiérarchisée. Les POU peuvent Les programmes séquentiels principaux doivent être décrits à
être décrites avec les langages graphiques ou textuels SFC, FC, ST, l’aide des langages SFC ou FC. Les programmes cycliques ne
IL, FBD, ou LD. Les POU peuvent être des programmes, des fonc- peuvent pas être décrits à l’aide des langages SFC ou FC. Tout pro-
tions ou des blocs fonctionnels. gramme SFC peut avoir un ou plusieurs SFC fils. Tout programme
FC peut « appeler » un ou plusieurs sous-programmes FC.
Les fonctions peuvent être décrites à l’aide des langages ST, LD,
1.1 Programmes ou FBD et les blocs fonctionnels peuvent être décrits à l’aide des
Un programme est une unité logique de programmation qui décrit langages SFC, ST, LD, ou FBD. Les fonctions et les blocs fonction-
des opérations entre les variables du procédé. Les programmes nels peuvent être appelés depuis des actions ou conditions d’un
programme SFC ou FC.


décrivent des opérations séquentielles ou cycliques. Les program-
mes cycliques sont exécutés à chaque cycle de la cible. L’exécution Les programmes exécutés au début du cycle (avant les pro-
des programmes séquentiels a un comportement dynamique. grammes séquentiels) sont typiquement utilisés pour décrire des
Les programmes sont organisés dans un système hiérarchique opérations préliminaires sur les équipements d’entrée, afin de
arborescent. Les programmes placés au sommet de la hiérarchie construire des variables de haut niveau. De telles variables sont
sont activés par le système. Les programmes fils (de niveau fréquemment utilisées par les programmes séquentiels. Les pro-
inférieur dans la hiérarchie – SFC et FC seulement : SFC fils et grammes exécutés à la fin du cycle (après les programmes
sous-programmes FC) sont activés par leur programme père. La séquentiels) sont utilisés typiquement pour décrire des opérations
description d’un programme peut être réalisée à l’aide des de contrôle sur les variables traitées par les programmes séquen-
langages graphiques ou textuels disponibles : tiels, avant d’envoyer les valeurs aux équipements de sortie.
– Sequential Function Chart (SFC ou GRAFCET) ;
– Flow Chart (FC) ; 1.3 Programmes SFC fils
– Function Block Diagram (FBD) ;
– Ladder Diagram (LD) ; Chaque POU SFC peut contrôler d’autres POU SFC. Ces pro-
– Structured Text (ST) ; grammes d’un niveau hiérarchique inférieur s’appellent des
– Instruction List (IL). programmes SFC fils. Un programme SFC fils est un programme
exécuté en parallèle, qui peut être lancé, tué, figé ou relancé par
Plusieurs langages ne peuvent pas être mêlés dans le même
son programme père. Le programme père et le programme fils
programme, à l’exception des langages LD et FBD qui peuvent être
doivent tous deux être décrits avec le langage SFC. Un programme
combinés dans le même diagramme.
SFC fils peut avoir des variables locales.
Les programmes SFC et SFC fils ont des limites de Quand un programme père lance un programme SFC fils, il place
comportements dynamiques qui sont définis au niveau de la res- un jeton SFC (activation) dans chacune des étapes initiales du pro-
source. Tandis que les blocs fonctionnels SFC et blocs fonctionnels gramme fils. Cette commande peut être décrite avec l’énoncé
SFC fils ont chacun leur nombre maximum de jetons qui sont défi- GSTART ou par le nom du programme fils attaché au qualificatif S.
nis dans leurs propriétés individuelles. Quand un programme père tue un programme SFC fils, il enlève
tous les jetons existant dans les étapes du programme fils. Cette
Sur le GRAFCET, le lecteur est invité à consulter les articles commande peut être décrite avec l’énoncé GKILL ou par le nom du
GRAFCET. Concepts de base [S 7 240] et GRAFCET. Structura- programme fils attaché au qualificatif R. Quand un programme père
tion des descriptions. Applications [S 7 241]. lance un programme fils, l’exécution du programme père continue.
Quand un programme père fige un programme SFC fils, il
enlève tous les jetons existant dans les étapes du programme fils,
1.2 Opérations cycliques et séquentielles et mémorise leur position. Cette commande peut être décrite avec
l’énoncé GFREEZE. Quand un programme père relance un pro-
La hiérarchie des POU se divise en trois sections ou groupes gramme SFC fils figé, il remet en place tous les jetons enlevés
principaux : lorsque le programme a été figé. Cette commande peut être
– Programmes : les programmes dans cette partie repré- décrite avec l’énoncé GRST.
sentent le cycle de la cible ;
Les instances de blocs fonctionnels SFC fils, tels que leurs pères
Nota dans cette section, les programmes SFC et FC, qui représentent des opérations
séquentielles, sont regroupés.
blocs fonctionnels, ont un nombre maximum de jetons, contraire-
ment aux programmes SFC qui ont leurs limites de comportement
– Fonctions : ensemble de fonctions qui peuvent être dynamique définis au niveau de la ressource. La limite de jetons
appelées par tous les programmes ; pour un bloc fonctionnel SFC se spécifie dans ses propriétés de para-
– Blocs fonctionnels : ensemble de blocs fonctionnels qui peuvent métrages auxquelles on accède en sélectionnant le bloc, puis à partir
être appelés par tous les programmes. du menu Édition, on choisit Propriétés, puis l’onglet Paramétrages.
Les programmes avant et après les programmes SFC et FC Lors de l’utilisation d’un bloc fonctionnel SFC avec un SFC fils,
décrivent des opérations cycliques, et ne sont pas dépendants du on accède, en mode lecture seulement, aux valeurs locales du fils
temps. Ils sont appelés programmes cycliques. Les programmes à partir de son père en entrant le nom du fils et le paramètre dans
SFC et FC décrivent des opérations séquentielles, où les opérations une action ou un code de transition. Par exemple, pour accéder au
élémentaires sont explicitement synchronisées par le temps. Ils paramètre Local1 d’un fils SFC nommé FB_Fils, dans l’action ou la
sont appelés programmes séquentiels. Les programmes cycliques transition défini pour le bloc fonctionnel FC père, on entre le code
sont exécutés systématiquement au début de chaque cycle. Les suivant :
programmes séquentiels principaux (au sommet de la hiérarchie)
sont exécutés selon le comportement dynamique SFC et FC. FB_Child.Local1

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 030v2 – 2 est strictement interdite. – © Editions T.I.

VP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSP

_________________________________________________________ LANGAGES DE PROGRAMMATION POUR SYSTÈMES AUTOMATISÉS : NORME CEI 61131-3

1.4 Sous-programmes FC LD : utilisation d’une bobine avec le nom du paramètre de


retour :
Tout programme FC peut appeler un ou plusieurs sous-pro- FunctionName
grammes FC. L’exécution du sous-programme FC est réalisée par
son programme père. L’exécution du programme FC père est sus-
pendue jusqu’à ce que l’exécution du sous-programme FC soit
terminée. 1.6 Blocs fonctionnels
Sous-programme
FC Un bloc fonctionnel peut être programmé dans les langages SFC,
ST, LD, ou FBD. Les blocs fonctionnels sont initialisés, ce qui signifie
que les variables locales d’un bloc fonctionnel sont copiées pour
chaque instance. Lorsqu’un programme appelle un bloc, il appelle
en fait l’instance du bloc : le même code est appelé mais les don-
nées utilisées sont celles qui ont été allouées pour l’instance. Les
Programme Sous-programme valeurs des variables de l’instance sont conservées d’un cycle à
père FC l’autre.
Exemple d’implémentation d’un bloc fonctionnel
1.5 Fonctions
L’exécution d’une fonction est demandée par son programme
(* Programmation ST *)
(* FB1 est une instance déclarée du bloc fonctionnel SAMPLE *) S
père. L’exécution du programme père est suspendue jusqu’à ce
que la fonction soit terminée.
FB1(high, value, low,1);
high_alarm :=FB1.QH ; Donnée
Code de
low_alarm :=FB1.QL ; l’instance
any_alarm :=FB1.Q ;

Programme Fonction Fonction L’interface d’un bloc fonctionnel doit être définie explicitement,
principal avec un type et un nom unique pour chacun de ces paramètres
Chaque programme de chaque section peut appeler une ou plu- d’appel (ou paramètres d’entrée) et paramètres de retour (ou para-
sieurs fonctions. Une fonction peut avoir des variables locales. Les mètres de sortie). Un bloc fonctionnel peut avoir plusieurs para-
langages ST, LD, FBD ou IL peuvent être utilisés pour décrire une mètres de sortie.
fonction. Les informations suivantes montrent comment forcer la valeur
d’un paramètre de sortie dans le corps d’un bloc fonctionnel, dans
Attention : le système ne supporte pas la recursivité dans les les différents langages :
appels de fonctions. Une erreur surviendra à l’exécution si un ST : assignation du paramètre de sortie en utilisant son
programme de la section « Fonctions » est appelé par lui-même nom concaténé avec le nom du bloc fonctionnel
ou par l’une des fonctions qu’il appelle. De plus, une fonction FunctionBlockName.OutputParaName:=
ne « stocke » pas la valeur de ses variables locales. Une fonc- <expression>;
tion n’est pas initialisée et ne peut donc pas appeler des blocs
IL : utilisation de l’opérateur LD et ST :
fonctionnels.
LD FunctionBlockName.OutputParaName
ST 20 (* valeur du paramètre = 20 *)
L’interface de la fonction doit être définie explicitement, avec un
type et un nom unique pour chacun de ses paramètres d’appel (ou FBD : forçage du paramètre de retour en utilisant son nom :
paramètres d’entrée) et son paramètre de retour (ou paramètre de OutputParaName
sortie). Afin de respecter les conventions d’écriture du langage ST, LD : utilisation d’une bobine avec le nom du paramètre de
le paramètre de retour doit porter le même nom que la fonction. retour :
Une fonction a un seul paramètre de retour. OutputParaName
Les informations suivantes montrent comment forcer la valeur du
paramètre de retour dans le corps d’une fonction, dans les différents Attention : en cas de besoin d’une boucle dans un bloc fonc-
langages : tionnel, il faut utiliser une variable locale avant la boucle.
ST : assignation du paramètre de retour en utilisant son
nom (le même nom que la fonction) :
Ne fonctionne pas :
FunctionName:=<expression>;
IL : la valeur du résultat courant (registre IL) à la fin de la >=
séquence est stockée dans le paramètre de retour : >=1
LD 10
ADD 20 (* valeur du paramètre de &
retour = 30 *)
FBD : forçage du paramètre de retour en utilisant son nom :
Fonctionne :

>=1 >=

& >=1
IntResult
&

FunctionName

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 030v2 – 3

VQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSP

LANGAGES DE PROGRAMMATION POUR SYSTÈMES AUTOMATISÉS : NORME CEI 61131-3 _________________________________________________________

Les blocs fonctionnels SFC, tels leurs blocs SFC fils, ont un
nombre maximum de jetons, contrairement aux programmes SFC 2. Objets communs
pour lesquels les limites de comportement dynamique sont définis
au niveau de la ressource. Pour spécifier la limite de jetons pour Sont présentés ici les fonctionnalités et objets communs de la
un bloc fonctionnel SFC, dans ses propriétés de paramétrages, on base de données de programmation. De tels objets peuvent être
sélectionne le bloc, puis à partir du menu Édition, on choisit utilisés dans toute POU (program organization unit : programmes,
Propriétés, puis l’onglet Paramétrages. fonctions ou blocs fonctionnels) écrit en tout langage SFC, FC,
FBD, IL, ST, LD.

1.7 Langage de programmation 2.1 Types de données


La description d’un programme peut être réalisée à l’aide des Toute expression, constante ou variable utilisée dans une POU
langages graphiques ou textuels suivants : (écrite dans n’importe quel langage), doit être caractérisée par un
type. La cohérence des types doit être respectée dans les opéra-
tions graphiques et les instructions textuelles.
Sequential Function Chart (SFC) pour des opérations de haut niveau Les types sont connus par toute ressource d’un projet : les types
ont une portée commune. Ces types sont :


– types standards CEI 61131 ;
Flow Chart (FC) pour des opérations de haut niveau
– user types (basés sur les types de base).

Function Block Diagram (FBD) pour des opérations cycliques complexes 2.1.1 Types standards CEI 61131
Dix-huit types de bases sont disponibles pour les objets de
Ladder Diagram (LD) pour des opérations booléennes seulement programmation :
– BOOL : valeur logique (true ou false) ;
Structured Text (ST) pour toutes les opérations cycliques – SINT : valeur continue entière courte (8 bits) ;
– USINT : valeur continue entière courte non signée (8 bits) ;
– BYTE : valeur demi-mot (8 bits) ;
Instruction List (IL) pour des opérations de bas niveau – INT : valeur entière continue (16 bits) ;
– UINT : valeur entière continue non signée (16 bits) ;
– WORD : valeur mot (16 bits) ;
La méthode de distribution IEC 61499 est également disponible pour – DINT : valeur continue entière double (32 bits) ;
la description d’un programme. – UDINT : valeur continue entière double non signée (32 bits) ;
– DWORD : valeur double mot (32 bits) ;
– LINT : valeur continue entière longue (64 bits) ;
Plusieurs langages ne peuvent pas être utilisés ensemble dans le
– ULINT : valeur continue entière longue non signée (64 bits) ;
même programme, à l’exception des langages LD et FBD qui
– LWORD : valeur mot long (64 bits) ;
peuvent être mêlés dans le même diagramme. Le langage de pro-
– REAL : valeur continue réelle (flottante) (32 bits) ;
grammation est sélectionné au moment de la création d’un pro-
gramme et ne peut pas être changé par la suite. – LREAL : valeur continue réelle longue (flottante) (64 bits) ;
– TIME : valeur de temps ou temporisation inférieure à un jour ;
ces types de valeurs ne peuvent pas stocker des dates (32 bits) ;
– DATE : valeur date (32 bits) ;
1.8 Règles d’exécution – STRING : chaîne de caractères ayant une taille définie, qui
représente le nombre maximum de caractères que la chaîne peut
Le système est synchrone. Toutes les opérations sont échantillon- contenir. Par exemple, pour définir MyString, une chaîne de
nées. La durée d’un échantillon est appelée le temps de cycle : 10 caractères, on entre MyString (10).
1. lecture des variables d’entrées ; Nota : au sujet des variables de type STRING, voir § 2.3.17.
2. consommation des variables liées ; Il est possible de définir ses propres types basés sur les types de
3. exécution des POU ; base ci-avant : type utilisateur. De plus, on peut définir des struc-
4. production des variables liées ; tures en utilisant des types de base et des tableaux ou d’autres
5. mise à jour des sorties. types utilisateur.
Quand une variable est créée, une dimension peut être donnée
Attente pour définir un tableau. L’exemple suivant montre la variable MyVar
de type BOOL et qui a une dimension définie comme suit : [1 . . 10]
1 2 3 4 5 1 2 3
FOR i = 1 TO 10 DO
MyVar [i] := FALSE;
Temps de cycle programmé END_FOR;

Dans le cas où des bindings sont définis (le binding est une 2.1.2 Types utilisateurs : tableaux
liaison de données entre les ressources), les variables
consommées par cette ressource sont mises à jour après la lecture L’utilisateur peut définir des tableaux de types standards
des entrées, et les variables produites vers d’autres ressources CEI 61131 ou de types utilisateur. Un tableau a une ou plusieurs
sont envoyées avant la mise à jour des sorties. dimensions. Quand un tableau est défini, une variable peut être
créée avec ce type et une structure peut avoir un champ de ce
Si un temps de cycle est programmé, la machine virtuelle attend type. Les dimensions des tableaux sont des expressions
l’écoulement de ce temps avant de commencer l’exécution d’un constantes DINT positives et les indices des tableaux sont des
nouveau cycle. Le temps d’exécution des POU dépend du nombre expressions constantes DINT ou des variables.
d’étapes actives dans les programmes SFC, et des instructions Nota : les tableaux doivent être déclarés dans le dictionnaire avant de les utiliser dans
comme Jump, IF et Return, etc. les diagrammes de blocs fonctionnels (FBD).

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 030v2 – 4 est strictement interdite. – © Editions T.I.

VR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSP

_________________________________________________________ LANGAGES DE PROGRAMMATION POUR SYSTÈMES AUTOMATISÉS : NORME CEI 61131-3

Exemples 2.2.2 Expressions constantes entières courtes


1. Tableau unidimensionnel : Une expression constante entière courte représente une valeur
MyArrayType est un tableau de 10 BOOL. Sa dimension est défi- entière signée (8 bits) : entre – 128 et + 127.
nie de la manière suivante : [1..10].
Les expressions constantes entières courtes peuvent être
MyVar est de type MyArrayType. exprimées dans l’une des bases suivantes. Les expressions
Ok := MyVar[4]; constantes entières courtes doivent commencer par un préfixe qui
2. Tableau bi-dimensionnel : identifie la base utilisée :
MyArrayType2 est un tableau de DINT. Il a deux dimensions Base Préfixe Exemple
définies de la manière suivante : [1..10,1..3] décimale aucun 19
MyVar2 est de type MyArrayType2 hexadécimale "16#" 16#A1
MyVar2[1,2] := 100;
octale "8#" 8#28
3. Tableau d’un tableau :
binaire "2#" 2#0101_0101
MyVar3 est un tableau de MyArrayType; sa dimension est défi-
nie de la manière suivante [1..3] :


FOR I := 1 TO 3 DO 2.2.3 Expressions constantes entières courtes
FOR J := 1 TO 10 DO non signées et demi-mots
MyVar3[I][J] := FALSE;
Une expression constante entière courte non signée, ou
END_FOR; demi-mot, représente une valeur entière non signée (8 bits) : entre
END_FOR; 0 et 255.
Les expressions constantes entières courtes non signées et
2.1.3 Types utilisateur : structures demi-mots peuvent être exprimés dans l’une des bases suivantes.
Les utilisateurs peuvent définir les structures en utilisant les Les expressions constantes entières courtes non signées et
types standards CEI 61131 ou les types utilisateur. Une structure demi-mots doivent commencer par un préfixe qui identifie la base
est composée de sous-entrées appelées champ. Quand une struc- utilisée :
ture est définie, une variable peut être créée avec ce type. Base Préfixe Exemple
Exemples décimale aucun 19
MyStruct1 est composée de : hexadécimale "16#" 16#A1
Field1 qui est de type BOOL octale "8#" 8#28
Field2 qui est de type DINT binaire "2#" 2#0101_0101
MyStruct2 est composée de :
Field1 qui est de type DINT 2.2.4 Expressions constantes entières
Field2 qui est de type BOOL
Field3 qui est un tableau de 10 DINT Une expression constante entière représente une valeur entière
signée (16 bits) : entre – 32 768 et 32 767.
Field4 qui est de type MyStruct1
Les expressions constantes entières peuvent être exprimées
MyVar de type MyStruct2 peut être utilisé comme suit : dans l’une des bases suivantes. Les expressions constantes
Value1 := MyVar.Field1; (* Value1 est de type DINT *) entières doivent commencer par un préfixe qui identifie la base
Ok1 := MyVar.Field2; (* Ok1 est de type BOOL *) utilisée :
Tab[2] := MyVar.Field3[5]; (* Tab est un tableau
Base Préfixe Exemple
de DINT *)
Value2 := MyVar.Field3[8]; (* Value2 est de type décimale aucun – 260
DINT *) hexadécimale "16#" 16#FEFC
Ok2 := MyVar.Field4.Field1; (* Ok2 est de type BOOL *) octale "8#" 8#177374
binaire "2#" 2#0101_0101_0101_0101
2.2 Expressions constantes
Une expression constante est toujours relative à un type. La 2.2.5 Expressions constantes entières
même notation ne peut pas être utilisée pour représenter des non signées et mot
expressions constantes de type différent.
Une expression constante entière non signée ou mot représente
une valeur entière non signée (16 bits) : entre 0 et 65 535.
Le caractère souligné (’_’) peut être utilisé pour séparer des
groupes de chiffres. Il n’a aucune signification sémantique, Les expressions constantes entières non signées et mot peuvent
mais augmente la lisibilité des expressions constantes. être exprimées dans l’une des bases suivantes. Les expressions
constantes entières non signées et mot doivent commencer par un
préfixe qui identifie la base utilisée :
2.2.1 Expressions constantes booléennes Base Préfixe Exemple
Il existe seulement deux expressions constantes booléennes : décimale aucun + 33 000
– TRUE est équivalent à la valeur entière 1 ;
hexadécimale "16#" 16#80E8
– FALSE est équivalent à la valeur entière 0.
Les minuscules et les majuscules ne sont pas différenciées pour octale "8#" 8#100350
l’écriture des mots clefs true et false. binaire "2#" 2#0101_0101_0101_0101

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 030v2 – 5

VS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSP

LANGAGES DE PROGRAMMATION POUR SYSTÈMES AUTOMATISÉS : NORME CEI 61131-3 _________________________________________________________

2.2.6 Expressions constantes entières doubles octale "8#" 8#1756402


Une expression constante entière double représente une valeur binaire "2#" 2#1101_0001_0101_1101
entière signée (32 bits) : entre – 2 147 483 648 et + 2 147 483 647. _0001_0010_1011_1001_1101_
0001_0101_1101_0001_0010_
Les expressions constantes entières doubles peuvent être 1011_1001
exprimées dans une des bases suivantes. Les expressions
constantes entières doubles doivent commencer par un préfixe qui
identifie la base utilisée : 2.2.10 Expressions constantes réelles
Base Préfixe Exemple Les expressions constantes réelles peuvent utiliser une représen-
décimale aucun > – 908 tation décimale ou scientifique. Le point décimal (’.’) sépare la partie
entière de la partie décimale. Il doit obligatoirement être présent car
hexadécimale "16#" 16#1A2B3C4D il permet la différenciation des expressions constantes entières et
octale "8#" 8#1756402 réelles. La représentation scientifique utilise la lettre ’E’ pour sépa-
binaire "2#" 2#1101_0001_0101 rer la mantisse de l’exposant. L’exposant d’une expression
_1101_0001_0010_1011_1001 constante scientifique est un entier signé compris entre – 37 et + 37.

Exemples


2.2.7 Expressions constantes entières doubles 3.14159 – 1.0E + 12
non signées et mots doubles + 1.0 1.0E – 15
Une expression entière double non signée, ou mot double, – 789.56 + 1.0E – 37
représente une valeur entière double non signée (32 bits) : entre 0
L’expression "123" ne représente pas une expression constante
et 4 294 967 295.
réelle. Sa notation correcte est "123.0" .
Les expressions entières doubles non signées et mots doubles
peuvent être exprimés dans une des bases suivantes. Les expres-
sions entières doubles non signées et mots doubles doivent 2.2.11 Expressions constantes longues réelles
commencer par un préfixe qui identifie la base utilisée :
Les expressions constantes longues réelles peuvent utiliser une
Base Préfixe Exemple représentation décimale ou scientifique. Le point décimal (’.’)
décimale aucun + 908 sépare la partie entière de la partie décimale. Il doit obligatoire-
ment être présent car il permet la différenciation des expressions
hexadécimale "16#" 16#1A2B3C4D
constantes entières et réelles. La représentation scientifique utilise
octale "8#" 8#1756402 la lettre ’E’ pour séparer la mantisse de l’exposant. L’exposant
binaire "2#" 2#1101_0001_0101_1101 d’une expression constante scientifique est un entier signé
_0001_0010_1011_1001 compris entre 1.7E – 308 et 1.7E + 308. Une variable réelle longue a
5 chiffres significatifs.
2.2.8 Expressions constantes entières longues
2.2.12 Expressions constantes temporelles
Une expression constante entière longue représente une valeur
entière longue signée (64 bits) : entre – 9 223 372 036 854 775 808 Les expressions constantes temporelles représentent des
et 9 223 372 036 854 775 807. valeurs de temps comprises entre 0 seconde et 1 193 h 2 m
47 s 294 ms. La plus petite unité autorisée est la milliseconde. Voici
Les expressions constantes entières longues signées peuvent
les unités standards de temps utilisées dans les expressions
être exprimées dans une des bases suivantes. Les expressions
constantes temporelles :
constantes entières longues signées doivent commencer par un
préfixe qui identifie la base utilisée : – heure : la lettre "h" doit suivre le nombre d’heures ;
Base Préfixe Exemple – minute : la lettre "m" doit suivre le nombre de
minutes ;
décimale aucun – 908
– seconde : la lettre "s" doit suivre le nombre de
hexadécimale "16#" 16#1A2B3C4D secondes ;
octale "8#" 8#1756402 – milliseconde : les lettres "ms" doivent suivre le nombre de
binaire "2#" 2#1101_0001_0101_1101_ millisecondes.
0001_0010_1011_1001_1101_ L’expression constante temporelle doit commencer par le pré-
0001_0101_1101_0001_0010_ fixe "T#" ou "TIME#". Les préfixes et les lettres d’unité peuvent être
1011_1001 écrits en minuscules ou en majuscules. Certaines unités peuvent
ne pas apparaître.
2.2.9 Expressions constantes entières longues Exemples
non signées et mots longs
T#1H450MS 1 heure, 450 millisecondes
Une expression constante entière longue non signée, ou mot time#1H3M 1 heure, 3 minutes
long, représente une valeur entière longue non signée (64 bits) :
entre 0 et 18 446 744 073 709 551 615. L’expression "0" ne représente pas une valeur temporelle, mais
Les expressions constantes entières longues non signées et mots une expression constante entière.
longs peuvent être exprimés dans une des bases suivantes. Les
expressions constantes entières longues non signées et mots longs 2.2.13 Expressions constantes date
doivent commencer par un préfixe qui identifie la base utilisée :
Base Préfixe Exemple Les expressions constantes date représentent les valeurs date
de format année-mois-jour, séparées par des traits d’union. Les
décimale aucun + 908 expressions constantes date possible sont entre 1970-01-01 et
hexadécimale "16#" 16#1A2B3C4D 2038-01-18 GMT.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 030v2 – 6 est strictement interdite. – © Editions T.I.

VT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSQ

Norme CEI 61499 : programmation


distribuée et événementielle des procédés

par Nicolas JOUVRAY


ICS Triplex France, ISaGRAF

1.
2.
Format principal de programme CEI 61499......................................
Format de bloc fonctionnel CEI 61499 de base ..............................
S 8 031 - 2
— 2

3. Format de bloc fonctionnel CEI 61499 composite ......................... — 3
4. Format principal de bloc fonctionnel CEI 61499 ............................ — 3
5. Implémentation du qualificatif WITH ................................................. — 4
6. Temps d’exécution de cycle des programmes CEI 61499 ............ — 4
Pour en savoir plus ........................................................................................... Doc. S 8 031

es langages de programmation des systèmes automatisés sont décrits


L dans deux normes complémentaires :
– la norme CEI 61131-3 fait l’objet de l’article [S 8 030v2] ;
– la norme CEI 61499 est décrite dans l’article présent.
La norme CEI 61499 est une méthode permettant la distribution de blocs
fonctionnels CEI 61499 individuels définis pour un programme CEI 61499
répartis sur de multiples ressources. Les blocs fonctionnels standards
CEI 61499 sont disponibles avec la bibliothèque CEI 61499.
Dans un projet CEI 61499, on peut créer des programmes dans lesquels on
insère des blocs fonctionnels de base CEI 61499 et des blocs fonctionnels
composites CEI 61499.
L’implémentation de CEI 61499 dans ISaGRAF est basée sur les normes
CEI 61499-1 et CEI 61499-2.
p。イオエゥッョ@Z@ェオゥョ@RPPX

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 031 – 1

VU

VV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSR

Réalisation technologique
du GRAFCET

par Daniel DUPONT


Docteur en automatique
Enseignant chercheur à l’École supérieure des techniques industrielles et des textiles
(ESTIT)
et David DUBOIS
Docteur en automatique et informatique industrielle
Chargé de cours à l’ESTIT S
1. Vers la réalisation technologique........................................................ S 8 032 – 2
1.1 Du GRAFCET fonctionnel au GRAFCET technologique............................ — 2
1.2 Cas particuliers ............................................................................................ — 3
1.3 Exemple d’application................................................................................. — 5
1.4 Dialogue entre GRAFCET ............................................................................ — 6
1.5 Conclusion.................................................................................................... — 9
2. Équation logique d’une étape............................................................... — 10
2.1 Rappel des règles d’évolution .................................................................... — 10
2.2 Équation logique d’une étape..................................................................... — 11
2.3 Choix de séquences..................................................................................... — 12
2.4 Séquences parallèles................................................................................... — 12
2.5 Cas particulier : GRAFCET ou boucle à deux étapes ................................ — 13
2.6 Gestion des actions ..................................................................................... — 14
2.7 Prise en compte des modes de marche/arrêt............................................ — 15
3. Technologies de réalisation .................................................................. — 17
3.1 Logique câblée............................................................................................. — 17
3.2 Automates programmables industriels (API)............................................ — 20
3.3 Système informatique................................................................................. — 22
3.4 Conclusion.................................................................................................... — 24
Pour en savoir plus........................................................................................... Doc. S 8 032

fin de réaliser l’implantation technologique du GRAFCET sur différents sup-


A ports (câblés ou programmés), une conception en trois temps est préconisée :
— l’analyse fonctionnelle qui débouche sur l’élaboration d’un GRAFCET indé-
pendant de la réalisation technologique ;
— la transcription du GRAFCET en équations logiques utilisables lors de la
réalisation technologique ;
— l’implantation des équations logiques sur le support de réalisation câblé ou
programmé.
Cette démarche met en évidence les difficultés de conception fonctionnelle
pour des applications complexes et propose une solution par l’intermédiaire
d’une décomposition en modules moins complexes et de dialogues entre les
GRAFCET les décrivant.
La partie fonctionnelle ne prenant en compte que le mode de fonctionnement
normal, la notion des modes de marche/arrêt est intégrée dans l’élaboration des
équations logiques et de ce fait intervient dans la réalisation technologique.
Cet article vient en complément des articles sur le GRAFCET, notamment Outil de description
p。イオエゥッョ@Z@ュ。イウ@RPPR

des automatismes séquentiels : le GRAFCET [R 7 250].

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 032 − 1

VW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSR

RÉALISATION TECHNOLOGIQUE DU GRAFCET ________________________________________________________________________________________________

1. Vers la réalisation Supposons maintenant que la montée-descente de la presse soit


commandée par un vérin simple effet (figure 3). L’arrivée d’air en A+
technologique provoque la sortie du vérin et comprime le ressort. Le ressort en
l’absence d’air en A+ provoque la rentrée du vérin et donc la montée
de la presse. La figure 3b fournit le GRAFCET technologique. L’étape 2
du GRACET de la figure 3b ne possède aucune action associée car le
ressort joue son rôle de rappel et la partie commande n’a aucune action
1.1 Du GRAFCET fonctionnel à envoyer vers la partie opérative. Ce GRAFCET, possédant deux éta-
au GRAFCET technologique pes (2 et 0) qui se suivent sans action associée, peut se transformer
(comme bien souvent) en supprimant l’étape 2 (figure 3c). Dans ce
cas, il ne faut pas oublier d’ajouter la condition h (qui peut être considé-
rée comme la condition initiale) dans la réceptivité associée à la transi-
Le GRAFCET (graphe de commande étapes-transitions) est un tion qui suit l’étape 0 ; sinon, l’opérateur peut réappuyer sur le bouton
outil graphique de représentation du cahier des charges d’un de marche (m) pendant le retour du vérin (donc étape 0 active), ce qui
automatisme séquentiel. Il est à la fois simple à utiliser et rigou- fait ressortir le vérin bien que la rentrée ne soit pas terminée.
reux sur le plan formel.
Ce dernier exemple est cependant particulier car bien souvent, le
Il est basé sur les notions d’étapes auxquelles sont associées GRAFCET de niveau 2 possède plus d’étapes que le GRAFCET de
des actions et de transitions auxquelles sont associées des


niveau 1. En effet, les spécifications technologiques et opérationnelles
réceptivités. Il décrit les ordres émis par la partie commande vers amènent des contraintes supplémentaires. Toutefois, il montre que le
la partie opérative en mettant en évidence les actions engen-
GRAFCET de niveau 2 peut être différent du GRAFCET de niveau 1.
drées et les événements qui les déclenchent. Cette représenta-
tion est étroitement liée à la notion d’évolution du processus.

0
Pour parvenir à la réalisation de la partie commande, il est
conseillé de diviser le cahier des charges en deux niveaux successifs
et complémentaires.
m
Le premier niveau décrit le comportement de la partie commande
en fonction de l’évolution de la partie opérative : c’est le rôle des spé-
cifications fonctionnelles décrivant ce que doit faire l’automatisme. À 1 D
ce niveau, les contraintes technologiques (des actionneurs, des cap-
Montée
teurs…) n’interviennent pas, seules comptent les fonctionnalités.
Presse
Le second niveau renseigne sur la nature technologique des b
actionneurs et des capteurs ; on y trouve donc leurs caractéristiques Descente
et les contraintes qui y sont associées. C’est aussi à ce niveau que
les spécifications opérationnelles décrivant les conditions d’utilisa- 2 M
tion de l’application apparaissent.
L’automaticien, confronté à un problème de conception et de réa- h
lisation d’un automatisme, aborde donc l’étude en deux phases suc-
cessives correspondant aux deux niveaux de spécification :
— un niveau fonctionnel ; a principe b GRAFCET fonctionnel
— un niveau technologique.
Cette approche en deux niveaux se retrouve dans la conception Figure 1 – Commande d’une presse
du GRAFCET :
— un premier GRAFCET dit fonctionnel ou de niveau 1, qui ne
prend en compte que la partie fonctionnelle des spécifications et qui
fait donc abstraction de toute réalisation technologique. Ainsi, s’il 0
est bien conçu, il est valable pour tout type de réalisation ;
— un deuxième GRAFCET dit technologique ou de niveau 2, qui,
en s’appuyant sur le GRAFCET de niveau 1, intègre les contraintes m
technologiques et opérationnelles.
A+
Exemples : 1 A+
Une application simplifiée, la commande d’une presse (figure 1),
permet d’illustrer cette approche.
Sur ordre (m) de l’opérateur, la presse descend (D), puis une fois arri- b
vée en bas (b), elle remonte (M) jusqu’à la position haute (h). Le A–
GRAFCET fonctionnel de cette application est fourni par la figure 1b. Il
est dit GRAFCET de niveau 1 car il ne fait intervenir que l’aspect fonction- 2 A–
nel sans tenir compte d’aucune contrainte technologique (la technologie
utilisée pour les actionneurs et les capteurs n’est pas utile à ce niveau).
Supposons maintenant que la technologie utilisée soit une technolo- h
gie pneumatique et que la montée-descente de la presse soit comman-
dée par un vérin double effet (figure 2). L’arrivée d’air en A+ (resp. en
a principe b GRAFCET technologique
A–) provoque la sortie du vérin et donc la descente de la presse (resp.
la rentrée du vérin et donc la montée de la presse). Le GRAFCET tech-
nologique de cette application est la figure 2b. Figure 2 – Commande d’un vérin double effet

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 032 − 2 © Techniques de l’Ingénieur, traité Informatique industrielle

VX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSR

_______________________________________________________________________________________________ RÉALISATION TECHNOLOGIQUE DU GRAFCET

1.2 Cas particuliers


A+

Il est bien souvent intéressant, sinon indispensable, de modifier le


GRAFCET de niveau 1 afin d’être sûr d’avoir un GRAFCET réelle-
Ressort ment indépendant de la technologie et donc de ne pas influencer les
choix technologiques (si la partie opérative n’est pas déjà réalisée)
et aussi d’être sûr d’avoir un GRAFCET qui répondra à la technolo-
gie (si la partie opérative est déjà réalisée).

1.2.1 Gestion des fronts

a principe Dans certains GRAFCET, apparaissent au niveau des réceptivités


des informations qui font intervenir l’apparition ou la disparition
d’événements plutôt que de tester la présence ou l’absence d’une


0 information. C’est le cas lorsque l’information est déjà présente
avant que l’action soit commandée.

m Exemple : commande d’un moteur (figure 4)


Lorsque l’opérateur demande la rotation, l’information d (capteur de
position) est déjà vraie. De fait, si la rotation ne doit faire qu’un tour, on
1 A+ 0 ne peut pas tester d comme fin d’action ; il faut tester l’apparition de
l’information d. Cela est fait en testant ce qu’on appelle un front mon-
tant sur d. La figure 4b présente le GRAFCET fonctionnel. La flèche
b m.h montante devant l’information d affirme que c’est le passage du niveau
0 (faux) au niveau 1 (vrai) qui permet de franchir la transition entre
l’étape 1 et l’étape 0 : on parle de front montant.
2 1 A+ D’un point de vue technologique, il n’est pas possible de tester direc-
tement les fronts. Il est nécessaire de les décomposer en deux étapes :
— pour un front montant (apparition d’information), on teste d’abord
h b
le niveau bas puis le niveau haut ;
— pour un front descendant (disparition d’information), on teste
c GRAFCET simplifié
d’abord le niveau haut puis le niveau bas.
b GRAFCET technologique
L’ analyse du GRAFCET de niveau 2 conduit au GRAFCET de la figure
4c. L’étape 1 est doublée afin de pouvoir tester en premier lieu
Figure 3 – Commande d’un vérin simple effet
l’absence de l’information d (réceptivité de la transition entre l’étape 1
et 2), puis la présence de l’information d (réceptivité entre l’étape 2 et
0), ce qui revient à tester l’apparition de l’information d.
Rotation Nota : dans un tel cas, il ne faut pas oublier de répéter les actions dans l’étape qui est
« doublée ».

d 1.2.2 Exclusivité au niveau des divergences

Certains GRAFCET de niveau 1 présentent des choix de séquen-


ces sans gérer l’exclusivité de ces choix (figure 5) Or, le GRAFCET
0
a principe autorise l’activation de plusieurs branches.

0 1 R

1 R
m d

1 R 2 R a c

↑d d 2 D 3 M

b GRAFCET fonctionnel c GRAFCET de gestion de front b h

Figure 4 – Commande d’un moteur Figure 5 – Début de divergence

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 032 − 3

VY
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSR

RÉALISATION TECHNOLOGIQUE DU GRAFCET ________________________________________________________________________________________________

simultanément franchies, donc les étapes 2 et 3 sont activées simul-


tanément et les actions associées aux étapes 2 et 3 (D et M) sont
envoyées simultanément à la partie opérative.
G D md mg
Exemple : soit un chariot (figure 6) pouvant se déplacer entre
deux positions (droite et gauche). Si au départ l’opérateur demande le
déplacement à droite (md), le chariot se déplace à droite (D) jusqu’à la
position droite (d) et s’il demande le déplacement à gauche (mg), le
g d chariot se déplace à gauche (G) jusqu’à la position gauche (g).
a principe Si au départ (figure 6b) l’opérateur appuie simultanément sur md et
mg, alors les étapes 2 et 3 sont activées simultanément (règle 4 d’évo-
lution du GRAFCET, § 2.1). De fait, les actions D et G sont vraies simul-
tanément et on demande au chariot de se déplacer vers la droite et
vers la gauche simultanément, ce qui évidemment n’est pas une solu-
1 tion viable pour la partie opérative (risque de détérioration de l’action-
neur). Il faut donc interdire, dans le GRAFCET, le fait que les étapes
2 et 3 puissent être activées simultanément (figure 6c).
Le fait de mettre md ⋅ g (resp. mg ⋅ d ) comme réceptivité entre les


md mg
étapes 1 et 2 (resp. 1 et 3) interdit l’activation de l’étape 2 (resp. étape
3) et donc la demande de déplacement à droite (resp. à gauche) si le
2 D 3 G chariot n’est pas à gauche (resp. à droite). Comme le chariot ne peut
pas être physiquement à droite et à gauche simultanément, il y a exclu-
sivité dans le choix de séquence.
d g Pour certaines applications, il ne peut pas y avoir de choix exclusif
basé sur les propriétés physiques de la partie opérative ; dans ce cas, il
est possible de donner une priorité à une séquence (figure 6d).
b activation simultanée possible Ici, le fait de mettre md ⋅ mg entre l’étape 1 et 2 fait que, si l’opéra-
teur appuie simultanément sur md et mg, alors cette réceptivité est
fausse et donc uniquement l’étape 3 sera activée. La priorité est donc
donnée à la séquence de droite.
1

1.2.3 Gestion des simultanéités


en fin de convergence
md . g mg . d
Soit la partie de GRAFCET de la figure 7a. Lorsque les étapes 10
2 D 3 G
et 20 sont actives simultanément, alors les actions associées (A et B)
sont vraies simultanément. La désactivation des étapes ne se fera
que lorsque les informations a (fin de l’action A) et b (fin de l’action
B) seront vraies simultanément.
d g
Que se passe-t-il si l’une des actions se termine avant l’autre (par
exemple, l’action A) ?
c interdiction d'activation simultanée Compte tenu du GRAFCET, la partie commande continue à
envoyer cette action à la partie opérative, ce qui peut être domma-
geable (actionneur en butée). Il est donc nécessaire de trouver une
parade à ce problème. Le fait d’associer des actions conditionnelles
1 aux étapes 10 et 20 le règle (figure 7b) car effectivement l’action A
(resp. B) s’arrête quand l’information a fin de l’action A (resp. b fin
de l’action B) est vraie.
Toutefois, un autre problème persiste : même si d’un point de vue
md . mg mg
fonctionnel, cette solution est tout à fait correcte, elle implique des
contraintes au niveau de la réalisation technologique des capteurs
(a et b) de fin d’action.
2 D 3 G
En effet, supposons que l’action A corresponde par exemple à un
déplacement de chariot. Lorsque ce déplacement entraîne le chariot
d g en position a, le capteur passe à 1 et la partie commande stoppe
l’envoi du déplacement. Toutefois, par inertie, le chariot ne s’arrête
pas immédiatement et risque de dépasser la zone de détection du
d priorité au déplacement à gauche capteur a. De fait, a repasse à 0 et l’action A est de nouveau vraie car
l’étape 10 est toujours active. Donc le chariot repart en s’éloignant
de la position a et la réceptivité a ⋅ b ne pourra plus être vraie. De
Figure 6 – Commande du déplacement latéral d’un chariot
fait, les étapes 10 et 20 resteront toujours actives, entraînant les
actions A et B (d’où risque de butée, de casse, etc.). Il faut utiliser ici
des capteurs à contacts maintenus.
Lorsque l’étape 1 est active et si les réceptivités a et c sont vraies La solution (figure 7c) consiste à ajouter des étapes de synchroni-
simultanément, alors la transition entre les étapes 1 et 2 et la transi- sation en fin de séquences simultanées qui garantissent un
tion entre les étapes 1 et 3 sont simultanément franchissables. La GRAFCET de niveau 1 correct sans implication sur une quelconque
règle 4 d’évolution du GRAFCET (§ 2.1) nous dit alors qu’elles sont réalisation technologique au niveau des capteurs a et b.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 032 − 4 © Techniques de l’Ingénieur, traité Informatique industrielle

WP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSR

_______________________________________________________________________________________________ RÉALISATION TECHNOLOGIQUE DU GRAFCET

Quand les deux séquences sont terminées (étapes 11 et 21 actives


simultanément), alors l’étape 2 est activée et les étapes de synchro-
nisation 11 et 21 sont désactivées.
Au niveau de la transition avant l’étape 2, il faut mettre une récep-
10 A 20 B tivité toujours vraie (1) et non a ⋅ b , sinon on retombe dans le même
travers que précédemment.

a.b 1.3 Exemple d’application

2 L’exemple de la figure 8 permet de faire quelques remarques sur


la réalisation de GRAFCET fonctionnels minimisant l’implication sur
les GRAFCET technologiques correspondants. Lorsque l’opérateur
appuie sur le départ cycle (m), les chariots partent pour un aller-
a retour.

a b
■ Solution 1
Si l’étape 0 est active et si m est vraie, chaque chariot part pour un S
aller-retour (figure 9a). Le premier qui termine son trajet (par exem-
ple, le chariot 1) réactive l’étape initiale 0. Supposons que le chariot
10 A 20 B 2 se trouve dans l’étape 22 (en phase de retour) et que l’opérateur
appuie sur le départ cycle. De fait, la transition suivant l’étape 0 est
franchie, ce qui entraîne l’activation des étapes 11 et 21. Comme
l’étape 22 est active, les actions D2 et G2 sont envoyées simultané-
ment à la partie opérative, d’où dysfonctionnement et risque de
a.b
casse.

■ Solution 2
2
Cette fois-ci (figure 9b), l’ordre de départ cycle n’est effectif que si
les chariots se trouvent dans les conditions initiales, ce qui interdit
le problème précédent. Toutefois, on retombe sur le problème ren-
b contré précédemment (§ 1.2.3) : en effet, les contacts g1 et g2 doi-
vent être maintenus et donc ce GRAFCET impose une contrainte
technologique à la réalisation.
Il faut remarquer que même si ces deux GRAFCET (figure 9) sont
corrects d’un point de vue syntaxique, généralement les séquences
simultanées se terminent avec des étapes de synchronisation (fins
10 A 20 B de séquences simultanées, § 1.2.3).

■ Solution 3
a b
L’introduction des étapes de synchronisation 13 et 23 (figure 10a)
permet de supprimer le test des conditions initiales au niveau de la
11 21
réceptivité associée à la transition suivant l’étape 0.

■ Solution 4
L’introduction de deux étapes initiales (figure 10b) permet de
supprimer les étapes de synchronisation (13 et 23). En effet, les éta-
1 pes 10 et 20 jouent aussi le rôle d’étapes de synchronisation.
Cette solution possède une qualité supplémentaire qui permet de
séparer facilement ce GRAFCET en deux GRAFCET indépendants
2
(figure 10c). La synchronisation des deux GRAFCET est réalisée en
testant l’activité de l’étape initiale de l’autre GRAFCET (variables
X10 et X20).
c

Figure 7 – Fin de divergence

G1 D1 m G2 D2
Lorsque l’étape 10 est active, l’action A est vraie jusqu’au moment
où l’information a est vraie. Dans ce cas, la transition entre l’étape C1 C2
10 et 11 est franchie, l’étape 11 est activée et l’étape 10 désactivée.
L’action A est stoppée. L’étape 11 permet à la séquence de gauche
d’attendre que la séquence de droite se termine (étape 21). Si la g1 d1 g2 d2
séquence de droite se termine en premier, l’étape 21 est activée et
permet d’attendre la fin de la séquence de gauche (étape 11 active). Figure 8 – Aller-retour de deux chariots

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 032 − 5

WQ

WR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSU

Microcontrôleurs : principes
et aspects temps réel

par Roger D. HERSCH


Professeur à l’École Polytechnique Fédérale de Lausanne
Département d’informatique

1. Microprocesseurs et microcontrôleurs ............................................. S 8 035 - 2



1.1 Système informatique minimal.................................................................. — 2
1.2 Exécution de programme ........................................................................... — 3
1.3 Catégories d’instructions ............................................................................ — 6
1.4 Le concept de pile........................................................................................ — 9
1.5 Adressage d’opérandes .............................................................................. — 10
1.6 Exemple de microcontrôleur : le 68331 ..................................................... — 11
2. Entrées-sorties .......................................................................................... — 11
2.1 Signaux d’interface du processeur 68000 ................................................. — 11
2.2 Décodage d’un espace d’entrée-sortie ...................................................... — 12
2.3 Décodage d’une position ............................................................................ — 13
2.4 Ports d’entrée-sortie sur microcontrôleurs................................................ — 14
2.5 Synthèse de signaux de sélection sur microcontrôleurs ......................... — 15
3. Interruptions.............................................................................................. — 16
3.1 Principes ....................................................................................................... — 16
3.2 Mécanismes d’interruption......................................................................... — 17
3.3 Interruptions sur microcontrôleur 68331................................................... — 18
4. Gestion du temps et des événements................................................ — 18
4.1 Principes ....................................................................................................... — 18
4.2 Lecture du compteur libre........................................................................... — 19
4.3 Capture d’événements en entrée ............................................................... — 20
4.4 Synthèse de signaux de sortie ................................................................... — 22
4.5 Décompte d’événements extérieurs .......................................................... — 23
4.6 Synthèse de signaux à largeur d’impulsion variable
(pulse width modulation)............................................................................ — 23
5. Conclusions ............................................................................................... — 23
Référence bibliographiques ........................................................................... — 27

es microcontrôleurs sont et continueront à être largement utilisés pour les


L applications de régulation et de commande de processus. Ce sont de vérita-
bles micro-ordinateurs intégrés sur une puce de silicium qui comportent une
unité centrale, de la mémoire ou une interface à de la mémoire externe, des
ports d’entrée-sortie, une interface pour lignes série (RS-232) ainsi qu’une unité
de gestion de temps et d’événements. Les signaux d’entrée-sortie du micro-
contrôleur peuvent être facilement interfacés à des coupleurs optiques afin
d’interfacer des capteurs et des actuateurs industriels.
Pratiquement tous les fabricants de microprocesseurs (Motorola, Intel, Hitachi,
p。イオエゥッョ@Z@、←」・ュ「イ・@RPPQ

Texas Instrument, Toshiba, ST Microélectronique-ex SGS-Thomson, etc.) propo-


sent une ou plusieurs gammes de microcontrôleurs. Les microcontrôleurs 4 bits
servent essentiellement à des tâches simples. De tels microcontrôleurs sont par

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 035 − 1

WS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSU

M ICROCON TRÔLEURS : PRIN CIPES ET ASPECTS TEM PS RÉEL ___________________________________________________________________________________

exemple utilisés au sein d’objets ménagers grand public, tels que des cuisiniè-
res, machines à laver ou aspirateurs. Les microcontrôleurs 8 bits sont capables
de répondre à des exigences plus élevées et sont utilisés pour la commande de
dispositifs informa-tiques tels que des joysticks, tablettes graphiques et
modems. Ils sont également utilisés pour la programmation de petits robots
ainsi que pour l’acquisition de données (convertisseurs A/D, etc.). Les microcon-
trôleurs 16/32 bits sont utilisés pour la commande de machines ou le contrôle
de processus, lorsque les contraintes temps réel sont sévères ou lorsque les
algorithmes de régulation nécessitent une puissance de calcul importante. Des
variantes de microcontrôleurs avec canaux d’accès mémoire direct offrant un
grand débit entre mémoire et entrées-sorties sont utilisés dans les applica-
tions multimédia et pour le contrôle d’imprimantes laser.

S 1. Microprocesseurs La mémoire est utilisée pour le stockage d’instructions, de don-


nées ainsi que pour la pile(2). La mémoire est constituée de cellules
et microcontrôleurs de mémorisation binaires, groupées en mot de 8, 16, 32 ou 64 bits.
La mémoire est adressée par mots de 8 bits, c’est-à-dire par octets
(bytes). Une position mémoire est spécifiée par l’adresse d’un octet.
Nota : (2) la pile est une portion mémoire réservée pour sauver le contexte d’exécution
Dans ce paragraphe, nous expliquons d’abord le fonctionnement d’une procédure (voir § 1.4).
de base d’un système microprocesseur, puis présentons comme
exemple l’architecture du microcontrôleur Motorola 68331. Les entrées-sorties permettent au processeur d’accéder au
monde extérieur par l’intermédiaire de cycles de lecture ou d’écri-
ture sur des interfaces d’entrée-sortie (interface clavier, interface
écran, interface disque, interface ligne série, etc.). Une interface en
1.1 Système informatique minimal sortie est généralement formée d’un registre se trouvant à une cer-
taine position de l’espace d’adressage du processeur. Une interface
en entrée comprend une porte 3 états, accessible par un cycle de
D’un point de vue matériel, un système informatique minimal est lecture à une certaine position de l’espace d’adressage du proces-
constitué d’un processeur, d’une mémoire et d’entrées-sorties seur.
(figure 1). Le bus système comporte les lignes permettant de relier entre eux
Le processeur (figure 3) a pour mission de rechercher les instruc- le processeur, la mémoire et les entrées-sorties. Il comprend les
tions qui sont en mémoire, de les décoder et de les exécuter. À cette lignes d’adresses provenant du processeur, les lignes de données
fin, il contient un compteur ordinal pointant à l’adresse mémoire où bidirectionnelles et les lignes de contrôle. Le cœur d’un système
se trouve la prochaine instruction à rechercher et à exécuter. Il con- informatique est formé par l’interaction entre le processeur et sa
tient également un registre d’instruction qui permet de stocker le mémoire (figure 2).
code de l’instruction (code opératoire) recherchée en mémoire. Le compteur ordinal contient l’adresse de la position mémoire de
Après chaque recherche d’instruction, le compteur ordinal est incré- l’instruction à exécuter. Cette adresse est placée sur les lignes
menté afin de pointer à la prochaine instruction(1). Les registres de d’adresses ; la position mémoire correspondante, qui contient le
données permettent de stocker les opérandes nécessaires aux ins- code de l’instruction, est sélectionnée, lue, placée sur les lignes de
tructions de calcul ainsi que les résultats lors d’opérations logiques données et mémorisée dans le registre d’instruction du processeur
et arithmétiques. Les registres d’adresses permettent de stocker les (figure 3).
adresses d’opérandes qui se trouvent en mémoire. Une unité arith-
métique et logique permet d’effectuer les opérations arithmétiques Le processeur décode le code de l’instruction. En fonction de la
et logiques les plus courantes. valeur de ce code, il effectue des cycles d’accès mémoire supplé-
mentaires pour chercher les opérandes, effectuer l’opération désirée
Nota : (1) plus précisément, après chaque recherche d’octet ou de mot mémoire faisant
partie d’une instruction, le compteur ordinal est incrémenté afin de pointer sur la suite de et stocker le résultat à la position mémoire ou dans le registre spéci-
la même instruction ou sur l’instruction suivante. fié par le code de l’instruction.

Interfaces d'entrée-sortie (I/O)

Interfaces
Interface Interface pour la
Interface
Processeur Mémoire ligne série entrées- commande
disque
RS232C sorties de dispositifs
mécaniques

Bus système (adresses, données, lignes de contrôle)

Figure 1 – Architecture d’un système informatique minimal

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 035 − 2 © Techniques de l’Ingénieur, traité Informatique industrielle

WT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSU

__________________________________________________________________________________ M ICROCON TRÔLEURS : PRIN CIPES ET ASPECTS TEM PS RÉEL

(0)

Lignes d’adresses
Tableau 1 – Signification d’instructions de transfert
et de saut
Mémoire Processeur
Signaux Instruction en assembleur Signification
Zone programme Compteur ordinal
de contrôle
Zone données MOVE.B #QUANTITE, D0 Chargement de QUANTITE dans le
registre D0, QUANTITE est une valeur
Pile Registre d’instructions
immédiate 8 bits qui se trouve dans
l’instruction

Lignes de données bidirectionnelles Vers les interfaces MOVE.B D0, PERIPH Transfert du contenu du registre D0
d’entrée-sortie (8 bits) vers l’adresse d’entrée-sortie
PERIPH
BRA ETIQUETTE Saut relatif à l’instruction se trouvant à
Figure 2 – Architecture von Neumann (mémoire banalisée)
l’adresse spécifiée par ETIQUETTE
(adresse symbolique représentant une
adresse absolue)

Lignes d’adresses
24
Étudions un petit programme qui engendre un son dans le haut-
parleur du système décrit à la figure 7. La seule action du pro-
gramme consiste à envoyer de manière répétitive sur le registre de

Lignes sortie haut-parleur un signal binaire alternatif (1,0,1,0...) afin de faire
de contrôle 32 bits PC Compteur ordinal vibrer celui-ci. Selon l’état du signal écrit sur le bit Q0 du registre de
Adresse valide sortie, la membrane du haut-parleur est attirée ou relâchée. Lors
32 bits D0 Registre de données Remise
Données transférées à zéro Reset d’un cycle d’écriture sur un registre d’entrée-sortie, celui-ci ne
(acquittement) mémorise la valeur se trouvant sur les lignes de données que si
16 bits I Registre d’instruction l’adresse apparaissant sur les lignes d’adresses correspond à sa
Lecture/écriture
propre adresse. Si c’est le cas, le décodeur d’adresses engendre un
16
Lignes de données flanc montant sur l’entrée horloge du registre. Seul le bit de poids 20
(Q0) est utilisé pour commander la membrane du haut-parleur.
Dans le programme BruitHP (figure 4), la colonne de gauche indi-
Figure 3 – Architecture d’un processeur élémentaire 16/32 bits que l’adresse où se trouve l’instruction située sur la même ligne. La
deuxième colonne donne le code hexadécimal du code machine
associé à l’instruction assembleur située sur la même ligne. La troi-
Le compteur ordinal détermine, en nombre de bits, la taille de sième colonne décrit l’instruction en langage assembleur. La qua-
l’espace mémoire directement accessible. Les processeurs dits trième colonne est réservée aux commentaires.
8 bits ont, en général, un compteur ordinal 16 bits permettant Sur ce processeur, les instructions sont formées de 2 ou 4 octets.
d’adresser 64 kilo-octets (216 octets). Les lignes de données Chaque mot de 16 bits (2 octets) est représenté par 4 chiffres hexa-
(figure 3) sont au nombre de 8, 16 ou 32. Les instructions recher- décimaux qui représentent chacun 4 bits. Par exemple, la première
instruction est représentée par les mots mémoire H’103C et H’0000,
chées en mémoire et les données lues ou à écrire en mémoire tran-
qui en binaire sont respectivement codés par B’0001’0000’0011’1100
sitent sur les lignes de données. Les lignes d’adresses permettent au et B’0000’0000’0000’0000. Les chiffres hexadécimaux sont les chif-
processeur de spécifier la position mémoire ou l’interface d’entrée- fres 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E et F, où les lettres A à F sont
sortie sélectionnée pour une opération d’écriture ou de lecture. Les utilisées comme chiffres pour représenter les valeurs 10 à 15. Un
lignes de contrôle synchronisent les échanges d’information entre nombre hexadécimal est précédé de la lettre H ’ et un nombre
binaire de la lettre B ’.
processeur, mémoire et interfaces d’entrée-sortie. La ligne adresse
valide est activée lorsque les adresses sont valides. La ligne lecture/ Dans les figures 7, 8, 9 le code du programme stocké en mémoire
écriture indique s’il s’agit d’un transfert de données en lecture ou en est représenté selon la figure 5.
écriture. La ligne d’acquittement données transférées permet aux Chaque case horizontale correspond à un mot mémoire 16 bits,
mémoires et interfaces d’entrée-sortie de signaler que le transfert qui contient soit le code d’une instruction (par exemple MOVE.B ,
est terminé. Un processeur simple est présenté à la figure 3. L’acti- D0), soit une valeur immédiate (par exemple #HPOFF), soit une
adresse d’entrée-sortie (par exemple HP), soit le code de l’instruc-
vation de la ligne de remise à zéro (reset) remet à zéro la valeur du tion de saut (H’6000) auquel s’additionne un déplacement relatif (−
compteur ordinal et force le processeur à redémarrer. H’12=H’EE) sur 8 bits (c’est-à-dire H’60EE dans l’instruction BRA
OSCIL).
À l’exécution du programme, la valeur #HPOFF définie comme 0
est transférée dans le registre D0. Ensuite le contenu de celui-ci est
1.2 Exécution de programme transmis au registre de sortie HP commandant la membrane du
haut-parleur. La valeur #HPOFF a pour effet de faire relâcher la
membrane. La même action est répétée avec la valeur #HPON, ce
Examinons en détail le fonctionnement du microprocesseur décrit qui a pour effet d’attirer la membrane. Afin d’engendrer un son con-
tinu, ce programme boucle continuellement.
à la figure 3, c’est-à-dire la nature et le séquencement des cycles de
recherche et d’exécution d’instructions. Bien que les instructions Sur les processeurs 16 et 32 bits, il est nécessaire de spécifier
dans l’instruction la taille de l’opérande, par exemple MOVE.B,
machines soient codées en binaire, on les représente de manière
MOVE.W ou MOVE.L pour des instructions de chargement de 8, res-
symbolique par des mots compréhensibles par l’être humain (lan- pectivement 16 et 32 bits. Les instructions en langage assembleur
gage assembleur). Admettons que le processeur considéré possède sont exprimées selon la notation de Motorola pour la famille des
les instructions décrites au tableau 1. processeurs 68000.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 035 − 3

WU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSU

M ICROCON TRÔLEURS : PRIN CIPES ET ASPECTS TEM PS RÉEL ___________________________________________________________________________________

TITLE BruitHP ; titre du programme


; définition des constantes
HP EQU 0x8040 ; constante adresse haut-parleur (FFFF8040)
HPOFF EQU 0 ; constante membrane relachée
HPON EQU 1 ; constante membrane attirée
; code
; hexa- programme
;adresse: décimal: assembleur: ; commentaires:
OSCIL: ; étiquette marquant le début du programme
0000 103C MOVE.B #HPOFF, D0 ; charge la valeur HPOFF (8 bits) dans le registre D0
0000
0004 11C0 MOVE.B D0, HP ; transfère le contenu du registre D0 (8 bits) à l’adresse
8040 ; de l’interface haut-parleur
0008 103C MOVE.B #HPON, D0 ; charge la valeur HPON dans le registre D0


0001
000C 11C0 MOVE.B D0, HP ; transfère le contenu du registre D0 à l’adresse
8040 ; de l’interface haut-parleur
00010 60EE BRA.B OSCIL ; saute de -H’12 positions pour recommencer au
; début, c’est-à-dire à la position mémoire définie par
; l’étiquette OSCIL (position 0)
; H’EE représente le nombre -H’12, c’est-à-dire -18
END ; fin du programme

Figure 4 – Programme BruitHP

Adresse Code Écriture


de l’octet hexadécimal du contenu
Lecture de l’accumulateur
Représentation Instruction Lecture de l’adresse à l’adresse
symbolique correspondante du code destination d’entrée-sortie
du code de l’instruction de l’instruction d’entrée-sortie H'FFFF8040

Adresses 4 6 H’8040
Mot mémoire 0000 MOVE.B ,D0 103C
MOVE.B #HPOFF,D0 Données H’11C0 H’8040 0000
Mot mémoire 0002 #HPOFF 0000
Type Lecture mémoire, Lecture mémoire, Écriture espace
de cycle Zone programme Zone programme d’entrée-sortie,
Figure 5 – Représentation en mémoire de l’instruction MOVE.B Zone données
#HPOFF,D0
Figure 6 – Cycles d’accès à la mémoire et à l’espace d’entrée-sortie,
en zone programme et en zone de données
L’exécution d’un programme consiste en une succession de
cycles d’accès mémoire en lecture ou en écriture. L’information cir-
cule sur les lignes de données (16 bits). Lors d’un cycle d’accès On différencie donc, au niveau du processeur, des accès en lec-
mémoire ou d’entrée-sortie, le processeur place, sur les lignes ture à la zone mémoire où se trouve le programme et des accès en
d’adresses, l’adresse de la position sélectionnée. Lors d’un accès en lecture ou écriture dans les zones mémoire ou entrées-sorties où se
lecture, le contenu de la position mémoire accédée est placé sur les trouvent les données. Par exemple, la recherche et l’exécution de
lignes de données. Le processeur mémorise ainsi la valeur corres- l’instruction MOVE.B D0, HP du programme BruitHP entraînent les
pondante dans un de ses registres (registre d’instruction ou de don- cycles d’accès mémoire et entrées-sorties représentés à la figure 6.
nées). Lors d’un cycle d’écriture, le processeur place sur les lignes
de données la valeur à mémoriser. La mémoire ou, le cas échéant, Dans le cas de notre processeur simple, après activation de la
un registre d’entrée-sortie mémorise cette valeur. ligne de remise à zéro (reset) (figure 3) le compteur ordinal (PC) est
À l’exécution, nous distinguons les types d’accès processeur remis à zéro. La première action entreprise par le processeur con-
suivants : siste à effectuer un cycle d’accès mémoire afin de lire le code de la
première instruction à l’adresse 0 en mémoire (figure 7). Le proces-
— recherche du code d’une instruction en mémoire (instruction
seur mémorise ce code (H’103C) dans son registre d’instruction, le
code fetch) : accès en lecture en zone programme ;
décode et l’interprète. Le compteur ordinal (PC) est ensuite mis à
— recherche de la valeur immédiate ou de l’adresse contenue jour pour pointer au prochain mot mémoire.
dans l’instruction courante : accès en lecture en zone programme ;
— lecture d’une opérande provenant de la mémoire ou de Le décodage du code H’103C indique au processeur qu’il s’agit
l’espace d’entrée-sortie lors de l’exécution de l’instruction : accès en d’une instruction de transfert de la valeur immédiate dans le registre
lecture en zone données ; de données D0. Au prochain cycle d’accès mémoire, la valeur immé-
— écriture d’une opérande en mémoire ou dans l’espace diate se trouvant à la position mémoire 2 est transférée dans le
d’entrée-sortie lors de l’exécution de l’instruction : accès en écriture registre de données D0 (figure 8). Le compteur ordinal (PC) est mis
en zone données. à jour afin de pointer à la prochaine instruction.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 035 − 4 © Techniques de l’Ingénieur, traité Informatique industrielle

WV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSU

__________________________________________________________________________________ M ICROCON TRÔLEURS : PRIN CIPES ET ASPECTS TEM PS RÉEL

Adresses 24

Mémoire
00 MOVE.B ,D0 103C
MOVE.B #HPOFF,D0
02 #HPOFF 0000 Haut-parleur
04 MOVE.B D0, 11C0
Processeur MOVE.B D0,HP
06 HP 8040
Interface
+2 PC 08 MOVE.B ,D0 103C d’entrée-
0 2
MOVE.B #HPON,D0 sortie
0A #HPON 0001
AD
0C MOVE.B D0, 11C0 Décodage
MOVE.B D0,HP d’adresses
D0 0E HP 8040
10 BRA.B OSCIL 60EE


BRA.B OSCIL
MOVE.B ,D0 Reg Q7 Q0
103C Instr D7 D0

Registre
Données 16 de sortie

PC : Compteur ordinal RegInstr : Registre d’instruction D0 : Registre de données


AD : Registre d'adresse interne
(invisible du programmeur)
Pour simplifier, les signaux de contrôle sont omis

Figure 7 – Recherche du code de la première instruction

Adresses 24

Mémoire
00 MOVE.B ,D0 103C
MOVE.B #HPOFF,D0
02 #HPOFF 0000 Haut-parleur
04 MOVE.BD0, 11C0
Processeur MOVE.B D0,HP
06 HP 8040
Interface
+2 PC 08 MOVE.B ,D0 103C d’entrée-
0 4
MOVE.B #HPON,D0 sortie
0A #HPON 0001
AD
0C MOVE.B D0, 11C0 Décodage
MOVE.B D0,HP d’adresses
#HPOFF D0 0E HP 8040
0000
10 BRA.B OSCIL 60EE BRA.B OSCIL
MOVE.B ,D0 Q7 Q0
RegInstr D7 D0
103C

Registre
Données 16 de sortie

PC : Compteur ordinal RegInstr : Registre d’instruction D0 : Registre de données


AD : Registre d'adresse interne
(invisible du programmeur)

Pour simplifier, les signaux de contrôle sont omis

Figure 8 – Recherche de la valeur immédiate

Ainsi s’effectue l’exécution de tout le programme : à chaque ins- est décodée, les opérandes (valeurs immédiates ou adresses) sont
truction, le code de l’instruction est lu de la mémoire, l’instruction recherchées et l’instruction est exécutée.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 035 − 5

WW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPSU

M ICROCON TRÔLEURS : PRIN CIPES ET ASPECTS TEM PS RÉEL ___________________________________________________________________________________

Adresses 24

Mémoire
00 MOVE.B ,D0 103C
MOVE.B #HPOFF,D0
02 #HPOFF 0000 Haut-parleur
04 MOVE.B D0, 11C0
Processeur MOVE.B D0,HP
06 HP 8040
Interface
08 PC 08 MOVE.B ,D0 103C d’entrée-
MOVE.B #HPON,D0 sortie
0A #HPON 0001
8040 AD
0C MOVE.B D0, 11C0 Décodage
MOVE.B D0,HP d’adresses
#HPOFF D0 0E HP 8040
0000

S MOVE.B D0, HP
11CO
RegInstr
10 BRA.B OSCIL 60EE BRA.B OSCIL
Q7
D7
Q0
D0

Registre
Données 16 de sortie

PC : Compteur ordinal RegInstr : Registre d’instruction D0 : Registre de données


AD : Registre d'adresse interne
(invisible du programmeur)

Pour simplifier, les signaux de contrôle sont omis

Figure 9 – Cycle d’écriture lors de l’exécution de l’instruction MOVE.B D0,HP

Lignes d’adresses 0 2 4 6 8040 8 A C E 8040 10 0 2 4 6 …

Lignes de données 103C 0000 11C0 8040 00 103C 0001 11C0 8040 01 60EE 103C 0000 11C0 8040 …

Type de cycle lect lect lect lect écr lect lect lect lect écr lect lect lect lect lect …
(lecture ou écriture, zone P P P P D P P P P D P P P P P
Programme ou Données)

Figure 10 – Succession des cycles d’accès mémoire et entrées sorties lors de l’exécution du programme BruitHP

L’exécution proprement dite d’une instruction peut s’effectuer 1.3 Catégories d’instructions
implicitement à l’intérieur du processeur, sans exiger de cycle
mémoire supplémentaire (par exemple lorsqu’une valeur immé-
diate est chargée dans un registre de données). Elle peut également Le fonctionnement des principales instructions disponibles sur
exiger un ou plusieurs cycles d’accès mémoire, lorsqu’il s’agit microprocesseurs et microcontrôleurs est expliqué. En pratique, la
d’écrire une valeur en mémoire ou à une position d’entrée-sortie. plupart des microcontrôleurs sont programmés en langage C. Nous
Par exemple, lors de l’exécution de la 3ème instruction du pro- montrons donc pour certaines instructions en langage assembleur
l’équivalent en langage C.
gramme MOVE.B D0,HP, il y a d’abord un cycle mémoire de recher-
che de code de l’instruction, puis un cycle de recherche de l’adresse
HP (cette adresse est placée dans le registre interne AD) et enfin 1.3.1 Fanions et instructions de saut conditionnel
l’exécution proprement dite de l’instruction par un cycle d’écriture
de la valeur qui se trouve dans le registre D0 sur l’adresse d’entrée- Chaque processeur comporte un certain nombre de fanions (en
sortie (figure 9). anglais flags) qui permettent de tester le résultat d’une opération.
Par exemple, lors de l’addition de deux nombres positifs 8 bits, il
Le diagramme temporel de la figure 10 donne la succession des peut y avoir un report. Le fanion de report (Carry) devient actif (« 1 »)
cycles d’accès mémoire et entrées-sorties lors de l’exécution du pro- s’il y a eu un report. Autrement, il reste inactif (« 0 »). De manière
gramme BruitHP (figures 7, 8, 9). similaire, la soustraction d’un nombre positif par un autre peut

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 035 − 6 © Techniques de l’Ingénieur, traité Informatique industrielle

WX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVS

Approche objet

par Henri DELEBECQUE


Docteur en sciences
Professeur à l’École supérieure d’électricité (Supelec)


1. Contexte...................................................................................................... S 8 063 - 2
1.1 Courants ayant influencé les langages à objets ........................................ — 2
1.2 Langages à objets abordés ......................................................................... — 2
2. Concepts de base ..................................................................................... — 2
2.1 Objet.............................................................................................................. — 2
2.2 Classe ............................................................................................................ — 4
2.3 Message........................................................................................................ — 7
2.4 Héritage......................................................................................................... — 9
3. Approche objet ......................................................................................... — 12
3.1 Application exemple .................................................................................... — 12
3.2 Règles de conduite avec des objets ........................................................... — 14
Pour en savoir plus ........................................................................................... Doc. S 8 063

es notions de base des langages à objets, et l’approche objet en général


L sont traitées dans ce document. En nous appuyant sur une connaissance
minimale d’un langage de programmation classique, nous présentons les
notions de bases présentes dans tout langage à objets que sont les concepts
d’objet, de classe, de message et d’héritage. Puis, au travers d’une application
typique, nous comparons une décomposition traditionnelle, une décomposi-
tion dirigée par les données et une décomposition objet d’un programme.
p。イオエゥッョ@Z@ュ。イウ@RPPX

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 063 – 1

WY
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVS

APPROCHE OBJET __________________________________________________________________________________________________________________

1. Contexte La terminologie Smalltalk sera préférentiellement employée, lors


de l’introduction de nouveaux concepts. Les synonymes existant
en C++ et Java, voire d’autres quand certains courants des
1.1 Courants ayant influencé langages à objets en définissent, seront cités. Les exemples seront
donnés en Smalltalk-80, puis soit en C++ soit en Java, en fonction
les langages à objets de celui qui se révèle le plus démonstratif.
On trouve deux courants majeurs à l’origine des langages à
objets : l’intelligence artificielle et le parallélisme. Fondamen-
Le lecteur est invité à consulter :
talement, trois autres courants ont également contribué à faire des
langages à objets ce que nous en connaissons : le génie logiciel, la – Lisp [H 2 520] (Common Lisp : § 5.1) ;
simulation et les langages de programmation pour le Web. – Langage Java [H 3 088] ;
– Conception par objets en C++ [H 3 138] ;
L’intelligence artificielle a apporté son besoin de liaison dyna- – Programmation en langage C++. Concepts [S 8 065] ;
mique et le pouvoir expressif des langages. Ce courant a apporté – Programmation en langage C++. Exemples [S 8 066].
également à la communauté des langages à objets un dynamisme
et un souci de rigueur théorique particulièrement riches.
Le parallélisme est un courant relativement plus discret (dans les
langages à objets), qui toutefois a marqué ceux-ci d’une influence

S persistante. En effet, les langages à objets (sous la dénomination


moins bien définie de langage d’acteurs) sont un moyen rela-
tivement naturel de décrire des entités coopérantes et indépen-
2. Concepts de base
dantes, et permettant d’implémenter assez simplement des entités Nous allons tout d’abord étudier les concepts que l’on rencontre
parallèles. Les adeptes du génie logiciel sont intervenus plus tard dans tous les langages à objets. L’objectif n’est pas de définir des
dans le monde des langages à objets, mais fortement. Ils ont critères binaires, qui permettraient de trancher entre ce qui est et
apporté avec eux la rigueur du typage, l’efficacité des compilateurs ce qui n’est pas un langage à objets. Cette querelle est, à mon avis,
et les contrôles à l’exécution indispensables à toute bonne appli- stérile et peu intéressante. Stérile car le meilleur langage ne peut
cation opérationnelle. rien contre un programmeur têtu et décidé à faire de la mauvaise
L’influence des concepteurs de systèmes de simulation ne doit programmation coûte que coûte. De ce fait, l’utilisation d’un
pas être sous-estimée. La simulation utilise des primitives de paral- langage à objets ne suffit pas à garantir que l’on programme par
lélisme, développe souvent des logiciels très volumineux (ce qui objets. Peu intéressante car la dénomination même de langage à
représente des contraintes proches de celles du génie logiciel), le objets est devenue un label vital, et qu’il existe actuellement peu
tout avec une interface homme machine le plus agréable possible. de langages nouveaux qui ne le soient pas.
La filiation entre les premiers langages de simulation [1] et les envi-
ronnements modernes de fenêtrage passe par les langages à objets.
Enfin, un des langages à objets les plus récents, Java [2], a été 2.1 Objet
initialement conçu par Sun pour être embarqué dans des appareils
électroniques à usage domestique, quel que soit leur processeur. L’objet est la notion centrale dans un langage à objets. En
De ce cahier des charges est né un langage particulièrement première approximation, on peut dire que tout ce qui est décrit ou
adapté à la diffusion d’applications sur Internet. Ses contraintes manipulé dans un langage à objets est un objet. L’utilisation
d’opérationnalité lui confèrent des caractéristiques assez proches d’objets pour représenter toute chose dans un langage à objets
des langages du génie logiciel. signifie que les entités créées par l’utilisateur, par le système et
celles préexistantes sont parfaitement semblables. De ce fait,
l’utilisateur du langage (le programmeur) ne pourra distinguer ses
1.2 Langages à objets abordés propres objets des autres. Cela constitue un avantage important :
Smalltalk a été, très longtemps, un standard de fait dans le le système devient pour lui aussi accessible que son propre code.
monde des langages à objets. Ceci est d’autant plus remarquable L’axiome « tout est objet » que nous venons d’énoncer impli-
que la communauté des concepteurs de langages à objets était citement sera repris en détail dans la suite de ce paragraphe
prolifique à cette époque. On pouvait donc redouter une profusion consacré aux concepts de base.
de langages sans points communs significatifs, ni terminologie Les objets sont classiquement assez dynamiques : ils
commune. s’échangent des informations, apparaissent et disparaissent au fur
En effet, la définition d’un langage à objets en « extension » d’un et à mesure du déroulement de l’application.
langage classique (Lisp, Prolog, C) est assez simple. Cela a favorisé
l’émergence d’une multitude de langages à objets, quelquefois
réduits à de simples modèles. Smalltalk dans sa version 1980 2.1.1 Définition
(alias Smalltalk-80 [3]) servira de langage de référence par la suite,
car il conserve un statut de modèle pédagogique dans les Un objet est défini par deux composantes, une dite déclarative
langages à objets. Quand ses options personnelles ne permettront (qui définit l’état de l’objet), et l’autre procédurale (qui définit les
pas de mettre en évidence certains mécanismes intéressants, procédures qui s’appliquent à cet état). La distinction entre les
C++ [4], Java, voire CLOS (Common Lisp Object System) seront deux n’est pas toujours évidente, parfois même de par la volonté
utilisés. Le premier est un langage à objets construit au-dessus de du concepteur du langage. Elle porte essentiellement sur la forme
C, le second est proche du premier, mais reprend nombre des que prennent les définitions.
options de Smalltalk-80, le dernier une extension objet de La composante déclarative (§ 2.1.1.1) est la partie statique de
Common Lisp (voir Lisp [H 2 520]). l’objet, par opposition à la composante procédurale (§ 2.1.1.2), qui
Dans le premier et le dernier cas, il serait abusif et dangereux de décrit l’évolution, et concerne donc la dynamique de l’objet. Cette
considérer respectivement le compilateur C++ comme un prépro- seconde dichotomie n’est pas obligatoirement mieux respectée
cesseur, et CLOS comme une simple collection de fonctions. L’un que celle qui sépare déclaratif et procédural. On trouvera par
comme l’autre ont à régler des problèmes non triviaux pour exemple des informations statiques dont la définition sera en
respectivement fournir un code C et appeler les fonctions Lisp partie dynamique (vérification, valeur par défaut...) ou des
convenables. comportements qui retournent des valeurs constantes.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 063 – 2 est strictement interdite. – © Editions T.I.

XP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVS

___________________________________________________________________________________________________________________ APPROCHE OBJET

2.1.1.1 Composante déclarative 2.1.2.2 Universalité du concept d’objet


La composante déclarative de l’objet est interne et rémanente. Un des pères de Smalltalk, Alan Kay, a énoncé vers les années
Par interne, il faut entendre que le monde extérieur (c’est-à-dire les 1970 un principe qui a régi depuis beaucoup de modèles de
autres objets) n’a que peu, voire aucun moyen d’atteindre direc- langages à objets : « tout est objet ».
tement ces informations déclaratives. La propriété de rémanence
permet de considérer chaque objet comme un automate plus ou Ce principe est très important pour la rigueur et la validité du
moins complexe, capable de mémoriser une ou plusieurs infor- modèle du langage. Intuitivement, nous réalisons que plus le
mations, de les modifier ou de fournir leurs valeurs, selon la langage que nous examinons décrit de concepts différents (types
demande qui lui est faite par un autre objet. scalaires et vectoriels, agrégats, déclarations avec ou sans initia-
lisations, affectations, opérateurs, fonctions, procédures, structures
La composante déclarative d’un objet est décomposée en de contrôle, modules, tâches...), plus son modèle va être
attributs. Chaque objet possède des attributs personnels, nom- complexe, et plus le novice va souffrir pour assimiler et maîtriser
més, qui ressemblent aux champs d’une structure C ou d’un correctement ces concepts, surtout si la même notion peut être
record Pascal. L’objet qui désire consulter un de ses attributs le traduite avec plusieurs d’entre eux, sans choix évident.
fera exclusivement en le nommant. On parlera de slots en intelli-
gence artificielle, de variables d’instance (nous définirons le terme Tout l’intérêt des langages à objets est d’avoir unifié tout ce qui
d’instance bientôt (§ 2.2.1)) en Smalltalk ou en Java. C++, quant à était information dans la notion d’attribut, et tout ce qui était trai-
lui, appellera les attributs de ces objets des membres. Les valeurs tement dans la notion de méthode.
associées à ces attributs constituent, en première analyse, les
seuls liens de l’objet vers le monde extérieur. En effet, la valeur
d’un attribut (un entier par exemple) sera en fait une référence (un
2.1.2.3 Liberté de définition de structure interne S
pointeur, un identificateur d’objet) sur un autre objet (un objet Nous avons vu que l’encapsulation de l’objet interdisait à tout
entier) dans un langage comme Smalltalk-80. objet externe de consulter un attribut d’un autre objet. Cela
apporte des propriétés très intéressantes de protection et de
fiabilité. Mais cela permet également à un objet d’être indépendant
2.1.1.2 Composante procédurale des autres : il est libre de renommer, de créer ou de supprimer des
La composante procédurale est la contrepartie du caractère attributs sans que quoi que ce soit en dehors de ses méthodes
protégé de l’état interne. Sans moyen d’accéder aux informations n’évolue.
protégées par l’objet, celles-ci seraient inutiles. Un des rôles de la On peut faire cohabiter des implémentations différentes des
composante procédurale est donc de fournir des accès (en lecture mêmes entités, ou même remplacer (éventuellement en cours
et en écriture) à certaines informations privées de l’objet. La d’exécution) des objets implémentés selon une technique par
composante procédurale traduit le comportement de l’objet face d’autres plus efficaces, ou plus puissants, sans remettre en cause
aux requêtes qui vont lui être adressées. Elle est décomposée en les autres. Cette propriété est désignée dans la littérature
méthodes qui sont désignées, comme les attributs, par des noms. anglo-saxonne par data abstration.
L’appellation « méthode » est pratiquement admise par tous les
langages (C++ fait exception, en parlant de fonctions membres). Prenons l’exemple d’un point. Il peut être représenté en
coordonnées polaires ou cartésiennes. Les objets qui utilisent des
Remarquons que le nom d’une méthode est défini localement,
points (les rectangles, par exemple), n’ont pas à connaître le type
ce qui permet d’avoir des méthodes de même nom, avec des
de point qu’ils utilisent. En fait, ils doivent même en être indé-
implémentations différentes, associées à autant d’objets.
pendant, pour pouvoir accepter indifféremment les uns ou les
autres. Cela peut se réaliser trivialement dès que les points sont
2.1.2 Propriétés bien des objets, et donc bien encapsulés.

Selon les langages, les objets vont bénéficier de propriétés plus Qui plus est, cette indépendance fait partie intégrante du modèle
ou moins intéressantes et plus ou moins contraignantes. des langages à objets. Elle n’est pas « plaquée » sur le langage,
comme l’approche modulaire peut l’être sur Pascal ou sur Fortran.
Elle est obtenue sans contraintes, en utilisant une approche dif-
2.1.2.1 Encapsulation férente (l’approche objet) du problème à régler.
Parmi ces propriétés, nous allons trouver le respect de l’aspect
privé de la composante déclarative. Cette propriété est habituel- 2.1.2.4 Liberté d’implémentation du comportement
lement appelée encapsulation de l’objet. Elle est indispensable
pour garantir la conformité de l’état interne à un ensemble Une même sollicitation peut être reçue par de nombreux objets,
de règles que le programmeur peut fixer dans la spécification de qu’ils soient représentés ou non de la même manière (par
l’objet. En effet, si n’importe quel objet est capable d’altérer la exemple, des points cartésiens ou polaires pourront se voir
valeur d’un attribut d’un objet, ce dernier n’a plus la possibilité de demander leur abscisse). Il va de soi que ces requêtes ne peuvent
vérifier la cohérence de son état interne. Il ne peut le faire que s’il être traitées de la même manière par tous les objets. Or, l’indépen-
est le seul à atteindre, via ses méthodes, les valeurs de ses dance que nous souhaitons obtenir entre les objets nous interdit
attributs. de « spécialiser » la requête (son nom) en fonction du destinataire.
Le respect de cette propriété est donc un credo fondamental des Par exemple, il n’est pas concevable qu’un rectangle doive uti-
langages à objets orientés vers le génie logiciel. On retrouve les liser tantôt abscisse_pour_cartésien ou abscisse_pour_polaire, car il
bons principes de la programmation modulaire, mais vécus non devrait alors connaître la nature de l’objet auquel il s’adresse. Le
pas comme une contrainte à respecter, mais comme une caracté- remplacement définitif des points cartésiens par des points
ristique normale de toute entité du langage. polaires aurait alors un impact non négligeable sur tous les objets
utilisateurs de points cartésiens.
Certains langages à objets qui se destinent au génie logiciel vont
même plus loin, incluant des préconditions et postassertions sur L’objet doit donc être capable d’attacher une implémentation
l’état interne de l’objet, déclenchées respectivement avant et après particulière à une requête qu’il reçoit. Cette requête sera appelée
l’exécution d’une méthode (Eiffel [5] ou D [6]). Cependant, pour message et l’objet pourra associer une méthode spécifique à
qu’une entité d’un langage à objets soit encapsulée, elle doit être chaque message qu’il sait traiter. Nous aborderons au
définie comme un objet. Donc, tout ce qui n’est pas un objet ne paragraphe 2.3 la définition d’un message. La fonction d’asso-
pourra bénéficier de cette propriété. Cela nous conduit à une autre ciation entre message et méthode est donc définie localement
propriété potentielle des langages à objets. pour un objet.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 063 – 3

XQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVS

APPROCHE OBJET __________________________________________________________________________________________________________________

2.1.3 Variantes suivant les langages 2.2 Classe


Les langages à objets classiques reprennent le modèle d’objet Nous avons défini les objets et vu qu’ils constituent le moyen
que nous venons de décrire, dans ses grandes lignes. Mais ils lui privilégié de représentation des informations.
apportent toujours des caractéristiques supplémentaires, pour des
Mais définir chaque structure de chaque objet est fastidieux
raisons qui leur sont propres. Nous allons examiner les principales
d’une part, dangereux d’autre part. Imaginons par exemple les
divergences que l’on peut rencontrer, en tenant compte du courant
dizaines de points nécessaires à la construction d’une fenêtre
auquel appartient le langage à objets en question.
définis chacun par une liste d’attributs. Le programmeur passera
beaucoup de temps à créer des points, en dupliquant les défi-
2.1.3.1 L’objet est-il réellement encapsulé ? nitions (ce qui n’est pas une bonne chose), peut-être en les
En Smalltalk-80, l’encapsulation est strictement respectée, ce qui changeant légèrement, ce qui est également à proscrire. Il vient
correspond à une jonction des courants génie logiciel et simulation donc tout naturellement à l’esprit de factoriser cette description
dans laquelle Smalltalk s’insère. Le monde extérieur ne peut des attributs communs à tous les points dans une classe.
jamais atteindre les informations privées d’un objet. La présence de classes est un signe distinctif des langages à
objets. C’est d’autre part dans la définition de celle-ci que les
L’encapsulation est binaire : tout ce qui n’est pas public est
langages se distinguent les uns des autres. Certains vont définir
privé, et inversement. De plus, et cela est relativement dommage,
des classes comme de véritables objets (et respecter l’axiome


la protection est imposée par Smalltalk-80 selon le type
d’Alan Kay), alors que d’autres limiteront pratiquement leur rôle au
d’information : les attributs sont toujours privés, les méthodes
seul compilateur.
toujours publiques.
Cette option n’est pas fondamentalement gênante, puisque, de
par le principe de l’encapsulation, le monde extérieur ne peut 2.2.1 Définition
discerner de différence. Seul le concepteur se voit limité dans son La classe est tout d’abord un « moule » d’objet, c’est-à-dire
implémentation. En effet, si on peut « simuler » des attributs par qu’elle contient une définition de la structure de l’objet qu’elle doit
des méthodes retournant une constante, l’inverse n’est pas vrai. créer. On parlera, pour définir cette structure, de schéma
Notons enfin que le fait de fournir des méthodes d’accès à un d’instance. En corollaire, l’objet qui a été créé par une classe sera
attribut ne supprime pas l’encapsulation, dans la mesure où il appelé une instance de cette classe. Les objets qui sont instances
existe toujours un point d’entrée unique pour atteindre sa valeur : d’une même classe vont, assez normalement, servir dans les
la méthode d’accès. La suppression de l’attribut n’entraînerait mêmes conditions, et donc répondre aux mêmes sollicitations. Il a
qu’une réécriture de la méthode, mais aucune modification du donc paru naturel d’ajouter un second rôle à la classe : elle
monde extérieur. possède toutes les informations partagées entre toutes ses
instances, au premier rang de celles-ci, les méthodes qui carac-
C++ et Java vont se retrouver très souvent ensemble, dans la térisent ses instances.
suite de ce document, puisqu’ils procèdent des mêmes principes :
un typage fort permettant d’atteindre simultanément les objectifs
de sécurité (par une détection d’un maximum d’erreurs dès 2.2.2 Propriétés
compilation) et de rapidité.
Nous avons dit que tout, dans un bon langage à objets, était
Ils constituent les fers de lance des langages à objets actuels. Ils objet. Compte tenu de la définition de la classe que nous venons
garantissent, tant que le programmeur en a décidé ainsi, le respect de donner, on peut compléter en affirmant que tout est issu d’une
de l’encapsulation. Le programmeur peut, à loisir, déclarer un classe. Donc tout est instance.
attribut ou une méthode publique ou privée. Ils décrivent tous
deux une possibilité supplémentaire, mais d’usage différent. 2.2.2.1 La classe est un générateur
C++ parle de friends pour indiquer qu’un objet pourra consulter En tant que telle, elle doit posséder tout ce qui est nécessaire à
les attributs d’un autre objet dont il a été déclaré comme « ami » la création d’une instance, donc un schéma d’instance mais aussi
comme s’ils étaient les siens. Java définit une encapsulation « par le mécanisme de création (d’instanciation). Dans le cas d’un langage
défaut », de type package, dans laquelle les attributs ou méthodes à objets non typé, cette information suffit, puisque tous les attributs
sont visibles de toutes les classes et méthodes du même paque- auront le même encombrement mémoire. Dans le cas contraire, le
tage (qui est en fait un ensemble de classes, définis dans autant de schéma d’instance devra contenir le type de chaque attribut.
fichiers, et retrouve la sémantique que le langage Ada [7] donnait
à cette notion). Le mécanisme d’instanciation procède essentiellement à une
réservation de l’espace-mémoire suffisant, à l’attribution d’un
Il faut conserver à l’esprit que la description d’un attribut comme identifiant unique à la nouvelle instance créée, puis à son initia-
public amoindrit considérablement les possibilités d’évolution de lisation (dans certains langages).
l’objet qui le fait. C’est toujours déconseillé. De ce fait, la seule
Clarifions tout de suite cette notion d’identifiant. La capacité de
justification des friends est la recherche d’efficacité (en transigeant
s’adresser à un objet, et à lui seul, est fondamentale pour le dia-
sur la sécurité), puisque l’accès direct peut être plus rapide qu’un
logue entre objets. Elle repose sur l’existence d’une bijection entre
appel à une fonction d’accès, si elle évite des contrôles de validité
l’ensemble des identifiants et celui des objets. D’un point de vue
d’arguments.
concret, l’identifiant peut, dans un langage à objets non distribué
(c’est-à-dire destiné à s’exécuter sur une seule machine) être un
2.1.3.2 L’objet est-il typé ? pointeur sur l’objet. Par contre, le problème cesse d’être trivial dès
Le typage est une option classique des langages à objets qui se que l’on cherche à distribuer le monde des objets sur plusieurs
destinent au génie logiciel. Il permet d’assigner un domaine de processeurs ou processus, car la notion d’adresse n’est alors plus
valeurs à un attribut (ou de manière plus générale à une variable). significative. Or, le problème de la distribution des objets au sein
Le génie logiciel s’y intéresse car il permet au compilateur de d’une configuration multiprocesseur ou multiprocessus est main-
détecter un grand nombre d’erreurs, et donc d’améliorer la fiabilité tenant excessivement courant dans un contexte opérationnel.
du code. Ce typage est donc partie intégrante du modèle de Le mécanisme de création proprement dit est un comportement
langages à objets destinés au génie logiciel. C++ et Java sont de classe. Il est classiquement le même pour toutes les classes.
typés. Smalltalk-80, comme les extensions objets de Lisp, n’intro- Seule l’initialisation sera particularisée par chaque classe. Le
duit aucune forme de typage. comportement de création est défini par une méthode (tout ce qui

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 063 – 4 est strictement interdite. – © Editions T.I.

XR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVU

Programmation en langage C++


Concepts
par Claude DELANNOY
Ingénieur de l’ENSEM (École nationale supérieure d’électricité
et de mécanique) de Nancy
Ingénieur informaticien au CNRS (Centre national de la recherche scientifique)


1. Présentation générale............................................................................. S 8 065 – 2
2. Améliorations de C++ par rapport à C ............................................... — 3
3. Notion de classe....................................................................................... — 5
4. Fonctions amies ....................................................................................... — 8
5. Surdéfinition d’opérateurs .................................................................... — 8
6. Héritage ...................................................................................................... — 9
7. Fonctions virtuelles et polymorphisme ............................................. — 12
8. Flots d’entrée et de sortie ..................................................................... — 12
9. Patrons de fonctions............................................................................... — 13
10. Patrons de classes ................................................................................... — 14
11. Gestion des exceptions .......................................................................... — 16
12. Bibliothèque standard ............................................................................ — 16
Références bibliographiques ......................................................................... — 18

a programmation orientée objet (en abrégé POO) est dorénavant universelle-


L ment reconnue pour les avantages qu’elle procure. Notamment, elle amé-
liore largement la productivité des développeurs, la robustesse, la portabilité et
l’extensibilité de leurs programmes. Enfin, et surtout, elle permet de développer
des composants logiciels entièrement réutilisables.
Un certain nombre de langages dits « langages orientés objet » (LOO) ont été
définis de toutes pièces pour appliquer les concepts de POO. C’est ainsi que sont
apparus dans un premier temps des langages comme Smalltalk, Simula ou
Eiffel, puis Java. Le langage C++, quant à lui, a été conçu suivant une démarche
quelque peu différente par B. Stroustrup (AT&T) ; son objectif a été, en effet,
d'adjoindre au langage C un certain nombre de spécificités lui permettant
d'appliquer les concepts de POO. Ainsi, C++ présente-t-il sur un vrai LOO l'origi-
nalité d'être fondé sur un langage répandu. Cela laisse au programmeur toute
liberté d'adopter un style plus ou moins orienté objet, en se situant entre les
deux extrêmes que constituent la poursuite d'une programmation classique
d'une part, une pure POO d'autre part. Si une telle liberté présente le risque de
céder, dans un premier temps, à la facilité en mélangeant les genres (la POO ne
renie pas la programmation classique - elle l'enrichit), elle permet également
une transition en douceur vers la POO pure, avec tout le bénéfice que l'on peut
en escompter à terme.
De sa conception jusqu'à sa normalisation, le langage C++ a quelque peu évo-
p。イオエゥッョ@Z@ウ・ーエ・ュ「イ・@RPPS

lué. Initialement, un certain nombre de publications de AT&T ont servi de réfé-


rence au langage. Les dernières en date sont : la version 2.0 en 1989, les versions
2.1 et 3 en 1991. C’est cette dernière qui a servi de base au travail du comité ANSI
(American National Standard Institute) lequel, sans la remettre en cause, l'a enri-

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 065 − 1

XS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVU

PROGRAMMATION EN LANGAGE C++ ______________________________________________________________________________________________________

chie de quelques extensions et surtout de composants standards originaux se


présentant sous forme de fonctions et de classes génériques que l’on désigne
souvent par le sigle STL (Standard Template Library). La norme définitive de C++
a été publiée en juillet 1998.
Cet article est extrait de l’ouvrage « Programmer en langage C++ » du même
auteur, paru aux éditions Eyrolles [5].

1. Présentation générale dérablement la maintenance : une modification éventuelle de la


structure des données d’un objet n’a d’incidence que sur l’objet lui-
même ; les utilisateurs de l’objet ne seront pas concernés par la
teneur de cette modification (ce qui n’était bien sûr pas le cas avec
Afin de mieux situer le langage C++, nous commencerons par la programmation structurée). De la même manière, l’encapsulation
quelques rappels concernant la POO. des données facilite grandement la réutilisation d’un objet.

S 1.1 Programmation orientée objet 1.1.3 Classe

En POO apparaît généralement le concept de classe, qui corres-


1.1.1 De la programmation structurée à la POO pond à la généralisation de la notion de type que l’on rencontre
dans les langages classiques. En effet, une classe n’est rien d’autre
Si l’activité de programmation peut s’avérer simple lorsqu’il s’agit que la description d’un ensemble d’objets ayant une structure de
de développer un code de quelques lignes, elle peut devenir extrê- données commune et disposant des mêmes méthodes. Les objets
mement complexe lorsque la taille des programmes devient impor- apparaissent alors comme des variables d’un tel type classe (en
tante. La production industrielle de logiciel doit alors chercher à POO, on dit aussi qu’un objet est une « instance » de sa classe).
imposer des exigences de qualité et tenter de les mesurer en utili-
sant certains critères comme l’exactitude, la robustesse, l’extensibi-
lité, la réutilisabilité, la portabilité, l’efficience.
1.1.4 Héritage
La programmation structurée a, en son temps, permis de faire Un autre concept important en POO est celui d’héritage. Il permet
progresser la qualité de la production des logiciels. Elle reposait sur de définir une nouvelle classe à partir d’une classe existante (que
ce que l’on nomme souvent « l’équation de Wirth », à savoir : l’on réutilise en bloc !), à laquelle on ajoute de nouvelles données et
Procédures + Structures de données = Programmes de nouvelles méthodes. La conception de la nouvelle classe, qui
« hérite » des propriétés et des aptitudes de l’ancienne, peut ainsi
Bien sûr, elle a permis de structurer les programmes, et partant,
s’appuyer sur des réalisations antérieures parfaitement au point et
d’en améliorer l’exactitude et la robustesse. En revanche, elle n’a
les « spécialiser » à volonté. Comme on peut s’en douter, l’héritage
pas tenu ses promesses pour ce qui est de l’adaptation ou la réutili-
facilite largement la réutilisation de produits existants, d’autant plus
sation des programmes. Ces opérations obligeaient généralement à
qu’il peut être réitéré autant de fois que nécessaire (la classe C peut
remettre en cause une structure de données et donc à modifier une
hériter de B, qui elle-même hérite de A).
ou plusieurs des procédures agissant sur elle. Ce type de difficultés
émane directement de l’équation de Wirth, qui découple totalement
les données des procédures agissant sur ces données.
C’est là qu’intervient la programmation orientée objet (en abrégé 1.2 Place de C++ par rapport à C
POO), fondée justement sur le concept d’objet, à savoir une associa-
tion des données et des procédures (que l’on appelle alors métho- On peut dire que C++ se présente comme une extension du lan-
des) agissant sur ces données. Par analogie avec l’équation de gage C offrant des possibilités de POO.
Wirth, on pourrait dire que l’équation de la POO est :
Mais tous les apports du C++ par rapport au C ne sont pas liés à la
Méthodes + Données = Objet POO. Certains pourraient en effet être ajoutés avec profit au C, sans
qu’il devienne pour autant orienté objet. Cela est notamment le cas
1.1.2 Encapsulation pour la notion de référence et pour les surdéfinitions de fonctions
que nous examinerons au paragraphe 2.
Mais cette association est plus qu’une simple juxtaposition. En Les possibilités de POO représentent bien sûr l’essentiel des
effet, elle s’assortit de ce que l’on nomme une encapsulation des apports de C++. On y retrouve tout naturellement les notions de
données. Cela signifie qu’il n’est pas possible d’agir directement sur classe, d’encapsulation et d’héritage, évoquées précédemment.
les données d’un objet ; il est nécessaire de passer par l’intermé- Mais le programmeur n’est pas tenu d’y recourir à tout prix comme
diaire de ses méthodes, qui jouent ainsi le rôle d’interface obliga- il devrait le faire dans un pur langage orienté objet. Ainsi, pourra-t-il
toire. On traduit parfois cela en disant que l’appel d’une méthode est créer un programme sans utiliser de classes, ou encore créer des
en fait l’envoi d’un « message » à l’objet. classes sans respecter totalement le principe d’encapsulation...
Le grand mérite de l’encapsulation est que, vu de l’extérieur, un Par ailleurs, C++ se trouve doté de fonctionnalités POO originales
objet se caractérise uniquement par les spécifications (noms, argu- dont ne disposent pas tous les langages orientés objet :
ments et rôle) de ses méthodes, la manière dont sont réellement — comme en Java, une classe peut être munie de constructeur
implantées les données étant sans importance. On décrit souvent (méthode obligatoirement exécutée lors de toute création d’un
une telle situation en disant qu’elle réalise une « abstraction des objet) et de destructeur (méthode exécutée au moment de la des-
données », ce qui exprime bien que les détails concrets d’implé- truction d’un objet) ;
mentation sont cachés. L’encapsulation des données présente un — on peut définir des « fonctions amies d’une classe ». Il s’agit de
intérêt manifeste en matière de qualité de logiciel. Elle facilite consi- fonctions « usuelles » (qui ne sont donc pas des méthodes d’une

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 065 − 2 © Techniques de l’Ingénieur, traité Informatique industrielle

XT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVU

______________________________________________________________________________________________________ PROGRAMMATION EN LANGAGE C++

classe) qui sont autorisées (par une classe) à accéder aux données namespace une_bibli
(encapsulées) de la classe ; { // déclarations usuelles
— la surdéfinition d’opérateurs permet de doter une classe }
d’opérations analogues à celles que l’on rencontre pour les types
prédéfinis. Par exemple, on pourra définir une classe nommée Pour se référer à des identificateurs définis dans cet espace de
complexe (destinée à représenter des nombres complexes) et la noms, on utilisera une instruction using :
munir des opérations d’addition, de soustraction, de multiplication using namespace une_bibli
et de division. Qui plus est, ces opérations pourront utiliser les sym- // ici, les identificateurs de une_bibli sont connus
boles existants : +, -, *, / ;
— les entrées-sorties deviennent fondées sur la notion de « flot », On peut aussi utiliser l'instruction using pour faire un choix per-
ce qui permet de leur donner un sens pour les types définis par l’uti- manent :
lisateur que sont les classes (grâce au mécanisme de surdéfinition using une_bibli::point ; // dorénavant, l'identificateur point,
d’opérateur) ; // employé seul correspondra à celui
— la notion de patron permet de définir des modèles utilisables // défini dans l'espace de noms une_bibli
pour générer différentes classes ou différentes fonctions qualifiées
parfois de génériques, même si cette généricité n’est pas totalement Tous les identificateurs des fichiers en-tête standards sont définis
intégrée dans le langage lui-même, comme c’est par exemple le cas dans l’espace de noms std ; aussi est-il nécessaire de recourir systé-
avec ADA ; matiquement à l’instruction :
— dans la bibliothèque standard de C++, qui vient compléter
celle du C, toujours disponible, on trouve de nombreux patrons de
classes et de fonctions permettant de mettre en œuvre les structures
using namespace std ; // utilisation des fichiers
// en-tête standard // S
de données et les algorithmes les plus usuels, évitant ainsi d’avoir à Généralement, cette instruction figurera à un niveau global. Elle
réinventer la roue à la moindre occasion. ne peut cependant apparaître que si l’espace de noms qu’elle men-
tionne existe déjà ; en pratique, cela signifie que cette instruction
sera placée après l’inclusion des fichiers en-tête.

2. Améliorations de C++
par rapport à C 2.3 Nouvelles possibilités
d'entrées-sorties
Nous décrivons ici les principales améliorations non orientées
objet que C++ a apporté au langage C. C++ dispose de nouvelles facilités d'entrées-sorties. Bien qu'elles
soient fortement liées à des aspects POO (surdéfinition d'opérateur
en particulier), elles sont parfaitement utilisables en dehors de ce
2.1 Sécurisation de l’utilisation contexte. C'est tout particulièrement le cas des possibilités
des fonctions d'entrées-sorties conversationnelles (clavier, écran) qui remplacent
avantageusement les fonctions printf et scanf. Ainsi :

Le langage C est laxiste en matière de déclaration de fonctions. En cout << expression_1 << expression_2 << ......... << expression_n
effet, s’il permet d’effectuer des déclarations complètes (prototype affiche sur le flot cout (connecté par défaut à la sortie standard
avec type des arguments et de la valeur de retour), il autorise égale- stdout) les valeurs des différentes expressions indiquées, suivant
ment des déclarations partielles, voire même dans certains cas une une présentation adaptée à leur type. De même :
absence totale de déclaration.
C++ ne conserve que l’aspect le plus fiable de C, tel qu’il était déjà cin >> variable_1 >> variable_2 >> ......... >> variable_n
utilisé par les programmeurs C soucieux de sécuriser leurs pro- lit sur le flot cin (connecté par défaut à l'entrée standard stdin) des
grammes. Il impose que toute fonction utilisée dans un fichier informations de l'un des types char, short, int, long, float, double ou
source fasse l’objet : char * (les pointeurs ne sont pas admis). Les conventions d'analyse
— soit d'une déclaration sous forme d'un prototype (il précise à des caractères lus sont comparables à celles de scanf, avec cette
la fois le nom de la fonction, le type de ses arguments éventuels et principale différence que la lecture d'un caractère commence par
le type de sa valeur de retour), comme dans cet exemple : sauter les espaces blancs (espace, tabulation horizontale, tabulation
float fexp (int, double, char *); verticale, fin de ligne, changement de page).

— soit d'une définition préalable au sein du même fichier source


(ce dernier cas étant d'ailleurs peu conseillé, dans la mesure où des Ces nouvelles possibilités d'entrées-sorties nécessitent
problèmes risquent d'apparaître si, par la suite, on sépare ladite l'inclusion d'un fichier en-tête nommé iostream. Compte tenu
fonction du fichier source en question). de la notion d’espace de noms examinée ci-avant, on voit qu’il
est généralement nécessaire de faire précéder tout fichier
source de ces instructions :
2.2 Espaces de noms #include <iostream>
using namespace std ;
Lorsque l'on doit utiliser plusieurs bibliothèques dans un pro-
gramme, on peut être confronté au problème dit de « pollution de
l’espace des noms », lié à ce qu'un même identificateur peut très
bien avoir été utilisé par plusieurs bibliothèques. Le même pro- 2.4 Nouvelle forme de commentaires
blème peut se poser, à un degré moindre toutefois, lors du dévelop-
pement de gros programmes. C'est la raison pour laquelle la norme
ANSI du C++ a introduit le concept d’« espace de noms ». Il s'agit En C, un commentaire peut être introduit en n'importe quel
simplement de donner un nom à un « espace » de déclarations, en endroit où un espace est autorisé en le faisant précéder de /* et sui-
procédant ainsi : vre de */. Il peut alors éventuellement s'étendre sur plusieurs lignes.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 065 − 3

XU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVU

PROGRAMMATION EN LANGAGE C++ ______________________________________________________________________________________________________

En C++, vous pouvez en outre utiliser des « commentaires de fin Exemple : utilisation de la transmission d'arguments par réfé-
de ligne » en introduisant les deux caractères : //. Dans ce cas, tout rence en C++
ce qui est situé entre // et la fin de la ligne est un commentaire. Notez
que cette nouvelle possibilité n'apporte qu'un surcroît de confort et #include <iostream>
de sécurité ; en effet, une ligne telle que : using namespace std ;
main()
cout << "bonjour\n" ; // formule de politesse { void echange (int &, int &) ;
peut toujours être écrite ainsi : int n=10, p=20 ;
cout << "avant appel : " << n << " " << p << "\n" ;
cout << "bonjour\n" ; /*formule de politesse*/
echange (n, p) ; // attention, ici pas de &n, &p
Vous pouvez mêler (volontairement ou non !) les deux formules. cout << "apres appel : " << n << " " << p << "\n" ;
Dans ce cas, notez que, dans : }
/* partie1 // partie2 */ partie3 void echange (int & a, int & b)
{ int c ;
le commentaire « ouvert » par /* ne se termine qu'au prochain */ ; cout << "debut echange : " << a << " " << b << "\n" ;
donc partie1 et partie2 sont des commentaires, tandis que partie3 c=a;a=b;b=c;
est considéré comme appartenant aux instructions. De même, dans : cout << "fin echange : " << a << " " << b << "\n" ;
partie1 // partie2 /* partie3 */ partie4 }

S le commentaire introduit par // s’étend jusqu’à la fin de la ligne. Il


concerne donc partie2, partie3 et partie4.
avant appel :
________________________________
10 20
début echange : 10 20
fin echange : 20 10
2.5 Transmission par référence après appel : 20 10

Cette fois, l’utilisateur de la fonction echange n’a plus à se soucier


En C, il n’existe qu’un seul mode de transmission des arguments de la manière de l’appeler.
et de la valeur de retour d’une fonction, à savoir « par valeur ». Il
reste cependant possible de simuler en quelque sorte ce qui se
nomme « transmission par référence (ou par adresse) » dans
d'autres langages, moyennant l’utilisation de pointeurs : la trans- 2.6 Arguments par défaut
mission se fait toujours par valeur mais, dans ce cas, il s'agit de la
valeur d'un pointeur. En voici un exemple (écrit ici en C++) dans
lequel une fonction nommée echange réalise l’échange du contenu Dans la déclaration d'une fonction (prototype), il est possible de
de deux variables. prévoir pour un ou plusieurs arguments (obligatoirement les der-
niers de la liste) des valeurs par défaut ; elles sont indiquées par le
Exemple : mise en œuvre par le programmeur d'une transmis- signe =, à la suite du type de l'argument comme dans cet exemple :
sion par adresse
float fct (char, int = 10, float = 0.0) ;
#include <iostream> Ces valeurs par défaut seront alors utilisées lorsque l'on appellera
using namespace std ; ladite fonction avec un nombre d'arguments inférieur à celui prévu.
main() Par exemple, avec la précédente déclaration, l'appel fct ('a') sera
{ void echange (int *, int *) ; équivalent à fct ('a', 10, 0.0) ; de même, l'appel fct ('x', 12) sera équi-
int n=10, p=20 ; valent à fct ('x', 12, 0.0). En revanche, l'appel fct () sera illégal.
cout << "avant appel : " << n << " " << p << "\n" ;
echange (&n, &p) ;
cout << "apres appel : " << n << " " << p << "\n" ;
} 2.7 Surdéfinition de fonctions
void echange (int *a, int *b) // a et b sont des pointeurs
{ int c ;
cout << "debut echange : " << * a << " " << * b << "\n" ; En C++, il est possible, au sein d'un même programme, que plu-
c = *a ; *a = *b ; *b = c ; // on échange les valeurs pointées sieurs fonctions possèdent le même nom. Dans ce cas, lorsque le
cout << "fin echange : " << * a << " " << * b << "\n" ; compilateur rencontre l'appel d'une telle fonction, il effectue le
} choix de la « bonne » fonction en tenant compte de la nature des
arguments effectifs comme dans cet exemple.
____________________________
void sosie (int) ; // sosie I
avant appel : 10 20 void sosie (double) ; // sosie II
debut echange : 10 20 int n ; double y ;
fin echange : 20 10 .....
apres appel : 20 10 sosie (n) ; // appelle sosie I
sosie (y) ; // appelle sosie II
On voit qu’ici, le programmeur doit connaître la technique utilisée
par la fonction echange afin de lui transmettre en argument, non Le compilateur peut aussi tenir compte du nombre des arguments
pas les variables elles-mêmes, mais bel et bien des pointeurs sur comme dans cet exemple.
ces variables.
En C++, en faisant suivre du symbole & le type d’un argument void sosie (int) ; // sosie I
dans l’en-tête (et dans le prototype), on réalise une véritable trans- void sosie (int, double) ; // sosie II
mission par référence. Cela signifie que les éventuelles modifica- int n ; double y ;
tions effectuées au sein de la fonction porteront sur l’argument .....
effectif de l’appel et non plus sur une copie. Voici comment pourrait sosie (n) ; // appelle sosie I
se programmer l’exemple précédent. sosie (n, y) ; // appelle sosie II

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 065 − 4 © Techniques de l’Ingénieur, traité Informatique industrielle

XV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVV

Programmation en langage C++


Exemples
par Claude DELANNOY
Ingénieur de l’ENSEM (École nationale supérieure d’électricité
et de mécanique) de Nancy
Ingénieur informaticien au CNRS (Centre national de la recherche scientifique)


Concepts ............................................................................................................. S 8 065
1. Exemple 1 : ensembles d’entiers ......................................................... S 8 066 – 2
1.1 Première ébauche de solution.................................................................... — 2
1.2 Surdéfinition du constructeur par recopie ................................................ — 2
1.3 Surdéfinition de l’affectation ...................................................................... — 2
2. Exemple 2 : utilisation d’un patron de classes................................ — 4
3. Exemple 3 : liste hétérogène ................................................................ — 5

ous proposons quelques exemples de programmes illustrant la plupart des


N fonctionnalités de C++ que nous venons de présenter dans l’article [S 8 065].
p。イオエゥッョ@Z@ウ・ーエ・ュ「イ・@RPPS

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Informatique industrielle S 8 066 − 1

XW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVV

PROGRAMMATION EN LANGAGE C++ ______________________________________________________________________________________________________

1. Exemple 1 : vera libérer deux fois le même emplacement. Les conséquences


dépendent de l’implémentation et peuvent être catastrophiques.
ensembles d’entiers Pour régler ce problème, la solution la plus raisonnable consiste à
définir son propre constructeur de recopie en faisant en sorte qu’il
recopie la partie dynamique de l’objet dans un emplacement qu’il
Nous allons réaliser une classe nommée set_int permettant de créera. Rappelons que son en-tête doit être de la forme :
manipuler des ensembles de nombres entiers. Nous prévoirons les
opérateurs suivants (e désigne un élément de type set_int et n un set_int (set_int & e)
entier) :
— <<, tel que e<<n ajoute l'élément n à l'ensemble e ;
Remarques
— %, tel que n % e vale 1 si n appartient à e et 0 sinon ;
— <<, tel que flot << e envoie le contenu de l'ensemble e sur le 1 – Les mêmes problèmes se posent pour une fonction ren-
flot indiqué, sous la forme : voyant une valeur de type set_int. Ils se trouvent réglés conjointe-
ment aux précédents par la définition du constructeur par recopie.
[entier_1, entier_2, ... entier_n]
2 – Aucun problème ne se pose pour les arguments de type
La fonction membre cardinal fournira le nombre d'éléments de set_int transmis par référence puisqu’alors la fonction appelée
l'ensemble. travaille directement sur l’objet correspondant à l’argument
Pour ne pas alourdir l’exemple, le nombre maximal d'entiers que effectif de l’appel.

S pourra contenir l'ensemble sera précisé au constructeur qui allouera


dynamiquement l'espace nécessaire.

1.3 Surdéfinition de l’affectation


1.1 Première ébauche de solution
Naturellement, notre classe comportera, en membres données, le L’affectation pose des problèmes voisins des précédents. Considérons
nombre maximal (nmax) d'éléments de l'ensemble, le nombre cou- deux objets e1 et e2 de type set_int et une simple instruction telle que :
rant d'éléments (nelem) et un pointeur sur l'emplacement conte- e1 = e2 ;
nant les valeurs de l'ensemble.
Après son exécution, les deux champs adval des deux objets
L’opérateur << devra être surdéfini de manière à disposer d’un
pointeront sur la même partie dynamique. Or, lorsque les destruc-
premier opérande de type set_int et d’un second opérande entier.
teurs des objets e1 et e2 seront appelés (quel qu’en soit l’ordre), on
Comme le premier opérande est du type de la classe, nous pouvons
se trouvera libérer, là aussi, deux fois le même emplacement. Quant
le définir sous forme d’une fonction membre (de nom operator<<).
à l’ancien emplacement associé à e2, il se peut qu’il ne soit plus uti-
En revanche, l'opérateur % doit être surdéfini obligatoirement lisé ; néanmoins, il ne sera jamais libéré.
sous la forme d'une fonction amie, puisque son premier opérande
Pour régler ces problèmes, la solution la plus raisonnable
n'est pas de type classe. L'opérateur de sortie dans un flot doit, lui
consiste à surdéfinir convenablement l’opérateur d’affectation de
aussi, être surdéfini sous la forme d'une fonction amie, mais pour
façon compatible avec la démarche utilisée pour le constructeur de
une raison différente : son premier argument est d’un type classe
recopie. Ici, donc, nous ferons en sorte que chaque objet de type
(ostream) déjà défini et que l’on ne peut pas modifier.
set_int dispose de sa propre partie dynamique.
Voici une première ébauche de ce que pourrait être la déclaration
On notera que si le problème est voisin de celui de la construction
de notre classe set_int :
par recopie, il n’en est pas pour autant identique. Quelques différen-
#include <iostream> ces apparaissent :
using namespace std ; — on peut se trouver en présence d'une affectation d'un objet à
class set_int lui-même ;
{ int * adval ; // adresse du tableau des valeurs — avant affectation, il existe deux objets « complets » (c'est-à-
int nmax ; // nombre maxi d'éléments dire avec leur partie dynamique). Dans le cas de la construction par
int nelem ; // nombre courant d'éléments recopie, il n'existait qu'un seul emplacement dynamique, le second
public : étant à créer. On va donc se retrouver ici avec l'ancien emplacement
dynamique de b. Or, s’il n'est plus référencé par b, est-on sûr qu'il
set_int (int = 20) ; // constructeur
n'est pas référencé par ailleurs ?
~set_int () ; // destructeur
int cardinal () ; // cardinal de l'ensemble Voici donc comment nous pourrions traiter une affectation telle
set_int & operator << (int) ; // ajout d'un élément que e1 = e2, lorsque e1 est différent de e2 :
friend int operator % (int, set_int &) ; — libération de l'emplacement pointé par e2 ;
// appartenance d'un élément — création dynamique d'un nouvel emplacement dans lequel on
// envoi ensemble dans un flot recopie les valeurs de l'emplacement pointé par e1 ;
— mise en place des valeurs des membres données de e2.
friend ostream & operator << (ostream &, set_int &) ;
}; Supposons qu’avant affectation, la situation se présente ainsi :

1.2 Surdéfinition du constructeur par recopie 1


5
e1 8
Lorsqu’un argument de type set_int est transmis en argument à 3
une fonction, il y appel du constructeur de recopie par défaut. Ce der- 100 4
nier recopie les différents champs de l’objet dans un objet local à la 5
fonction, y compris lorsque ceux-ci sont des pointeurs. Toutefois,
dans ce dernier cas, l’emplacement pointé n’est nullement recopié. 6
Dans ces conditions, on se trouve en présence d’un même empla- 200 0
3 4
cement dynamique désigné par deux objets différents. Lors de la
destruction de ces deux objets (quel qu’en soit l’ordre), on se trou- e2

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 066 − 2 © Techniques de l’Ingénieur, traité Informatique industrielle

XX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hQUWP

Linux embarqué

par Pierre FICHEUX


Ingénieur Arts et Métiers
Directeur technique chez Smile ECS (http://www.smile.fr), enseignant et responsable de la
majeure GISTRE (Génie Informatique des Systèmes Temps Réel et Embarqués) à l’EPITA
(Paris).
Note de l’éditeur
Cet article est la version actualisée de l’article de même nom et même référence publié dans
nos éditions en 2012.


1. Introduction au logiciel libre, le projet GNU ................................... H 1 570v2 - 3
1.1 What’s GNU ? Gnu’s Not Unix................................................................... — 3
1.2 Licences GPL et LGPL ................................................................................. — 3
1.3 Linux ou GNU/Linux ?................................................................................. — 3
2. Linux comme système embarqué ....................................................... — 3
2.1 Contraintes des systèmes embarqués propriétaires ............................... — 4
2.2 Avantages du logiciel libre......................................................................... — 4
2.3 Inconvénients .............................................................................................. — 4
2.4 Pourquoi Linux est-il adapté aux applications embarquées ? ................ — 4
3. Choix du matériel .................................................................................... — 4
3.1 Cas de la MMU ............................................................................................ — 5
3.2 Architecture x86 .......................................................................................... — 5
3.3 Architecture ARM........................................................................................ — 5
4. Architecture d’un système Linux embarqué ................................... — 5
4.1 Structure du système Linux ....................................................................... — 6
4.2 Démarrage du système .............................................................................. — 6
4.3 Noyau Linux ................................................................................................ — 6
4.4 Root filesystem............................................................................................ — 7
4.5 BusyBox ....................................................................................................... — 7
5. Exemples de distributions .................................................................... — 7
5.1 Compilation croisée .................................................................................... — 7
5.2 Choix de la distribution .............................................................................. — 7
5.3 Buildroot ...................................................................................................... — 8
5.4 Production d’une distribution avec Yocto................................................. — 10
5.5 Mise au point............................................................................................... — 13
6. Temps réel ................................................................................................. — 14
6.1 Définitions.................................................................................................... — 14
6.2 Extensions temps réel de Linux................................................................. — 14
7. Conclusion................................................................................................. — 18
Pour en savoir plus ........................................................................................... Doc. H 1 570v2

orsque Linus Torvalds, alors jeune étudiant de l’université d’Helsinki, publie


L sur Internet en juillet 1991 son premier message concernant le développe-
ment balbutiant de son noyau UNIX libre, il ne se doute certainement pas qu’à
l’instar d’autres célébrités de la technologie comme Steve Jobs ou Bill Gates, il
est sur le point de changer le monde.
Linux est un système d’exploitation multitâche (en fait un « noyau ») de la
famille UNIX. Il fut initialement développé sur processeur de type Intel x86 (386
et 486), mais il a depuis été adapté sur un grand nombre d’architectures maté-
p。イオエゥッョ@Z@。ッエ@RPQY

Copyright © – Techniques de l’Ingénieur – Tous droits réservés H 1 570v2 – 1

XY
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hQUWP

LINUX EMBARQUÉ __________________________________________________________________________________________________________________

rielles comme les PowerPC, ARM, SH4 et désormais des processeurs industriels
spécialisés comme Nios II, MicroBlaze ou Blackfin. Au final, 31 architectures sont
actuellement supportées par la version officielle du noyau Linux.
Linux est conforme au standard POSIX (pour Portable Operating System
Interface for UNIX), ce qui signifie que les sources des programmes déve-
loppés sous Linux peuvent être compilées facilement sur d’autres systèmes
d’exploitation compatibles POSIX. Linux est également réputé pour sa grande
interopérabilité, c’est-à-dire qu’il peut facilement s’intégrer dans un système
informatique complexe utilisant d’autres systèmes d’exploitation propriétaires.
Le code source du noyau Linux est disponible librement sur Internet, tout en
respectant la licence GPL définie pour le projet GNU.
Initialement, le logiciel embarqué était un marché de « niche » totalement
dominé par des éditeurs spécialisés (comme Wind River, fondée en 1981 et
éditeur du système d’exploitation VxWorks), pratiquant des coûts de licence
très élevés du fait du faible volume de production qui se résumait aux appli-

S cations militaires, spatiales et industrielles en général. Les contraintes du


logiciel embarqué sont très différentes de celles du logiciel classique, en
particulier sur la notion de durée de vie du logiciel, qui est bien plus impor-
tante dans le cas de l’embarqué. À titre d’exemple, le télescope spatial
Hubble utilisant le système d’exploitation VRTX tourne – au sens propre –
depuis 1990.
Au début des années 2000, Linux était déjà très utilisé dans le monde des
serveurs et ce directement en concurrence avec les solutions Microsoft. Déjà à
l’époque, de nombreux développeurs et utilisateurs de Linux pensent que ce
dernier peut être utilisé pour des solutions industrielles et embarquées grâce à
sa fiabilité, la disponibilité de son code source et bien sûr son coût de redistri-
bution nul. L’évolution de l’informatique embarquée vers le multimédia, de par
la généralisation de l’accès à Internet, a depuis permis à Linux de devenir un
acteur majeur dans le domaine puisque les systèmes d’exploitation embarqués
propriétaires n’étaient pas adaptés à ces fonctionnalités. Les équipements
d’accès à Internet comme les gateway et set-top box utilisent majoritairement
des systèmes d’exploitation basés sur Linux. Citons les Freebox, Bbox et
autres Livebox.
La grande majorité des smartphones (plus de 80 % à ce jour) utilise égale-
ment le noyau Linux (et non le système complet) dans le système Android de
Google. Récemment, l’éditeur Microsoft a annoncé qu’il se retirait peu à peu
du marché de l’embarqué où il était connu pour Windows CE et autres
Windows Embedded, laissant une belle place à Android pour les applications
graphiques.
Notons que des set-top box récentes utilisent également le système d’exploi-
tation Android.
La connaissance de Linux et des spécificités des versions embarquées et indus-
trielles est désormais une nécessité pour les entreprises – et donc les ingénieurs –
des domaines concernés, qu’ils soient fabricants de matériel électronique, éditeurs
de logiciels, de solutions de développement ou d’exploitation.
La compréhension de cet article sera facilitée si le lecteur est déjà un utilisa-
teur du système Linux. Cependant nous effectuerons les quelques rappels
nécessaires à la compréhension pour le plus grand nombre de lecteurs. Au
cours de cet article, nous décrirons la réalisation d’une véritable distribution
Linux utilisable sur la célèbre carte Raspberry Pi 3, basée sur une architecture
ARM.

H 1 570v2 – 2 Copyright © – Techniques de l’Ingénieur – Tous droits réservés

YP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hQUWP

__________________________________________________________________________________________________________________ LINUX EMBARQUÉ

noyau dans lequel – en théorie – seule la GPL s’applique à l’exclu-


1. Introduction au logiciel sion de toute autre licence. Il existe cependant une tolérance per-
libre, le projet GNU mettant de publier un pilote Linux si le code source initial a été
adapté depuis un système propriétaire vers Linux. Dans ce cas, la
publication de l’intégralité du code source n’est pas obligatoire.
Le logiciel libre est la traduction française du terme anglais free
software. Dans ce cas, le terme free ne signifie pas gratuit, mais Une nouvelle version GPLv3 (ainsi que LGPLv3) est sortie en
libre. La notion de logiciel libre est directement issue du concept 2007. Elle ne s’applique pas au noyau Linux, qui reste sous GPLv2
exprimé en anglais par le terme open source (voir http:// par la volonté de son auteur Linus Torvalds. Contrairement à la
www.opensource.org), la principale caractéristique du logiciel GPLv2 (et LGPLv2) qui imposait simplement la distribution des
libre est donc la disponibilité du code source et non la gratuité de sources, cette nouvelle version garantit à l’utilisateur final la pos-
la licence. sibilité de modifier le logiciel installé et que ce dernier soit fonc-
tionnel, ce qui est une différence notoire. La GPLv3 est une
Il existe un autre type de logiciel nommé freeware (parfois réponse à ce que Richard Stallman appelle tivoization, en réfé-
nommé graticiel en français) mais il n’a rien à voir avec le logiciel rence au fabricant d’enregistreurs numériques TiVo qui utilise
libre puisque, dans ce cas, le terme free indique avant tout la gra- depuis de nombreuses années le système d’exploitation Linux
tuité alors que le code source est rarement disponible. dans ses produits. L’utilisation de cette nouvelle version peut
avoir des implications importantes lors de la conception d’un pro-


duit car le client doit disposer d’informations (comme des clés de
1.1 What’s GNU ? Gnu’s Not Unix chiffrement) pour installer un nouveau logiciel modifié.
Dans les années 1980, Richard M. Stallman, un chercheur en Plus précisément, la liste des différences entre v2 et v3 est dis-
intelligence artificielle du MIT (Massachusetts Institute of Techno- ponible sur http://www.gnu.org/licenses/gpl-faq.html.
logy), démarre un projet de développement de composants logi-
ciels libres. De par son environnement culturel, Stallman s’oriente
naturellement vers l’environnement UNIX, non qu’il considère ce Comment distribuer un code source sous GPL/LGPL ?
système comme parfait, mais plutôt parce qu’il est, selon ses La plupart des fabricants de matériel intégrant du code
dires, not so bad (pas si mal). Le but du projet est de fournir des source GPL/LGPL mettent en place une page web sur laquelle
versions libres des différentes commandes et outils disponibles les clients peuvent obtenir ce code source. Pour faciliter la ges-
dans les systèmes UNIX. Le nom du projet (GNU) est une défini- tion, ces sites de diffusion sont généralement ouverts, y com-
tion récursive (GNU’s Not Unix), typique de l’humour décalé des pris à ceux qui ne disposent pas de l’équipement (donc pas de
informaticiens. la version binaire).
Néanmoins, un produit peut intégrer d’autres composants,
sous d’autres licences, et dont les sources ne seront pas forcé-
1.2 Licences GPL et LGPL ment diffusables. Il se peut donc que l’obtention du code
source GPL/LGPL ne permette pas de produire un nouveau
Richard Stallman en profita pour mettre en place un nouveau logiciel fonctionnel sur la cible.
type de licence de distribution appelée GPL (pour General Public
License), utilisant le principe du copyleft par opposition au copy-
right des licences propriétaires. La description complète de la
licence est assez longue et disponible sur le site de la Free Soft- 1.3 Linux ou GNU/Linux ?
ware Foundation (http://www.gnu.org/licenses). Il est cependant
fortement recommandé de prendre connaissance de cette licence Comme nous l’avons évoqué dans l’introduction, il est impor-
si vous désirez utiliser Linux ou un logiciel open source sous GPL tant de noter que le travail de Linus Torvalds s’est porté d’emblée
pour un projet industriel. Outre les éléments légaux indispen- sur la partie noyau du système d’exploitation. Les autres utilitaires
sables, cette lecture vous apportera des éléments clés pour la et les commandes UNIX classiques, sont en fait empruntés au
compréhension de la philosophie du logiciel libre. projet GNU ou à d’autres projets libres comme l’interface gra-
La version la plus communément utilisée est la GPLv2 datant de phique X Window System (X11) du MIT. Le fait est qu’aujourd’hui
1991. Linux est plus connu que GNU alors qu’une distribution Linux
La GPL se différencie d’autres licences open source plus permis- contient beaucoup plus de code du projet GNU que du projet
sives permettant l’appropriation d’un code originellement libre : Linux lui-même. De ce fait, les puristes – dont Richard Stallman en
tête – tiennent à ce que Linux soit plus justement nommé GNU/
– la GPL interdit à quiconque de s’approprier le code source d’un
Linux. Cependant, pour alléger l’expression, le système GNU/
logiciel et de ses dérivés modifiés à partir du moment où l’original
Linux sera simplement nommé Linux tout au long de cet article.
a été diffusé sous GPL. Cela oblige à redistribuer le code source
Nous avons déjà fait la nuance dans ce chapitre puisque le sys-
des modifications effectuées à celui qui aurait reçu la version
tème d’exploitation Android est basé sur le noyau Linux, tout en
binaire. Notons que cela n’oblige pas à contribuer au projet initial ;
étant très différent de GNU/Linux.
– l’édition de liens (statique ou dynamique) entre du code GPL et
du code incompatible avec la licence est interdite ;
– la GPL s’applique uniquement en cas de redistribution d’un
exécutable issu de code GPL à un tiers, mais la notion de redistri-
bution a suscité de longues discussions (en particulier dans le cas 2. Linux comme système
des premières versions de la Freebox).
Il existe une autre licence nommée LGPL (pour Lesser ou
embarqué
Library GPL), permettant d’effectuer une édition de liens de code
propriétaire avec des bibliothèques sous LGPL. Cette extension de Nous ne reviendrons pas sur la définition, ni sur les caractéris-
la licence est fondamentale, car elle permet la disponibilité sous tiques d’un logiciel embarqué, ou d’un système d’exploitation
Linux d’applications propriétaires qui utilisent des bibliothèques embarqué. Pour cela, nous renvoyons le lecteur à l’article
indispensables comme la Glibc (GNU C library). [H 8 000] Introduction aux systèmes embarqués ainsi qu’aux nom-
Dans le cas du développement d’un pilote de périphérique, il breux documents disponibles sur Internet ou bien ouvrages cités
sera exécuté dans un espace mémoire différent appelé espace en bibliographie.

Copyright © – Techniques de l’Ingénieur – Tous droits réservés H 1 570v2 – 3

YQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hQUWP

LINUX EMBARQUÉ __________________________________________________________________________________________________________________

2.1 Contraintes des systèmes embarqués société commerciale qui fournira en général une version prise en
charge (avec support payant) en plus de la version gratuite (sans
propriétaires support). Outre les développements spécifiques, le support tech-
nique est d’ailleurs le principal modèle économique applicable au
Les systèmes embarqués propriétaires souffrent de quelques
logiciel libre puisque la duplication du logiciel est autorisée par la
défauts fort contraignants pour les concepteurs d’équipement.
licence.
Tout d’abord, ils sont souvent réalisés par des sociétés de taille
Concernant les licences, nous avons dispensé une introduction
moyenne, si l’on compare aux géants comme Microsoft ou Goo-
rapide au début du document mais il se peut que certains compo-
gle. Le matériel évolue très vite, et il en est de même des stan-
sants logiciels propriétaires soient incompatibles avec les licences
dards logiciels, alors que de plus en plus d’équipements
GPL et LGPL fréquemment utilisées pour le logiciel libre et en par-
nécessitent l’intégration de composants que l’on doit importer du
ticulier pour Linux. Dans ce cas, on devra adapter l’architecture en
monde des systèmes informatiques grand public. De ce fait, les
conséquence. Notons en particulier que l’architecture du système
coûts de licence et les droits de redistribution de ces systèmes
Android (HAL, isolation de la partie matérielle) est en partie
sont souvent élevés, car l’éditeur travaille sur un segment de mar-
déduite des contraintes de licences.
ché très spécialisé.
L’industriel qui utilise un système propriétaire prend donc le
risque de voir disparaître le produit (et plus rarement l’éditeur) 2.4 Pourquoi Linux est-il adapté
ainsi que le support technique qui va avec. De ce fait, les indus-

S triels paient parfois des sommes conséquentes afin de disposer aux applications embarquées ?
de tout ou partie du code source du système.
Un certain nombre de critères et de qualités fréquemment cités
Le coût de développement d’applications autour de systèmes pour les versions standards de Linux sont fondamentaux pour les
propriétaires est souvent plus élevé, car les outils de développe- systèmes embarqués, en l’occurrence :
ment disponibles sur le marché du travail sont mal connus de la – la fiabilité ;
majorité des développeurs, puisque peu – ou plus – étudiés à
– les performances ;
l’université (qui de nos jours étudie VxWorks ou LynxOS ?). Il est
– le coût ;
donc nécessaire de recruter du personnel très spécialisé, donc
– la portabilité et l’adaptabilité ;
rare et cher. A contrario un développeur Linux peut assez rapi-
dement se spécialiser sur Linux embarqué, sachant que toutes – l’ouverture aux autres systèmes.
les formations d’ingénieur intègrent désormais l’étude de Linux Il existe bien entendu des cas pour lequel Linux n’est pas la
et que certaines proposent des formations spécialisées intégrant meilleure solution. Le principal cas de figure concerne les sys-
des cours sur Linux embarqué (citons l’EPITA et l’ENSEIRB- tèmes embarqués de faible puissance pour lequel le logiciel est
MATMECA). dit profondément enfoui (ou deeply embedded). En effet, même
optimisé et adapté à l’embarqué, Linux reste un système com-
plexe nécessitant plusieurs mégaoctets de mémoire pour fonc-
2.2 Avantages du logiciel libre tionner, tant au niveau de la mémoire vive que de la mémoire de
stockage (mémoire flash). De même, si l’architecture matérielle
Les trois points suivants issus de la définition du logiciel libre utilise un processeur 8 ou 16 bits, l’utilisation de Linux n’est pas
sont fondamentaux dans le cas du logiciel embarqué : envisageable puisque ce système nécessite au minimum un pro-
cesseur 32 bits. Dans ce cas, d’autres systèmes d’exploitation
– la redistribution sans royalties ;
libres sont largement utilisés (citons FreeRTOS, Contiki ou RIOT,
– la disponibilité du code source ;
fréquemment utilisés pour capteurs IoT – Internet of things).
– la possibilité de réaliser un développement dérivé de ce code
source. La conformité à certains standards industriels (DO-178, CEI-
61508) peut également poser des problèmes puisque le modèle
Ces éléments ont des implications importantes tant au niveau libre implique une constante évolution du système peu compa-
économique qu’au niveau de la pérennité du logiciel sur laquelle tible avec les procédures de certification. De même, l’absence de
les exigences peuvent, dans certains cas, se chiffrer en dizaines centralisation ne permet pas d’identifier clairement un acteur qui
d’années (50 ans ou plus sur l’aéronautique ou le ferroviaire). pourrait assumer la charge financière du coût de la certification.

2.3 Inconvénients
Lors de la dernière édition nous avions cité quelques inconvé-
3. Choix du matériel
nients inhérents à la « jeunesse » des solutions libres, soit :
– la crédibilité du logiciel libre au niveau du monde industriel ; Le développement d’un projet Linux embarqué correspond en
– la faiblesse du support technique et de la documentation ; général à deux cas de figure :
– la complexité des licences. – le portage du système vers Linux embarqué, tout en conser-
Le premier argument n’est carrément plus à prendre en compte vant l’architecture matérielle ;
de nos jours car Linux est désormais une référence dans le monde – la réalisation d’un nouveau produit avec choix ou réalisation
industriel. De même, la qualité de la documentation est en du matériel.
constante progression depuis quelques années. À titre d’exemple, Le premier cas peut s’avérer critique car il est nécessaire que le
si l’on considère le projet Yocto (que nous étudierons plus loin matériel existant soit compatible avec le noyau Linux. À partir du
dans cet article), sa documentation est d’une précision remar- moment où l’on utilise un processeur au moins 32 bits, il est forte-
quable, ce qui explique qu’il est aujourd’hui un outil de référence ment probable que le cœur de processeur soit déjà pris en compte
soutenu pas les plus grands industriels comme Intel, TI, NXP, par le noyau Linux (ARM, x86, PowerPC et plus rarement MIPS).
Wind River, Facebook et bien d’autres. Au total, 31 architectures matérielles sont à ce jour prises en
Concernant le support technique, le modèle décentralisé du charge par le noyau Linux standard.
logiciel libre interdit de fait qu’une communauté de développeurs Par contre, il peut arriver, même si c’est rare, que certains péri-
assume la responsabilité légale de la correction des bogues. Pour phériques ne soient pas pris en compte et que la réalisation d’un
disposer d’un support classique, le projet devra être porté par une ou plusieurs pilotes soit nécessaire.

H 1 570v2 – 4 Copyright © – Techniques de l’Ingénieur – Tous droits réservés

YR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hXRPP

OS embarqués

Par Frédéric PÉTROT


Docteur es sciences de l’université Pierre et Marie Curie (Paris VI)
Professeur à l’Ensimag, Institut polytechnique de Grenoble

1. Coût des systèmes embarqués et intégrés ...................................... H 8 200 - 2


2.
3.
Point sur les architectures matérielles .............................................
Rôle des systèmes d’exploitation dans les systèmes
embarqués .................................................................................................


3

5

4. Tour d’horizon des types d’OS employés en embarqué — 6
4.1 Boucle de contrôle ...................................................................................... — 6
4.2 Gestionnaire d’interruptions ...................................................................... — 6
4.3 Multitâche coopératif.................................................................................. — 7
4.4 Multitâche avec préemption ...................................................................... — 7
5. Multiprocesseur ....................................................................................... — 8
6. Architectures des OS embarqués ....................................................... — 9
6.1 Organisation logicielle idéalisée................................................................ — 10
6.2 Implantation BSP ........................................................................................ — 11
6.3 Systèmes d’exploitation usuels ................................................................. — 12
6.4 Implantation à base de composants ......................................................... — 13
6.5 Synthèse ...................................................................................................... — 16
7. En résumé .................................................................................. — 16
Pour en savoir plus ........................................................................................... Doc. H 8 200

es systèmes embarqués et/ou intégrés rappellent par certains côtés les ordina-
L teurs d’antan, par les ressources limitées dont ils disposent. Ceci conduit à des
besoins de compacité de code et à une exploitation optimisée du matériel qui
n’est plus de mise dans les systèmes informatiques actuels où l’abondance de res-
sources de calcul et de mémorisation est la règle. Que l’on ne s’y trompe pas
cependant : comparaison n’est pas raison, et les systèmes informatiques embar-
p。イオエゥッョ@Z@ヲ←カイゥ・イ@RPQQ@M@d・イョゥ│イ・@カ。ャゥ、。エゥッョ@Z@、←」・ュ「イ・@RPQU

qués d’aujourd’hui sont souvent bien plus performants que leurs prédécesseurs
non embarqués, mais ils sont aussi extrêmement contraints, et les quelques kilo-
octets, microsecondes ou milliwatts qui sont épargnés par un système d’exploita-
tion ad hoc seront toujours utiles à l’application, pour permettre de faire
fonctionner mieux, de manière plus sûre et plus longtemps un appareillage. Glo-
balement, le but d’un système d’exploitation consiste à abstraire et partager les
ressources matérielles pour simplifier l’écriture des applications. Les systèmes
d’exploitation des ordinateurs modernes visent à optimiser les temps de réponses
moyens pour l’utilisateur face à un clavier et une souris, quitte à requérir de nom-
breuses ressources à un instant donné pour garantir cet objectif. Dans le monde
de l’embarqué, un tel objectif n’a souvent pas de sens, car il n’y a pas d’utilisateur
à proprement parler et la notion assez subjective et mal formalisée de temps de
réponse acceptable est clairement inadaptée. Les systèmes d’exploitation pour les
systèmes embarqués ont en général besoin de contraintes clairement précisées
pour réaliser les services qu’ils sont censés fournir. Ces critères peuvent être liés à
la performance temporelle, par exemple sur la latence minimale et maximale du
traitement des interruptions, en espace mémoire maximal requis, en capacité de

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. H 8 2 0 0 – 1

YS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hXRPP

OS EMBARQUÉS ____________________________________________________________________________________________________________________

contrôle du matériel en vue par exemple de la basse consommation, etc. Les sys-
tèmes pour lesquels la réalisation d’une action doit être faite dans un laps de
temps prédéfini, potentiellement de manière répétée, sont dits temps réel. Ils ont
une importance particulière dans le monde de l’embarqué, car le contrôle du
déclenchement d’un air bag ou le décodage d’une vidéo n’ont d’intérêt que si
l’action est réalisée dans le temps imparti.
Par ailleurs, les méthodes de construction des systèmes d’exploitation ont
évolué au cours du temps et permettent aujourd’hui de n’inclure que les
parties qui sont utiles à la fois à l’application, si celle-ci est connue d’avance,
ce qui est le cas bien souvent, et au matériel. Elles permettent ainsi de
construire un système « sur mesure » qui maximise l’efficacité de l’appareil.
L’intégration posant des questions cruciales de rendement et de flexibilité, les
systèmes intégrés actuellement en cours de conception tendent à inclure plu-
sieurs (voire de nombreux) processeurs. La gestion de ces nombreux
processeurs, qui peuvent être de type identiques ou différents, par exemple un

S processeur à usage général et un processeur de traitement de signal, a claire-


ment un impact sur les systèmes d’exploitation destinés à être embarqués.
La plupart des applications intégrées actuelles font appel à des algorithmes qui
sont très gourmands en termes de ressources mémoire et de capacité de calcul.
Ainsi, les systèmes électroniques embarqués, du moins ceux qui visent les appa-
reillages grand public, doivent non seulement être d’un coût très faible mais ils
doivent de plus fournir une performance très élevée. Ce faible coût implique une
faible consommation, car cela seul permet l’utilisation de boîtiers plastique à faible
coût (par opposition aux boîtiers en céramique) et l’absence de radiateur et de
ventilateur. La solution utilisée dans le passé pour satisfaire ces contraintes a été
de développer du matériel ad hoc : il est généralement admis que le nombre de
MIPS (millions d’instructions par seconde) par watt (unité de mesure de la perfor-
mance vis-à-vis de la consommation) est de deux à trois ordres de grandeur plus
élevé dans le matériel spécialisé que dans le logiciel. Cependant, les applications
récentes sont peu pérennes à cause de l’évolution continue et en profondeur des
différents standards sur lesquels elles se basent. Ainsi, les solutions purement
matérielles ne sont plus acceptables car elles ne permettent pas une flexibilité
suffisante pour s’adapter au besoin, et les solutions au moins partiellement pro-
grammables sont maintenant la règle. En conséquence, il est à présent reconnu
que des systèmes d’exploitations dédiés sont nécessaires.

L’aspect économique a un poids énorme dans les choix


1. Coût des systèmes d’implantation des systèmes embarqués. Ce coût correspond au
embarqués et intégrés coût qu’un équipementier est prêt à payer à un instant donné pour
l’achat des pièces en vue de la construction de son système. Il
devient donc à la fois une contrainte de coût et de temps (time to
On appelle s y s t ème embarqué tout appareillage incluant une market) pour les équipes de conception. À titre d’exemple, un
partie électronique, intégrée ou non, participant au bon fonc- constructeur d’avion sera prêt à payer un système électronique
tionnement du système [1]. Un système intégré est un système fort cher, à condition qu’il passe les normes de sureté de fonction-
électronique incluant du logiciel et du matériel – au sens élec- nement du domaine, mais le nombre de pièces sera forcément
tronique numérique et analogique – intégré sur un unique limité car l’avionique est un marché de niche. À l’opposé, un
substrat de silicium [2]. En ce sens, un système embarqué constructeur de télévision qui s’adresse au consommateur lambda
repose sur des systèmes intégrés pour réaliser certaines fonc- voudra minimiser son prix de vente et imposera des prix d’achat
tions de contrôle ou de calcul. Par exemple, l’injection électro- très faibles (un marché peut se jouer à 1 ou 2 centimes par pièce)
nique d’un moteur est un système embarqué composé mais vise un marché de plusieurs dizaines de millions de pièces,
d’injecteurs mécaniques et de capteurs. En fonction des don- ce qui peut aussi assurer la rentabilité d’un développement. Pour
nées issues des capteurs, le système électronique intégré va ce qui concerne les contraintes de temps, un exemple significatif
commander la date et la durée de l’injection de carburant et est celui de la Consumer Electronic Fair qui a lieu au mois de jan-
l’ouverture des volets d’admission de l’air. D’autres systèmes vier tous les ans à Las Vegas. Cet événement est l’occasion de pré-
sont beaucoup plus « numériques », par exemple un lecteur senter les nouveaux produits qui seront commandés tout au long
audio ou vidéo. Ils sont bâtis autour d’une puce intégrant toute de l’année. Ainsi, ne pas être prêt à temps conduit à ne pas vendre
l’électronique, et possédant une interface mécanique (boutons) son produit de l’année (one week late, one year late).
minimaliste n’intervenant quasiment pas dans la complexité du Du point de vue de l’implantation, les systèmes embarqués sont
produit. souvent construits à base de composants matériels et logiciels
approuvés par les organismes de certification, et réunis sur des

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


H 8 200 – 2 est strictement interdite. – © Editions T.I.

YT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hXRPP

____________________________________________________________________________________________________________________ OS EMBARQUÉS

cartes (Printed Card Board). A contrario, les contraintes de coût par


pièces des systèmes intégrés et le volume visé imposent une
implantation en tant que circuit intégré unique, avec une carte qui Péri ph.
a quasiment pour seule mission de soutenir les connecteurs, A
l’écran et le clavier s’il y en a. Cœur
à usa ge
généra l
Péri ph.

Interc onnexi on
Cœur B
2. Point sur les architectures à usa ge
généra l
matérielles Cœur
à usa ge
À la différence des ordinateurs classiques [3], les architectures généra l
intégrées sont nombreuses et très différentes, car adaptées à Cœur
l’application ou à la classe d’applications visées. Elles comportent Mémoi re
à usa ge
pa rta gée
en particulier des coprocesseurs spécialisés (par exemple à des généra l
phases de traitement intensif ou à la communication entre les élé-
ments de traitement). Plusieurs alternatives architecturales crédi-
bles existent, et l’on peut en citer trois qui sont représentatives des
choix d’architectures actuels :
Figure 3 – Architecture homogène à quatre processeurs S
• un processeur pilotant des blocs configurables et/ou spéciali-
sés (figure 1) ; Il est également possible d’ajouter des instructions utiles à une
application dans un processeur. Ces processeurs extensibles
• un processeur (ou cœur) à usage général (noté GPP pour peuvent être utilisés seuls si l’extension suffit à satisfaire les
General Purpose Processor, acronyme que nous retrouverons contraintes, ou en multiprocesseur sinon, avec potentiellement des
souvent) et un processeur de traitement de signal (DSP pour
extensions différentes pour chaque instance de processeur. Le pla-
Digital Signal Processor, abréviation également largement
cement des mémoires est une donnée très importante de ces
utilisée dans la suite) travaillant conjointement (figure 2) ;
architectures, car la latence d’accès aux instructions et aux don-
• plusieurs processeurs identiques se partageant un traitement nées influe fortement sur les performances d’un programme.
(figure 3).
L’accès aux données par les processeurs se fait par l’émis-
sion d’adresses qui représentent un emplacement unique de
l’espace de mémorisation dans laquelle ils peuvent lire ou
Cœur écrire des données. Dans le cas où il y a plusieurs processeurs
Péri ph.
à usa ge
A dans un système, la structure de cet espace peut ne pas être
généra l
identique du point de vue des processeurs, i.e. une adresse
Interc onnexi on

émise par un processeur peut représenter un emplacement


ayant une adresse différente pour un autre processeur. Les pro-
Péri ph. cesseurs peuvent également être dotés d’adresses dites virtuel-
Coproc .
B
les. Dans ce cas l’adresse émise par un processeur passe par
un module matériel de traduction d’adresse qui traduit cette
adresse dite « virtuelle » en adresse physique qui identifie un
Cœur emplacement unique du point de vue du processeur. Ce méca-
Mémoi re
spéc i a li sé nisme est principalement utilisé pour compiler tous les pro-
grammes de manière identique, ils ont ainsi l’illusion de
s’exécuter aux mêmes adresses, alors qu’à l’exécution, ils sont
Figure 1 – Processeurs pilotant des coprocesseurs en réalité placés physiquement par le système d’exploitation à
des adresses différentes.

Il est facilement imaginable que ces différentes architectures


Cœur Péri ph.
à usa ge matérielles vont requérir des couches logicielles différentes, qui
A
généra l devront in fine être adaptées à la fois au type du processeur et à la
plate-forme. De plus, en fonction des besoins de l’application, en
terme principalement de dynamicité des traitements à effectuer
Mémoi re Péri ph. (allocation dynamique de mémoire, création de tâches à la
Interc onnexi on

loc a le B demande, etc.), le support du logiciel pourra être plus ou moins


complexe.
Les problématiques d’encombrement et de coût impliquent
Cœur des solutions architecturales très variés. Pour certains petits sys-
spéc i a li sé tèmes, un processeur 8 ou 16 bits avec quelques kilo-octets de
Mémoi re mémoire implantant une machine d’états sera une solution très
pa rta gée bon marché (chaque circuit coûtant moins d’un centime). Des
Mémoi re solutions intermédiaires font usage de microcontrôleurs 32 bits,
loc a le un petit système informatique fournissant souvent, en plus des
mémoires et périphériques classiques, des convertisseurs analo-
gique/numérique et d’autres interfaces ad hoc. Finalement, les
Figure 2 – Architecture hétérogène à deux processeurs solutions hautes performances intègrent souvent plusieurs pro-

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. H 8 200 – 3

YU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
hXRPP

OS EMBARQUÉS ____________________________________________________________________________________________________________________

cesseurs et coprocesseurs spécialisés, par exemple pour le trai- bien sur un surcoût lié à l’utilisation du processeur pour explici-
tement radio et vidéo. tement réaliser tout ou partie des transferts entre la mémoire
locale et la mémoire principale. L’usage de plusieurs proces-
seurs coopérants n’est également pas envisageable. On retrouve
Les problèmes de l’intégration VLSI, principalement la également sur ces systèmes une gestion partagée a priori des
variabilité des caractéristiques électriques qu’il est de plus en ressources, ce qui offre la garantie d’accès à une ressource sur
plus difficile de maîtriser lors de la fabrication, tendent à un intervalle de temps, avec la contrainte de ne pas permettre
favoriser des architectures homogènes, car naturellement l’utilisation de ressources si celui qui possède le droit d’accès
redondantes. Le processeur CELL d’IBM en est un exemple : n’en a pas l’usage. Mais c’est à ce prix que l’on peut assurer for-
son rendement de fabrication est proche de 100 % en n’utili- mellement des propriétés temporelles.
sant pas l’un de ces processeurs spécialisés. De même,
l’International Technology Roadmap for Semi-conductors
prévoit de l’ordre de 250 processeurs dans les systèmes inté- Le principe de multiplexage temporel, ou Time Division
grés grand public à l’horizon 2015, comme on peut le voir sur Multiplexing (TDM), est utilisé depuis fort longtemps pour le
la figure 4. transport de la voix sur les lignes téléphonique. Il consiste à
découper une période de temps T en n parties identiques s’il
y a n émetteurs, et à assigner à chaque émetteur T/n unités
de temps. On peut ainsi garantir, si T et n sont bien choisis,


un débit maximal et une latence minimale à une communica-
Il est néanmoins probable que l’un de ces processeurs aura
tion.
un rôle de « gestionnaire » de la totalité du système.

Ces systèmes ne requièrent en général ni des débits ni des puis-


Les architectures présentées ici doivent couvrir des usages
sances de calcul énormes et peuvent en pratique être d’un coût
très différents que l’on peut grossièrement classer en deux caté- relativement élevé. Ceci autorise des solutions moins efficaces,
gories. La première catégorie concerne les systèmes contraints à nécessitant plus de mémoire et de surface de silicium, mais per-
des temps de réactivité imposés, que l’on ne peut dépasser sous mettant une bien meilleure maîtrise du temps. L’autre catégorie
peine de mise en danger de la vie de personnes, ce qui est typi- est celle des systèmes dits best effort, qui font au mieux avec ce
quement le cas dans les transports (avionique, automobile) ou dont ils disposent. Notons que d’une certaine façon les systèmes
dans la gestion et le transport de l’énergie (alimentation d’usi- dit temps réel souples, pour lesquels le dépassement d’une
nes, centrales nucléaires). Ces systèmes sont dits critiques et échéance n’est pas catastrophique (comme par exemple ne pas
reposent sur la notion de temps réel strict. En général, à cause réussir à décoder une image dans les 25 millisecondes imparties),
de l’importance fondamentale qu’il y a à être capable de prédire font partie des systèmes best effort. Ces systèmes sont typique-
les temps d’exécution, l’architecture sera conçue pour éliminer ment ceux de l’électronique grand public, dont la puissance de cal-
autant que possible les sources d’indéterminisme temporel. cul (spécialisée) est énorme, et qui malgré l’existence de
Ainsi les caches sont en général proscrits, même si l’efficacité contraintes de temps, par exemple pour le décodage et la projec-
qu’ils apportent en moyenne est indiscutable. On peut envisager tion d’un film ou d’une musique, ne peuvent, pour des questions à
de les remplacer par des mémoires locales (dites scratch-pad) la fois de coût et de complexité être contraints à des garanties
dont le contenu est géré par logiciel et donc prédictible, avec absolues. Ainsi, les méthodes éprouvées d’accélération de la per-

50 2 000
Nombre de proc esseurs
Tailles mémoire et logique (relatives à 2007)

45 1 800

40 1 600
1 435
35 1 400

30 1 200
1 023
25 1 000
878
20 800
669
15 526 600
424
10 348 400
268
212
5 161 200
79 101 126
32 44 58
0 0
2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022
Nombre de proc esseurs (axe Y à droite)
Taille logique totale (relative à 2007)
Taille mémoire totale (relative à 2007, axe Y à gauche)

Figure 4 – Prévisions de l’ITRS concernant l’évolution des architectures pour l’électronique grand public

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


H 8 200 – 4 est strictement interdite. – © Editions T.I.

YV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVX

Java dans les systèmes embarqués


et temps réel

par Xavier CORNU


Ingénieur de l’École supérieure d’électricité (Supélec)
Chef de projet, Trialog
Responsable du projet européen Applying Java to Automotive Control Systems (AJACS)

1. Systèmes embarqués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S 8 068 – 2



1.1 Caractéristiques générales.......................................................................... — 2
1.2 Cas des applications automobiles.............................................................. — 3
1.3 Un modèle de système embarqué statique : OSEK / VDX ....................... — 4
2. Langages de programmation pour l’embarqué ............................... — 4
2.1 Langage C..................................................................................................... — 4
2.2 Langages orientés objet.............................................................................. — 5
2.3 Java............................................................................................................... — 5
2.4 Java et le temps réel ................................................................................... — 5
3. Développement des applications en Java......................................... — 6
3.1 Environnement de développement............................................................ — 6
3.2 Programmation système............................................................................. — 6
4. Support des applications temps réel ................................................. — 8
4.1 Multithreading ............................................................................................. — 8
4.2 Synchronisation ........................................................................................... — 8
5. Support du mécanisme d’exception ................................................... — 11
5.1 Exceptions en Java...................................................................................... — 11
5.2 Conception du logiciel................................................................................. — 11
5.3 Comportement temps réel.......................................................................... — 12
5.4 Besoins en mémoire.................................................................................... — 12
6. M    ............................................................................ — 12
6.1 Modèle habituel en Java............................................................................. — 13
6.2 Comparaison avec le langage C ................................................................. — 14
6.3 Pratiques courantes de l’embarqué ........................................................... — 14
6.4 Initialisation d’entités Java pour l’embarqué............................................ — 14
7 . Gestion de la mémoire ........................................................................... — 15
7.1 Utilisation de la mémoire en Java ............................................................. — 15
7.2 Utilisation des objets................................................................................... — 15
7.3 Téléchargement dynamique ....................................................................... — 16
7.4 Applications statiques : répartition ROM/RAM ......................................... — 16
8. Interface Java/natif.................................................................................. — 16
8.1 Description des possibilités ........................................................................ — 16
8.2 Utilisation dans les systèmes embarqués ................................................. — 17
9. Conclusion ................................................................................................. — 18
Bibliographie ...................................................................................................... — 18

’utilisation de Java dans les systèmes embarqués et temps réel présente des
L particularités, par rapport à d’autres langages, qu’il convient d’analyser.
Notamment, il faut porter une attention spéciale à ce qui lui manque pour répon-
dre aux besoins des systèmes embarqués contraints, dans le but de présenter un
certain nombre de recommandations.
p。イオエゥッョ@Z@ェオゥョ@RPPT

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Tech   
 S 8 068 − 1

YW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVX

JAVA DANS LES SYSTÈMES EMBARQUÉS ET TEMPS RÉEL _____________________________________________________________________________________

Aussi bien les programmeurs Java qui s’orientent vers la programmation de


systèmes embarqués que les programmeurs de systèmes embarqués qui
s’apprêtent à inclure des modules écrits en Java seront intéressés. En effet, pour
en faire une solution dédiée à l’embarqué et/ou au temps réel, le langage Java
nécessite des adaptations, et parfois le programmeur doit adopter d’autres pra-
tiques de programmation que pour une application Java « classique ».
Cet article trouve son origine dans les conclusions du projet européen AJACS
(Applying Java to Automotive Control Systems) [13] initié en février 2000 sur le
constat suivant : Java a un succès grandissant dans les systèmes d’information
et certains domaines de l’industrie, et intéresse de plus en plus la communauté
des programmeurs temps réel et embarqué. Il est apparu que les conclusions de
ce projet concernent l’ensemble des acteurs des systèmes temps réel et embar-
qués (aéronautique, ferroviaire, industrie, etc.). Plusieurs raisons sont à l’origine
de cet engouement pour Java. En premier lieu, l’orientation objet facilite la
conception de composants logiciels avec des interfaces définies strictement,

S jusqu’au code source. Ensuite, le langage Java est conçu pour être indépendant
de la plate-forme, et donc satisfait aux exigences d’indépendance vis-à-vis du
matériel, intéressantes dans une optique d’approvisionnement multisource.
Enfin, sa facilité d’apprentissage (on trouve un grand nombre de programmeurs
déjà formés) et sa robustesse contribuent à une meilleure productivité et à la
réduction des défauts ; elles permettent à l’équipe de développement de se
concentrer sur des activités plus « haut niveau » comme la définition des
composants logiciels.
L’objectif d’AJACS était de définir une technologie ouverte, basée sur une
structuration standard des logiciels embarqués pour l’automobile, qui saurait
conserver tous les avantages mentionnés précédemment du langage Java tout
en le renforçant sur les points importants que sont le temps réel, le déter-
minisme et l’adaptation à des milieux très contraints tels que l’on en trouve dans
le milieu automobile (par exemple, une unité de contrôle électronique avec
256 ko de ROM et 16 ko de RAM). Ces points importants concernent l’environne-
ment de développement, la programmation système, le « multithreading » et la
synchronisation, les exceptions, le modèle d’initialisation des applications, la
gestion de la mémoire et l’interface Java/natif. Si ces préoccupations sont
encore très en amont pour la plupart des applications automobiles, elles concer-
nent déjà certaines applications multimédias et télématiques dans les voitures et
les applications de l’aéronautique ou du temps réel industriel, qui trouveront ici
une description de la problématique d’un environnement Java dédié à l’embar-
qué et/ou au temps réel.

1. Systèmes embarqués — la consommation, le coût et la fiabilité sont souvent des attri-


buts importants qui influencent la conception.
Ces caractéristiques s’appliquent à une grande variété de systè-
mes [1] :
1.1 Caractéristiques générales — le contrôleur d’une télécommande radiofréquence de poche
peut posséder des attributs tels que :
• 100 KIPS (cent mille instructions par seconde), résistance aux
Les systèmes embarqués peuvent être définis comme suit : chocs, bonne autonomie,
« Un système embarqué emploie une combinaison de matériel et • logiciel optimisé en taille ;
de logiciel (une unité de calcul) pour réaliser une fonction — le contrôleur d’un équipement industriel peut posséder des
spécifique ; fait partie d’un système plus large qui peut ne pas être attributs tels que :
un ordinateur ; fonctionne dans un environnement réactif avec des • 1 MIPS (un million d’instructions par seconde), sûreté de fonc-
contraintes de temps. Le logiciel fournit les fonctionnalités et la tionnement, 1 Mo de mémoire,
flexibilité. Le matériel (e.g. processeurs, ASICs, mémoire...) fournit • logiciel à base de boucles de scrutation ;
la performance et parfois la sécurité [1]. » — un système de traitement de signal à usage militaire peut pos-
Les systèmes embarqués présentent typiquement les caractéristi- séder des attributs tels que :
ques suivantes [1] : • 1 GFLOPS (un milliard d’opérations en virgule flottante par
— ils réalisent une fonction ou un ensemble resserré de fonctions seconde), entrées/sorties à 1 Gbit/s, 32 Mo de mémoire.
(ils ne sont en général pas génériques) ; Les systèmes embarqués sont aussi classables en systèmes fer-
— leurs performances s’accroissent ainsi que leurs contraintes més/statiques contre systèmes ouverts/dynamiques. Dans les systè-
temps réel ; mes fermés/statiques, toutes les ressources sont prédéterminées (en

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 068 − 2 © Techniques de l’Ingénieur

YX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVX

_____________________________________________________________________________________ JAVA DANS LES SYSTÈMES EMBARQUÉS ET TEMPS RÉEL

Entrée du système Sortie du système


Capteur de la roue Compteur

Mesure Affichage de la vitesse Affiche


de vitesse (fonction utilisateur) valeur

Flo
t
de du
Lire pédale Lire

do véh
de frein Régulateur de vitesse boutons RV

nn icu
(fonction utilisateur)

ée le
sd
ev
ite

Régulateur
sse

Contrôle

de vitesse du moteur

Sous-fonction
de contrôle du moteur

Figure 1 – Fonctions utilisateur : affichage et régulation de vitesse

termes de threads, mémoire, etc.). C’est souvent une caractéristique, telles que l’infodivertissement/multimédia (autoradio, navigation,
sinon une exigence, des applications sûres de fonctionnement (telles téléphone mobile), l’habitacle (tableau de bord, vitres électriques,
que les applications avioniques, automobiles ou spatiales). Les systè- verrouillage centralisé) ou le contrôle du véhicule (contrôleur
mes fermés/statiques permettent l’optimisation de l’empreinte d’injection, transmission, freinage, suspension).
mémoire et donc du coût du matériel pour deux raisons : Cette pénétration a été rendue possible par l’avènement des tech-
— la mémoire est entièrement utilisée, donc les modules seront nologies réseau (ce qu’on appelle le multiplexage dans l’automobile)
dimensionnés au plus juste ; telles que le réseau CAN (Controller Area Network). Un véhicule typi-
— une grande partie des données peut être placée en mémoire que possède une vingtaine d’UCE interconnectées via plusieurs
ROM ou flash, moins chères, plutôt qu’en RAM. réseaux qui reflètent plus ou moins les domaines fonctionnels (châs-
Les langages typiquement utilisés aujourd’hui pour le développe- sis, groupe motopropulseur, carrosserie, infodivertissement).
ment de systèmes embarqués sont : Les UCE sont typiquement conçues et développées par les équi-
— l’assembleur (voir [H 3 178]). Encore maintenant, de nombreux pementiers conformément aux exigences formulées par les cons-
systèmes embarqués sont écrits en assembleur, pas forcément à tructeurs. Jusque récemment, chaque UCE était dédiée à une seule
cause d’un manque d’expérience ou de savoir-faire, mais le plus fonction utilisateur (par exemple, la climatisation) et les équipemen-
souvent pour des raisons économiques : dans beaucoup d’applica- tiers avaient entière liberté pour l’implémentation (matériel et logi-
tions où la complexité logicielle est très faible, l’assembleur permet ciel). Les constructeurs essayent maintenant d’introduire plus de
de réaliser des programmes de taille minimale, donc d’utiliser des flexibilité dans le processus de développement qui permet l’éclate-
composants bon marché ; ment des fonctions utilisateur en sous-fonctions ayant chacune des
— le C (voir [H 3 068]). La plupart des systèmes automobiles par exigences très précises. Deux exemples d’un tel éclatement, les
exemple sont écrits en C. Ce langage est devenu incontournable fonctions utilisateur « affichage » et « régulation de vitesse », sont
dans les années 1990 quand les systèmes électroniques ont gagné présentées sur la figure 1.
en complexité ; À une certaine étape du processus de développement, les sous-
— le C++ (voir [H 3 078] et [H 3 138]), jugé parfois trop complexe fonctions résultantes seront « placées » sur des sous-systèmes
pour être totalement maîtrisé par une large communauté de pro- matériels, les UCE, qui forment l’architecture physique (figure 2).
grammeurs et posant des problèmes difficiles de vérification par L’intention des constructeurs est de pouvoir mener en parallèle les
des outils automatiques, n’a pas réellement percé pour les logiciels tâches de conception fonctionnelle et physique, avec des points de
embarqués complexes ; synchronisation bien définis (tentatives d’allocation physique des
— Ada (voir [H 2 280]). Il est utilisé dans beaucoup de systèmes sous-fonctions).
embarqués complexes comme les applications militaires, avioniques Les constructeurs attendent d’un tel processus de développement
ou spatiales. Le logiciel du lanceur Ariane par exemple est écrit en Ada. les bénéfices suivants : avoir plus de contrôle sur la spécification
des fonctions utilisateur, garder sous contrôle les fonctions permet-
tant une forte différenciation et réduire le temps de développement
1.2 Cas des applications automobiles et le coût du matériel électronique.
À cause de cette tendance, les relations entre constructeurs et
équipementiers commencent à changer. Ils peuvent fournir une UCE
Les véhicules d’aujourd’hui incluent un nombre grandissant de « incomplète » : une plate-forme (matériel/logiciel) qui doit être
systèmes électroniques. Les UCE (unité de contrôle électronique) complétée par le constructeur ou un tiers (par exemple, une UCE
jouent un rôle crucial dans les parties fonctionnelles du véhicule contrôle du moteur sans les sous-fonctions concernant la boîte de

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 068 − 3

YY
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPVX

JAVA DANS LES SYSTÈMES EMBARQUÉS ET TEMPS RÉEL _____________________________________________________________________________________

A B S T ableau de bord

Mesure Afficher
de la vitesse valeur

Lire pédale Lire


de frein boutons RV

S Régulateur
de vitesse
Contrôle
du moteur

Groupe moto-propulseur

Figure 2 – Allocation physique des fonctions affichage et régulation de vitesse

vitesse automatique). Les équipementiers peuvent également être faut ajouter bon nombre d’implémentations propriétaires des cons-
sous-traitants pour un module purement logiciel (par exemple, une tructeurs et équipementiers.
fonction utilisateur complète ou toutes les sous-fonctions situées Les spécifications OSEK/VDX incluent OSEK/OS qui définit le
sur une UCE). comportement et les interfaces d’un système d’exploitation temps
D’un autre point de vue, les équipementiers recherchent plus de réel statique (il assure l’exécution et la synchronisation des tâches
flexibilité dans leur processus de développement. La plupart d’entre applicatives et des routines d’interruption), OSEK/OIL qui définit un
eux mettent en place des plates-formes génériques (matériel/logiciel) langage de configuration d’un composant logiciel ou d’une applica-
pour un domaine fonctionnel donné (par exemple, contrôle de clima- tion (définition des tâches, description des messages pouvant être
tisation). Ainsi, une large gamme de produits peut être dérivée facile- envoyés) ainsi que OSEK/COM et OSEK/Network Management pour
ment et à faible coût à partir d’une plate-forme générique en la communication et la gestion du réseau.
l’adaptant rapidement aux exigences d’un projet particulier. Au niveau
OSEK/VDX fournit un canevas standard pour la structuration du
logiciel, les plates-formes génériques sont basées sur un ensemble
logiciel des unités de contrôle distribuées dans les véhicules. Il res-
défini de composants élémentaires qui peuvent être interconnectés de
pecte deux exigences contraignantes des systèmes automobiles men-
différentes façons, dépendant des exigences particulières.
tionnés précédemment : le temps réel et la faible empreinte mémoire,
Toute l’industrie identifie le besoin d’un guide pour réaliser la comme on peut le voir dans ses caractéristiques principales :
transition vers les architectures électroniques avancées. Elle pousse
— c’est un système statique. Toutes les entités sont connues car
à la définition de standards pour les interfaces comme dans l’initia-
déclarées à l’avance. De plus, toutes les structures de données sont
tive OSEK/VDX [2] présentée ci-après. Elle recherche aussi des
définies et initialisées statiquement en utilisant le langage OIL, ces infor-
méthodes d’ingénierie logicielle avancée (basées sur OMT, UML...)
mations sont stockées en mémoire ROM (ou flash) mais pas en RAM ;
et des approches mettant en avant la réutilisation de composants
logiciels (par exemple, programmation orientée objet, génération — il fournit des services de gestion d’interruptions, de synchroni-
automatique de code). sation de tâches, de gestion de priorités bien adaptés aux applica-
tions temps réel strictes.

1.3 Un modèle de système embarqué


statique : OSEK / VDX 2. Langages
OSEK (Offene Systeme und deren Schnittstellen für die Elektronik
de programmation
in Kraftfahrzeug, système ouvert et les interfaces correspondantes
pour l’électronique automobile) est un projet coopératif initié en
pour l’embarqué
1993 par l’industrie automobile allemande : les partenaires initiaux
étaient BMW, Bosch, Daimler-Benz, Opel, Siemens, Volkswagen et
l’université de Karlsruhe (IIIT) comme coordinateur. Les construc- 2.1 Langage C
teurs français ont rejoint le groupe en 1994, introduisant leur appro-
che similaire VDX (Vehicle Distributed eXecutive, exécutif distribué
pour les véhicules). Les premiers résultats des efforts d’harmonisa- Le langage C [H 3 068] a été développé dans les années 1970
tion ont été présentés par le groupe OSEK/VDX en 1995. comme langage d’implémentation pour un système d’exploitation
Le processus de soumission ISO (ISO 17356) a démarré début naissant : Unix. Dérivé d’un langage non typé, le BCPL, il s’est doté
2000 et OSEK/VDX est maintenant probablement le plus grand suc- d’une structure typée pour devenir rapidement le langage procédu-
cès de la standardisation dans le domaine du logiciel embarqué ral de référence et l’outil dominant des programmeurs pour des
avec plus de 10 fournisseurs de composants OSEK/VDX auxquels il décennies.

Toute reproduction sans autorisation du Centre franç ais d’ exploitation du droit de copie est strictement interdite.
S 8 068 − 4 © Techniques de l’ Ingénieur

QPP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPWP

UML pour le temps réel :


le langage et les méthodes
par François TERRIER
Chef du département Ingénierie des logiciels et des systèmes
CEA, LIST – Gif-sur-Yvette, France

et Sébastien GÉRARD
Chef du laboratoire Ingénierie dirigée par les modèles pour les systèmes embarqués
CEA, LIST / DILS – Gif-sur-Yvette, France

1.
2.
Intérêt d’UML pour le temps réel.................................................
Vue générale d’UML .......................................................................
S 8 070v2 – 2
— 2

2.1 Différents diagrammes d’UML ........................................................... — 2
2.2 Modélisation du fonctionnement global d’un système .................... — 3
3. Caractéristiques temps réel qualitatives ................................... — 4
3.1 Modélisation de la concurrence ........................................................ — 4
3.1.1 Concurrence et objets actifs .................................................... — 4
3.1.2 Concurrence et machine à états .............................................. — 5
3.1.3 Concurrence et objet passif ..................................................... — 5
3.2 Modélisation des communications .................................................... — 6
3.2.1 Envoi de message par appel d’opération ............................... — 6
3.2.2 Envoi de message par émission de signal ............................. — 7
3.3 Modélisation du comportement ........................................................ — 7
3.3.1 Machines à états-transitions ................................................... — 8
3.3.2 Diagrammes d’activité ............................................................. — 10
3.3.3 Diagrammes de séquence ....................................................... — 10
3.3.4 Modélisation des actions ........................................................ — 11
4. Caractéristiques temps réel quantitatives ................................ — 12
4.1 Modélisation de propriétés temporelles dans les diagrammes
de séquence ....................................................................................... — 12
4.2 Modélisation de propriétés temporelles dans les diagrammes
d’états ................................................................................................. — 13
5. Conclusion........................................................................................ — 13
Pour en savoir plus.................................................................................. Doc. S 8 070v2

vec la normalisation d’UML (Unified Modeling Language), le point dur de


A la profusion de formalismes orientés objets est tombé, facilitant par là-
même l’introduction de ces technologies dans le domaine industriel. Présent
dans le cursus de formation des filières informatiques de la plupart des masters
et écoles d’ingénieur, UML est déjà largement utilisé dans l’industrie pour la
conception et le développement des systèmes d’information de secteurs très
variés comme les finances ou la défense. Les travaux en cours à l’OMG (Objet
Management Group) pour introduire dans les évolutions de la norme les points
relatifs au domaine du temps réel montrent un intérêt fort pour UML de la part
du monde des systèmes et logiciels temps réel ou embarqués avec l’implication
de secteurs industriels majeurs comme l’avionique, les télécommunications et
l’automobile [1].
Ce texte vise à faire un point sur les concepts natifs d’UML déjà disponibles en
standard et qui peuvent être utilisés pour modéliser des systèmes temps réel. En
particulier, nous décrirons rapidement les différents supports fournis par UML
pour la modélisation de la concurrence, du comportement, des communications
p。イオエゥッョ@Z@ュ。ゥ@RPQS

Copyright © - Techniques de l’Ingénieur - Tous droits réservés S 8 070v2 – 1

QPQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPWP

UML POUR LE TEMPS RÉEL : LE LANGAGE ET LES MÉTHODES –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

et informations temporelles quantitatives. Il se réfère à la version 2.5 fournie par


l’OMG en 2013. Les exemples de modèles ont été construits à l’aide du modeleur
UML 2 de référence de la fondation Eclipse (http://www.eclipse.org/papyrus).
Un second article UML pour le temps réel. Application illustrera ces concepts
sur une étude de cas en mettant en évidence une approche méthodologique
proposée pour traiter les points les plus délicats de l’utilisation d’UML.

d’UML : System Modeling Language (SysML – http://www.sysml.


1. Intérêt d’UML pour le temps org) et Modeling and Analysis of Real-Time Embedded Systems
(MARTE – http://www.omgmarte.org) [IN 120]. Dans le contexte de
réel cet article l’accent est mis sur les bases d’UML directement exploi-

S Indépendamment des chiffres précis, il est clair qu’il y a une


tables pour la modélisation et la conception de systèmes temps
réel. L’exploitation des normes dérivées d’UML, telles que SysML
et MARTE seront abordées dans des articles indépendants.
explosion du marché des systèmes embarqués, temps réel et distri- UML étant un langage et non une méthode, l’objectif de cet arti-
bués, qui entraı̂ne une pression extrêmement forte sur leur déve- cle n’est pas de proposer à proprement parler une manière d’utili-
loppement. L’accroissement constant des nouveaux services four- ser UML pour la modélisation de systèmes temps réel embarqués,
nis par ces systèmes met les développeurs en face du problème mais de présenter quels sont les concepts natifs disponibles dans
de développement de systèmes de plus en plus sophistiqués alors le langage UML pour décrire les caractéristiques temps réel d’une
que la compétition toujours croissante entre les entreprises les application, à la fois qualitativement et quantitativement. Les lec-
incite à développer de plus en plus rapidement avec des coûts tou- teurs recherchant des informations plus orientées méthodologies
jours plus réduits ! sont invités à consulter [2] à [6].
Les approches classiques de développement temps réel ont Toutefois, ce document présente de manière progressive une
atteint leurs limites dans un monde où, d’une part, les cibles maté- sélection des concepts les plus importants et définit ainsi de
rielles ne peuvent être précisément connues à l’avance et où, d’au- manière implicite des éléments de méthodes. La suite est organi-
tre part, les évolutions des versions des systèmes deviennent de sée autour de quatre paragraphes : le paragraphe 2 présente une
plus en plus rapides afin de suivre les exigences du marché. vue générale d’UML et introduit la modélisation du fonctionnement
Réutilisation et évolutivité deviennent des exigences essentielles global d’un système : les cas d’utilisation ; le paragraphe 3 est
pour les méthodes et techniques de développement. Dans un tel dédié à la description qualitative des caractéristiques temps réel ;
contexte, le développement de systèmes temps réel ne peut être réa- le paragraphe 4 montre comment il est possible de décrire des
lisé efficacement sans un important support méthodologique et des informations quantitatives.
outils d’accompagnement. Parallèlement, les techniques orientées
objets ont atteint un degré de maturité suffisant pour offrir avec suc-
cès la flexibilité demandée par les nouvelles applications. Toutefois,
jusqu’ici, la communauté temps réel a été réticente à franchir ce
rubicon, et ce principalement pour les deux raisons suivantes :
2. Vue générale d’UML
 l’état de maturité des approches orientées objets n’était pas
suffisant pour assurer la stabilité et la pérennité des solutions
La base de notations utilisée ici est celle d’UML 2.5, en vigueur
proposées en termes de méthodes et d’outils ;
au moment de la rédaction de cet article. Toutefois, l’OMG s’efforce
 les spécificités du temps réel étaient généralement mal cou- d’assurer une compatibilité ascendante maximale des versions de
vertes par les approches proposées. la norme afin de ne pas pénaliser les outils existants lors des évo-
Ces dernières années, UML est devenu le langage privilégié des lutions de la norme, et comme les concepts et structures utilisés ici
ingénieurs pour la modélisation des systèmes. En effet, l’arrivée de font partie des fondamentaux d’UML qui ne devraient que très peu
la première norme UML en 1997 a fourni à de nombreux éditeurs évoluer dans leur notation et leurs usages, les exemples présentés
de logiciels le signal qu’ils attendaient pour lancer le développe- devraient rester valables pour les versions à venir d’UML.
ment d’une nouvelle génération d’outils centrés sur la modélisation
des systèmes. La modélisation orientée objets, avec un formalisme
standard comme UML, apporte ainsi des solutions intéressantes 2.1 Différents diagrammes d’UML
aux enjeux soulignés précédemment. A minima, UML est devenu UML offre un nombre très important de vues différentes, complé-
un standard très largement répandu pour l’ingénierie logicielle. De mentaires et cohérentes d’un même système. UML 2.5 en offre
plus, les approches orientées objets répondent maintenant bien quatorze qui peuvent être organisées en deux grandes classes, les
aux deux exigences essentielles que sont : diagrammes de structures et les diagrammes de comportement,
 la fourniture d’un grain fin de modularité pour le développe- constituées comme suit.
ment à base de composants ;
 Description de comportements :
 l’amélioration des propriétés de réutilisation et de mainte-
nance des sous-systèmes (ou composants). – description au niveau système des besoins des utilisateurs :
supportée par les diagrammes de cas d’utilisation ;
Les activités de normalisation menées par l’OMG autour d’UML – description du fonctionnement dynamique des éléments du
pour le domaine des systèmes embarqués ont été particulièrement système : elle repose principalement sur les diagrammes de machi-
intenses ces dernières années et associées à la refonte de la norme nes à états. Elle peut être précisée par des diagrammes d’activités
elle-même. On peut citer, en particulier, deux normes dérivées précisant les flots de données et de contrôle ;

S 8 070v2 – 2 Copyright © - Techniques de l’Ingénieur - Tous droits réservés

QPR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPWP

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– UML POUR LE TEMPS RÉEL : LE LANGAGE ET LES MÉTHODES

– description des interactions entre les objets du système : elle Moyennant cet objectif, la construction d’un diagramme de cas
repose sur les diagrammes de séquence, les diagrammes de com- d’utilisation est intéressante pour trois raisons :
munication, les diagrammes globaux d’interaction et les diagram-  premièrement, elle permet à un expert d’un domaine de spéci-
mes temporels. Ces différents types de diagrammes fournissent fier un système avec son point de vue métier, et ceci de façon
une vue gros grain de la dynamique du système centrée sur les suffisamment précise pour qu’un développeur puisse exploiter
échanges entre les objets qui le réaliseront. Le plus utilisé est le cette spécification pour construire un système opérationnel ;
diagramme de séquence.  deuxièmement, les éléments constituant les diagrammes de
cas d’utilisation (essentiellement acteurs et cas d’utilisation)
 Description de structures : forment un moyen d’expression simple et commun aux diffé-
– description de la structure et de l’architecture logique (logi- rentes personnes intervenant dans la vie d’un système (experts
cielle) du système : elle repose principalement sur les diagrammes du domaine d’application, développeurs de systèmes informa-
de classes qui effectuent une typologie des entités constituant le tiques et utilisateurs). Ainsi, des personnes possédant un point
système et qui précisent les relations entre ces différents types de vue différent d’un système peuvent échanger des idées dans
d’entités. Ils peuvent être étendus pour expliciter des notions de le but d’améliorer le développement de ce système ;
composition à l’aide des diagrammes de structures composites.  enfin, les cas d’utilisation peuvent servir de base pour valider
Ils sont complétés par des diagrammes d’objets précisant quelles l’implantation d’un système.
instances particulières des classes seront manipulées pour mettre Dans UML, les diagrammes de cas d’utilisation servent principale-
en œuvre le système ; ment à décrire le comportement d’éléments qui peuvent être de natu-


– description de la réalisation du système : elle repose sur les res très différentes : système, sous-système, classe, composites…
diagrammes de composants (au sens d’une implantation finale) et Les concepts principaux manipulés dans ces diagrammes sont
les diagrammes de déploiement de ces composants sur l’architec- les acteurs (Actor) et les cas d’utilisation (UseCase) :
ture matérielle supportant le système.
 Actor – un acteur est un ensemble cohérent de rôles que
Ces différents diagrammes ont un rôle plus ou moins prépondé- jouent des utilisateurs par rapport à une entité quand ils interagis-
rant dans la modélisation ; c’est pourquoi seuls les diagrammes les sent avec elle.
plus importants dans une optique de la spécification et de la  UseCase – un cas d’utilisation décrit le comportement d’un sys-
conception d’un logiciel temps réel ont été retenus ici. Il s’agit des tème ou toute autre entité sémantique sans en dévoiler la structure
diagrammes de cas d’utilisation, de séquences, de classes, de interne.
machines à états et d’activités.
Exemple
La figure 1 décrit un diagramme de cas d’utilisation simplifié d’un
système de régulation. Celui-ci est ainsi composé :
2.2 Modélisation du fonctionnement
 d’un bouton marche/arrêt ;
global d’un système  d’un moteur sur lequel est appliquée la consigne de couple calcu-
Dans la plupart des approches de génie logiciel basées sur UML, lée par le système ;
ce sont les diagrammes de cas d’utilisation qui sont utilisés au  d’un compteur de vitesse qui fournit la vitesse courante du véhi-
niveau système pour en décrire le comportement à un haut degré cule au système ;
d’abstraction. À ce stade du travail, le système considéré est  d’un afficheur qui fournit au conducteur l’état de fonctionnement
regardé comme une boı̂te noire. du régulateur.

Système Système de régulation de la vitesse

Maintenir la vitesse

Moteur

Condition (speed > 70 Km/h)


Extension point : check speed
« extend »
Acteur

Démarrer
Compteur de vitesse

« include »
Afficher l'état
Marche Arrêt
« include »

Arrêter Afficheur

Cas d’utilisation

Figure 1 – Éléments de notation du diagramme de cas d’utilisation

Copyright © - Techniques de l’Ingénieur - Tous droits réservés S 8 070v2 – 3

QPS

QPT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
rXPXP

Qualité des logiciels industriels

par Élisabeth WALTI


Consultant en qualité des logiciels
Responsable de secteur à la Société Qualience

1. Processus de base .................................................................................... R 8 080 - 2


1.1
1.2
1.3
Processus d’acquisition ...............................................................................
Processus de fourniture ...............................................................................
Processus de développement .....................................................................



2
3
4

1.4 Processus d’exploitation.............................................................................. — 4
1.5 Processus de maintenance .......................................................................... — 4
2. Processus de support .............................................................................. — 5
2.1 Processus de documentation ...................................................................... — 5
2.2 Processus de gestion de configuration ...................................................... — 6
2.3 Processus d’assurance de la qualité ........................................................... — 6
2.4 Processus de vérification ............................................................................. — 6
2.5 Processus de validation ............................................................................... — 7
2.6 Processus de revues..................................................................................... — 7
2.7 Processus d’audits........................................................................................ — 7
2.8 Processus de résolution de problème ........................................................ — 7
3. Processus organisationnels ................................................................... — 7
3.1 Processus de management ......................................................................... — 7
3.2 Processus d’infrastructure ........................................................................... — 9
3.3 Processus d’amélioration ............................................................................ — 9
3.4 Processus de formation ............................................................................... — 9
4. Conclusion .................................................................................................. — 9
5. Annexe A. Les tests du logiciel ............................................................ — 10
5.1 Étapes de test................................................................................................ — 10
5.2 Familles de tests ........................................................................................... — 10
5.3 Techniques de tests ...................................................................................... — 10
6. Annexe B. Les normes, les standards, les référentiels .................. — 13
6.1 DO-178B/ED-12B ........................................................................................... — 13
6.2 DoD-STD-2167 .............................................................................................. — 13
7. Annexe C. La qualimétrie ....................................................................... — 13
Pour en savoir plus ........................................................................................... Doc. R 8 080

P arler de qualité est le plus souvent trop abstrait. Il semble plus facile d’abor-
der la question de la qualité par la non-qualité. Chacun a pu voir dans la vie
de tous les jours ou dans le milieu professionnel, les effets de la non-qualité. Les
conséquences sont aussi bien au niveau des coûts, des délais que des personnes
et des biens.
Comme exemple grand public, le logiciel Socrate de la SNCF, dont la mise en
œuvre a été laborieuse, a beaucoup compliqué la vie des utilisateurs et des usa-
gers, et a profondément nui à l’image de l’entreprise. L’exemple du premier tir
d’Ariane 5 vient également à l’esprit. Ces deux faits sont connus de tous, en rai-
son de leur importante couverture médiatique, mais de nombreux autres exem-
ples se rencontrent tous les jours et par tout un chacun.
p。イオエゥッョ@Z@ェオゥョ@QYYX

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Mesures et Contrôle R 8 080 − 1

QPU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
rXPXP

QUALITÉ DES LOGICIELS INDUSTRIELS _____________________________________________________________________________________________________

Un état d’esprit encore assez répandu dans le domaine du logiciel laisse enten-
dre que la qualité coûte trop cher, retarde le développement, ... et la décision de
réaliser en premier le produit (exécutable) et ensuite le reste (documentation,
tests, etc.) en fonction du temps restant est encore très souvent d’actualité.
En fait, la qualité n’est pas une entité précise et délimitée à un instant du déve-
loppement mais doit faire partie intégrante de la manière d’être, et se faire tout
au long du cycle de vie d’un produit.
Il semble intéressant de préciser que des secteurs industriels, développant des
logiciels sécuritaires comme l’aéronautique par exemple, ont depuis longtemps
mis en place des méthodes répondant à des besoins de rigueur et donc de qua-
lité. L’apparition de standards a permis de quantifier les besoins et les attentes
de chacun et servent de référence au moment des phases d’acceptation.
Depuis quelques années, le concept de qualité totale est apparu sur le marché.
Les entreprises voulant rattraper leur retard se sont lancées dans des recherches
d’amélioration à travers l’ISO 9000, CMM, SPICE, etc. Ces démarches sont loin
S d’être négatives, les apports sont plus que positifs. Il faut cependant signaler des
échecs cuisants, induits le plus souvent par une non-communication interne à
l’entreprise. Faire avancer à marche forcée tout le personnel, sans explication et
sans tenir compte de leur point de vue, est la garantie d’un échec. La mise en
place d’un système qualité propre à une entreprise, ou à un secteur déterminé,
s’il est bien compris et approprié, ne peut être que positive.
Pour faciliter l’approche, et dans un souci de normalisation, il paraît plus sim-
ple de prendre le cycle de vie du logiciel et de passer en revue tous les processus
le constituant pour en faire ressortir les points qualité. La norme internationale
ISO 12207 « Processus du cycle de vie du logiciel » peut servir de trame dans la
suite de la présentation. Cette norme regroupe les activités qui doivent être
mises en œuvre pendant le cycle de vie, en cinq processus de base, huit proces-
sus de support et quatre processus organisationnels.
L’avantage de cette norme est de ne pas se limiter au développement pur du
logiciel, mais de le mettre dans le contexte de l’entreprise. Un autre avantage, qui
peut être déstabilisant au premier abord, est de ne proposer aucun modèle de
cycle de vie, laissant à l’utilisateur la liberté de choix en fonction de son besoin.

1. Processus de base C’est également pendant cette phase que les exigences qualité
(relatives au produit ou à la prestation, au suivi ou à l’acceptation)
envers le fournisseur sont à définir de la façon la plus exhaustive
possible.
1.1 Processus d’acquisition Pour les entreprises mettant en place un système qualité
conforme à l’ISO 9000, cette étape doit être complètement décrite
Sous cette appellation est rassemblé l’ensemble des activités à dans une procédure, qui doit ensuite être appliquée.
réaliser par l’acquéreur. Il faut noter que leur présence comme pro-
cessus à part entière du cycle de vie est relativement récente. Néan- ■ Le suivi
moins, ces activités existaient au sein de l’entreprise. Ce nouvel La seconde phase est le suivi du fournisseur. Cette activité qui doit
éclairage ne doit que les formaliser davantage. courir tout au long du développement est parfois laissée en som-
Ce processus comprend trois grandes phases. meil, le plus souvent par manque de temps ou par excès de
confiance.
■ La contractualisation
L’intervention de l’acquéreur sous la forme de la participation à
Il s’agit de l’initialisation, l’appel d’offres et le contrat. C’est-à-dire des réunions d’avancement régulières, même espacées dans le
de toutes les activités menant à la signature du contrat. temps peut suffire à éviter un écart final que ce soit au niveau du
Cette phase est très importante dans la mesure où elle est la produit ou de sa date effective de livraison.
pierre angulaire de la réussite du futur projet. La qualité ici intervient
à travers le sérieux des études préalables, les critères de choix du Exemple : la spécification du produit demandait : « la possibilité
fournisseur et les décisions prises, la documentation et les comptes d’écrire sur deux écrans de format différent ». Le fournisseur a prévu
rendus de réunions, l’appel à des experts pour des points nouveaux deux configurations différentes, et l’acquéreur de son côté pensait
ou très particuliers. « en simultané ». La reprise finale est très importante, puisqu’elle
demande au minimum une reprise profonde de l’interface utilisateur.
Exemple : si le contrat doit être fait avec une entreprise étrangère, Cette incompréhension aurait rapidement été détectée au cours d’une
il peut être important de contacter un juriste pour connaître les parti- réunion d’avancement ou lors de la relecture des documents techni-
cularités à spécifier dans le contrat. ques.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
R 8 080 − 2 © Techniques de l’Ingénieur, traité Mesures et Contrôle

QPV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
rXPXP

_____________________________________________________________________________________________________ QUALITÉ DES LOGICIELS INDUSTRIELS

Pour éviter tout litige, la demande de l’acquéreur d’avoir une vue ■ La seconde phase, qui suit le développement du projet, commence
sur le développement doit être spécifiée dans le contrat. par l’élaboration des plans du projet, que ce soit au niveau des
méthodes de développement (choix du cycle de vie, méthode de tra-
■ La réception vail structurée ou à objets), au niveau de la gestion (avec la gestion de
La dernière phase comprend l’acceptation et l’achèvement du projet ou de configuration...), ou au niveau qualité, avec la descrip-
processus. Si l’acceptation est assez classique et régulièrement réa- tion des directives à respecter pour assurer la qualité du projet. Tous
lisée car liée le plus souvent à une clé de paiement, l’achèvement ces plans sont vitaux, ils doivent être relus et validés avant le démar-
pour sa part est plus rare. Il doit être vu comme la conclusion du pro- rage du développement et suivant les clauses du contrat, ils peuvent
jet. Cette étape doit permettre de tirer les enseignements du projet être soumis pour approbation au client ou à un service officiel.
qui se termine. Il y a quelques années de nombreuses entreprises
Exemple : pour les projets aéronautiques, le standard DO-178B est
ont cherché des outils capables de les aider dans les démarrages de
imposé et la fourniture des plans en début de projet, en vue d’une cer-
nouvelles affaires pour diminuer les risques. Ces outils fonctionnent
tification des équipements, est demandée.
tous à partir d’une base de connaissance. Le principal point blo-
quant fut le manque d’informations pour l’enrichir. D’autre part, ces Il est très important de réaliser un planning précis de l’affaire.
outils demandent le réglage de nombreux paramètres avant de four- L’expérience préconise de signaler que la montée de charge sur un
nir un résultat fiable. projet n’est jamais à coût nul. La prise en compte de ce phénomène,
Le côté positif de ces essais est la prise de conscience du risque ainsi que les vacances, les réunions extérieures et les formations


inhérent au démarrage de tout projet et de l’importance de garder la envisageables permettront la construction d’un planning réaliste. Le
trace de l’antécédent. raisonnement voulant qu’une personne soit productive sur un projet
huit heures par jour, cinq jours par semaine, cinquante-deux semai-
Exemple : sans aller si loin, l’idée la plus simple est la mise à jour nes par an, peut entraîner des dérives importantes par rapport au
de la liste des fournisseurs. C’est également la décision de ne plus planning initial. Pour ce processus, le niveau de granularité des
sous-traiter, ou alors dans des conditions très particulières, certains tâches reste encore assez faible, le but recherché étant l’évaluation
types de projets. des différentes enveloppes. Les activités doivent toutes être listées
Quels qu’ils soient, ces enseignements sont toujours enrichis- et placées dans le temps. Un affinage est à mener par le processus
sants pour le futur et la pérennité de l’entreprise. de management.
Cette phase couvre l’exécution et la maîtrise des activités du four-
nisseur. Le point le plus important est la notion de maîtrise. Le four-
1.2 Processus de fourniture nisseur ne doit jamais se laisser porter par l’avancement du projet,
mais à partir du planning initial, des revues et des évaluations
menées régulièrement, produire un nouveau planning, mais surtout
Ce processus est le pendant exact du processus d’acquisition. Il comprendre et, si possible, corriger les dérives.
regroupe les activités du fournisseur.
Exemple : les retards sont dus à :
Il peut également être découpé en trois phases.
— une épidémie de grippe (30 % des effectifs atteints pendant
■ La première doit contenir l’initialisation, la réponse à l’appel 15 jours) (c’est une cause non prévisible) ;
d’offres et se poursuivre jusqu’à la signature du contrat. Cette étape — un produit non disponible dans les temps (c’est une cause exté-
est vitale pour la suite du projet et même dans certains cas pour la rieure prévisible) ;
survie de l’entreprise. Le premier point est la décision de répondre, — un manque de rigueur dans les développements (c’est une cause
qui ne doit jamais se faire à la légère. Comme contre-exemple par- intérieure).
fait, il est facile d’imaginer un ordre qui arrive de la direction et qui
balaie toutes les contradictions. Autre cas de figure, pour la survie Quelle que soit la cause, il est important de la déterminer et de la
de l’entreprise, il faut prendre ce contrat et le mener à son terme corriger et même si possible de l’éviter.
contre vents et marées, si nécessaire. Il est important de signaler Exemple : la livraison est prévue le 15 mars. Le 15 février, il reste
que même dans ces cas extrêmes, les études doivent être menées « si tout se passe bien » 40 jours de travail non parallélisables. Les
avec le plus grand soin. Comme dans le cas de l’acquéreur, la signa- miracles étant fort rares dans une entreprise, il convient peut-être de
ture du contrat portant des clauses particulières ou avec des clients songer à prévenir le futur acquéreur ou, tout au moins, de décider la
nouveaux peut demander l’aide d’experts. politique à suivre.
Exemple : 1. Il est important de signaler que la propriété des con- Pour des raisons politiques ou financières (une clé de paiement), il
naissances et du savoir-faire n’est pas régie de façon identique dans peut être décidé de ne pas immédiatement prévenir l’acquéreur du
tous les pays. retard. C’est une arme à double tranchant dont il faut savoir se servir.
2. Au moment de la réponse à l’appel d’offres, il arrive souvent que
■ La dernière phase de ce processus, est la livraison du produit, la
la demande ressemble beaucoup à une autre affaire terminée ou en
fourniture. Il est très important de s’assurer que tout est conforme et
cours de réalisation. Il suffit alors de présenter la même proposition.
complet avant de le livrer. Dans le cas contraire, le flou peut être vu
Il convient quand même de se méfier de plusieurs points : par l’acquéreur comme un manque de savoir-faire et donc comme
— l’ensemble des petits détails formant le delta entre les deux affai- une non-qualité.
res crée des différences importantes ;
— le contrat initial de la précédente affaire a pu être renégocié pour Exemple : il faut éviter de livrer au client, un produit comprenant
rendre le projet réalisable (solution technique non viable, ...) ; plusieurs logiciels dans des versions incompatibles ou avec une do-
— les dépassements de budget sont importants. cumentation périmée.
Ces points n’étant pas toujours présentés sous leur vrai jour, une Le fait qu’à la mise sous tension du système, rien ne se passe, est
attention particulière est de mise lors de la reprise de travaux antérieurs. du plus mauvais effet et correspond à une absence de contrôle de
sortie et toujours à de la non-qualité.
La réutilisabilité, très à la mode actuellement avec le développe-
ment des méthodes à objets, est à prendre en considération dans ce Exemple : à la mise sous tension d’un oscilloscope électronique,
processus. La décision de faire un logiciel, une bibliothèque ou l’écran reste muet. Le dévissage de la face arrière met en évidence
même un composant réutilisable n’est pas neutre. Il est admis que l’absence de circuit de traitement des signaux. L’acquéreur vient
les coûts du premier développement sont plus élevés. Il convient d’acheter à prix d’or une boîte vide. La suite est facilement envisagea-
d’en tenir compte au moment du choix. ble et surtout compréhensible.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur, traité Mesures et Contrôle R 8 080 − 3

QPW

QPX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPYP

Contrefaçon de logiciel

par Jean-Marie HUOT


Expert près la cour d’appel de Paris et la cour administrative d’appel de Paris, agréé par la
Cour de cassation
Vice-président de la Compagnie nationale des experts judiciaires en informatique et techniques
associées (CNEJITA)
et Arnaud TESSALONIKOS


Avocat, Counsel, droit des NTIC, SCP Courtois-Lebel
Chargé d’enseignement à l’université de Paris-II

1. Quelques notions juridiques ................................................................. S 8 090 – 2


1.1 Propriété intellectuelle ................................................................................ — 2
1.2 Propriété littéraire et artistique................................................................... — 2
1.3 Propriété des logiciels ................................................................................. — 4
1.4 Vers la brevetabilité des logiciels............................................................... — 6
1.5 Modalités de cession des droits de l’auteur.............................................. — 6
1.6 Sanctions des actes constitutifs de contrefaçon....................................... — 6
1.7 Concurrence déloyale ou parasitaire ......................................................... — 7
2. Champ de la contrefaçon en informatique....................................... — 7
2.1 Contrefaçon dans le domaine des techniques avancées ......................... — 7
2.2 Informatique en tant que vecteur............................................................... — 9
3. Processus de développement d’un logiciel. Rappel....................... — 9
3.1 Conception ................................................................................................... — 10
3.2 Spécifications externes ............................................................................... — 10
3.3 Spécifications internes................................................................................ — 10
3.4 Écriture des programmes ou coding ......................................................... — 10
3.5 Compilation ou transformation en langage machine............................... — 11
4. Similitudes constatées au niveau des étapes
de développement ................................................................................... — 11
4.1 Conception ................................................................................................... — 11
4.2 Spécifications externes ............................................................................... — 12
4.3 Spécifications internes................................................................................ — 13
4.4 Lignes d’instructions ................................................................................... — 14
4.5 Identité au niveau des programmes exécutables..................................... — 17
4.6 Cas particulier de la programmation objets.............................................. — 18
5. Mise en évidence de la contrefaçon................................................... — 18
5.1 Préalables ..................................................................................................... — 19
5.2 Procédure de saisie contrefaçon ................................................................ — 19
5.3 Saisine du tribunal ...................................................................................... — 20
6. Quelques recommandations en guise de conclusion .................... — 20

Pour en savoir plus........................................................................................... Doc. S 8 090

ontrefaçon N.F. (XIIIe s.) de contrefaire d’après façon, variante contre-


«C faction, du latin factio, action de contrefaire une œuvre littéraire, artis-
tique, industrielle, au préjudice de son auteur, de son inventeur ; résultat de cette
action. Voir contre-épreuve, copie, falsification, imitation, pastiche, plagiat. »
p。イオエゥッョ@Z@ュ。イウ@RPPV

Cette définition du Petit Robert nous place immédiatement dans le sujet.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 090 − 1

QPY
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPYP

CONTREFAÇON DE LOGICIEL _____________________________________________________________________________________________________________

Un logiciel étant une œuvre de l’esprit, il entre logiquement dans la catégorie


des œuvres littéraires ou artistiques. Mais un logiciel étant souvent partie inté-
grante d’un processus industriel, sa contrefaçon peut également s’inscrire dans
l’action de faire ou de contrefaire une œuvre industrielle, protégée elle, au moyen
du brevet, avec toutes les conséquences économiques que cela peut entraîner.
Logiquement, le législateur a considéré que la contrefaçon de logiciel est un
délit. Cependant, en la matière, une certaine complexité tient au fait qu’il existe
tout un éventail de nuances pour apprécier la contrefaçon d’un logiciel, qui peut
aller de la simple inspiration à la copie servile.
Dans ce document, nous replaçons, à travers une appréciation technique et
juridique, la contrefaçon de logiciel dans le champ beaucoup plus vaste de la
contrefaçon dans les industries liées aux nouvelles technologies. Nous rappel-
lons ensuite quelles sont les étapes du processus de développement d’un logi-
ciel, de façon à introduire les différentes manières dont peut être appréciée la


contrefaçon du logiciel, tant par les experts que par les tribunaux.
Mais avant d’aborder l’aspect technique, la notion de contrefaçon étant
d’essence juridique, il convient de donner au lecteur qui n’est pas nécessaire-
ment un juriste quelques notions de droit sur le sujet.

1. Quelques notions La propriété industrielle désigne une catégorie de droit monopo-


listique d’exploitation temporaire, accordée par l’État, au titulaire de
juridiques créations à vocation commerciale spécifique comme les brevets, les
marques, les dessins et modèles…

L’approche juridique en matière de contrefaçon de logiciel La propriété littéraire et artistique désigne des droits exclusifs et
consiste à aller du général vers le particulier, afin d’appréhender temporaires d’exploitation accordés par l’État aux artistes et créa-
les notions juridiques indispensables, s’agissant de propriété teurs d’œuvre de l’esprit [4]. En droit français, le régime juridique de
intellectuelle, de droit d’auteur et de protection des logiciels protection du logiciel est celui de la propriété littéraire et artistique,
contre la contrefaçon. donc du droit d’auteur. Ainsi, sont considérés comme des œuvres
de l’esprit au sens du Code de la propriété intellectuelle « les logi-
Il nous semble donc important d’exposer la matière dans son ciels, y compris le matériel de conception préparatoire » [5].
ensemble, puis de présenter des notions connexes telles que le
savoir-faire et le secret des affaires. Cette situation nous conduit logiquement à présenter plus spécifi-
quement la propriété littéraire et artistique avant d’exposer le cas
particulier des logiciels et de la contrefaçon.
1.1 Propriété intellectuelle
En juillet 1992, les règles applicables à la propriété intellectuelle 1.2 Propriété littéraire et artistique
en droit français ont fait l’objet d’une codification au sein du Code de
la propriété intellectuelle. Ce code comprend deux grandes parties,
une première consacrée à la propriété littéraire et artistique (droit La propriété littéraire et artistique comprend le droit d’auteur et
d’auteur et droits voisins) et une seconde consacrée à la propriété les droits voisins. S’agissant du premier, il désigne l’ensemble des
industrielle (notamment le brevet). prérogatives, d’ordre moral et d’ordre patrimonial, reconnu aux
auteurs d’œuvre de l’esprit. Les seconds désignent les prérogatives
La définition de la propriété, en tant que telle, se trouve dans le reconnues aux auxiliaires de la création littéraire et artistique que sont
Code civil [1] qui dispose que la propriété « est le droit de jouir et de les artistes interprètes, les producteurs de phonogramme et de vidéo-
disposer des choses de la manière la plus absolue, pourvu qu’on gramme, ainsi que les entreprises de communication audiovisuelle.
n’en fasse pas un usage prohibé par les lois ou par les règlements ».
Il s’agit donc d’un monopole, d’une exclusivité, reconnu à un indi- Depuis la loi no 98-536 du 1er juillet 1998, il convient d’y ajouter les
vidu sur une chose. Ainsi, le Code civil présente la propriété comme droits spécifiques dont peuvent être investis les producteurs de
un droit à caractère perpétuel et absolu. La propriété est d’ailleurs base de donnée [6].
un droit constitutionnel [2]. Le caractère perpétuel du droit de pro- S’agissant de logiciels, il ne saurait être question, bien entendu,
priété implique notamment qu’il ne s’éteint pas par le non-usage [3]. que du droit d’auteur.
Cependant, la limite du droit de propriété est atteinte en cas
d’abus de droit. Le concept d’abus de droit vise les hypothèses dans La propriété littéraire et artistique confère donc aux auteurs de
lesquelles une personne exerce un droit dont elle est le légitime logiciels un ensemble de prérogatives qui sont présentées comme
détenteur, mais avec la finalité de nuire à autrui. autant de « droits ». C’est la raison pour laquelle on parle parfois des
« droits de l’auteur ».
De manière générale, la propriété désigne toutes les catégories de
droits exclusifs et temporaires accordés par l’État pour l’exploitation Plus précisément, c’est la loi no 85-660 du 3 juillet 1985, confir-
de créations intellectuelles. La propriété intellectuelle comprend mant une jurisprudence antérieure de la Cour de cassation, qui
deux volets : le droit de la propriété littéraire et artistique d’une part organise l’inclusion des logiciels d’ordinateurs dans la liste des
et le droit de la propriété industrielle d’autre part. œuvres protégeables par le droit d’auteur.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 090 − 2 © Techniques de l’Ingénieur

QQP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPYP

_____________________________________________________________________________________________________________ CONTREFAÇON DE LOGICIEL

Au plan international, il convient de se référer à la convention de La directive européenne 91/250/CEE du 14 mai 1991 concernant
Berne du 9 septembre 1886, plusieurs fois révisée, s’agissant d’un les logiciels fait état de la « création intellectuelle propre à son
texte fondamental ayant concouru à l’harmonisation des législa- auteur » [9]. Ainsi, une œuvre est dite originale lorsqu’elle porte
tions au plan international. Elle est administrée par l’Organisation l’empreinte de la personnalité de son auteur.
mondiale de la propriété intellectuelle (OMPI).
Le Code de la propriété intellectuelle protège le droit des auteurs,
Le premier article du Code de la propriété intellectuelle dispose que : sur toutes les œuvres de l’esprit, quel qu’en soit le genre, la forme
d’expression, le mérite ou la destination.
« L’auteur d’une œuvre de l’esprit jouit sur cette œuvre, du seul
fait de sa création, d’un droit de propriété incorporel exclusif et Ainsi, l’originalité ne doit pas être assimilée avec le mérite,
opposable à tous. l’apport ou l’intérêt d’une œuvre.
Ce droit comporte des attributs d’ordre intellectuel et moral ainsi Nous verrons (§ 1.3) comment cette caractéristique d’originalité
que les attributs d’ordre patrimonial (…). est appréciée concernant la propriété des logiciels.
L’existence ou la conclusion d’un contrat de louage d’ouvrage ou
de service par l’auteur d’une œuvre de l’esprit n’apporte aucune 1.2.3 Notion d’auteur
dérogation à la jouissance du droit reconnu à l’alinéa 1er ».
Ce texte fondamental nous permet d’évoquer les principaux L’auteur est celui dont la personnalité est véhiculée par


concepts suivants : l’œuvre, une fois le processus de création achevé.
— notion d’œuvre de l’esprit ;
— caractéristique de l’œuvre de l’esprit protégeable ; N’est donc pas auteur la personne qui se contente d’actes d’exé-
— titularité des droits d’auteur ; cution, de suivre des instructions préétablies, par exemple un mode
d’emploi.
— droits patrimoniaux ;
— droit moral ; Il en est également ainsi de la personne qui est à l’origine de l’idée
— durée des droits ; ou du thème.
— procédures et sanctions. Exemple : la Cour de cassation a pu juger que n’était pas un auteur
le client d’un architecte ayant précisé sa commande par des esquisses
sommaires établies gratuitement par un autre architecte ami [10].
1.2.1 Notion d’œuvre de l’esprit
Ainsi, à la question de l’identification du titulaire d’un droit
Une œuvre de l’esprit consiste en une création intellectuelle. d’auteur, le Code de la propriété intellectuelle répond que la qualité
L’œuvre de l’esprit est susceptible d’appropriation au sens de la pro- d’auteur appartient, sauf preuve contraire, à celui ou ceux sous le
priété littéraire et artistique lorsqu’elle résulte d’une activité créa- nom de qui l’œuvre est divulguée [11].
tive. Dès lors, le droit d’auteur ne saurait être acquis du fait de la
simple mise en œuvre d’un savoir-faire, dans le sens où la loi protège À ce titre, la jurisprudence considère que la qualité d’auteur d’une
l’œuvre de l’esprit et non la performance technique matérielle [7]. œuvre ne peut être attribuée à une personne physique que s’il est
établi que cette personne a personnellement réalisé l’œuvre [12].
Par exemple, il a été jugé qu’un travail de compilation d’informa-
tion n’est pas protégé en soi [8]. Il a également été jugé que la qualité d’auteur ne peut être
reconnue au simple exécutant matériel. En effet, même si elle a
Enfin, la notion d’œuvre de l’esprit semble supposer que l’auteur effectué un lourd travail, une personne ne saurait en revendiquer la
se représente un résultat qu’il cherche à atteindre, et que de ce fait, qualité d’auteur sans apporter la preuve de son activité créatrice
il exerce un minimum de maîtrise intellectuelle du processus créatif. personnelle [13].
Cette maîtrise du processus de création et la conscience du résul- Le monopole institué par le droit d’auteur ne bénéficie en principe
tat à atteindre posent bien entendu la question des œuvres qu’aux personnes physiques. Cette présomption de titularité bénéfi-
« créées » à l’aide d’ordinateurs (les fameux L4G, langages de cie à tous les auteurs personnes physiques dont le nom a été porté
4e génération) s’agissant, dès lors, de logiciels qui créent ou à la connaissance du public par un quelconque moyen.
contribuent à créer d’autres logiciels. Ce type de processus exige
une analyse, au cas par cas, de la démarche de création. Ainsi, sous réserve de l’exception de l’œuvre collective (§ 1.3.5),
une personne morale ne peut pas être investie à titre originaire du
La notion d’œuvre de l’esprit pose la question de la matérialisa- droit d’auteur.
tion ou encore de la concrétisation du travail créatif de l’auteur. Cela
nous conduit à rappeler que l’idée, en tant que telle, ne peut pas être La Cour de cassation rappelle ce principe et énonce qu’une per-
susceptible d’appropriation, en application du principe fondamental sonne morale ne peut être investie à titre originaire des droits de
selon lequel les idées sont de libre parcours. l’auteur que dans le cas où une œuvre collective, créée à son initia-
tive, est divulguée sous son nom [14].
Pour bénéficier de la protection par le droit d’auteur, l’idée Réservons cependant le cas des logiciels créés par des salariés
doit donc être formalisée, donner lieu à la création effective qui est évoqué spécifiquement au paragraphe 1.3.3.
d’une œuvre de l’esprit, devant remplir un certain nombre de cri-
tères pour être protégeable.
1.2.4 Notion de droit moral
Le Code de la propriété intellectuelle ne protège pas les idées
exprimées, mais seulement la forme originale sous laquelle elles Le droit de propriété intellectuelle comporte des attributs d’ordre
sont présentées. Par exemple, un synopsis, une méthode ou encore un intellectuel et moral, ainsi que les attributs d’ordre patrimonial [15].
concept dès lors qu’ils ne sont pas formalisés ne sont pas des créations
intellectuelles protégeables en tant que telles par le droit d’auteur. Les droits moraux de l’auteur résident dans la possibilité d’inter-
dire et de se réserver les prérogatives suivantes :
— droit de divulgation ;
1.2.2 Œuvres de l’esprit protégeables
— droit de repentir et de retrait ;
Est protégeable l’œuvre de l’esprit qui présente la caractéristique — droit à la paternité ;
d’être originale. — droit au respect de l’œuvre [16].

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 090 − 3

QQQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPYP

CONTREFAÇON DE LOGICIEL _____________________________________________________________________________________________________________

Le droit moral présente en outre un certain nombre de caractéris- 1.2.6 Durée des droits
tiques telles que l’unité du droit moral, son caractère personnel, son
caractère d’ordre public, perpétuel, inaliénable, insaisissable,
La protection issue du droit d’auteur bénéficie aux auteurs durant
imprescriptible.
toute leur vie. Au décès de l’auteur, cette protection persiste aux
Nota : pour une étude plus spécifique de la notion de droit moral, nous invitons le lec- bénéfices des ayants droit pendant l’année civile en cours et les
teur à se reporter à la bibliographie [Doc. S 8 090].
70 années qui suivent [21]. Le logiciel ainsi que le matériel de
conception préparatoire sont définis pour la même durée que celle
que prévoit le droit commun, à savoir 70 ans [21].
1.2.5 Notion de droit patrimonial
Notons ici que différentes réglementations et règles d’application
se sont succédé dans le temps, ce qui peut poser, selon les cas, des
1.2.5.1 Cas général difficultés d’application de la loi dans le temps. Ajoutons que cette
notion de 70 ans est assez théorique quand on connaît la rapidité
d’obsolescence du matériel informatique.
Les droits patrimoniaux sont la matérialisation de la vocation
de l’auteur à tirer profit de la communication de son œuvre au
public [17].
1.3 Propriété des logiciels
S Il s’agit en l’occurrence des droits de reproduction, de représenta-
tion et de suite.
1.3.1 Rappel de quelques définitions techniques
Chacun de ces droits est divisé en différentes prérogatives. Toute
représentation ou reproduction intégrale ou partielle faite sans le
Un logiciel se définit comme un ensemble de programmes, eux-
consentement de l’auteur est illicite. Il en est de même pour la tra-
mêmes constitués de séquences d’instructions adressées à une
duction, l’adaptation ou la transformation, l’arrangement ou la
machine, en vue du traitement d’une information donnée.
reproduction par un procédé quelconque [18].
Le terme logiciel recouvre un ensemble de produits, allant du logi-
ciel d’exploitation, ou encore logiciel de base, jusqu’au logiciel
1.2.5.2 Cas particulier des logiciels d’application utilisé par l’utilisateur final. Sont compris les interfa-
S’agissant des logiciels, la loi n’applique pas la distinction habi- ces, les outils ou même les patchs qui sont des morceaux de logiciel
tuelle entre le droit de reproduction et le droit de représentation, à vocation correctrice.
mais énonce des prérogatives constitutives du droit d’exploitation Dans la pratique, les logiciels se divisent en deux catégories com-
de l’auteur du logiciel [19]. Ces prérogatives consistent en la repro- prenant d’une part les progiciels, c’est-à-dire des programmes stan-
duction, l’adaptation et la distribution du logiciel. Si la représenta- dards s’adressant à un ensemble d’utilisateurs présentant des
tion ou l’utilisation du logiciel ne sont pas expressément besoins similaires, et d’autre part les logiciels dits « spécifiques »,
mentionnées, il est admis qu’elles font partie des prérogatives de c’est-à-dire qui ont été conçus sur commande, par un entrepreneur
l’auteur. chargé de réaliser un programme couvrant les besoins spécifiques
d’un utilisateur déterminé.
Le Code de la propriété intellectuelle prévoit que le droit d’exploi-
tation appartenant à l’auteur d’un logiciel comprenne le droit
d’effectuer et d’autoriser :
1.3.2 Régime de propriété des logiciels
— la reproduction permanente ou provisoire d’un logiciel en tout
ou partie par tout moyen et sous toute forme ; dans la mesure où le
Rappelons que les logiciels sont considérés comme des œuvres
chargement, l’affichage, l’exécution, la transmission ou le stockage
de l’esprit, y compris les matériels de conception préparatoires [5].
de ce logiciel nécessitent une reproduction, ces actes ne sont possi-
Dès lors et en raison de l’absence de protection des idées, les fonc-
bles qu’avec l’autorisation de l’auteur ;
tions d’un logiciel en tant que telles ne sont pas protégées [22].
— la traduction, l’adaptation, l’arrangement ou toute autre modi-
fication d’un logiciel et la reproduction du logiciel en résultant ; Les matériels de conception préparatoires désignent les études,
les analyses fonctionnelles, les spécifications générales et
— la mise sur le marché à titre onéreux ou gratuit, y compris la détaillées, les analyses organiques et les dossiers d’architectures
location, du ou des exemplaires d’un logiciel par tout procédé. techniques, le modèle conceptuel de données. Il s’agit donc de tous
Toutefois, la loi prévoit que les actes précités ne soient pas soumis les travaux préparatoires et nécessaires à la réalisation d’un logiciel.
à l’autorisation de l’auteur lorsqu’ils sont nécessaires pour permet- Il doit être noté que le régime juridique de la propriété du logiciel
tre l’utilisation du logiciel, conformément à sa destination, par la doit être distingué de celui du bien qui lui sert de support. En consé-
personne ayant le droit d’utiliser, y compris pour corriger les erreurs quence, le fait d’acquérir le support matériel d’un logiciel (disquette,
(sauf si l’auteur s’est réservé par contrat le droit de corriger lui- CD-Rom, DVD) ne transfert à l’acquéreur aucun droit sur le logiciel,
même ces erreurs). œuvre de l’esprit. À ce stade, il ne faut pas parler de « vente » de
De surcroît, la personne ayant le droit d’utiliser le logiciel peut, logiciel, mais de vente d’un support associé à la « cession » d’un
sans l’autorisation de l’auteur observer, étudier ou tester le fonction- droit d’utilisation.
nement de ce logiciel afin de déterminer les idées et principes qui Du fait de leur appartenance aux œuvres de l’esprit, protégées par
sont à la base de n’importe quel élément du logiciel, et ce, le droit d’auteur, les logiciels :
lorsqu’elle effectue toute opération de chargement, d’affichage, — bénéficient d’une protection qui leur est acquise de façon auto-
d’exécution, de transmission ou de stockage du logiciel qu’elle est matique dès la création indépendamment de toutes formalités ou de
en droit d’utiliser. tout dépôt (pour autant, un dépôt dans un organisme agréé peut
Enfin, la reproduction du code du logiciel ou la traduction de la s’avérer très utile (§ 5)) ;
forme de ce code n’est pas soumise à l’autorisation de l’auteur, pour — sont protégés au moyen de sanctions civiles et pénales qui
effectuer une copie de sauvegarde ou lorsque la reproduction ou la peuvent être très dissuasives dans un contexte où la loi institue au
traduction est indispensable pour obtenir les informations nécessaires bénéfice des auteurs de logiciels des procédures particulières pour
à l’interopérabilité d’un logiciel créé de façon indépendante avec faire constater et sanctionner les atteintes à leurs droits ;
d’autres logiciels, le tout sous un certain nombre de réserves qui — sont protégés dans leur forme d’expression, et non quant aux
sont énoncées dans le code de la propriété intellectuelle [20]. idées et principes qui sous-tendent leur création.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 090 − 4 © Techniques de l’Ingénieur

QQR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXPYP

_____________________________________________________________________________________________________________ CONTREFAÇON DE LOGICIEL

1.3.3 Logiciels créés par des salariés 1.3.4 Logiciels de commande


Le Code de la propriété intellectuelle prévoit que, sauf disposition Nous avons vu que les logiciels élaborés par les salariés appar-
statutaire ou stipulation contraire, les droits patrimoniaux sur les tiennent à l’employeur. Qu’en est-il lorsque ces salariés, collabora-
logiciels et leur documentation créés par un ou plusieurs employés teurs d’une SSII (société de service en ingénierie informatique),
dans l’exercice de leur fonction ou d’après les instructions de leur réalisent un logiciel commandé (et payé) à leur employeur par une
employeur sont dévolus à l’employeur qui est seul habilité à les tierce société ?
exercer. Cette disposition est également applicable aux agents de L’équité voudrait que ce soit le payeur qui soit propriétaire du logi-
l’État, des collectivités publiques et les établissements publics à ciel. La loi en décide autrement et, sauf stipulations contraires, le
caractère administratif [23]. logiciel de commande réalisé reste propriété de la SSII, le client final
ne disposant que du droit d’utilisation.
Aux termes de cette règle, l’employeur bénéficie donc d’une Nous ignorons les raisons exactes qui ont incité le législateur à
« dévolution » des droits d’auteur. Cette dévolution est de nature aller dans ce sens mais nous en voyons deux, l’une juridique, l’autre
automatique. D’ailleurs, elle intervient sans contrepartie puisque technique :
aucune rémunération ou indemnité n’est prévue au profit du salarié
[24], outre son salaire habituel. — juridique : la cession globale des œuvres futures est nulle [30].
Il s’agit d’une règle fondamentale en droit de la propriété littéraire et
artistique qui a pour objet de protéger les auteurs contre les engage-
1.3.3.1 Conditions


ments excessifs qu’ils pourraient être tentés de souscrire, notam-
Le texte vise « les logiciels et leur documentation « créés » dans ment au cours des périodes où ils ont peu de succès. Cette règle ne fait
l’exercice de leurs fonctions ou d’après les instructions de leur toutefois pas obstacle à la cession de droits d’auteur sur une ou plu-
employeur » par un ou plusieurs salariés. sieurs créations futures identifiées, mais non encore créées au jour de la
conclusion du contrat. Ce ne saurait donc être un élément déterminant ;
Est réputée faite dans l’exercice de ses fonctions toute création de — technique : par essence, les informaticiens d’une SSII passent
logiciel effectuée par un salarié, dans l’exécution d’un contrat de tra- d’un client à un autre et réutilisent au moins leur savoir-faire si ce
vail comportant une mission inventive qui correspond aux fonctions n’est des parties entières de « codes ». En changeant de chantier, il
effectives d’études et de recherches qui lui sont explicitement con- pourrait leur être reproché d’être contrefacteurs si la propriété du
fiées. Elle appartient donc à l’employeur [25]. logiciel était par défaut dévolue au client. Là encore, la difficulté peut
être contournée en autorisant la SSII à réutiliser le « savoir-faire »
Par ailleurs, il est nécessaire que le créateur du logiciel ait bien la
acquis durant le chantier.
qualité d’employé au moment de la création, ce qui est effective-
ment le cas de l’employé d’une société qui aurait « réfléchi » au logi- Pour conclure, nous attirons l’attention du lecteur sur le fait
ciel avant d’être embauché et de passer au stade de la réalisation que lorsqu’une société fait développer un logiciel spécifique par
formelle [26]. un prestataire informatique et qu’elle souhaite en avoir la pro-
Il a également été jugé qu’un logiciel, créé par un salarié en priété, il est impératif qu’elle fasse inscrire dans le contrat que la
dehors de ses heures de travail à l’aide du matériel appartenant à propriété du logiciel lui est transférée, en respectant les formes
l’employeur, est la propriété de ce dernier puisqu’il a été élaboré imposées par la loi.
avec son « concours » [27].
1.3.5 Œuvre collective et œuvre de collaboration
1.3.3.2 Effets
Pour les lecteurs que cela intéresse et sans entrer dans les détails,
Si l’intégralité des droits patrimoniaux est dévolue à l’employeur,
il n’est pas inutile de faire la différence entre ces deux notions.
il convient de considérer que l’auteur reste investi de son droit
moral qui est d’ailleurs imprescriptible et incessible. Est dite collective l’œuvre créée sur l’initiative d’une personne
physique ou morale qui l’édite, la publie et la divulgue sous sa direc-
Nota : la doctrine est presque unanime sur ce point [28]. tion ou sous son nom, et dans laquelle la contribution personnelle
Exemple : c’est ainsi qu’un salarié pourrait s’opposer à ce que le des divers auteurs participant à son élaboration se fond dans
site web qu’il a réalisé soit utilisé à des fins pornographiques ou, à plus l’ensemble en vue duquel elle est conçue, sans qu’il soit possible
forte raison, pédophiles. d’attribuer à chacun un droit distinct sur l’ensemble réalisé [31]. À
titre d’exemple, les dictionnaires et les encyclopédies peuvent être
À l’exception de ce cas particulier, il apparaît que s’agissant de qualifiés d’œuvres collectives.
logiciels, les droits dits « moraux » ne soient que très formels et S’agissant d’un logiciel, il peut être qualifié d’œuvre collective dès
qu’en réalité, l’employeur qui dispose de la totalité des droits patri- lors qu’il a été réalisé à l’initiative d’une personne physique ou
moniaux puisse disposer du logiciel comme il le souhaite et, s’il le morale, et qu’il résulte de la contribution de plusieurs collaborateurs
veut, puisse le modifier. qui ont participé à son élaboration, s’il a été publié ou édité sous le
nom de la personne qui a pris l’initiative de sa création.
1.3.3.3 Aménagements possibles
L’œuvre collective est la propriété de la personne physique ou
Le Code de la propriété intellectuelle prévoit que des dispositions morale sous le nom de laquelle elle est divulguée [32].
statutaires ou des stipulations contraires à la dévolution des droits
sur le logiciel au profit de l’employeur puissent être organisées. Le Code de la propriété intellectuelle définit l’œuvre de collabora-
tion comme une œuvre à la création de laquelle ont concouru plu-
Ainsi, le contrat de travail peut mettre en place une solution plus sieurs personnes physiques [31].
favorable au salarié. Il n’est, en revanche, pas possible de restreindre À titre d’exemples, peuvent être considérés œuvres de collabo-
les droits de celui-ci, notamment d’organiser la cession de son droit ration les logiciels de jeux et d’autres œuvres multimédias dans
moral, par définition inaliénable. lesquelles la partie graphique et la partie informatique, bien
En substance, si l’employeur bénéficie d’une présomption d’attri- qu’étroitement imbriquées, peuvent être dissociées quant à la
bution des droits de l’auteur, il convient tout de même de noter que le contribution respective des divers auteurs.
salarié qui fait commercialiser son propre logiciel par des concurrents
de la société qui l’emploie, commet un acte de concurrence déloyale, L’œuvre de collaboration est la propriété commune des coau-
constitutif d’une faute lourde justifiant son licenciement [29]. teurs qui doivent exercer leurs droits d’un commun accord.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 090 − 5

QQS

QQT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXQPP

Spécifications fonctionnelles
Génération automatique de code
par Henri BRENIER
Ingénieur de l’École spéciale de mécanique et d’électricité (ESME)
Consultant en génie automatique

1. Contexte industriel.................................................................................. S 8 100 - 3


1.1
1.2
1.3
Cycles de vie et modes de développement...............................................
Cultures industrielles concernées ..............................................................
La demande en matière d’outils de modélisation ....................................



3
3
4

2. Modélisation des systèmes de contrôle ............................................ — 5
2.1 Les dichotomies du temps réel................................................................... — 5
2.2 Projection sur une architecture de von Neumann .................................... — 6
2.3 Décomposition en sous-systèmes ............................................................. — 7
2.4 Machines aux états finis.............................................................................. — 7
3. Langages graphiques .............................................................................. — 10
3.1 Langages d’états.......................................................................................... — 10
3.2 Langages de flots de données.................................................................... — 11
3.3 Langages issus de l’analyse structurée ..................................................... — 12
3.4 Langage MSMC ........................................................................................... — 13
3.5 Modélisation à l’aide du langage MSMC................................................... — 15
3.6 Simulation des modèles MSMC................................................................. — 20
4. Génération de code exécutable ........................................................... — 23
4.1 Principe de transcription ............................................................................. — 23
4.2 Langages cibles ........................................................................................... — 23
5. Conclusion ................................................................................................. — 24
Pour en savoir plus ........................................................................................... Doc. S 8 100

’enchaînement des étapes de conception, de design, de réalisation et de


L maintenance des logiciels répond à une logique qui se répète d’un produit
à l’autre. Cette trame universelle prend le nom de cycle de vie des logiciels.
Un cycle de vie n’est pas en soi une méthodologie de développement.
Cependant, dans le cas particulier du génie logiciel, ce paradigme est constitutif
à toutes les méthodes proposées depuis les années 1980. Son mérite principal
est de mettre en lumière la nécessité de définir complètement et exactement
le « quoi faire » avant de s’intéresser au « comment le réaliser ». Cet éclairage
particulier focalise sur les étapes d’analyse et de spécification et donne un rôle
central aux spécifications fonctionnelles.
À l’origine, les spécifications fonctionnelles se présentaient sous la forme d’un
texte joint au cahier des charges. Les progrès en matière d’atelier de génie logi-
ciel ont permis de reléguer la rédaction d’un document au niveau des spécifi-
cations préliminaires et de remplacer le descriptif fonctionnel du cahier des
charges par une modélisation de l’application à réaliser. Celle-ci est assistée par
ordinateur. Les ateliers proposant cette assistance sont appelés CASE
(Computer Aided Software Engineering). Ils ont fait leur apparition à la fin des
années 1980. Les langages utilisés étaient : SA (Structured Analysis) [1] pour la
modélisation des systèmes informatiques et SA-RT (Structured Analysis Real
p。イオエゥッョ@Z@、←」・ュ「イ・@RPPT

Time) [2] [3] pour les systèmes de contrôle. En France, le Grafcet était utilisé
déjà depuis de nombreuses années pour la modélisation des automatismes
séquentiels.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 100 − 1

QQU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXQPP

SPÉCIFICATION S FON CTION N ELLES _______________________________________________________________________________________________________

Les outils CASE de la génération de l’analyse structurée ont servi de banc


d’essais pour les fonctionnalités attendues de ce genre de progiciel (démarche
descendante, vérification de cohérence, génération de code, dictionnaire
d’application, etc.). En informatique de gestion, le langage SA a vite montré ses
limites liées à une mauvaise adéquation avec la véritable nature des systèmes
informatiques. De plus, cette approche, basée sur une décomposition des
traitements de données, n’est pas compatible avec le concept d’objet. En
revanche, le principe de cette structuration est adapté à la nature profonde des
systèmes de contrôle. SA-RT est encore utilisé directement ou sous des formes
dérivées.
L’orienté objet a été la grande affaire depuis le début des années 1990. Cette
approche s’est avérée particulièrement fructueuse au niveau de la conception,
de la programmation et de la maintenance des logiciels en informatique de
gestion [4]. Après une période d’innovations foisonnantes, une synthèse a été
élaborée sous forme d’un langage commun appelé UML (Unified Modeling

S Language). UML s’appuie sur des bases formelles rigoureuses présentées


suivant la technique de métamodélisation (voir l’article [H 3 238] sur ce langage).
Le langage UML a été conçu pour modéliser l’informatique de gestion. Cette
orientation, si l’on s’en tient à son métamodèle de base tel qu’il est exposé dans
le document « UML semantics » [5], le rend peu apte à la modélisation des
systèmes de contrôle. C’est pourquoi les informaticiens du temps réel utilisent
encore SA-RT pour leurs spécifications fonctionnelles. Cependant, commence
à émerger une proposition de langages spécifiques temps réel se rattachant à
UML (par utilisation des possibilités d’extension de son métamodèle prévues
par ses concepteurs).
L’approche des spécifications fonctionnelles évolue. Des nouvelles exigences
apparaissent. Les informaticiens du temps réel comme les automaticiens
veulent pouvoir utiliser les modèles de spécification fonctionnelle dans les
phases ultérieures du cycle de vie. Le distinguo entre le « quoi faire » et le
« comment le réaliser » existe toujours mais n’est plus vécu comme une méta-
morphose, un passage de chenille à papillon. Il est considéré comme une
différence de points de vue qui coexistent tout au long du cycle de vie. La
conséquence de cette évolution est une exigence d’homogénéité et de cohé-
rence que, par exemple, la notation UML intègre dans son métamodèle [6].
Une réflexion sur différents éléments a amené l’auteur à écrire un livre inti-
tulé « Les spécifications fonctionnelles : automatismes industriels et temps
réel » [7]. Les différents langages de spécification des systèmes de contrôle y
sont traités en s’inspirant, quant à la méthode d’analyse, du document « UML
semantics », c’est-à-dire en prenant le point de vue de la métamodélisation.
Cet article n’est pas un résumé de cet ouvrage. Il se concentre sur un point
particulier, à savoir : l’aptitude des modèles de spécification à générer un code
exécutable. Après un survol du contexte industriel et de la demande en matière
d’outils, nous nous intéressons aux langages de modélisation et de program-
mation des systèmes de contrôle et à la manière dont sont perçus les problèmes
du temps réel. Nous posons alors la question fondamentale par rapport au pro-
blème qui nous occupe, à savoir la projection d’un modèle de spécification décrit
à l’aide d’un langage déclaratif sur une architecture de von Neumann. Nous ana-
lysons ensuite le problème de la décomposition en sous-systèmes puis celui des
machines aux états finis. Nous abordons l’étude de trois groupes de langages
graphiques :
— langages s’appuyant sur le paradigme des états (Statecharts et Grafcet) ;
— langages de flots de données (langage G et langages synchrones) ;
— langages issus de l’analyse structurée (SDL et MSMC ).
Ce dernier langage est présenté plus complètement car il nous sert de sup-
port pour un exemple de modélisation. Celui-ci est destiné à montrer comment
envisager la génération automatique de code avec pour cibles possibles les
langages orientés objets ou les langages de blocs fonctionnels des normes
CEI 61131-3 et CEI 61499.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 100 − 2 © Techniques de l’Ingénieur

QQV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXQPP

_______________________________________________________________________________________________________ SPÉCIFICATION S FON CTION N ELLES

1. Contexte industriel
Analyse Mise en route
Spécification Maintenance
1.1 Cycles de vie
et modes de développement Conception
Intégration
préliminaire
Il est habituel, surtout dans le monde anglo-saxon, de parler du
« paradigme » du cycle de vie. « Paradigme » est un mot d’origine Conception Tests
grecque déjà employé (dans le sens qu’on lui donne encore main- détaillée unitaires
tenant) au IVe siècle avant notre ère par le philosophe Platon. Un
« paradigme » est alors une sorte de modèle servant de guide et de
repère à une activité humaine. Dans le cas qui nous occupe, le Codage
paradigme du cycle de vie décrit les épisodes (appelés aussi étapes
ou phases) d’un déroulement temporel se rapportant à la création
et à l’exploitation d’un bien (qui, dans notre cas, est de nature
industrielle). Le cycle de vie commence à la naissance du projet et Figure 1 – Cycle de vie en V des automatismes industriels


se termine à la disparition physique du bien. Le caractère cyclique
se trouve dans la reproduction des mêmes épisodes pour tous les
biens d’un même type.
nouveaux concepts de développement. Cette nouvelle manière de
travailler entraîne une nouvelle philosophie du cycle de vie. Celui-ci
1.1.1 Cycles de vie en V se dégage du cadre trop rigide où il était enfermé. Activités et pha-
ses sont désolidarisées. Ces dernières portent des noms différents :
Le cycle en V possède de nombreuses variantes. Nous présentons
perception, élaboration, construction, transmission. Les activités
sur la figure 1 sa version la plus élémentaire. Dans cette représen-
peuvent chevaucher plusieurs phases avec des intensités variables.
tation, la phase de codage est placée au creux du V et marque le
Le cycle de vie d’UML (figure 2) se présente alors sous la forme d’un
passage entre deux périodes de développement de type différent.
tableau à double entrée : les colonnes correspondent aux phases et
La branche descendante du V est associée à des phases de
les lignes aux activités.
conception tandis que la branche montante est dédiée à la réalisa-
tion. Cette présentation a l’avantage d’établir virtuellement un lien
de correspondance entre les phases situées sur une même ligne
horizontale, celle de droite pouvant être considérée comme la 1.2 Cultures industrielles concernées
réponse à l’attente exprimée par celle de gauche.
Les spécifications fonctionnelles des systèmes de contrôle
1.1.2 Cycle de vie UML concernent un grand nombre de types d’industries. Elles se rap-
portent à deux grandes catégories de produits :
Le cycle en V est un concept ancien. Il a le grand mérite de struc-
turer les étapes de développement et de favoriser de bonnes habi- — les systèmes de contrôle inclus dans des produits de série,
tudes de travail. Mais des réflexions conduites à propos d’UML, et proposés sur le marché ;
dans le cadre des systèmes de gestion, ont permis l’émergence de — les automatismes industriels des outils de production.

Phases

Perception Élaboration Construction Transmission


Activités

Modélisation

Spécifications

Analyse et design

Implémentation

Tests

Déploiement

Figure 2 – Phases du cycle de vie et activités


dans l’environnement UML

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 100 − 3

QQW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXQPP

SPÉCIFICATION S FON CTION N ELLES _______________________________________________________________________________________________________

Modélisation/modifications
Spécifications Simulation
Modèle
Spécifications OK
Modifications
Prototypage Débogage Génération
automatique
Prototype OK
Modifications Code
exécutable
Vérifications Débogage

Code OK


Figure 3 – Utilisation d’un langage
de modélisation adapté

1.2.1 Développements temps réel La programmation par blocs fonctionnels ouvre des perspectives
qui seront généralisées par la norme CEI 61499.
Les modules intégrés aux produits grand public sont caractérisés Les systèmes numériques de contrôle-commande (SNCC) et les
avant tout par un effet de série. Il convient alors de réduire les coûts ensembles hardware /software proposés sont les matériels de base
de production et d’optimiser les performances. En contrepartie, les utilisés en instrumentation, ou autrement dit dans le contexte des
coûts de développement sont amortis sur des grandes quantités et industries de processus. L’ensemble composé du logiciel LabView
autorisent des budgets conséquents. À chaque application est dédié [S 8 205] et des cartes électroniques de National Instrument
un module spécifique qui doit être étudié complètement sous les constitue une proposition originale dont le succès ne se dément pas.
aspects hardware et software.
Les développeurs temps réel ont été parmi les premiers utilisa-
teurs d’ateliers de génie logiciel. L’analyse et la spécification 1.3 La demande en matière
fonctionnelle possèdent un caractère technique élevé. Suivant les
applications, différents environnements sont utilisés. D’une
d’outils de modélisation
manière non exhaustive, nous pouvons citer :
Dans le contexte de l’assistance par ordinateur, un atelier de déve-
— des environnements s’appuyant sur des langages impératifs loppement n’est utile que s’il permet de passer insensiblement et
comme Statecharts ou ESTEREL associés pour la définition de la d’une manière continue du modèle de spécification au prototype
logique câblée, avec le langage VHDL ; puis au code exécutable (figure 3). Le principe de base est de ne pas
— des ateliers comme Object GEODE (qui s’appuie sur le demander à l’utilisateur de recommencer sous une autre forme, un
langage SDL) ou SCADA (qui s’appuie sur le langage synchrone travail déjà effectué. D’une manière concrète, cela signifie que le
Lustre) ; modèle fonctionnel permette la génération de code.
— une émergence d’environnements s’appuyant sur UML. Cependant, l’outil de spécification fonctionnelle doit tout d’abord
posséder les qualités demandées pour ce genre d’activité,
c’est-à-dire :
1.2.2 Automatismes industriels et instrumentation
— proposer une approche naturelle, graphique et abordable par
Il est de tradition de différencier les industries manufacturières des non-spécialistes de la programmation ;
des industries de processus. Ce distinguo s’appuie sur ce qui les — posséder une aptitude à modéliser tous les aspects rencontrés
sépare, à savoir le caractère principalement séquentiel ou continu dans les applications (c’est-à-dire les systèmes hybrides) ;
de leurs chaînes de production. Dans la pratique, les applications — permettre l’obtention de modèles simulables.
présentent un caractère hybride et ne sont pas fondamentalement Pour que les modèles de spécification permettent la génération
différentes. Les cycles de vie et les problèmes techniques, de code, ils doivent induire une structure d’exécution pertinente.
financiers, administratifs rencontrés lors des développements sont Le langage de modélisation utilisé doit donc :
similaires. Cependant, les différences culturelles sont encore
— s’appuyer sur un ensemble bien défini de concepts ;
vivaces et ces deux types d’industries utilisent des équipements et
— déboucher sur des modèles non ambigus, précis et concis ;
des outils de développement propres à leur discipline.
— permettre des vérifications de cohérence et de consistance ;
L’automate programmable industriel (API) [S 8 015] est le maté- — être susceptible de supporter les techniques de preuves
riel de base des industries manufacturières. La norme CEI 61131-3 formelles.
[S 8 030] est une norme de programmation des API. Elle propose
Toutes ces qualités doivent se retrouver dans un seul et même
des langages de programmation graphiques et textuels. Le langage
langage ! A priori, on pourrait penser que la rigueur des concepts
SFC (Sequential Function Chart) est un langage sémantiquement
et la convivialité de l’approche graphique sont les deux qualités les
identique au Grafcet mais considéré sous l’angle de la program-
plus difficiles à concilier. En fait, de nombreux langages tels que
mation (et non de la spécification). Les possibilités offertes par la
Grafcet, Statecharts, le langage G de LabView, etc., parviennent à
norme sont plus étendues que celles proposées par les ateliers des
cette alliance. Mais ces langages sont spécialisés et leur approche
constructeurs.
applicative est verticale et non pas horizontale. Le défi de tels lan-
Certains éléments de la norme (définition des tâches et des prio- gages se trouve donc posé en terme d’alliance entre universalité et
rités) rapprochent la programmation des API de celle du temps réel. rigueur.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
S 8 100 − 4 © Techniques de l’Ingénieur

QQX
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXQPP

_______________________________________________________________________________________________________ SPÉCIFICATION S FON CTION N ELLES

2. Modélisation
des systèmes de contrôle Données
d'entrée
Système
transformationnel
Données
de sortie

Les fonctionnalités assurées par les systèmes de contrôle sont


diverses. L’ ABS d’une automobile et le pilotage d’un convoyeur
dans une usine de montage sont des activités différentes qui n’ont Mise à disposition Mise à disposition
des données d'entrée des données de sortie
apparemment pas grand chose en commun. Elles sont toutes les
deux différentes, par exemple, du processus de fabrication du verre
dans un float glass. Cependant, en dépit des apparences, les
systèmes de contrôle fonctionnent tous suivant des principes iden- Système réactif
tiques qui se déduisent de la signification même du mot contrôle.
Cette profonde unité devrait a priori permettre de concevoir des lan-
gages et des métamodèles à caractère généraliste. Or nous avons
vu que la proposition en la matière était verticale. Pour comprendre Échanges de signaux
ce paradoxe, nous devons nous intéresser à la manière dont est
perçu le temps réel. Sens d'écoulement du temps

2.1 Les dichotomies du temps réel


Figure 4 – Système réactif et système transformationnel S
Nous avons sélectionné cinq expressions dichotomiques qui sont
fréquemment employées en temps réel. Pour obtenir des définitions Traitements périodiques
techniques de ces expressions, le lecteur peut se reporter à diffé-
rents articles [S 8 205] [S 8 035] [S 8 055] [S 8 056], et plus spécia-
lement à celui intitulé : Langages réactifs synchrones et asynchrones
[S 8 060].
Temps
Ces expressions dichotomiques sont :
— système transformationnel/système réactif (auquel on ajoute : a période d'échantillonnage
système interactif) ;
— langage synchrone/langage asynchrone ;
— langage impératif/langage déclaratif ;
— flots de contrôle/flots de données.
D’après le dictionnaire, une dichotomie est un partage en deux Temps
éléments opposés. Ces quatre dichotomies employées fréquem-
ment dans le domaine du temps réel ont l’avantage de focaliser cha- b entrée analogique
cune sur une caractéristique particulière du fonctionnement en
temps réel.

2.1.1 Système transformationnel/système réactif


et système interactif Temps

En se limitant aux seules expressions de système réactif et sys- c entrée événementielle


tème transformationnel (figure 4), nous avons affaire à une véritable
dichotomie. Elle a été proposée par D. Harel [8]. L’expression de
Figure 5 – Langage synchrone et système échantillonné
système transactionnel (ou interactif) a été ajoutée ensuite pour
désigner une manière particulière de traiter les systèmes réactifs.
Un système transformationnel effectue successivement les opé- Les systèmes de contrôle qui réagissent à leur environnement
rations suivantes : sont fondamentalement des systèmes réactifs. Cependant, l’évo-
— réception de données en entrée ; lution du monde extérieur peut être progressive et ne pas générer
d’événement. Dans ce cas, l’initiative revient au système de
— calcul effectué sur ces données ;
contrôle et l’on s’oriente vers un système échantillonné donc
— émission de données en sortie. interactif.
Un système transformationnel doit avoir toutes ses données
d’entrée prêtes quand il est sollicité pour effectuer un calcul. Avant
la mise à disposition des données en sortie, il s’écoule un certain 2.1.2 Langage synchrone/langage asynchrone
temps dû au calcul.
La dichotomie langage synchrone/langage asynchrone corres-
Un système réactif est à l’écoute permanente de son environ- pond à deux options différentes concernant la manière de prendre
nement. Il reçoit des signaux et réagit à chacune de leurs occur- en compte les manifestations temporelles.
rences. En réaction, il émet éventuellement des signaux vers L’option du synchronisme suppose une discrétisation du temps et
l’extérieur. Tout système possède une caractéristique réactive mini- donc la définition de moments privilégiés d’observation. Cette dis-
male (au moins pour réagir à des commandes de type marche/ crétisation est souvent (mais pas nécessairement) périodique. Elle
arrêt). doit correspondre à un pas de temps petit vis-à-vis de l’évolution du
Les systèmes interactifs sont des systèmes réactifs dans les- monde extérieur et grand vis-à-vis de la durée d’exécution des
quels le rythme des interactions est contrôlé par l’informatique. Ce tâches périodiques. La figure 5 illustre les caractéristiques d’un
sont, par exemple, les systèmes échantillonnés. système échantillonné.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.
© Techniques de l’Ingénieur S 8 100 − 5

QQY

QRP
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPU

Programmation graphique
des applications de contrôle-
commande
Notions générales et langage G
par Michel PINARD
Professeur au Conservatoire national des arts et métiers CNAM
Professeur à l’École supérieure d’ingénieurs en électronique et électrotechnique

L’édition précédente de ce dossier a été rédigée par MM COTTET et RENARD en 2001.



1. Notions générales : contrôle-commande et programmation ... S 8 205v2 – 2
1.1 Notion de contrôle-commande .......................................................... — 2
1.2 Principes de la programmation des applications de contrôle-
commande .......................................................................................... — 4
1.3 Programmation graphique des applications de contrôle-
commande .......................................................................................... — 6
2. Langage graphique G ..................................................................... — 8
2.1 Programmation graphique flot de données ...................................... — 8
2.2 Développement en langage G : logiciel LabVIEW............................. — 12
Pour en savoir plus.................................................................................. Doc. S 8 205v2

ne application de contrôle-commande peut être définie comme un système


U informatique qui réalise l’acquisition de données par l’intermédiaire de
capteurs et élabore des commandes envoyées au procédé physique grâce à
des actionneurs. Présentes dans tous les secteurs industriels, ces applications
nécessitent un développement rapide, de qualité et fiable. Habituellement réa-
lisées à partir de langages de bas niveau (assembleurs) ou classiques (C, etc.),
la programmation des systèmes informatiques destinés au pilotage de procé-
dés physiques a été bouleversée par l’arrivée de langages graphiques plus sim-
ples, plus intuitifs et plus puissants d’un point de vue des bibliothèques
disponibles.
Les ingénieurs ou techniciens, chargés de réaliser ces applications, ont géné-
ralement une formation ou une expérience basées plus sur les domaines de
l’automatique ou de l’informatique industrielle que sur la programmation. De
plus, ils utilisent fréquemment des méthodes graphiques de conception orien-
tées vers les schémas blocs ou l’association de blocs fonctionnels comme le
GRAFCET ou la méthode d’analyse SA-RT. Ainsi un langage de programmation
graphique, fondé sur des transferts de données entre des nœuds fonctionnels,
correspond parfaitement au contexte de travail des utilisateurs de ce domaine
du contrôle-commande. Le langage de programmation graphique G, utilisé
dans l’environnement LabVIEW™, possède toutes ces caractéristiques : expres-
sion intuitive, édition graphique, diagramme flot de données, développement
de grande qualité d’un point de vue génie logiciel… De plus, ce langage permet
de répondre à des applications de plus en plus larges en utilisant des bibliothè-
ques spécifiques très nombreuses : traitement du signal, automatique, traite-
p。イオエゥッョ@Z@ウ・ーエ・ュ「イ・@RPPY

ment statistique, logiciels de gestion des cartes d’entrées/sorties, logiciels de


gestion des réseaux locaux ou industriels, etc.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 205v2 – 1

QRQ
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPU

PROGRAMMATION GRAPHIQUE DES APPLICATIONS DE CONTRÔLE-COMMANDE ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Dans ce premier dossier [S 8 205v2], on s’intéresse surtout aux divers modes


de programmation et en particulier au langage G introduit grâce au logiciel
LabVIEW, et à son intérêt pour élaborer des dispositifs de contrôle-commande.
Dans le dossier suivant [S 8 206], on s’intéresse plus particulièrement à l’uti-
lisation du logiciel LabVIEW pour gérer des données acquises ou fournies en
relation avec des processus physiques.

Abréviations Abréviations (suite)


API Automate Programmable Industriel PCI Peripheral Component Interconnect
DSP Digital Signal Processor
PIC Programmable Interrupt Controller
FFT Fast Fourier Transform
PID Régulateur Proportionnel Intégral Derivé
FIFO First In, First Out


PXI PCI eXtensions for Instrumentation
FPGA Field Programmable Gate Array
SA Structured Analysis
GIPB General Purpose Interface Bus
GRAFCET Graphe fonctionnel de commande des étapes et tran- SA-RT Structured Analysis – Real Time
sitions SD Structured Design
HOOD Hierarchical Objet Oriented Design SFC Sequential Function Chart
LXI LAN eXtensions for instrumentation
USB Universal Serial Bus
Méthodes d’étude et de réalisation informatique pour
MERISE VI Virtual Instrument
les systèmes d’entreprise
ODS Structured Object Definition Skeleton VXI VMEbus eXtension for Instrumental

1. Notions générales : – la contrainte de la sécurité, qui impose généralement des limi-


tations relatives à une ou plusieurs grandeurs physiques ; ces gran-
contrôle-commande deurs sont le plus souvent connues grâce à des capteurs. À défaut,
elles sont estimées par un algorithme ;
et programmation – la fiabilité, ce qui signifie, que la commande doit assurer la
continuité de service ;
– la prise en compte du parallélisme, aussi bien pour la com-
mande (ce que permettent les langages informatiques actuels) que
1.1 Notion de contrôle-commande pour l’ensemble des processus mis sous un contrôle commun,
mais évoluant souvent avec une certaine autonomie.
1.1.1 Pilotage d’un processus ou d’un système
Il s’agit de présenter ici quelques dispositifs informatiques sus- 1.1.2 Évolution vers un état stable du dispositif
ceptibles de piloter : de contrôle-commande
– un ou plusieurs processus physiques (ou chimiques) de labora-
toire, ou bien industriel ;
– un système, souvent complexe. Un état stable de fonctionnement d’un processus ou d’un
système est celui où les grandeurs physiques (valeur moyenne,
Dans les deux cas, on agit par une commande et on observe et valeur quadratique moyenne…) qui le caractérisent restent
contrôle grâce à des capteurs. constantes ou varient peu entre deux valeurs constantes.
La rapidité et la puissance de calcul des ordinateurs ou des pro-
cesseurs permettent d’envisager des temps de mise en œuvre d’al-
Lorsque la commande varie, ou lorsque le processus ou le sys-
gorithmes de commande et des temps de réaction très courts pour
observer et contrôler. tème est soumis à des perturbations, l’ensemble du dispositif infor-
matique + processus doit évoluer vers un état stable qui sera nou-
Plusieurs contraintes vont s’imposer à l’ingénieur dès que la veau si l’objet de la commande est de le faire varier.
commande à réaliser est complexe :
Selon les cas, la dynamique de l’ensemble peut être très
– la contrainte temporelle : elle doit être adaptée au processus différente :
piloté. Un point important est le fonctionnement en boucle, dont
la rapidité de répétition doit être très souvent limitée, mais cohé- – de l’ordre de la milliseconde (ou moins) : c’est le cas des systè-
rente avec la commande ; mes radar, des systèmes vocaux, des systèmes de mesures
– la gestion d’une grande variété de données d’entrées/sortie. physiques ;
Les langages informatiques prennent en compte de plus en plus – de l’ordre de la seconde : dans les systèmes d’interface
cette diversité ; homme-machine ;
– le fait de traiter ensemble des signaux de type analogique et – de l’ordre de la minute : c’est le cas des chaı̂nes de fabrication ;
des signaux numériques ; – de l’ordre de l’heure, pour le contrôle de réactions chimiques.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 205v2 – 2 est strictement interdite. – © Editions T.I.

QRR
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPU

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– PROGRAMMATION GRAPHIQUE DES APPLICATIONS DE CONTRÔLE-COMMANDE

Une définition d’un dispositif informatique de contrôle-com- – la relation avec le processus ou le système grâce aux action-
mande pourrait être la suivante : neurs ; l’ingénieur doit déterminer exactement les moyens techni-
ques qui vont permettre la mise en œuvre la commande. Non seu-
lement il faut caractériser les cartes de sortie mais aussi placer les
Un dispositif informatique de contrôle-commande d’un pro- interfaces (amplificateur, drivers…) nécessaires au bon fonctionne-
cessus ou d’un système reçoit des informations sur l’état de ce ment des actionneurs ;
processus ou de ce système grâce à des capteurs, traite les don- – la gestion de l’interface vers l’opérateur en visualisant de
nées obtenues le plus rapidement possible, pour aboutir à une manière ergonomique les données et le pilotage ;
décision qui agit de manière telle que l’évolution de l’ensemble – la relation avec le réseau, qu’il soit local, ou qu’il se réduise à
dispositif-système ira vers un état stable de fonctionnement. un bus de terrain ;
– la liaison avec une unité de stockage de masse, pour la sauve-
garde des données.
1.1.3 Caractéristiques des applications
La figure 1 donne un aperçu de ce que peut être l’architecture
de contrôle-commande
logicielle d’une application de contrôle-commande d’un processus
À la différence de l’informatique classique, les dispositifs de industriel.
contrôle-commande font appel à des méthodes et des techniques La figure 2 montre les fonctionnalités essentielles d’une applica-
spécifiques. Il s’agit de mettre en œuvre simultanément : tion de contrôle-commande : acquisition, traitement et sortie des


– une partie matérielle consistant à relier des cartes électroni- données pour la commande.
ques, (dont certaines contiennent des processeurs), à des capteurs, La programmation et la vérification du bon déroulement des
et à un ordinateur ; diverses tâches du logiciel demandent beaucoup de soin et d’atten-
– une partie logicielle (souvent grâce à un langage approprié…). tion, car il est possible que l’évolution du processus ou du système
commandé soit mal gérée par les algorithmes de traitement des
Le but de la partie logicielle est de permettre à l’ingénieur le
données.
développement du dispositif de contrôle-commande avec toutes
les contraintes envisagées ci-avant. Le développement récent des logiciels permet une complexité
plus grande de la commande et du contrôle.
1.1.4 Développement des applications
de contrôle-commande La figure 3 présente un exemple de fonctionnement en réseau
d’un système de gestion de données fonctionnant sur plusieurs
Le matériel utilisé est très divers : carte électronique équipée réseaux (en particulier internet) utilisant des cartes électroniques
d’un microcontrôleur, d’un FPGA (Field Programmable Gate Array) d’acquisition classiques et des liaisons temps réel PXI haut débit.
ou d’un processeur de signal (DSP Digital Signal Processor),
caméra vidéo, téléphone portable (cf. [S 8 206]).
On peut étendre l’utilisation à plusieurs ordinateurs, reliés par un
bus de terrain. L’avantage pour l’ingénieur est la possibilité d’ajou-
ter de nouveaux systèmes à l’ensemble commandé à partir du logi-
ciel de pilotage.
Il est souvent intéressant de constituer un miniréseau reliant plu-
sieurs ordinateurs, plusieurs cartes équipées de processeurs lors-
qu’il s’agit par exemple :
– de contrôler un processus de fabrication ;
– de multiplier les contrôles sur un ensemble de systèmes fonc- Mesures
(capteurs)
tionnant en parallèle ;
Commandes
– lorsque le nombre de signaux à traiter est important, de traiter (actionneurs)
chacun d’entre eux, car il contiennent beaucoup d’information.

D’une manière générale, lorsque l’on se place dans un contexte


industriel, on développe une application de contrôle-commande
autour d’un automate programmable industriel (API). L’avantage
essentiel de l’API est de présenter une grande sécurité de fonction-
nement avec l’introduction impérative des fonctions « arrêt d’ur-
gence » et « réarmement ». On verra par la suite que ces fonctions
« minimales » de l’automate peuvent aussi être réalisées de plu-
sieurs manières en programme sur logiciel.
En fait, la tendance est de chercher à créer une architecture de
contrôle-commande la plus complète possible, en utilisant un logi-
ciel de pilotage qui puisse permettre une grande souplesse quant à
son utilisation, et surtout un large domaine d’application.
Cette architecture logicielle doit en principe exécuter plusieurs
tâches :
– la relation avec le processus ou le système grâce aux capteurs ;
l’opération de contrôle s’effectue à partir des mesures les diverses
grandeurs physiques caractérisant l’état du système. Des cartes
électroniques d’acquisition sont alors nécessaires, et il doit y avoir
compatibilité entre ces cartes et le logiciel (niveaux de tension, Figure 1 – Architecture logicielle d’une application de contrôle-
vitesse d’exécution, nombre d’échantillons…) ; commande d’un procédé industriel

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 205v2 – 3

QRS
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPU

PROGRAMMATION GRAPHIQUE DES APPLICATIONS DE CONTRÔLE-COMMANDE ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

On peut noter à ce sujet la méthode MERISE [1] (Méthodes


Mesures Commandes d’étude et de réalisation informatique pour les systèmes d’entre-
prise). Néanmoins, cette approche est peu utilisée, car elle ne per-
met pas la caractérisation du comportement du processus ou du
Analyse système étudié.
Acquisition Sortie
et traitement
des données des données
des données 1.2.1.2 Approche par les états/transitions d’un système
On modélise le système étudié autour de son comportement
Visualisation
dynamique. Cette approche utilise le concept d’évolution de l’état
Consignes d’un système, défini par un ensemble de données, qui condition-
nent l’activation des transitions. Cela est possible en utilisant le
Figure 2 – Fonctionnalités essentielles du logiciel de contrôle- GRAFCET, les réseaux de Pétri, [2] ou les StateCharts (langage
commande CHART) [3].
Le GRAFCET (GRAphe Fonctionnel de Commande des Étapes et
Transitions ; norme NF C 03-190) est un langage graphique simple,
bien connu, qui permet la programmation d’un automate à états
Ordinateurs
finis (cf. § 1.2.1.5 et [S 8 206, § 2.3]).


s
eur
igat portables Un réseau de Pétri est un ensemble fini de places reliées entre
Nav Web
elles par un nombre fini de transitions. Dans chaque place un ou
plusieurs jetons, qui passent à une place voisine selon l’équation
Serveurs de mesure
Enregistrement
logique de la transition qui les relie. Il est possible ainsi de définir
tion s de données une succession d’états de l’ensemble, qui évoluent selon les
Ges ation Analyse et
inform Base de données publication « ordres » de commande appliqués aux transitions.
d’
Le langage CHART utilise des fonctions séquentielles décrites
comme une suite d’évènements ou de processus. Les éléments
uds Ethernet essentiels de ce langage sont le schéma d’une étape de ce proces-
Nœ sure
e me sus et la fonction de décision qui est selon une logique simple et
d
qui permet ou non la transition à l’étape suivante. Si la transition
est autorisée, l’étape suivante est activée tandis que l’étape précé-
dente est désactivée. L’avantage de ce langage est qu’il est possible
de réduire une commande complexe en un ensemble (souvent
important) de fonctions élémentaires basiques de prises de déci-
Carte d’acquisition Instruments PXI temps réel E/S distribuées sion. Le concepteur peut donc facilement partir d’un problème sim-
de données GPIB traditionnels
ple pour le compliquer progressivement, en y ajoutant de nouvel-
les fonctions testées séparément. Un autre avantage de ce
Figure 3 – Extension plus complexe du rôle du logiciel de contrôle-
commande langage est qu’il est facilement compatible avec le GRAFCET.

Alors qu’un ensemble d’appareils fixes (serveur, base de don- 1.2.1.3 Approche par les traitements des données
nées, cartes…) impose l’essentiel du dispositif contrôle-commande, On utilise les données, et tout le génie logiciel, pour obtenir le
des ordinateurs portables permettent l’intervention à distance sur meilleur traitement possible de ces données : génération, modifica-
cet ensemble grâce à la liaison internet. tion, utilisation d’algorithmes, consommation.
PXI PCI eXtensions for Instrumentation.
PCI Peripheral Component Interconnect. La méthode d’analyse SA (Structured Analysis) [4] permet la
GIPB General Purpose Interface Bus. décomposition du processus global du système en sous-processus
reliés entre eux par des échanges de données. La méthode SA uti-
lise la notion de diagramme de flots de données.
1.2 Principes de la programmation La méthode SD (Structured Design) utilise la décomposition
des applications de contrôle- modulaire des systèmes séquentiels.
commande Les méthodes SA et SD ne sont pas adaptées aux systèmes en
temps réel. Elles ne permettent pas la modélisation du mode opé-
1.2.1 Méthodes de conception ratoire du processus commandé, et du contrôle du traitement des
informations.
Concevoir, c’est s’imposer une méthode rigoureuse de création
qui réduise le risque de dysfonctionnement dans la commande, La méthode SA-RT (Structured Analysis – Real Time) [5] ajoute la
soit à cause d’une erreur ou d’un oubli, soit tout simplement possibilité du traitement du temps réel selon trois points de vue
parce que cette commande est anormalement sensible aux don- « orthogonaux » :
nées de contrôle. – le fonctionnel ; on décompose le système en une hiérarchie de
L’ingénieur peut choisir l’une des méthodes suivantes, qui sont fonctions ;
autant d’approches possibles de conception d’une application – l’informationnel ; on définit les données traitées par les
industrielle. Il s’agit à chaque fois d’obtenir une description structu- fonctions ;
relle, fonctionnelle et comportementale de l’application. – la dynamique ; on exprime le contrôle du flux des données et
l’activation des fonctions.
1.2.1.1 Approche par les données Alors un système de gestion des données correspond à trois
Les étapes sont les suivantes : descriptions :
– on identifie les entités constituant le dispositif en question ; – la description des fonctions (des processus) à réaliser ;
– on écrit les relations entre les divers types de données ; – la description du contrôle du flux informationnel ;
– on caractérise les traitements qui s’y rapportent. – la description de l’architecture matérielle du système.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 205v2 – 4 est strictement interdite. – © Editions T.I.

QRT
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPU

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– PROGRAMMATION GRAPHIQUE DES APPLICATIONS DE CONTRÔLE-COMMANDE

En définitive, la méthode SA-RT consiste essentiellement à créer


des modèles de fonctions et des modèles de contrôle de manière Step1
séparée pour gérer les données.
Les avantages de cette méthode sont multiples :
– la gestion hiérarchisée de la complexité ;
– la description sans ambiguı̈té des processus ; In1
– le parallélisme dans le traitement des données grâce au
contrôle séparé des fonctions ;
– la communication possible entre les processus, rendu possible Step2 N Out1
grâce à la séparation des descriptions des fonctions, du contrôle et
des données ;
– une compréhension facile avec la combinaison des graphiques
et des textes ;
– la possibilité de contrôler la cohérence de l’ensemble en obser- In2
vant les contraintes imposées dans les processus.

1.2.1.4 Méthodes orientées objet


Step1
Ces méthodes regroupent l’approche par les données et par les
traitements au sein d’un même module, appelé objet. Cet objet est Les « pas » Step1 et Step2 sont des étapes correspondant à des états de
une entité autonome. Un exemple bien connu est la méthode fonctionnement ou d'arrêt. Les traits In1 et In2 sont des transitions entre
HOOD (Hierarchical Objet Oriented Design) [6] qui est très utilisée étapes. Les grandeurs N et Out1 correspondent à des variables à l'étape
dans les développements d’applications spatiales européennes « Step2 ».
(ESA).
L’idée sous-jacente de cette méthode est qu’il est possible de Figure 4 – Extrait de programme GRAFCET
modéliser la solution à un problème donné par une série d’objets
HOOD. Pendant l’analyse du problème, on crée des « sous-objets »
qui sont d’autant de parties de solution à implémenter jusqu’à l’ob-
tention d’un objet HOOD. Un diagramme représentant le dispositif
0001
peut être obtenu caractérisant les relations entre les objets, et aussi
en créant une hiérarchie dans ces relations. À côté du diagramme,
une partie textuelle est établie en cohérence avec le diagramme. Step1._x Step1.x
Une édition structurée par texte ODS (Structured Object Definition
Skeleton) est alors possible vers le langage ADA, FORTRAN ou C.
0002
1.2.1.5 GRAFCET
Step2._x Step2.x
C’est la méthode la plus utilisée actuellement dans le domaine
des applications de contrôle-commande de complexité moyenne
(cf. [S 8 206]). Le GRAFCET (graphe fonctionnel de commande éta-
0003
pes transitions) est destiné aux automates programmables. Il repré-
sente des automatismes logiques ou discrets dans lesquels les
Step1.x In1 Step1._x
informations sont booléennes, ou peuvent s’y ramener (résultat
de comparaisons…). R
C’est un outil très intéressant (cf. figure 4) facile à mettre en
forme à partir d’un modèle ou d’un cahier des charges, et qui per- Step2._x
met par la suite un passage vers l’automate en programmant par S
exemple en langage (ou diagramme à relais) Ladder (figure 5).
0004
Le langage GRACET est défini par une norme internationale (CEI/
IEC 1131-3). Sa version américaine est le SFC (Sequential Function
Chart). Step2.x In2 Step2._x
R
Remarque : il est également possible d’utiliser le GRAFCET
pour programmer la présentation d’un écran tactile (grâce à Step1._x
un logiciel approprié) et de l’échange commande-contrôle S
entre l’opérateur et l’automate avec cet écran.
On retrouvera en [J 8 206] le concept « échange écran/com- 0005
mande-contrôle » avec le concept diagramme/face avant ou
même la notion « d’interface homme-machine » en utilisant le
Step2.x Out1
logiciel LabVIEW.

1.2.2 Programmation
Exemple : si In1 devient vrai au ke cycle, alors Step1._x = 0 et
On conçoit facilement que le choix du langage de programma- Step2._x = 1 au cycle k + 1.
tion va dépendre non seulement de la taille et de la complexité de
l’application, mais aussi des matériels mis en œuvre. Pour les
applications de contrôle-commande, le langage choisi doit assurer Figure 5 – Conversion de l’extrait du programme GRAFCET
les fonctions suivantes. de la figure 4 en écriture Ladder

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 205v2 – 5

QRU
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPU

PROGRAMMATION GRAPHIQUE DES APPLICATIONS DE CONTRÔLE-COMMANDE ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Au niveau de l’ordinateur, on utilise des langages évolués


comme le langage C, ou C++, ou de haut niveau, comme le langage
Ada ou Visual C++ (figure 6).
Degré de sophistication des outils

Langages spécifiques
(LabVIEW, …)
Des langages dits « graphiques » se sont développés ces der-
nières années comme LabVIEW (société National Instruments)
Langages de haut niveau adapté
(Ada, Visual C++)
ou MatLab/SIMULINK (société The MathWorks). On utilise
alors la notion de bloc fonctionnel pour décrire un système,
une commande, un contrôle.
Langages évolués avec bibliothèques spécifiques
(C,C++, …)

1.3 Programmation graphique


Assembleur
des applications de contrôle-
Degré de complexité de l'application commande

1.3.1 Programmation textuelle et programmation


S Figure 6 – Différents groupes de langages utilisés
pour la programmation des applications de contrôle-commande
des processus
graphique
L’expression « programmation graphique » signifie que le pro-
gramme est complètement décrit de manière graphique (à quel-
a) Acquisition, restitution (sortie) des données : ques exceptions près, par exemple pour certaines opérations
– contrôle des cartes d’entrées/sorties analogiques ou numériques ; mathématiques…), ce qui n’est pas le cas pour les langages de
– contrôle d’instruments par l’intermédiaire de liaisons normali- haut niveau comme le Visual C++.
sées : LXI (LAN eXtensions for instrumentation), USB, GPIB, PXI,
VXI, RS232,… Ce qui nous amène à séparer les langages « textuels » conven-
tionnels, (comme le langage C) qui impliquent un mode de concep-
b) Liaison réseau : tion séquentiel, des langages graphiques, qui sont généralement
– traitement des données ; plus proches des intuitions et des concepts humains.
– traitement numérique des signaux (FFT, corrélation, convolu- Le langage textuel le plus difficile à suivre pour un utilisateur
tion, filtrage, fenêtrage,…) ; non averti est le langage assembleur, qui est cependant (après le
– traitement statistique des signaux (moyenne, écart type, régres- langage machine) le plus proche de l’architecture du processeur.
sion, lissage,…) ; Plus les langages sont évolués, et de haut niveau, plus ils se rap-
– traitement d’images. prochent de l’esprit humain. Cependant, dans la mise au point de
processus de commande-contrôle, le texte de programmation est
c) Élaboration des lois de commande (par exemple, introduction
souvent très long, (souvent plusieurs milliers de lignes en langage
d’un correcteur PID).
C++) et il est difficile de détecter des erreurs.
d) Maı̂trise statistique du procédé (par exemple, analyse de Pareto). Dans la vie courante, on a souvent tendance à dessiner des sché-
e) Répartition des tâches à exécuter. mas pour expliquer le déroulement d’un processus. Le but d’un
langage graphique est d’utiliser cette démarche, ce qui procure les
f) Traitement de certains algorithmes complexes par une carte avantages suivants :
contenant un processeur DSP (Digital Signal Processor) en liaison – une utilisation plus facile pour les non-programmeurs. La pro-
permanente en temps réel avec l’ordinateur, qui, lui, réalise d’au- grammation graphique devient plus intuitive ;
tres tâches. – une sémantique des images plus puissante que celle des mots
g) Possibilité de concevoir un projet incluant un composant pro- (davantage de signification) ;
grammable PGA prévu pour certaines tâches spécifiques. – des images non sujettes à la barrière des langues.

h) Présentation des données à l’utilisateur ou au réseau. Toute méthode, quels que soient ses avantages, a aussi ses
inconvénients :
i) Interface graphique et interactive.
– difficulté de visualisation des graphiques dans le cas d’un pro-
j) Représentation des courbes 2D ou 3D. gramme important ou complexe ;
– ambiguı̈tés possibles ;
k) Représentation d’images avant et après traitement. – difficulté pour prévoir une extension ou l’introduction d’un
autre programme. Il faut alors prévoir une architecture modulaire
l) Stockage de données. et hiérarchique.
m) Lien avec le réseau.
1.3.2 Classification des langages graphiques
Il est très difficile de choisir un langage qui permette la réalisa-
tion de toutes les fonctions énumérées ci-dessus. Aussi utilise-t-on On classe généralement les langages de programmation selon la
plusieurs langages et/ou des bibliothèques spécialisées pour obte- manière de programmer. On distingue :
nir tout ce qui est nécessaire à la réalisation d’un projet.
– la programmation impérative qui consiste à exprimer une suite
Il est par exemple très courant de réaliser des programmations de commandes ou d’instructions qui s’exécutent dans un ordre
d’interface en utilisant un microcontrôleur ou un PIC (Program- précis. C’est le cas des langages textuels ;
mable Interrupt Controller). Son fonctionnement est déterminé par – la programmation déclarative pour laquelle le programmeur ne
des gestionnaires bas niveau en utilisant un langage assembleur. suit pas directement la structure déterminant la suite des instruc-
Certains PIC sont directement accessibles par liaison USB venant tions, car le séquencement des actions est préexistant. Il doit seule-
de l’ordinateur. ment fournir des informations sur les objets qu’il doit traiter et sur

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


S 8 205v2 – 6 est strictement interdite. – © Editions T.I.

QRV
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPV

Programmation graphique
des applications de contrôle-
commande
Logiciel LabVIEW et applications
industrielles
Michel PINARD

par
Professeur au Conservatoire national des arts et métiers CNAM
Professeur à l’École supérieure d’ingénieurs en électronique et électrotechnique ESIEE

1. Logiciel LabVIEW en acquisition et en transmission


de données ....................................................................................... S 8 206 – 2
1.1 Contrôle-commande processus ......................................................... — 2
1.2 Contrôle-commande en temps réel ................................................... — 8
1.3 Contrôle-commande par gestion de données ................................... — 10
2. Langage graphique G : développements spécifiques
industriels......................................................................................... — 14
2.1 LabVIEW 8.6 : un environnement où le parallélisme est exploité
au maximum....................................................................................... — 14
2.2 Module LabVIEW DSC un environnement de développement
orienté supervision en milieu industriel............................................ — 15
2.3 GrafcetVIEW : un langage orienté modèle ........................................ — 17
2.4 Langage G pour la vision industrielle ............................................... — 19
2.5 Exemples industriels .......................................................................... — 21
Pour en savoir plus.................................................................................. Doc. S 8 206

C e dossier fait suite au dossier [S 8 205v2]. Dans cette partie, on s’intéresse


plus particulièrement à l’utilisation du logiciel LabVIEW pour gérer des
données acquises ou fournies en relation avec des processus physiques. Le
contrôle de ces processus est devenu, grâce à l’accompagnement de compo-
sants « intelligents » tels que le DSP ou les FPGA, plus contraignant et plus
rigoureux, accompagné d’analyses mathématiques plus complexes. Et la com-
mande est plus performante, surtout là où l’on a développé les cartes permet-
tant le « temps réel », et le « parallélisme » grâce aux liaisons USB, LXI ou PXI.
Enfin des applications industrielles seront abordées mettant en évidence quel-
ques dispositifs de contrôle-commande.
p。イオエゥッョ@Z@ウ・ーエ・ュ「イ・@RPPY

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. S 8 206 – 1

QRW
r←ヲ←イ・ョ」・@iョエ・イョ・エ
sXRPV

PROGRAMMATION GRAPHIQUE DES APPLICATIONS DE CONTRÔLE-COMMANDE ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Tableau des abréviations Tableau des abréviations (suite)


ALU Unité arithmétique et logique OLE Object Linking and Embedding
API Automatesprogrammables industriels
OPC « OLE » for Process Control
COM Component Object Model
PAC Contrôleurs d’automatismes programmables
DCL Data Control Language
DDE Dynamic Data Exchange PCI Peripheral Component Interconnect
DML Data Manipulationl Language PXI PCI eXtension for Instrumentation
DSC Datalogging and Supervisory Data Control Module
RIO Reconfigurable I/O
DSP Digital Signal Processor
RT Real Time
EPICS Experimental Physics and Industrial Control System
SCADA Supervisory Control And Data Acquisition
FPGA Field Programmable Gate Array
SQL Structured Query Language
FTP File Transfer Protocol
TCL Transaction Control Language


GPIB General Purpose Interface Bus
TCP/IP Transmission Control Protocol/Internet Protocol
Graphe fonctionnel de commande des étapes
GRAFCET ToR Tout ou Rien
et transitions
HMI Human Machine Interface USB Universal Serial Bus
IOC Input/Output Controller VB Visual Basic
LDD Data Definition Language VI Virtual Instrument
LXI LAN eXtensions for Instrumentation VME Versatile Module Europe
MXI Multisystem eXtension Interface VXI Versatile eXchange Interface

1. Logiciel LabVIEW
en acquisition et en DAQ Assistant

transmission de données nnuler Rétablir Test


Annuler Afficher l’aide

Analog Input Voltage Task


Channel List
1.1 Contrôle-commande de processus Settings

Voltage Input Range


1.1.1 Matériels d’entrée/sortie
Max 5 Volts +
V