Re: Connaître le rang d'un bit à 1 dans un mot.
Posté : 22 août 2025, 15:28
Alors le contexte...
Je cherche à afficher un code de défaut sur un bloc de 3 afficheurs 7 segments pilotables en BCD.
Les défauts ont chacun leur bit respectif (M20.0, M20.1, M20.3...).
Si les défauts M20.0 et M20.3 se déclenchent, je veux afficher 001 (M20.0 est le défaut 1) pendant une seconde, puis 004 (M20.3 est le défaut 4) pendant une seconde, et on reboucle. Et ce, sur autant de défauts qui se présentent et tant qu'il y en a.
Quand tous les défauts ont disparu, j'affiche 000.
J'interroge donc chaque bit du mot MW20 et n'affiche que ceux qui sont à 1. Quand un (ou plusieurs) bit à 0 s'intercale(nt) entre deux bits à 1, je n'en tiens pas compte et file chercher le prochain bit à 1.
Hum, pas facile à expliquer...
Bref, voilà mon code.
MW20 est donc le mot de défaut à interroger.
M2.1 est un pulse (front montant d'un bit de cadence) d'une seconde.
Le reste est dans le DB.
Une petite usine à gaz qui doit pouvoir s'optimiser probablement, mais bon, ça tourne.
Photo d'écran pour avoir tous les commentaires.
Je cherche à afficher un code de défaut sur un bloc de 3 afficheurs 7 segments pilotables en BCD.
Les défauts ont chacun leur bit respectif (M20.0, M20.1, M20.3...).
Si les défauts M20.0 et M20.3 se déclenchent, je veux afficher 001 (M20.0 est le défaut 1) pendant une seconde, puis 004 (M20.3 est le défaut 4) pendant une seconde, et on reboucle. Et ce, sur autant de défauts qui se présentent et tant qu'il y en a.
Quand tous les défauts ont disparu, j'affiche 000.
J'interroge donc chaque bit du mot MW20 et n'affiche que ceux qui sont à 1. Quand un (ou plusieurs) bit à 0 s'intercale(nt) entre deux bits à 1, je n'en tiens pas compte et file chercher le prochain bit à 1.
Hum, pas facile à expliquer...
Bref, voilà mon code.
MW20 est donc le mot de défaut à interroger.
M2.1 est un pulse (front montant d'un bit de cadence) d'une seconde.
Le reste est dans le DB.
Une petite usine à gaz qui doit pouvoir s'optimiser probablement, mais bon, ça tourne.
Photo d'écran pour avoir tous les commentaires.