Je dois créer un timer TON en Control Expert pour mon projet d'automatisation dans le BUT, le but est de coder en ST à partir de 0 (je peux utiliser les bits system) un bloc TON qui a exactement le même comportement que le bloc déjà présent dans le Software, mais en utilisant des variables réelles.
Mon idée était d'utiliser le temps d'exécution de la tâche MAST (100ms) et de les additionner jusqu'à ce que le temps soit terminé, le problème est que je ne peux utiliser que des multiplications de la tâche.
Comment coder un timer On sans utiliser le bloc TON ?
- itasoft
- Mi homme - Mi automate

- Messages : 7805
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Comment coder un timer On sans utiliser le bloc TON ?
Tempo TON de 10s démarre sur %M0 à 1
if not %M0 then
%MW0:=10;
end_if;
%M1:=%S6;
if RE(%M1) and %MW0>0 then
%MW0:=%MW0-1;
end_if;
Sortie:=%MW0<=0;
if not %M0 then
%MW0:=10;
end_if;
%M1:=%S6;
if RE(%M1) and %MW0>0 then
%MW0:=%MW0-1;
end_if;
Sortie:=%MW0<=0;
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
-
MiGaNuTs
- Mi homme - Mi automate

- Messages : 1573
- Enregistré le : 12 nov. 2015, 21:02
- Localisation : 45 - Loiret
- Contact :
Re: Comment coder un timer On sans utiliser le bloc TON ?
Vu que la tache que gère ta tempo est appelée de façon cyclique cyclique toutes les X ms, les valeurs de ta tempo seront forcément des multiples de X.
C'est un peu pour ça que les valeurs des tempos internes de l'automate sont dans des entiers. Ça n'a aucun intérêt de les stocker dans les flottants, sauf si ça te fait plaisir de consommer plus de mémoire et de cycles processeur pour faire la même chose.
C'est un peu pour ça que les valeurs des tempos internes de l'automate sont dans des entiers. Ça n'a aucun intérêt de les stocker dans les flottants, sauf si ça te fait plaisir de consommer plus de mémoire et de cycles processeur pour faire la même chose.
- JC87
- Mi homme - Mi automate

- Messages : 2231
- Enregistré le : 20 oct. 2015, 13:00
- Localisation : Nouvelle Aquitaine
Re: Comment coder un timer On sans utiliser le bloc TON ?
Hello,
A partir du moment ou tu peut utiliser des bits systèmes il faut utiliser la méthode de Itasoft qui consiste à décompter des fronts du bits 100ms.
C'est ce que je fait aussi. D'autres préfèrent compter mais ça oblige à comparer à la valeur incrémenté à la présélection alors que si on décompte il suffit de tester la valeur à 0, c'est plus simple.
JC
A partir du moment ou tu peut utiliser des bits systèmes il faut utiliser la méthode de Itasoft qui consiste à décompter des fronts du bits 100ms.
C'est ce que je fait aussi. D'autres préfèrent compter mais ça oblige à comparer à la valeur incrémenté à la présélection alors que si on décompte il suffit de tester la valeur à 0, c'est plus simple.
JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
