Besoin d'aide grafcet Scolaire

Forum traitant des automates industriels de marque Siemens.
Répondre
Metallicoco
Apprend le binaire
Apprend le binaire
Messages : 6
Enregistré le : 18 avr. 2024, 16:07

Besoin d'aide grafcet Scolaire

Message par Metallicoco »

Bonjour,

Mon prof m'a demandé de traduire un grafcet en ST sous siemens.

Voici le grafcet en pièce jointe.

Pour le programme, comme il fallait partir en ST j'ai fais ce programme :

Code : Tout sélectionner

REGION Variables Raccourcis
    #Appui_BP := "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_1 OR "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_2 OR "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_3;
    #Appui_BP_Fin := "DB_Entree_TOR".P103_BPL_Vert_FCY_Sechage;
    #Cycle_En_Cours := #Cycle_Sechage_1 OR #Cycle_Sechage_2 OR #Cycle_Sechage_3;
    
    
END_REGION

CASE #Etape OF
    -1:
        "DB_Cycle_Sechage".Etape := -1;
        IF #Appui_BP_Fin THEN
            #Etape := 0;
            
        END_IF;
    0:
        "DB_Cycle_Sechage".Etape := 0;
        IF NOT #Cycle_En_Cours THEN
            IF "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_1 THEN
                #Cycle_Sechage_1 := true;
                #Etape := 1;
            ELSIF "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_2 THEN
                #Cycle_Sechage_2 := true;
                #Etape := 1;
            ELSIF "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_3 THEN
                #Cycle_Sechage_3 := true;
                #Etape := 1;
            END_IF;
            
        END_IF;
    1:
        "DB_Cycle_Sechage".Etape := 1;
        IF "DB_TANX".num["ID".TANX.Tempo_Etuvage].Sortie THEN
            #Etape := 2;
        ELSIF #Appui_BP_Fin THEN
            #Cycle_Sechage_1 := #Cycle_Sechage_2 := #Cycle_Sechage_3 := 0;
            #Etape := 0;
        END_IF;
        
    2:
        "DB_Cycle_Sechage".Etape := 2;
        IF #Appui_BP_Fin THEN
            #Cycle_Sechage_1 := #Cycle_Sechage_2 := #Cycle_Sechage_3 := 0;
            #Etape := 0;
        END_IF;
        
        
END_CASE;

"DB_Cycle_Sechage".Tps_Sechage_1 := #Cycle_Sechage_1;
"DB_Cycle_Sechage".Tps_Sechage_2 := #Cycle_Sechage_2;
"DB_Cycle_Sechage".Tps_Sechage_3 := #Cycle_Sechage_3;

REGION " Copie " De l'étape Active dans des variables booléennes        
   // "DB_Cycle_Sechage".Etape_Aucune := #Etape := "ID".Cycle_Sechage.Aucune;
    "DB_Cycle_Sechage".Etape_0 := (#Etape = "ID".Cycle_Sechage.Etape_0);
    "DB_Cycle_Sechage".Etape_1 := (#Etape = "ID".Cycle_Sechage.Etape_1);
    "DB_Cycle_Sechage".Etape_2 := (#Etape = "ID".Cycle_Sechage.Etape_2);
     
    
    
END_REGION

Si y'a besoin d'autres infos hésitez pas à me demander, je suis perdu.

Le problème est le suivant : Il y a forcément quelque chose de faux là dedans. Lorsque dans mes DB ou dans mon entrée directement j'essaye d'actionner le BP, celui ci reste à 0. Ce qui est logique, on appuie et il remonte. Le problème c'est que je ne rentre pas dans l'étape 1. Pour rentrer dans l'étape 1, je dois forcer en continu l'appui sur le BP. Si je le relache, tout s'arrête. J'ai du mal à comprendre comment je peux sauvegarder l'appui du BP pour lancer mon cycle de séchage en faisant autrement. Je vous remercie si vous arrivez à m'éclairer !

Coco
Fichiers joints
Graf_sechage.PNG
roudy
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 144
Enregistré le : 19 janv. 2019, 17:28

Re: Besoin d'aide grafcet Scolaire

Message par roudy »

Bonjour,
Tu as un bon début d'analyse, maintenant il faut que tu trouves la solution.
Actuellement, j'ai un apprenti en automatisme et je ne lui donne pas les réponses, j’essaie qu'il trouve sa solution.
C'est pas te rendre service que de te donner la solution à ce niveau.
Conseil : Bloque les étapes et observe ce qui se passe en regard de ce qui physiquement doit/devrait se passer.
Bon courage.
Si c'est pas clair dans ta tête, ce sera bien pire dans ton code.
Metallicoco
Apprend le binaire
Apprend le binaire
Messages : 6
Enregistré le : 18 avr. 2024, 16:07

Re: Besoin d'aide grafcet Scolaire

Message par Metallicoco »

Je veux bien mais parfois ça me dépasse..

J'ai essayé d'arranger le code comme ça :

Code : Tout sélectionner

CASE #Etape OF
    -1:
        //"DB_Cycle_Sechage".Etape := -1;
      //  IF #Appui_BP_Fin THEN
        #Etape := 0;
            
      //  END_IF;
    0:
        IF NOT #Cycle_En_Cours THEN
            IF "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_1 THEN
                "DB_Cycle_Sechage".Sechage_1 := true;
                #Etape := 1;
            ELSIF "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_2 THEN
                "DB_Cycle_Sechage".Sechage_2 := true;
                #Etape := 1;
            ELSIF "DB_Entree_TOR".P101_BPL_Vert_DCY_Sech_3 THEN
                "DB_Cycle_Sechage".Sechage_3 := true;
                #Etape := 1;
(*            ELSE
                RETURN; *)
            END_IF;
        END_IF;
    1:
        IF "DB_TANX".num["ID".TANX.Tempo_Etuvage].Sortie THEN
            #Etape := 2;
        
            
        ELSIF "DB_Entree_TOR".P103_BPL_Vert_FCY_Sechage THEN
            "DB_Cycle_Sechage".Sechage_1  := false;
            "DB_Cycle_Sechage".Sechage_2  := false;
            "DB_Cycle_Sechage".Sechage_3  := FALSE;
            #Etape := 0;
(*        ELSE
            RETURN; *)
        END_IF;


REGION " Copie " De l'étape Active dans des variables booléennes        

   // "DB_Cycle_Sechage".Etape_Aucune := #Etape := "ID".Cycle_Sechage.Aucune;
    "DB_Cycle_Sechage".Etape := #Etape;
    "DB_Cycle_Sechage".Etape_0 := (#Etape = "ID".Cycle_Sechage.Etape_0);
    "DB_Cycle_Sechage".Etape_1 := (#Etape = "ID".Cycle_Sechage.Etape_1);
    "DB_Cycle_Sechage".Etape_2 := (#Etape = "ID".Cycle_Sechage.Etape_2);

Et je me retrouve avec l'image en PJ. J'ai le séchage 1 qui est actif. Donc je ne comprends pas pourquoi Si je rentre bien dans la condition le #Etape reste à zéro. Je ne sais pas si je réfléchis trop comme en informatique mais pour moi ici s'il passe à 1, il rentre dans le Cas ou #Etape vaut 1. Mais pas là et je ne vois pas ce que je rate
Fichiers joints
DB_sechage.PNG
tuscaonline
Forcené des structures
Forcené des structures
Messages : 178
Enregistré le : 04 nov. 2015, 04:25

Re: Besoin d'aide grafcet Scolaire

Message par tuscaonline »

tiens t'as la methode ici pour le ladder.
https://www.erm-automatismes.com/d0002D ... source.pdf

en ST faut faire la meme chose avec les bascule RS (mais je trouve ca moche d'utiliser le st pour faire autre chose que du calcul)
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1953
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: Besoin d'aide grafcet Scolaire

Message par Béryl »

Moi je trouve moche d'utiliser autre chose que du SFC pour faire du grafcet ! :evil:
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1572
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: Besoin d'aide grafcet Scolaire

Message par MiGaNuTs »

Moi je trouve ça moche de partager du code sans utiliser les balises [code] et [/code]
Avatar du membre
Brebiou
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1013
Enregistré le : 21 oct. 2015, 08:38

Re: Besoin d'aide grafcet Scolaire

Message par Brebiou »

MiGaNuTs a écrit : 20 nov. 2024, 09:32 Moi je trouve ça moche de partager du code sans utiliser les balises [ code] et [/code]
Moi aussi, j'ai corrigé.
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1572
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: Besoin d'aide grafcet Scolaire

Message par MiGaNuTs »

Brebiou a écrit : 27 nov. 2024, 13:41
MiGaNuTs a écrit : 20 nov. 2024, 09:32 Moi je trouve ça moche de partager du code sans utiliser les balises [ code] et [/code]
Moi aussi, j'ai corrigé.
Merci :)
Au moins c'est lisible maintenant.
Répondre