sciences industrielles (PSI) · Chapitre 7 · Application directe du cours
Coder un diagramme d'états
Systèmes séquentiels et commande numérique · niveau 2
Énoncé
Une machine a trois états qui s'enchaînent en boucle : (initial, repos), (do/ sortie ), (do/ sortie ), avec les transitions when(a) de vers , when(b) de vers , when(c) de vers ; , , sont des capteurs.
Écrire en Python la boucle d'un automate qui exécute ce diagramme. Que se passe-t-il, avec un code naïf, si et sont vrais en même temps ? Quel est le temps de réponse de la sortie à l'apparition de , pour un temps de cycle ?
Corrigé
L'état actif est une variable ; l'état suivant se calcule par une structure conditionnelle portant sur l'état courant, à partir de l'image des entrées lue en début de cycle :
etat = 1
while True:
a, b, c = lire_entrees() # image des entrees
if etat == 1 and a: suivant = 2
elif etat == 2 and b: suivant = 3
elif etat == 3 and c: suivant = 1
else: suivant = etat
etat = suivant
ecrire_sorties(S2 = (etat == 2), S3 = (etat == 3))
Le code naïf if etat == 1 and a: etat = 2 suivi de if etat == 2 and b: etat = 3, deux if indépendants qui modifient etat au fil de l'eau, franchit les deux transitions dans le même cycle quand et sont vrais : n'est jamais actif à l'écriture des sorties, et n'est jamais commandée. La structure if…elif sur l'état courant garantit une transition au plus par cycle.
Comme when(a) attend que devienne vrai et que n'est vu qu'aux lectures, un qui apparaît juste après une lecture n'est vu qu'à la suivante ; la sortie est écrite à la fin de ce cycle. Le temps de réponse est compris entre et , et un qui dure moins de peut être manqué.
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.