Bonjour,

Je travaille sur un projet avec Step 7 et j'aurais besoin de votre aide
La finalité est simple, j'ai une durée d'utilisation d'un module d'équipement limité à 5 min par jour calendaire, une fois ce délai écoulé, je dois attendre minuit pour réautoriser l'utilisation de l'équipement en question. J'utilise dans ce contexte les blocs fonctionnels (SFC,SFB,FB,FC etc).

L'idée que j'ai c'est qu'au moment où le temps est écoulé, je lis l'heure automate, je la convertie en temps en ms depuis minuit la veille (c'est le format TIME sur S7), après je n'ai plus qu'à faire la soustraction de la durée totale d'une journée en ms (86400000) pour avoir une valeur d'attente jusqu'à minuit. Je transfert cette valeur sur 4 octets dans un type TIME (ça tombe bien c'est 4 octets, comme DWORD ou DINT) et ensuite je n'ai plus qu'à laisser tourner un Timer (TON), une fois que j'ai la sortie positive, je reset mon interdiction.

J'utilise pour cela le bloc READ_CLK de la bibliothèque standard pour lire l'heure de l'automate. Malheureusement, ça me donne un type Time_and_Date.
Alors j'ai cherché, et voilà ce qu'on me dit: https://support.industry.siemens.com...22026?lc=en-WW

Jusque là tout va bien, je n'ai qu'à récupéré les 3 octets des heures minutes secondes, pas de problèmes.
Là où est mon soucis, c'est qu'on me dit que c'est codé en BCD, hors dans l'exemple c'est visiblement des valeurs en hexa vu le B#16#.
Pouvez vous me dire quel conversion dois-je faire pour transformer ces octets en BCD/hexa en des valeurs entières et correspondantes aux hh-mm-ss que je puisse ensuite charger dans des INT ou DINT, car là je sèche?

Merci beaucoup