Re: [Unity] Compréhension Scrutation Langage ST
Posté : 15 janv. 2024, 09:57
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