Page 1 sur 1

Attente dans un programme ST

Posté : 07 juin 2019, 08:59
par mathias39
Salut tout le monde,
Je voulais savoir si il existe une fonction permettant d'attendre un certains nombre de seconde en langage ST ?
ma structure est la suivante :
if ... then
...
attente (1seconde)
else
....
end_if

Re: Attente dans un programme ST

Posté : 07 juin 2019, 10:29
par djé
Hope la!
Je ne sais pas ce que tu veux faire mais ATTENTION!!!

D'une tu vas certainement faire péter le watchdog (contrôle temps d’exécution de tache de l'API).
De deux (la plus importante à mes yeux), pendant ce temps d'attente les sorties ne sont pas rafraichies donc risques relatif à la sécurité machine/humain.

Il faut absolument éviter ce genre de programmation. (d’ailleurs je ne suis pas sur qu'il existe une instruction spécifique pour le faire, mais cela pourrait être fait en créant un boucle de comptage).

Revoit ta programmation et Utilise une TEMPO à la place.

Re: Attente dans un programme ST

Posté : 07 juin 2019, 10:49
par TotoMK2
Bonjour,
Tu peux utiliser un TON en st :
TON_Instance (IN:=StartDelay, PT:=PresetDelayTime, Q=>Output, ET=>InternalTime) ;

Re: Attente dans un programme ST

Posté : 07 juin 2019, 11:27
par philou77
+1 avec les collègues.

Un automate fait du temps réel, il n'existe aucune instruction pour lui dire d'attendre !

Le risque de faire une boucle dans le programme est effectivement de :
- ne pas rafraichir les sorties suffisamment tôt
- de déclencher le chien de garde et passage de l'automate en STOP !
- de ne pas 'voir' des évènements 'fugitifs' à cause d'un temps de cycle trop long

Bref, tu vois, que des avantages !
Les boucles sont tellement bien que même l'éditeur à tendance à te prévenir sur des sauts en arrière ;).

En automatisme, les boucles c'est bien, en abuser, ça craint !