[Programmation] [Automatisme] Langage structuré et Mise en réseau
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[Automatisme] Langage structuré et Mise en réseau



  1. #1
    Drentorir

    [Automatisme] Langage structuré et Mise en réseau


    ------

    Bonjour à tous,

    Je suis actuellement étudiant, et cherche à réaliser la programmation d'un magasin automatisé. J'ai réalisé la plus grosse partie. Le chargement du magasin se déroule très bien. Cependant, je n'arrive vraiment pas à réaliser le déchargement. Il décharge une seule caisse puis s'arrête. Voici ce que j'ai actuellement :


    Ceci est le programme permettant le déchargement des caisses, qui ne fonctionne pas.

    FOR J:=1 TO 50 DO J est la variable du déchargement à incrémenter, permettant de déterminer l'emplacement de la caisse à décharger.
    IF Stock[J]=0 THEN Stock[J] est un tableau de type ARRAY[1..50] OF BOOL.
    J:=J+1;
    ELSE
    code:=J; Code correspond à %MW100
    A0:=Code.0; Le système détermine les coordonnées des caisses à l'aide de 5 actionneurs codés sur 5 bits. %MW100.0 / %MW100.1 ....
    A1:=Code.1;
    A2:=Code.2;
    A3:=Code.3;
    A4:=Code.4;
    A5:=Code.5;
    Stock[J]:=0;
    END_IF;
    EXIT;
    END_FOR;

    A la fin de l'exécution de ce programme, la caisse située au premier emplacement est emmenée à l'extraction. Cependant, l'engin de déchargement ne retourne prendre aucune caisse. Le grafcet s'arrête à cette étape, et ne peut donc pas continuer car la transition suivante lui demande à ce que l'un des capteurs soit actif, ne pouvant être actif uniquement s'il charge une caisse...

    Une petite aide serait la bienvenue, je n'arrive pas à trouver mon erreur. A savoir que j'ai également essayé de réaliser cette partie du programme à l'aide d'autres fonctions telles que WHILE/REPEAT. Aboutissant en général, à peu près au même résultat. Je peux vous fournir les exemples si nécessaire. Je peux également vous fournir des screens des Grafcets si nécessaire pour une meilleure compréhension.

    De plus je souhaiterai connecter deux automates entre eux, sur un réseau local. Je dois utiliser les fonctions READ_VAR et WRITE_VAR, cependant ai-je besoin d'un logiciel tiers pour pouvoir envoyer les variables d'un automate à un autre ?

    Merci d'avance pour votre aide !
    Cordialement,

    -----
    Dernière modification par Drentorir ; 08/01/2016 à 15h08.

  2. #2
    remy01

    Re : [Automatisme] Langage structuré et Mise en réseau

    Bonjour,
    je n'ai pas bien suivi mais dans cette ligne :
    IF Stock[J]=0 THEN Stock[J] est un tableau de type ARRAY[1..50] OF BOOL.

    je verrais bien : IF Stock[J]=0 THEN Stock[J]=1est un tableau de type ARRAY[1..50] OF BOOL. ???
    A+ ....Rémy.

  3. #3
    bertrandbd

    Re : [Automatisme] Langage structuré et Mise en réseau

    L’instruction exit après le end if et avant la boucle du FOR est-elle bien à sa place?

    A+

  4. #4
    Drentorir

    Re : [Automatisme] Langage structuré et Mise en réseau

    Bonjour,
    je n'ai pas bien suivi mais dans cette ligne :
    IF Stock[J]=0 THEN Stock[J] est un tableau de type ARRAY[1..50] OF BOOL.

    je verrais bien : IF Stock[J]=0 THEN Stock[J]=1est un tableau de type ARRAY[1..50] OF BOOL. ???

    Toutes mes excuses, la mise en forme du texte n'a pas été conservée.


    Code:
    FOR J:=1 TO 50 DO
    IF Stock[J]=0 THEN
    J:=J+1;
    ELSE
    code:=J;
    A0:=Code.0;
    A1:=Code.1;
    A2:=Code.2;
    A3:=Code.3;
    A4:=Code.4;
    A5:=Code.5;
    Stock[J]:=0;
    END_IF;
    EXIT;
    END_FOR;
    Avec : - J est la variable du déchargement à incrémenter, permettant de déterminer l'emplacement de la caisse à décharger.
    - Stock[J] est un tableau de type ARRAY[1..50] OF BOOL.
    - Code correspond à %MW100
    - Le système détermine les coordonnées des caisses à l'aide de 5 actionneurs codés sur 5 bits. %MW100.0 / %MW100.1 ....

    L’instruction exit après le end if et avant la boucle du FOR est-elle bien à sa place?

    A+
    J'ai également essayé de cette façon en déplaçant la boucle for :


    Code:
    IF Stock[J]=0 THEN
    FOR J:=1 TO 50 DO  
    J:=J+1;
     EXIT;
     END_FOR;
     ELSE
     code:=J; 
     A0:=Code.0;
     A1:=Code.1;
     A2:=Code.2;
     A3:=Code.3;
     A4:=Code.4;
     A5:=Code.5;
     Stock[J]:=0;
     END_IF;
    Dans ce cas-ci, on obtient le même résultat final. La différence est que le système se met à prendre la deuxième caisse, à la place de la première, puis s'arrête également.
    De même, à savoir que lorsque je fixe FOR J:= 0 TO 49, le système ne va chercher aucune caisse. Il s'arrête à partir du moment ou je lui demander de faire une action de déchargement.
    Dernière modification par Antoane ; 11/01/2016 à 09h42. Motif: Ajout balises [/code]

  5. A voir en vidéo sur Futura
  6. #5
    lpt1com2

    Re : [Automatisme] Langage structuré et Mise en réseau

    Bonjour,
    Quel langage utilises-tu (ce n’est pas du Pascal Delphi) ?
    En principe ton code modifié ne devrait pas compiler, la condition IF doit être évaluée à l’intérieur de ta boucle FOR.
    Les variables booléennes servent à indiquer si la caisse est vide ou non ?
    Que doit faire ton programme exactement ?

  7. #6
    Drentorir

    Re : [Automatisme] Langage structuré et Mise en réseau

    Bonjour,

    Le langage utilisé est le langage littéral structuré (ST), utilisé sous UNITY XL PRO. Je ne sais pas s'il a un nom particulier.
    Oui, les variables booléennes servent à indiquer si la caisse est vide. Lors du chargement, les emplacements se mettent à "1" lorsqu'ils possèdent une caisse. Ils sont à 0 lorsqu'ils sont vides.

    Mon système doit pouvoir charger des caisses et décharger des caisses dans 50 emplacements différents. Les coordonnées sont codées sur 5 bits.
    La plupart des actions se font sous la forme de Grafcet et Ladder. La programme du chargement des caisses fonctionne.
    C'est lors du déchargement que je possède un problème.
    Ce que je souhaite que mon programme réalise, est que lorsque dans mon tableau ARRAY, l'une des variables est à 1 (Signifie que l'emplacement possède une caisse), le système se rende à cette coordonnées (A l'aide des codes binaires indiqués dans mon message précédent), puis décharge la caisse (Réalisé à l'aide du reste Grafcet).

    Après le déchargement de la première caisse, le système doit recommencer à lire les valeurs du tableau ARRAY jusqu'à ce qu'il trouve à nouveau une variable à 1, puis se rend à cet emplacement etc..
    Jusqu'à ce que l'opérateur décide de mettre fin au déchargement en appuyant sur un bouton pour reprendre le chargement.

    Voici un screen montrant le tableau ARRAY pour mieux comprendre ce que j'essaie d'expliquer. Sur ce screen, les 3 premiers emplacements possèdent 1 caisse. Dans mon cas, il décharge la première, fait donc passer Stock[1] à "0" puis s'arrête.

    Nom : 2016-01-11 16_37_53-Unity Pro XL _ SYSTÈME4FINAL2.AUTO_ - [Table].png
Affichages : 723
Taille : 10,6 Ko

  8. #7
    lpt1com2

    Re : [Automatisme] Langage structuré et Mise en réseau

    Ok, mais je ne connais pas le langage que tu utilises.
    Ce qui est sûr, c’est que dans une boucle FOR, tu ne peux pas affecter une valeur à la variable de cette boucle (c’est ce que tu fais dans ton programme, et je ne pense pas que ton langage l’accepte).
    A tout hasard, en Pascal, le code correct ressemblerait à ça :

    begin
    for j := 1 to 50 do
    if stock[j] = true then
    begin
    code := j;
    A0 := code.0;
    A1 := code.1;
    A2 := code.2;
    A3 := code.3;
    A4 := code.4;
    A5 := code.5;
    stock[j] := false;
    end;
    end;

    Je ne sais pas si ça peut aider, mais sait-on jamais…

  9. #8
    Drentorir

    Re : [Automatisme] Langage structuré et Mise en réseau

    Merci pour ta réponse.
    Pourtant le logiciel compilait correctement les 2 programmes proposés.
    Cependant le code que tu m'as fourni revient au même résultat qu'à l'un de ceux déjà testé.
    Du coup je suis toujours bloqué =/

  10. #9
    lpt1com2

    Re : [Automatisme] Langage structuré et Mise en réseau

    Quand tu dis que ça ne marche pas, c’est que le programme se plante ?
    Il faudrait que tu le lances en mode pas à pas pour suivre ce qui se passe à chaque instruction dans la boucle FOR.

Discussions similaires

  1. Mise en fonction automatisme de portail CAME
    Par bijouti dans le forum Bricolage et décoration
    Réponses: 4
    Dernier message: 30/09/2015, 20h40
  2. Langage et structure cognitive, cérébrale
    Par Neovinci dans le forum Psychologies (archives)
    Réponses: 13
    Dernier message: 17/03/2014, 12h06
  3. [Divers] Mise en service automatisme portail Came BX-243 !
    Par invite6850dfd7 dans le forum Dépannage
    Réponses: 7
    Dernier message: 18/10/2009, 22h08
  4. structure en Langage C sur HI-TECH compiler
    Par inviteb5700de1 dans le forum Électronique
    Réponses: 3
    Dernier message: 11/03/2009, 12h39
  5. Problème Langage C Structure, Pointeur, ...
    Par invite3e43df7f dans le forum Logiciel - Software - Open Source
    Réponses: 17
    Dernier message: 01/04/2006, 20h14
Découvrez nos comparatifs produits sur l'informatique et les technologies.