[Unity] Compréhension Scrutation Langage ST
- JC87
- Mi homme - Mi automate

- Messages : 2230
- Enregistré le : 20 oct. 2015, 13:00
- Localisation : Nouvelle Aquitaine
Re: [Unity] Compréhension Scrutation Langage ST
Bonjour,
Pourquoi ne pas tout faire tous les graphes avec un CASE ? mélanger les méthodes n'a guère d'intérêt.
Si on ne dispose pas de CASE comme en PL7-Pro, faire un graphe sur mot c'est bien mais comme le dit Philou77 il faut impérativement s'assurer qu'on ne puisse pas franchir les transitions sur le même tour de cycle.
Une méthode éprouvé avec ce genre de graphe est de tester la valeur du mot d'étape en tête puis de faire un jump à une étiquette correspondant à cette valeur puis un jump en fin section.
Ça donne un truc de ce genre :
(* Saut vers etapes grafcet *)
IF Mon_mot_etape=0 THEN JUMP %L0;END_IF;
IF Mon_mot_etape=1 THEN JUMP %L1;END_IF;
IF Mon_mot_etape=2 etc ...
Mon_mot_etape=0:=0;JUMP %L100;
(* ETAPE 0: Etape Initiale *)
%L0:
IF "mes conditions de transitions"
Mon_mot_etape:=1;
END_IF;
JUMP %L100;
(* ETAPE 1 : )
%L1:
IF "mes conditions de transition"
THEN Mon_mot_etape:=1;
END_IF;
JUMP %L100;
%L3: Etc....
%L100:(* FIN CYCLE*)
En écrivant un graphe de cette façons on s'assure donc de laisser un tour de cycle minimum à chaque étape mais on diminue aussi le temps de cycle car on ne scrute que l'étape active et on s'évite une saisie fastidieuse du test de la valeur du mot à chaque étape puisque c'est fait en tête de graphe.
Pour finir, cette méthode est transposable a quasiment tous les automates disposant de langage littéral ce qui facilite le travail entre plateforme en permettant la réutilisation de code.
Donc si j'étais toi, dans un premier temps je transformerai mes graphes prise/dépose en CASE comme celui du robot ou je les ferai avec ma méthode et ensuite je verrai ce que ça donne car je pense que c'est la façon dont s'est programmé qui induit ce problème.
JC
Pourquoi ne pas tout faire tous les graphes avec un CASE ? mélanger les méthodes n'a guère d'intérêt.
Si on ne dispose pas de CASE comme en PL7-Pro, faire un graphe sur mot c'est bien mais comme le dit Philou77 il faut impérativement s'assurer qu'on ne puisse pas franchir les transitions sur le même tour de cycle.
Une méthode éprouvé avec ce genre de graphe est de tester la valeur du mot d'étape en tête puis de faire un jump à une étiquette correspondant à cette valeur puis un jump en fin section.
Ça donne un truc de ce genre :
(* Saut vers etapes grafcet *)
IF Mon_mot_etape=0 THEN JUMP %L0;END_IF;
IF Mon_mot_etape=1 THEN JUMP %L1;END_IF;
IF Mon_mot_etape=2 etc ...
Mon_mot_etape=0:=0;JUMP %L100;
(* ETAPE 0: Etape Initiale *)
%L0:
IF "mes conditions de transitions"
Mon_mot_etape:=1;
END_IF;
JUMP %L100;
(* ETAPE 1 : )
%L1:
IF "mes conditions de transition"
THEN Mon_mot_etape:=1;
END_IF;
JUMP %L100;
%L3: Etc....
%L100:(* FIN CYCLE*)
En écrivant un graphe de cette façons on s'assure donc de laisser un tour de cycle minimum à chaque étape mais on diminue aussi le temps de cycle car on ne scrute que l'étape active et on s'évite une saisie fastidieuse du test de la valeur du mot à chaque étape puisque c'est fait en tête de graphe.
Pour finir, cette méthode est transposable a quasiment tous les automates disposant de langage littéral ce qui facilite le travail entre plateforme en permettant la réutilisation de code.
Donc si j'étais toi, dans un premier temps je transformerai mes graphes prise/dépose en CASE comme celui du robot ou je les ferai avec ma méthode et ensuite je verrai ce que ça donne car je pense que c'est la façon dont s'est programmé qui induit ce problème.
JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [Unity] Compréhension Scrutation Langage ST
Grafcet programmé, l'action doit se faire au tour de cycle suivant (un bon automaticien n'utilise jamais de Jump )
Mon_mot_etape:=Mon_mot_etape_tmp;
(* Saut vers etapes grafcet *)
IF Mon_mot_etape=0 AND Conditions THEN Mon_mot_etape_tmp:=1;END_IF;
IF Mon_mot_etape=1 AND Conditions THEN Mon_mot_etape_tmp:=2;END_IF;
IF Mon_mot_etape=2 etc ...
(*Commandes*)
%Q0.0.0:=Mon_mot_etape=1;
Mon_mot_etape:=Mon_mot_etape_tmp;
(* Saut vers etapes grafcet *)
IF Mon_mot_etape=0 AND Conditions THEN Mon_mot_etape_tmp:=1;END_IF;
IF Mon_mot_etape=1 AND Conditions THEN Mon_mot_etape_tmp:=2;END_IF;
IF Mon_mot_etape=2 etc ...
(*Commandes*)
%Q0.0.0:=Mon_mot_etape=1;
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: [Unity] Compréhension Scrutation Langage ST
cela aurait été un peu plus simple en utilisant l'outil grafcet, idéal pour faire ce genre de choses!
J'aurai aussi regroupé les affectations de sorties, histoire de tout avoir au même endroit, et c'est plus sympa à lire, mais ce n'est que mon avis.
Oui, en genéral, je programme en SFC. Le robot fait 6 fois la même chose (Depose) mais avec des paramètres différents donc je trouvais que programmer des fonctions et utiliser le ST était plus approprié
J'aurai aussi regroupé les affectations de sorties, histoire de tout avoir au même endroit, et c'est plus sympa à lire, mais ce n'est que mon avis.
Oui, en genéral, je programme en SFC. Le robot fait 6 fois la même chose (Depose) mais avec des paramètres différents donc je trouvais que programmer des fonctions et utiliser le ST était plus approprié
prof ....donc euh....sais un peu tout mais ne maitrise pas grand chose
Re: [Unity] Compréhension Scrutation Langage ST
Je ne comprends pas pourquoi tu utilises une autre variable Mon_mot_etape_tmp.itasoft a écrit : ↑15 janv. 2024, 10:15 Grafcet programmé, l'action doit se faire au tour de cycle suivant (un bon automaticien n'utilise jamais de Jump )
Mon_mot_etape:=Mon_mot_etape_tmp;
(* Saut vers etapes grafcet *)
IF Mon_mot_etape=0 AND Conditions THEN Mon_mot_etape_tmp:=1;END_IF;
IF Mon_mot_etape=1 AND Conditions THEN Mon_mot_etape_tmp:=2;END_IF;
IF Mon_mot_etape=2 etc ...
(*Commandes*)
%Q0.0.0:=Mon_mot_etape=1;
Peux tu m'expliquer?
Merci
prof ....donc euh....sais un peu tout mais ne maitrise pas grand chose
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [Unity] Compréhension Scrutation Langage ST
l'action doit se faire au tour de cycle suivant
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: [Unity] Compréhension Scrutation Langage ST
Voilà. J'ai fait quelques modif mais le problème est le même.
Les programmes modifiés: Et le test avec retour d'info:
Les programmes modifiés: Et le test avec retour d'info:
prof ....donc euh....sais un peu tout mais ne maitrise pas grand chose
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [Unity] Compréhension Scrutation Langage ST
PAS BON faire comme l'exemple partout sinon quand etapes sera <>de103 Qasp va rester à 1
Qasp:=etapes=103;
Qasp:=etapes=103;
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: [Unity] Compréhension Scrutation Langage ST
Ok mais pour les actions aux étapes 101 ou 104, tu écris ça comment ?
prof ....donc euh....sais un peu tout mais ne maitrise pas grand chose
Re: [Unity] Compréhension Scrutation Langage ST
Vous remarquerez que je passe bien en case 2 mais pas à étape 106. Je reste sur la 105 et je ne sais pas pourquoi
prof ....donc euh....sais un peu tout mais ne maitrise pas grand chose
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [Unity] Compréhension Scrutation Langage ST
Ok mais pour les actions aux étapes 101 ou 103 c'est bon car QpX va garder sa dernière valeur
écrire QpX:=XC; pourquoi MOVE ?
écrire QpX:=XC; pourquoi MOVE ?
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
