Python et GRAFCET

Bonjour

je suis nouveau sur ce forum, et utilisateur occasionnel de python.

Je m’interroge sur la possibilité d’utiliser Python pour programmer du GRAFCET notamment sur des cartes type Raspberry PI.

En théorie, le GRAFCET n’est autre qu’un graphe assez proche des réseaux de Pétri et des machines à états finis et j’ai vu qu’il y avait des modules pythons.

Si quelqu’un a déjà fait l’expérience sur ce sujet, je l’en remercie.

Cordialement

François-Marie

1 « J'aime »

Globalement Grafcet c’est uniquement un formalisme visuel pour représenter une séquence d’action. Il n’y a rien qui t’empêche de représenter chaque action comme une fonction (asynchrone ou non si tu veux de la simultanéité) et ton graphe est la résultante de l’enchaînement des appels de ces fonctions.

Rapidement, je n’ai pas vu de librairie récente en Python permettant de représenter ces graphes, mais j’imagine qu’il est possible de détourner networkx ou assimilé pour faire la même chose.

Bonjour

merci pour ce retour, c’est ce qu’il me semblait.

Cordialement

Après ça serait intéressant d’avoir une procédure claire et vérifiable pour la transformation d’un GRAFCET en Python.

Ou à défaut un outil pour représenter un sous-ensemble de Python sous forme d’un GRAFCET ?

Mais je n’ai jamais vu ça : on m’a mentionné les GRAFCET au collège une ou deux fois, et je ne les ai jamais recroisés après.

@Billard existe-il des outils libres pour travailler les GRAFCETs ? Par exemple pour les exporter dans un format textuel normé/reconnu/qui fait consensus, à la dot ?

Car travailler à partir d’une image c’est compliqué, travailler à partir d’un texte c’est plus abordable (comme le font les layout engines de dot).

Bonsoir,

oui, il serait idéal de pouvoir saisir du GRAFCET sous forme graphique ou textuelle puis de le voir transformé en Python, mais c’est un vaste projet.

À mon niveau, ce que je souhaitais, je suis enseignant en lycée pro en électronique et en électrotechnique, c’est d’exploiter une rapberry PI comme un automate industriel. L’objectif est que les deux filières voient ce qu’est un automate via un projet pédagogique.

Pour moi, il n’y a pas de projet libre, chaque constructeur d’automate propose ses outils !

Ça me semble une bonne idée (et ça se fait vraiment dans l’industrie, j’en ai vu un passer aujourd’hui : Découvrez RevPi Core SE sur notre boutique en ligne - Achat Facile).

Et pourquoi pas implémenter l’automate en Python ? Ça recoupe avec l’usage du Python que vos élèves font (peut-être) dans d’autres matières. Et ça peut être intéressant de montrer le GRAFCET et son implémentation en Python côte à côte (même si on a pas d’outil pour passer de l’un à l’autre automatiquement).

Bonjour,

merci pour ce lien que je ne le connaissais pas.

Implémenter l’automate en python oui bien sûr , mais je crains que cela ne soit un peu gros comme projet que de programmer un grafcet complet en python à partir de zéro. C’est pourquoi je cherchais une librairie qui simplifie un peu la tâche.

Peut-être qu’un compromis serait de créer une classe d’objet GRAFCET pour débuter ? J’y réfléchis.

Partir de zéro c’est toujours dur pour un débutant. Moi débutant j’aimais apprendre en modifiant du code, pas en partant d’une feuille blanche.

Tu peux peut-être les laisser faire le GRAFCET (à ton habitude avec le niveau d’autonomie habituel), puis leur fournir une implémentation en Python qui fait une partie (20 % ? 50 % ? 80 % ?) du travail (la mise en place des I/O, de la lecture de capteur, de l’envoi sur des actionneurs, …) et les laisser implémenter le reste en utilisant le GRAFCET comme une spec. Comme ça un élève qui part de zéro en Python peut “copier-modifier-coller” dans sa tête des bouts existant pour créer ce qu’il manque.

J’ignore ton niveau en Python mais ce forum peut servir à ça aussi : tu nous propose un code que tu voudrais montrer à tes élèves pour une relecture par la communauté (dont certains travaillent sur des bras robotiques, et avec un peu de chance tu auras des retours pertinents pour l’améliorer, et donc fournir à tes élèves du code bien lissé, peut-être plus facile à lire et à modifier, et plus réaliste.

Ayant vu des bêtises dans des documents du ministère de l’éducation, houlala que j’aimerai qu’ils consultent la communauté avant de publier… (du code en Python 3 avec des liens vers la doc Python 2, appeler les dictionnaires de p-uplets nommés, pour les deux vieux souvenirs qui me reviennent en premier).

Bonjour

merci pour vos retours, je vais creuser la question et reviendrai si besoin.

Cordialement