Page 1 of 1

Programmation boucle temps fixe

Posted: Thu 1 Jun 2023 09:49
by pmdd
Bonjour

Bonjour

je voudrais programmer une boucle qui s'exécute avec un temps fixe, éventuellement paramétrable, avec à l'intérieur des instructions de calcul et de commande de servos moteurs qui peuvent avoir un temps variable. Si le temps des instructions est supérieur au temps permis par la boucle, je sors un message d'erreur, si le temps des instructions est inférieur au temps permis par la boucle, c'est le temps de la boucle qui est pris en compte.

comment faire ?

L'objectif est d'avoir un cycle régulier en temps quelque soit le temps pris par les instructions si évidemment leur temps est inférieur au temps visé.

Je ne sais pas si ma question est claire ? je pourrais préciser si besoin.

Merci !

Re: Programmation boucle temps fixe

Posted: Fri 2 Jun 2023 09:36
by Coyotte
Bonjour,

Tu pourrais peut-être

1) memoriser la valeur du temps (en ms ou µs) en début de boucle
2) effectuer tes déplacements de servos,
3) reprendre la valeur du temps
4) calculer la différence entre les deux valeurs ce qui estme la durée de déplacement des servos
5.1) Si cette durée est inférieure à la durée prévue, tu patientes le temps nécessaire
5.2) sinon, tu envoies un message d'erreur

C'est une piste, il y en a certainement d'autres,

Coyotte

Re: Programmation boucle temps fixe

Posted: Fri 2 Jun 2023 09:42
by fpie
Bonjour,

Je suis tout a fait d'accord avec la réponse de Coyotte, qui est tombé pendant que je rédigeait ;). En concret ça donnes quelque chose comme ça pour une boucle de 1s :

Code: Select all

import time

while (1):
    debut = time.ticks_ms()

    # TRAITEMENT SERVO
    
    # durée traitement servo
    duree = time.ticks_diff(time.ticks_ms(), debut

    if duree >= 1000 :
        # routine d'erreur
    else:
        time.sleep_ms(1000-duree)
Fred

Re: Programmation boucle temps fixe

Posted: Fri 2 Jun 2023 09:51
by Coyotte
Mâtin !
Quel travail d'équipe ! :P
Merci Fred d'avoir concrétisé les choses ( Suis pas encore assez calé en Python pour sortir une solution "on the fly" ;) )

Coyotte

Re: Programmation boucle temps fixe

Posted: Fri 2 Jun 2023 10:01
by fpie
Salut Coyotte,
Il faut relativiser l'exploit. C'est du code réchauffé que j'avais fait pour un client. J'ai juste gardé le squelette et un peu renommé les variables.
A cette heure-ci, je suis en hypoglycémie et ne fait rien de critique, sous peine de devoir refaire :D
Fred