Page 1 sur 1
Calculer le nombre d'impulsion sur entrée TOR
Posté : 18 juin 2016, 10:39
par topaze67
Bonjour,
J'ai un petit souci, disons que je ne vois pas comment programmer la chose,
j'ai une entrée TOR et je dois contrôler le nombre d'impulsion par minute (environ 40 à 50). avant de déclencher une alarme, la première minute pas de souci, j'additionne le nombre d'impulsion durant 1 minute, par contre après, je ne sais pas comment faire, je ne vais pas remettre ma tempo à zéro est recommencer, je m'explique
de 0 à 1 minute j'ai 40 impulsion (les 40 premiers seconde j'ai eu par exemple 30 impulsion et le 20 secondes suivant j'ai eu 10 impulsion) donc je suis Ok sur une minute
par contre de la seconde 40 à la seconde 100, je voudrais être certain que j'ai bien le nombre d'impulsions sur 1 minutes, en clair je ne veux pas seulement contrôler de 0 à 59 secondes puis de 60 à 119 secondes.
si vous avez une idée merci d'avance
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 18 juin 2016, 11:58
par itasoft
slts,
Slts,
Disons que pour avoir le nombre d’impulsion par minutes on peut faire toutes les minutes
Nombre_impulsions_minute = Compteur-Compteur_à_N-1
EX :
cliquer dessus pour agrandir
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 28 juin 2016, 14:28
par topaze67
Salut,
Merci pour ton aide, j'ai finalement opté pour une autre solution,
je compte deux impulsions, et je regarde le temps, le temps qui est en milliseconde. Je mémorise ce temps dans une variable.
Ensuite sur un front montant,
je le transforme en real, je divise ce temps par 2 qui me donne le résultat pour une impulsion,
ensuite 60 0000/par le real pour une impulsion, et la j'ai le nombre d'impulsion sur 60 secondes, cela me permet de calculer le temps en continuer quasiment
Merci de ton aide, si lors de la mise en service, cela ne convient pas, j’essayais ta méthode
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 28 juin 2016, 17:08
par itasoft
slts,
pourquoi faire simple quand on peux faire compliqué,
LOL
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 28 juin 2016, 20:01
par foley
Salut,
je penses avoir compris pourquoi il a fait si compliquer, il avait besoin d'une réactivité supérieure et de compter sur une minute mais en continu et non sur LA minute. Enfin, je penses pas être bien plus clair, j'aurais essayé

Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 28 juin 2016, 21:21
par itasoft
slts,
j'ai pas compris exactement quand déclencher une alarme, sur trop d'impulsions ou pas assez ??
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 29 juin 2016, 06:45
par philou77
Salut,
Sans vouloir flooder, il y a pas une fonction fréquence sur entrée tor ?
c'est simple et ça répondrai à sa demande non ?
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 29 juin 2016, 10:04
par polishglider
Salut
Ou faire une pile FIFO d'une longueur 60, alimentée toutes les secondes avec le nombre d'impulsions ... et tu calcules le nombre d'impulsions total indiqué dans ta pile.
J'ai utilisé ce système pour avoir le nombre de démarrage de 2 pompes sur heure glissante et ca fonctionne nickel.
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 29 juin 2016, 21:31
par itasoft
slts,
oui le FIFO c'est pas mal,
ça donnerait un truc dans ce genre :
cliquer dessus pour agrandir l'image
Re: Calculer le nombre d'impulsion sur entrée TOR
Posté : 30 juin 2016, 01:03
par kosbor
bsr,
J'ai testé avec un simple buffer de timestamp (heure des impuls tor)
ça fonctionne si j'ai bien compris ce que tu veux avec un delta t de 60s
-testé avec une frequence de 950ms et un nombre de 60 impuls le defaut viens bien!
-testé avec une frequence de 1050ms et un nombre de 60 impuls le defaut viens pas!
fait en boucle asynchrone
script
Code : Tout sélectionner
HeureActuelle:=ARINT_TO_DT (ArrayOfTimeStampINT);
ImplusionTOR :=TON_Trigger.Q;
TON_Trigger (IN:= Not TON_Trigger.Q, PT:=t#950ms) ;
IF ImplusionTOR THEN
i:=MOD (i, 60);
ArrayOfTimeStamp[i]:=ARINT_TO_DT (ArrayOfTimeStampINT);
INC(i);
END_IF;
j:=MOD (j, 60);
IF j=0 THEN
ImplusionTORCounter:=0;
END_IF;
IF (ArrayOfTimeStamp[j])>(SUB_DT_TIME(HeureActuelle, t#60s)) THEN
INC(ImplusionTORCounter);
IF ImplusionTORCounter>=60 THEN
defaut:=true ;;(*Setter le défaut ici*)
END_IF;
END_IF;
INC(j);
variable
Code : Tout sélectionner
ArrayOfTimeStamp %Mw4500 ARRAY[0..60] OF DT
i INT
ArrayOfTimeStampINT %SW50 ARRAY[0..3] OF INT
ImplusionTOR BOOL
j INT
ArrTimeFormat TIME
HeureActuelle DT
ImplusionTORCounter INT
defaut BOOL
TON_8 TON
TON_9 TON
TON_Trigger TON