L'accélération des technologies et l'importance
prise par l'informatique industrielle requièrent de la part des ingénieurs d'en
connaître les techniques principales. Cet ouvrage vise à présenter de manière
concise, mais néanmoins approfondie, les aspects informatiques et temps-réel de
l'informatique industrielle. Afin d'être maîtrisées, ces techniques doivent
être appliquées et exercées. Dans ce but, d'une part le livre aborde les
aspects théoriques et d'autre part il propose de nombreux exemples programmés
ainsi que des exercices.
De manière délibérée, des choix ont été effectués afin de ne présenter que
les principaux aspects matériels et logiciels de l'informatique industrielle,
c'est-à-dire:
- les bases de la logique digitale,
- les microprocesseurs,
- les bases de la programmation,
- la programmation en langage assembleur,
- la programmation d'interfaces temps-réel en langage évolué,
- les interruptions,
- les interfaces d'entrée-sortie,
- la gestion du temps,
- le décompte d'événements extérieurs,
- la synthèse de signaux de commande,
- la gestion de processus en temps réel,
- la commande de moteur en boucle fermée (régulateur PID),
- les communications par ligne série (RS-232),
- les transferts par accès mémoire direct,
- le principe des bus microprocesseurs modernes (bus PCI),
- l'architecture de micro-contrôleurs industriels modernes.
Pour des raisons didactiques, la plupart des concepts sont introduits en
prenant comme exemple le microprocesseur 68000. Ensuite, l'implantation de ces
mêmes concepts sur les micro-contrôleurs industriels modernes est
présentée. Une fois les concepts de base assimilés, l'étudiant pourra
facilement les appliquer à d'autres processeurs et interfaces et être en mesure
de programmer les micro-contrôleurs utilisés dans les applications
industrielles.
Afin de permettre à tout lecteur d'aborder ce livre, les deux premiers
chapitres comportent une brève introduction aux éléments de logique digitale
nécessaires à la compréhension des systèmes industriels à microprocesseurs. La
programmation en langage assembleur est introduite afin de faciliter la
présentation du fonctionnement des systèmes microprocesseurs. Le langage évolué
Modula-2, très proche du langage Pascal, est utilisé pour la programmation des
interfaces temps-réel ainsi que pour la commande de moteur. L'annexe inclut la
description d'un système cible didactique, le Dauphin 68008, abondamment
utilisé dans les exemples de programmation.
Les sections qui comportent des sujets avancés qui ne sont pas nécessaires à la compréhension d'autres chapitres du livre sont marquées par le signe .
L'auteur tient ici à remercier Jean-Daniel Nicoud, professeur à l'EPFL qui a
mis sur pied il y a plus d'une décennie un concept d'enseignement intégré qui
inclut le langage assembleur universel CALM ainsi que le système cible
didactique Dauphin 68008. Soient également remerciés Pierre-Yves Rochat, Albin
Schorer et René Beuchat qui ont rédigé certains exemples de programmation et
notes de cours ainsi que les collaborateurs et collègues qui ont contribué à
relire et corriger le texte. Mme Dorith Lion-Elbaz a dessiné les figures et
effectué la mise en page. MM. Babel et Tonasso des Presses Polytechniques
Universitaires Romandes ont amélioré la mise en page finale. Les étudiants ont
contribué à améliorer la qualité du cours qui est à la base de ce livre. Par
leurs questions, remarques et critiques, ils l'ont rendu plus abordable pour
ceux qui n'avaient pas de connaissances préalables en informatique. Que tous
soient remerciés, ainsi que mon épouse Daniela.
- Préface
- Introduction xiii
- Chapitre 1 Du transistor aux portes logiques
- 1.1 Le concept d'interrupteur commandé 1
- 1.2 Le transistor inverseur 2
- 1.3 Les portes logiques 3
- 1.4 Dénomination des signaux 7
- 1.5 Les sorties à collecteur ouvert (open-collector) 8
- 1.6 Les sorties 3-états (tri-state) 10
- 1.7 Circuits combinatoires 11
- 1.8 Exercices 13
- 1.9 Solutions 15
- Chapitre 2 Logique séquentielle et mémoires
- 2.1 Eléments de mémorisation 17
- 2.2 Registres et verrous 19
- 2.3 Mémoires vives et mortes 22
- 2.4 Mémoires dynamiques 24
- 2.5 Graphes d'états 28
- 2.6 Exercices 32
- 2.7 Solutions 33
- Chapitre 3 Introduction au microprocesseur
- 3.1 Principe général 35
- 3.2 Système informatique et architecture de processeurs 37
- 3.3 Exemple d'exécution de programme 38
- 3.4 Déroulement du programme 41
- 3.5 Fanions et instructions de saut conditionnel 47
- 3.6 Catégories d'instructions 48
- 3.7 Accès aux opérandes situées en mémoire 50
- 3.8 Appels de procédures en langage assembleur 52
- 3.9 Microprocesseurs et micro-contrôleurs 53
- 3.10 Exercices 55
- 3.11 Solutions 57
- Chapitre 4 Un microprocesseur 16/32 bits: le processeur Motorola 68000
- 4.1 Introduction 59
- 4.2 Architecture du 68000 59
- 4.3 Le répertoire d'instructions 61
- 4.4 Codage des instructions (processeur 68000) 67
- 4.5 Table de codage de quelques instructions 68000/68008 71
- 4.6 Le microprocesseur 68008, vu sous son aspect matériel 72
- 4.7 Exercice 74
- 4.8 Solution 74
- Chapitre 5 Les modes d'adressage
- 5.1 Introduction 75
- 5.2 Registres et mémoire 75
- 5.3 Les modes d'adressage 76
- 5.4 Programmation en assembleur et modes d'adressage 77
- 5.5 Exécution d'instructions selon divers modes d'adressage 77
- 5.6 Accès à une table par adressage indexé 82
- 5.7 Exercices 84
- 5.8 Solutions 85
- Chapitre 6 Appels de procédures et concept de pile
- 6.1 Introduction 87
- 6.2 Le concept de pile et l'appel de procédures 88
- 6.3 Appel de procédure par microprocesseur 68000 90
- 6.4 Appel de procédure en langage assembleur 91
- 6.5 Passage de paramètres 91
- 6.6 Exemple d'appel à une procédure 91
- 6.7 Exercices 92
- 6.8 Solutions 93
- Chapitre 7 Environnements de programmation et représentation de
caractères
- 7.1 Développement de programmes 95
- 7.2 Représentation des caractères 97
- 7.3 Programmation en langage assembleur 99
- 7.4 Débusquage d'erreurs 103
- 7.5 Exercices 104
- 7.6 Solutions 105
- Chapitre 8 Décodage d'adresses
- 8.1 Introduction 109
- 8.2 Décodage d'un espace d'entrées-sorties 110
- 8.3 Sélection d'une position dans l'espace d'entrée-sortie 112
- 8.4 Décodage incomplet 115
- 8.5 Ports d'entrées-sorties sur micro-contrôleurs 117
- 8.6 Décodage d'adresse et synthèse de signaux de sélection sur micro-contrôleurs 118
- 8.7 Exercices 119
- 8.8 Solutions 120
- Chapitre 9 La structure interne d'un microprocesseur
- 9.1 Structure globale 123
- 9.2 Architecture interne d'un microprocesseur 8/16 bits 124
- 9.3 Séquencement interne pour l'exécution d'instructions 127
- 9.4 Exercices 129
- 9.5 Solutions 129
- Chapitre 10 Codage de nombres opérations arithmétiques
- 10.1 Représentation de nombres entiers positifs 131
- 10.2 Opérations sur les nombres 132
- 10.3 Représentation de nombres en complément à deux 134
- 10.4 Opérations en complément à deux 139
- 10.5 Conversion de nombres 141
- 10.6 Calculs en virgule fixe 145
- 10.7 Exercices 147
- 10.8 Solutions 150
- Chapitre 11 Nombres virgule flottante
- 11.1 Introduction 155
- 11.2 Le format virgule flottante IEEE 32 bits 156
- 11.3 Additions et soustractions 158
- 11.4 Multiplications 159
- 11.5 Divisions 160
- 11.6 Autres représentations de nombres virgule flottante 162
- 11.7 Performances 163
- 11.8 Représentation hexadécimale de nombres virgule flottante 163
- 11.9 Exercices 164
- 11.10 Solutions 165
- Chapitre 12 Les interruptions
- 12.1 Gestion de périphériques 167
- 12.2 Définition fonctionnelle d'un système d'interruptions 168
- 12.3 Exceptions et interruptions 171
- 12.4 Les appels système 172
- 12.5 Mécanismes d'interruption 173
- 12.6 Les interruptions du 68000 175
- 12.7 Gestion des interruptions en langage évolué 179
- 12.8 Le contrôleur d'interruptions 181
- 12.9 Utilité, avantages et inconvénients de la programmation par interruptions 183
- 12.10 Exemples de systèmes d'interruption 184
- 12.11 Exercices 188
- 12.12 Solutions 189
- Chapitre 13 Interfaces moteur et capteurs optiques incrémentaux
- 13.1 Le système de commande global 193
- 13.2 Commande de moteur 195
- 13.3 Interfaces pour capteurs optiques incrémentaux 198
- 13.4 Exercices 203
- 13.5 Solutions 204
- Chapitre 14 Gestion temporelle et décompte d'événements
- 14.1 Introduction 207
- 14.2 Le compteur programmable 8254 209
- 14.3 Programmation du registre de contrôle sur 8254 210
- 14.4 Lecture de la valeur des compteurs sur 8254 211
- 14.5 Modes de travail du compteur programmable 8254 213
- 14.6 Exemples de programmation 217
- 14.7 Gestion du temps et d'événements sur micro-contrôleur MC68331 219
- 14.8 Exercices 222
- 14.9 Solutions 223
- Chapitre 15 Commande de moteur par compteur programmable
- 15.1 Gestion du temps et décompte d'impulsions 233
- 15.2 Commande de moteur à vitesse variable 235
- 15.3 Commande de moteur à vitesse variable et mesure de vitesse 236
- 15.4 Commande de moteur par interruptions 239
- 15.5 Exercices 246
- 15.6 Solutions 246
- Chapitre 16 Gestion de processus temps-réels
- 16.1 Le système d'exploitation 249
- 16.2 Le noyau temps-réel: généralités 250
- 16.3 Création et destruction de processus 252
- 16.4 Synchronisation entre processus par sémaphores 253
- 16.5 Sections critiques 255
- 16.6 Synchronisation entre producteur et consommateur 257
- 16.7 Synchronisation avec une routine d'interruption 258
- 16.8 Gestion temporelle et délais 259
- 16.9 Mécanisme de suspension temporelle de processus 259
- 16.10 Noyau temps-réel et communication entre processus 261
- 16.11 Noyaux temps-réels industriels 264
- 16.12 Exercices 266
- 16.13 Solutions 269
- Chapitre 17 Commande proportionnelle intégrale et différentielle (PID)
- 17.1 Régulateur tout ou rien (on-off) 273
- 17.2 Régulateur proportionnel 273
- 17.3 Régulateur intégral 275
- 17.4 Régulateur différentiel 275
- 17.5 Régulateur proportionnel, intégral et différentiel 276
- 17.6 Commande de moteur proportionnelle, intégrale et différentielle 277
- 17.7 Méthodes empiriques de Ziegler-Nichols pour l'ajustement des paramètres de régulation 283
- 17.8 Exercices 287
- 17.9 Solutions 288
- Chapitre 18 Communications série entre systèmes informatiques (RS-232C)
- 18.1 Introduction aux transmissions par RS-232C 291
- 18.2 Le principe du transfert série asynchrone sur ligne RS-232C 292
- 18.3 Les signaux RS-232C 294
- 18.4 Spécifications électriques des normes RS-232C et RS-422 pour le transfert de données point à point 297
- 18.5 Communications série: généralités 298
- 18.6 Transferts série synchronisés par signal horloge 298
- 18.7 Système de communication série maître-esclave (SPI) 299
- 18.8 Communication par bus série 301
- 18.9 Exercices 302
- 18.10 Solutions 303
- Chapitre 19 Accès mémoire direct et bus microprocesseurs (BUS PCI)
- 19.1 Introduction 305
- 19.2 Transferts mémoire directs (DMA) 306
- 19.3 Transferts mémoire directs sur micro-contrôleur 308
- 19.4 Bus microprocesseurs 309
- 19.5 Le bus PCI 311
- 19.6 Exercices 320
- 19.7 Solutions 321
- Chapitre 20 Micro-contrôleurs
- 20.1 Micro-contrôleurs 8 bits: le 68HC11 323
- 20.2 Micro-contrôleurs 16/32 bits: le MC68331 325
- 20.3 Micro-contrôleurs 32 bits (famille ColdFire) 330
- 20.4 Exercices 332
- 20.5 Solutions 332
- Annexe I Modula-2 pour la commande des entrées-sorties
- I.1 Structures, types et instructions de contrôle Modula-2 336
- I.2 Eléments utiles pour la commande d'interfaces d'entrée-sortie 340
- Annexe II Le Dauphin 68008
- II.1 Introduction 349
- II.2 Description générale 349
- II.3 Le moniteur 350
- II.4 Architecture 351
- II.5 La carte de base 352
- II.6 L'affichage 353
- II.7 Le clavier 354
- II.8 Haut-parleur et décodage de périphériques 354
- II.9 Programme MONITEUR 355
- Bibliographie 357
- Index 361