Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

[Programmation] La gestion de Fonction
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#51 Message par Jérémy » mar. 6 sept. 2016 22:30

Me revoici, je pense avoir trouvé l'erreur !

Le cahier des charges il faut que tu me le refasse, c'est de la que vient le probléme!

car si on détecte une impulsion, c'est à dire que voltcheck passe de l'état haut à l'état en moins d'une seconde .
On part pour une pause d'une heure ! au bout d'une heure on enclenche l'alarme .

1/ pour combien de temps ?

/2 Avec ce que tu me décrit si une impulsion est détectée, dans tout les cas on part pour une heure ! il est impossible d’arrêt ce chrono c'est bien ca ? car voltcheck est à 1 en permanence vu qu'il a fait une impulsion seulement . A mon avis l'erreur vient d'ici.

Un chronogramme aiderait vraiment ou une explication pour chaque cas de figure !

EDIT :

Regarde l'erreur est ici dans ton POST #1:
-Si le contacte ne fait qu'une impulsion,le programme se met en pause 1h,mais si il il se maintien a nouveau ben sa repasse en veille permanente bien sur.

Comme il fait une impulsion, forcement il se maintien à l'état haut tout de suite après.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[Programmation] La gestion de Fonction
HVDifusion
Débutant
Débutant
Messages : 43
Enregistré en : décembre 2015

#52 Message par HVDifusion » mar. 6 sept. 2016 23:14

D'accord je v'ai t'expliqué.

C'est une chaîne alimentaire de production.

Sur cette chaîne tu a un contacte qui envoie un signal 24V.On doit comparer se signal et agir suivant son état.

Le propriétaire doit recevoir une alarme quand aucun aliment n'est détecter pendant 15 minutes.

En gros,tant que tu a des aliment le contacte est fermé et donc envoie le signal 24v.Si tu n'a plus d'aliment plus de 24v,tu a un décompte de 15 minutes qui se fait mais si un aliment passe vite fait (impulsion du contacte) celas reporte 1h (soit le programme se met carrément en pause et attend).Après cette heure passé le programme recommence son action depuis le début.

Après les 15 minutes écoulé,une alarme s'enclenche 3 minutes puis se coupe et reset le programme pour qu'il revienne au début et recommence son analyse.

L'alarme n'en n'est pas réellement une,je doit actionné un contacte libre de potentielle qui enclenche un système de sms mais ça reviens au même mais comme ça tu sais tous le tralala.

Pour donné ou envoyé des infos du pic j'utiliserais des relais,donc le 24v enclenche un relais et son contacte lié a une pin et le signal d'alarme actionne un relais dont son contacte actionne la boucle libre de potentielle du système sms (simple contacte aucun tension ici)

Au départ il voulais juste que je compare si j'avais du 24v ou non et faire un délais suivant celas et actionné l'alarme 3 minutes,sans la comparaison off/impulsion/on.

Donc au niveau complexité c'étais plus facile mais la c'est pour ça que je sèche et c'étais pas prévu qu'il complique comme ça.

Voila j'espère que j'ai bien expliqué.

[Programmation] La gestion de Fonction
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#53 Message par Jérémy » mar. 6 sept. 2016 23:24

re ,

Je sais pas si c'est plus clair, mais ca change le comportement du programme.

car
tu a un décompte de 15 minutes qui se fait mais si un aliment passe vite fait (impulsion du contacte)

En fait l'impulsion n'est pas de haut vers bas , mais de bas vers haut !!!! ça change tout .

Donc si il n'y a plus d'aliments pendant 15 minutes on déclenche l'alarme.
Si il y a aliment qui passe à 14m59s après la detection on reporte l'alarme pour une heure !
Si les aliments repassent en continue pendant les 15 minutes , ca reset tout .

Donc l'impulsion doit être détectée pendant les 15 minutes et non en permanence
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[Programmation] La gestion de Fonction
HVDifusion
Débutant
Débutant
Messages : 43
Enregistré en : décembre 2015

#54 Message par HVDifusion » mar. 6 sept. 2016 23:38

Oui c'est ça.


Il y a eu confusion,l'impulsion est en front descendant.

Je te laisse je bosse demain,on vois ça demain soir si tes dispo :).

[Programmation] La gestion de Fonction
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#55 Message par Jérémy » mer. 7 sept. 2016 07:05

Il y a eu confusion,l'impulsion est en front descendant.

Non en front montant !!!!

Quand un aliment passe rapidement ??? :mur: D’après ce que j'ai compris cela ferme le contact rapidement et repousse l'alarme d'une heure ! Comportement que je trouve bizarre quand même !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[Programmation] La gestion de Fonction
HVDifusion
Débutant
Débutant
Messages : 43
Enregistré en : décembre 2015

#56 Message par HVDifusion » mer. 7 sept. 2016 20:05

Non car il peut y avoir 1h maximum être l'arrivé des aliments.

Celas peut arrivé qu'il n'y ai rien sur la chaîne mais pas plus d'une heure.

Sinon oui front montant.

[Programmation] La gestion de Fonction
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#57 Message par Jérémy » mer. 7 sept. 2016 23:05

Re,

bon alors, j'avoue que c'est pas évident. Mais j'insiste sur le cahier des charges !! j'ai compris le principe mais il manqe pas mal d'info sur le focntionnement général .

par exemple image ceci :
coupoure d'aliments donc voltcheck passe à 0 .
au bout de 15 minutes toujours à 0 alors on enclenche l'alarme. Celle ci sonne pendant 3 minutes . Toujours pas d'aliments, que ce passe-t-il 15 minutes apres ? l'alarme doit elle re-sonner ?
ce sont tous ces petits détails qui font la différence .

Chaque cas doit être expliquer sur l'action à mener. j'ai donc changer de stratégie

ma premiere facon devenait une usine à gaz, trop complexe . Je pensais que l'idéal aurait ete de travailler sur un chagmenet d'état de voltCheck , mais c'est un peu compliqué quand je n'ai pas tout les tenants et aboutissant .

Tu peux essayer ca NON TESTE :

Code : Tout sélectionner

// Initialisation Variable
pause1heure pause15minutes chrono compteur  Signal  impulsion1heure ;

 
//------------------------------------------------------------------------------
 
while(1){


  if (
VoltCheck == 1)
     {
     
// ------ On RAZ le chrono en permanence
       
if ( (pause15minutes == 0) && (pause1heure == 0) )
           
RAZ_Chrono();
     
     
// ------ Impulsion pendant les 15minutes
       
if ( pause15minutes == )
          {
            
pause15minutes 0;
            
pause1heure 1;       // On prolonge d'une heure
            
RAZ_Chrono();
          }
          
       
// ------ Le contact est revenu pendant 2 secondes durant la Pause d'une heure  on RAZ tout
       
if (pause1heure == 1)
           {
             if ( 
impulsion1heure == 0)
                {
                  
impulsion1heure 1;
                  
RAZ_Chrono();
                }
             if (
impulsion1heure==1) && (Chrono >=2) )
                 
pause1heure pause15minutes chrono compteur Signal impulsion1heure ;
     }
   else
     {
       if ( (
Chrono >=15) && (pause15minutes==0) && (pause1heure==0) )
          {
            
pause15minutes 1;
            
Signal 1// Active alarme
          
}

       if ( (
Chrono >=18) && (pause15minutes 1) && (pause1heure==0) )
          {
            
pause15minutes 0;
            
Signal 0// Eteind l'alarme
            
RAZ_Chrono();
          }
       
impulsion1heure 0;
       
     }
 }
 


Explicages de ma facon de voir les choses :

Aliments présent = VoltCheck à 1.
condition de départ Voltchaeck à 1.

Tant qu'il y des aliments on RAZ le chrono . Donc aucune action, le chrono est toujours à zéro
Un trou dans les la chaine des aliments . Le chrono n'est plus effacé, il compte .
AVANT LES 15 MINUTES:
- On RAZ le chrono en permanence
PENDANT LES 15 MINUTES:
- Si pendant les 15 minutes un aliment arrive, il y a impulsion donc on active la tempo d'une heure
APRÈS LES 15 MINUTES :
- Si au bout de 15 minutes on as toujours pas eu d'aliments. Alors on allume l'alarme .
PENDANT LES 3 MINUTES:
- Si pendant les 3 minutes d'alarme un aliment arrive on fait quoi ?
APRÈS LES 3MINUTES :
- Si au bout des 3 minutes d'alarme toujours pas d'aliments , on recommence depuis le début , donc alarme dans 15 minutes etc ....... ou faut il ne faire la pause 15 minutes qu'une seule fois?
PENDANT LA PAUSE D'UNE HEURE
-Si il y a une impulsion ( passage d'un aliment ) on repart pour une heure .
- Si pendant 2 secondes il y a des aliments on RAZ tout et on recommence !

Un truc dans ce genre
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[Programmation] La gestion de Fonction
HVDifusion
Débutant
Débutant
Messages : 43
Enregistré en : décembre 2015

#58 Message par HVDifusion » jeu. 8 sept. 2016 19:55

Salut,

Je vais sonner au client et lui demander tous ça,je te reviens pour te dire quoi si j'arrive a le joindre car j'ai déjà essayer 2 fois,il me rappelleras.

[Programmation] La gestion de Fonction
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#59 Message par Jérémy » jeu. 8 sept. 2016 20:03

Bonsoir,

Oui il faut qu'il soit très précis ! pour éviter les bugs !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[Programmation] La gestion de Fonction
HVDifusion
Débutant
Débutant
Messages : 43
Enregistré en : décembre 2015

#60 Message par HVDifusion » lun. 19 sept. 2016 11:34

Bonjour,

Voila j'ai réussi a contacter le client (pas facile a joindre :s).


Voici les réponse au questions que tu me posais.


1) Si le décompte de 15min s'écoule puis que l'alarme s'enclenche 3 minute,ceci se fait une seul fois ou en boucle?

-Ceci se fait en Boucle tant que le pic est alimenté.


2) Pendant la pause de 1h si un aliment passe reprendre le temps au début on continuer l'écoulement?

-Même si un aliment passe (il me confirme que se ne seras pas le cas du tous) le temps doit s'écouler comme de rien étais même si le pic détecte des aliment pendant plus de 5 seconde.


3) Pendant l'alarme de 3min,si un aliment passe que faire?

-Absolument rien,le programme tournant en boucle il reviendras au début et testeras a nouveau si il y a du 24v ou non.



Cordialement.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 59 invités