retour au sommaire des sujets logo ULP

Examen d'informatique industrielle

Première Session 2003

DEUST Process Industriel Electro-Mécanique 2ème année

Partie Programmation (P. Trau)

remarque aux lecteurs sur le web : la partie réseaux (Mr Rohrbacher) traitait de la supervision du tunnel du Mont Blanc, et contenait un certain nombre de documents décrivant sa mise en oeuvre.

Durée totale de l'épreuve : 2h. L'examen comporte deux parties (cette partie Programmation et la partie réseau de Mr Rohrbacher), d'égale importance. Vous êtes maîtres de votre organisation du temps, mais veuillez composer les deux sujets sur des copies différentes. Documents personnels et calculatrice autorisés.

Questions de cours

Question 1

Traduisez les nombres entiers décimaux A=193 B=255 et C=139 en binaire. Posez la multiplication A*B=D (en binaire). Posez l'addition C+D=E (en binaire). Transformez E en hexadécimal.

Question 2

Si j'écris en binaire, sur une feuille de papier (en utilisant la virgule) le nombre 101101,0101 que vaut-il en décimal ? Comment serait-il représenté dans une mémoire d'ordinateur (en utilisant 32 bits, 1 pour le signe, 23 pour la mantisse, 8 pour l'exposant) ?

Problème

Pour traiter (lire et écrire) les données des 25000 E/S (capteurs et actionneurs) répartis dans le tunnel du Mont Blanc, on n'a pas tout relié directement sur un ordinateur. On les a principalement répartis sur 2*40 automates reliés en réseau, qui sont capables à la fois d'un traitement local des E/S, et de dialoguer avec le contrôleur de tête qui effectue l'analyse globale. Mais on a également certains capteurs plus intelligents, capables de traitement numérique (par un micro-contrôleur programmable en C) pouvant dialoguer directement avec le centre de contrôle, par le réseau. Nous allons analyser un dispositif d'analyse de l'atmosphère, et entre autre de sa résistivité. Le problème revient en fait à mesurer une tension.

Nous disposons d'un micro-processeur 8 bits, connecté à deux ports d'entrée-sortie 8 bits, eux même reliés à un convertisseur numérique-analogique 12 bits (en sortie) et à un comparateur (en entée). En mettant un nombre binaire sur 12 bits sur D0-D11 du CNA, il sort une tension (proportionnelle à ce nombre), qui sera comparée à la tension à mesurer. Le comparateur enverra (sur A7) un 0 si la tension à mesurer est plus petite (strictement) que celle sortant du CNA, un 1 sinon.

Question 3

Comment sont reliées entre eux les deux ports et le micro processeur ?

Question 4

Le port A est situé à l'adresse 0xA0, le port B à l'adresse 0xB0. Ecrivez en C une fonction nommé "sortir_tension" qui reçoive en argument un int nommé T. Cette fonction doit (par masquage) récupérer les 8 bits de poids faible de T et les envoyer (par la fonction "outportb") sur le port B, puis récupérer les 4 bits suivants de T pour les envoyer sur le port A (on enverra obligatoirement 0 sur les broches non utilisées ici A4 à A7).

Question 5

Ecrivez en C une fonction (avec aucun argument) qui lise le port A, et retourne un int valant 0 ou 1 suivant l'état de A7 (indépendamment de l'état de A0 à A6).

Question 6

Ecrivez en C une fonction sans aucun argument mais retournant un int, qui essaie de sortir toutes les tensions possibles (par pas de 1, en commençant par 0) jusqu'à ce que le comparateur nous indique que la tension à mesurer est atteinte. La valeur envoyée à ce moment (la première où le comparateur répond 1) sera retournée par la fonction. Si vous n'arrivez pas à créer une fonction, écrivez un programme qui affiche le résultat.

Question 7

La fonction précédente est trop lente (jusque 4096 boucles) et incompatible avec les temps de réponse imposés par le cahier des charges. Réécrivez donc une fonction ayant le même résultat, mais beaucoup plus rapide (12 boucles). Vous utiliserez pour cela la dichotomie. J'avais expliqué l'algorithme en cours, mais je vous le redonne ici :

Si vous n'arrivez pas à créer une fonction, écrivez un programme qui affiche le résultat VAL.

Remarque : les questions qui rapportent des points sont 4,5,6 et 7.


vous pouvez regarder une  proposition de correction.

retour aux sujets Patrick TRAU, ULP - IPST mars 03