Bonjour,
autre solution suggérée par Itasoft
1 - parcourir tous les défaut en une boucle -> renseigner une pile FIFO des numéros de défauts actif -> Charger 0 dans byte de défaut
2 - dépiler la pile 1 par 1 tous les x secondes (charger la valeur dans byte de défaut) si elle contient des éléments.
3 - une fois la pile vide, recommencer au point 1
elle a l'avantage d'avoir tous les défauts actifs de suite et de connaitre leur nombre
elle a l'inconvénient de ralentir de temps de cycle de l'automate
C'est à peu près ainsi que j'aurai fait également
la méthode est bonne.
Cependant, tout dépend de ce que veut faire
Md42
. Je comprends qu'il souhaite afficher le défaut à son apparition. Sinon, il aurait fallu un bit associé indiquant l'état du défaut en même temps que le n°.
Ses défauts se trouvant dans des bits de mots (c'est ainsi que le bon sens nous incite à faire), plutôt que de se palucher tous les bits un par un, il est préférable de tester les mots de défaut et mieux encore détecter l'apparition de défaut dans ces mots.
Ainsi si pas de nouveau défaut dans le premier mot, on passe au suivant (sans tester les bits inutilement).
Pour détecter l'apparition de défaut:
Faire les opérations suivantes :
1) Mx := Mot_Défaut et (Complément à 1 de Mot_antérieur)
2) Si Mx <> 0, des défauts sont apparus.
3) Il suffit alors d'initialiser notre index de bit à 0, scruter les 16 bits de MX.
Pour chaque bit à 1, on stock en FIFO le numéro de défaut
4) On met à jour le mot antérieur.
On procède de la même manière pour le mot de défaut suivant index numéro défaut commençant à 16.
Cette technique a l'intérêt d’alléger le traitement en l'absence de défaut : ce qui sur une installation en bonne santé est plutôt courant!