IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Automation Discussion :

Demande de conseil pour un morceau de programme


Sujet :

Automation

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Demande de conseil pour un morceau de programme
    Bonjour,

    Je travail avec un S7-1200 (celui qui va remplacer le S7-200), et j'ai une petite partie de programme à terminer; je vais l'expliquer:

    Ce qui faut programmer est en rapport avec les maintenances à faire sur la machine, pour cela les heures de maintenance sont due au heure de travail en charge de la machine.

    La machine demande une maintenance toute les 2000H (une petite) et elle demande une autre toute les 4000H (une grosse).
    Donc pour ne pas surcharger le programme car durée de vie de la machine est estimée à 150 000H ce qui ferai a peu près 60 comparaison juste pour dire quel type de maintenance à faire.

    Je pensais faire à chaque fois une comparaison en fonction du résultat obtenu d'un calcul (heure en charge / 2000) et suivant le chiffre donné dire le type de maintenance à faire donc si c'est impaire = petite maintenance, si paire = grosse maintenance.

    Le problème c'est que je ne vois pas trop comment faire pour bien définir que le chiffre est paire ou impaire.

    Si vous avez d'autre solution je suis ouvert bien sur

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    il suffit d'utiliser un monostable d'une durée de 2000 h .

    à chaque déclenchement du monostable, tu incrémentes un compteur.

    et tu testes la parité du compteur.

    pour cela, il suffit d'utiliser le reste de la division entière par 2.

    si le reste vaut 1 = impair

    sinon, il vaut 0.

    La seule question est : est-il possible de faire un monostable ou un OB périodique de 2000h avec le 1200.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci pour cette réponse,
    Le monostable je connais pas mais pour les OB il y a peut être moyen de le faire (sa va faire beaucoup de mili seconde ).
    Alors mon dernier soucis si je peux dire, c'est que l'OB risque de coninuer à décompter alors que la machine est à l'arrêt non?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    ça dépend, tu peux peut être conditionner sont exécution par une entrée ou un bit dépendant de la marche de la machine.

    je n'ai pas Step7 sous la main, mais ça mérite de creuser.


    http://support.automation.siemens.co...ad=treecontent

    voir exemple N°3 comment le temps peut être mesuré

  5. #5
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Utilise le memento de cadence qui te génère un bit carré à une seconde de période. Il te suffit ensuite d'en faire un front toutes les secondes.

    Avec se front tu comptes les secondes tant que ta machine est en marche. Si tu compte dans un DINT tu ne risques pas de débordement. N'utilise pas de monostable long, car c'est moins évident de les stopper/redémmarer en fonction de l'état de la machine

    Ensuite dés que ta machine à atteint 2000H (7200000 sec) tu fais une demande de maintenance. Là, soit tu remets le compteur à zéro, soit tu mémorises sa valeur et tu afficheras la prochaine demande quand la valeur du compteur moins la mémoire sera de 7200000.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci pour l'aide, je vais allez tester cela sans trop me trompé dans la configuration.

    Au niveau du compteur s'il n'est pas actif même si j'ai le memento de cadence qui donne les impulsions, le compteur ne les compte pas si?

    donc par exemple je pourrais mettre si la fréquence moteur ou tension ou courant est plus grand qu'une valeur, il active le compteur et de cette façon le memento augmente de 1 toute les secondes?


    Je monte juste jusqu'à 14 400 000 pour le 4000H et de la je fait 2 comparaisons alors une à 7 200 000 pour les 2000H et 14 400 000 pour les 4000H. Et après le 4000H je reset le compteur alors.
    Ci je fait de cette façon c'est bon alors?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Bonjour,
    Je sais que je suis un peu en retard mais je voulais quand même paufiner le truc avec ma vision, histoire que si je me gourre on me le dise et que j'apprenne un truc au cas où .

    1. J'aime pas les trop gros chiffres (comme mon PLC)
    2. J'aime pas qu'on bouffe trop de mémoire pour un truc qui se passe tout les 4mois (environ)

    2 programmes :
    Un qui incrémente chaques secondes
    varinc = incrément chaque secondes
    1. incrémente chaque secondes varinc.
    2. Compare si = > à 2000.
    3. si > = alors start programme 2.
    4. sinon continue la vie est belle.
    Un qui gère le 2000 4000.
    variable de grand/petit 'nettoyage' = varnet
    1. NAND ( varnet , 1) = varnettemp.
    2. si varnet == 0 --> Petit nettoyage.
    3. si varnet == 1 --> Grand nettoyage.
    4. varnet = varnettemp.
    5. varinc = 0.

    Explication.
    Le fait d'employer deux programmes libère de la mémoire et du temps de calcul. un programme tourne seulement toutes les 2000h (prog2)
    Le débugage me semble plus simple, si varnet = 1 on est dans le cycle grand nettoyage, si 0 on est dans le petit.
    J'ai laissé le prog d'affichage de côté (je ne sais pas trop comment vous gèrez les affichages mais moi c'est tout dans un autre sous-prog.

    Merci et dites moi si jamais je me gourre, à plus!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/07/2006, 09h42
  2. demande de conseils pour l'api windows
    Par altadeos dans le forum Windows
    Réponses: 3
    Dernier message: 28/03/2006, 13h09
  3. [Conception] Demande de conseil pour validation de commentaires
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/12/2005, 14h58
  4. Réponses: 16
    Dernier message: 15/11/2005, 20h07
  5. Demande de conseil pour migration de lignes vers colonnes
    Par ririd dans le forum Administration
    Réponses: 6
    Dernier message: 04/11/2004, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo