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 :

Cycle deux compteurs sous Step7


Sujet :

Automation

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Cycle deux compteurs sous Step7
    Bonjour à tous,
    je dois programmer un automate S7-300 et je bute sur une partie de la programmation.
    Je n'arrive pas à trouver la logique qui ferait fonctionner cette partie.
    Je m'explique, je dois pouvoir activer 20 sorties, une à une, et dans l'ordre numérique, pendant un temps "TIMER1" (le même pour tous), mais avant d'activer la suivante, un second temps "TIMER2" doit s’écouler (le même pour tous).
    Bref, la chronologie serait la suivante:
    Etape 1-Activation de la sortie d'activation (toujours à 1 pendant le fonctionnement des cycles)
    Etape 2-Attendre le temps2 avant d'activer la sortie 1
    Etape 3-Activer la sortie 1 pendant temps1
    Etape 4-Désactiver la sortie 1 pendant temps2
    Etape 5-Attendre le temps2 avant d'activer la sortie 2
    etc... jusqu'à la sortie 20 activée où il faudrait revenir à l'étape 2

    Je doit surement y intégrer un compteur, mais comment faire s'il vous plaît?

    Car la seconde partie de ce programme intégrera aussi un autre compteur. Quand la sortie d'activation passera de 1 à 0, le cycle des 20 sorties doivent encore se faire deux dernière fois et ce, à partir de la dernière sortie activé (exemple : si sortie activation passe à 0 à la sortie 12, continuer deux derniers cycles jusqu'au deuxième prochain 12 et tout arrêter).

    Je me doute bien que cela doit être surement difficile à me comprendre.
    Mais j'ai vraiment besoin de votre aide s'il vous plait. Tout du moins, pour déterminer la logique à adopter.
    Merci

  2. #2
    Membre à l'essai Avatar de oliviercaen14@free.f
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Points : 22
    Points
    22
    Par défaut Bonjour Free59
    C'est un cas d'école.

    Je te donne quelques pistes de réflexion :
    - Tu peux écrire tes sorties bits à bit ou par carte entière en utilisant des mots entiers
    pour l'exercice qui te concerne je te conseille de considérer l'écriture par mots
    - Le passage de l'entrée n à l'entrée n+1 correspond à un décalage circulaire d'un bit (ou une multiplication par 2)
    - En ce qui concerne les temporisations, il faut cascader 2 temporisations
    Not TP2 ==> lance TP1
    Fin TP1 ==> Lance TP2

    Si sortie TP1 = 0 et sortie TP2 = 0 ==> tu mets toutes les sorties à 0
    Si front montant de sortie TP1 ==> Tu effectue un décalage circulaire des mots représentant les sorties
    Tant que la sortie TP1 est active , tu copie les mots d'état dans tes cartes de sortie

    à la fin de TP2, TP1 est désactivée, donc TP2 aussi et le cycle reprend au début

    Bien penser à initialiser ton mot d'état avec un bit à 1 au départ de ta fonction

    J'espère que cela te sera utile

    Cordialement

    Olivier

  3. #3
    Membre à l'essai Avatar de oliviercaen14@free.f
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Points : 22
    Points
    22
    Par défaut Bonjour Morgan
    Tour d'abord un petit rappel sur le binaire
    Je pense que tu connais déjà , mais ce qui va sans dire va tout aussi bien en le disant

    1) Un mot (Octet, Word , Double ) est composé de bits (8, 16 ou 32)
    2) tu as besoin de traiter 20 sorties, l'ideal est donc de gérer un double mot (32 bits)
    3) Chaque bit posséde un poids binaire particulier
    1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ..... etc ....
    3) au départ, tu positionne le mot à 1 (1er bit à 1)
    4) ensuite, pour chaque décalage, tu as 2 solutions
    a) Multiplication par 2
    b) Ou utilisation d'une instruction dédiée : SHL_DW

    5) Ensuite tu transfert le résultat dans tes cartes de sortie

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Merci Olivier
    C'est bon. Et ceci grave à vous.
    Merci encore de m'avoir aidé.

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

Discussions similaires

  1. connecter deux pc sous linux
    Par momeftah dans le forum Réseau
    Réponses: 4
    Dernier message: 14/04/2007, 10h48
  2. compteur sous VB6
    Par josémaria dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/03/2007, 13h35
  3. Compteur sous oracle
    Par osman.amine dans le forum Oracle
    Réponses: 2
    Dernier message: 10/01/2007, 16h05
  4. [VB6]compteur sous VB
    Par issam12 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 24/05/2006, 17h17
  5. [NT server]deux PDC sous un même domaine
    Par mathieu_r dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 03/05/2006, 11h39

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