sciences industrielles (PSI) · Chapitre 7 · Exercice de TD
Le tri de colis : la scrutation d'un automate est un échantillonnage
Systèmes séquentiels et commande numérique · C. Programmer un diagramme d'états : la scrutation · niveau 3 (difficile)
Énoncé
Sur une plateforme logistique, un tapis avance à . Un scanner lit l'étiquette de chaque colis et donne sa destination, l'une des quatre sorties ; chaque sortie est équipée d'un pousseur pneumatique qui éjecte le colis latéralement en (aller et retour), suivis de de sécurité avant de pouvoir repartir. La position du tapis est donnée par un codeur qui émet une impulsion pour de tapis (signal carré de rapport cyclique un demi). L'automate a un temps de cycle compris entre et selon la charge du programme : on raisonne sur .
Cahier des charges : débit colis par heure ; déclenchement du pousseur à de la position visée.
1) Le programme de l'automate a la structure fournie ci-dessous (Python) ; N[d] est la distance, en impulsions de codeur, entre le scanner et la sortie d. Compléter les trois lignes marquées .... Pourquoi toutes les entrées sont-elles lues au début du cycle, et toutes les sorties écrites à la fin ? Entre l'instant où un capteur change et l'instant où la sortie correspondante change, combien de temps peut-il s'écouler ?
pos = 0 ; p_prec = False ; file = [] # initialisation
while True:
p, code_lu, d = lire_entrees() # LIRE : image des entrees
if ... : # front du codeur
pos = pos + 1
if code_lu: # colis au scanner
file.append( ... )
pousser = [False] * 4
if file and pos >= file[0][0]: # colis a sa sortie
...
p_prec = p
ecrire_sorties(pousser) # ECRIRE
2) Quelle est la fréquence du signal du codeur ? Combien de temps dure chacun de ses niveaux ? Que se passe-t-il quand l'automate le lit tous les ? À quelle condition sur la fréquence aucune impulsion n'est-elle perdue ? Quel pas de codeur faut-il alors ? Évaluer l'erreur de position du déclenchement et conclure. Même question avec une entrée de comptage rapide, un compteur matériel qui compte toutes les impulsions et que l'automate lit à chaque cycle.
3) Combien de colis par seconde un pousseur peut-il traiter ? Les colis, de de long, arrivent espacés de : que se passe-t-il si deux colis consécutifs vont à la même sortie ? Quel pas (distance entre les avants de deux colis consécutifs) l'induction doit-elle imposer, et quel débit maximal en résulte ? Conclure sur l'exigence de débit.
Corrigé
La stratégie. L'automate ne voit ses entrées qu'aux instants de lecture, un par cycle : tout se passe comme pour un signal échantillonné à la période . On en tire la condition de non-perte des impulsions, puis l'erreur de position.
1) La boucle lire, calculer, écrire. Les trois lignes :
if p and not p_prec : # front du codeur
file.append( (pos + N[d], d) ) # cible, sortie
pousser[file.pop(0)[1]] = True # retirer, pousser
Le front montant se détecte en comparant la lecture du cycle à celle du cycle précédent, mémorisée dans p_prec : sans cela, un niveau haut lu sur plusieurs cycles serait compté plusieurs fois. La file est une liste : on ajoute en fin au scanner, on retire en tête à l'éjection, car les colis ne se doublent pas sur le tapis.
Lire toutes les entrées d'abord, c'est calculer sur une image figée des capteurs : toutes les gardes d'un même cycle voient les mêmes valeurs, même si un capteur change pendant le calcul, et chaque diagramme d'états franchit une transition au plus par cycle. Écrire toutes les sorties à la fin évite qu'un actionneur reçoive un ordre intermédiaire. Le prix est un temps de réponse : un capteur qui change juste après la lecture n'est vu qu'à la lecture suivante, et la sortie n'est écrite qu'à la fin de ce cycle-là. Le temps de réponse est compris entre (changement juste avant la lecture) et (juste après), soit à . Sa valeur moyenne, , se compense en avançant la cible ; sa dispersion, de largeur , ne se compense pas.
2) Le codeur. Une impulsion par à : , période , chaque niveau dure . Des niveaux entiers tombent entre deux lectures :
Entre la première lecture et la dernière, le codeur présente six fronts montants ; l'automate, qui lit haut, bas, haut, bas, haut, n'en compte que deux. La position calculée retarde sur la position vraie : le colis est poussé trop tard, de plus en plus loin de sa cible. Pour que chaque niveau soit lu au moins une fois, il faut qu'il dure au moins un cycle : , soit C'est la condition d'échantillonnage du signal du codeur : au moins deux lectures par période. À , impose un pas de .
Erreur de position. Deux causes s'ajoutent : la position n'est connue qu'à un pas près, ; et l'instant d'écriture de la sortie est incertain d'un cycle, pendant lequel le colis parcourt . Au pire, : l'exigence de est tenue de justesse, sans aucune réserve pour la dispersion du pousseur, et seulement si ne dépasse jamais . Avec une entrée de comptage rapide, aucune impulsion n'est perdue quel que soit : on garde le pas de , et l'erreur tombe à : tenue, avec moitié de réserve. Ce qui varie vite se compte en matériel ; l'automate lit le résultat.
3) Le débit. Un pousseur est occupé par colis : il en traite au plus par seconde. Les colis de espacés de ont un pas de et se suivent toutes les : si deux colis consécutifs vont à la même sortie, le second arrive pendant que le pousseur revient, et il passe sans être trié. Les destinations n'étant pas connues à l'avance, l'induction doit garantir le cas le plus défavorable : un pas d'au moins , soit au plus colis par seconde, colis par heure. Ce débit maximal n'est donc pas celui d'un pousseur par hasard : c'est celui de deux colis consécutifs vers la même sortie. L'exigence de colis par heure correspond à un pas de : tenue.
| Exigence | Valeur | Écart |
|---|---|---|
| , lecture par scrutation | pas , erreur | tenue sans réserve |
| , comptage rapide | pas , erreur | tenue |
| colis par heure | au plus (pas ) | tenue avec un pas de |
Ce que l'exercice installe. Programmer un diagramme d'états, c'est une boucle lire, calculer, écrire sur l'image des entrées : une transition au plus par cycle, un front détecté par comparaison avec le cycle précédent, un temps de réponse entre et . Une entrée lue tous les est un signal échantillonné : ce qui dure moins de peut être perdu, d'où la condition . Une erreur de position se chiffre en additionnant la résolution du capteur et la gigue de la commande. Un débit maximal se justifie par le cas le plus défavorable.
100 % gratuit
La suite du chapitre est sur Adloun
- 12 autres exercices corrigés dans ce chapitre, et 5 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.