Bonjour tout le monde,
Je suis actuellement étudiant en Automatique et n'ayant aucune notion en langage XML je viens sur ce forum m'adresser à vous
Je vous explique mon problème:
- Je me sert d'un petit logiciel (opensource) pour saisir des Grafcet (cf: le Grafcet en bref), logiciel très pratique qui permet également de saisir d'autres types de langage comme le Ladder par exemple, mais pour l'instant seul le Grafcet m'intéresse.
- Une fois avoir saisit un Grafcet sur le logiciel, il est sauvegardé au format XML et ensuite je peux exécuter une simulation.
Le grafcet est un langage séquentiel dont la logique à suivre peux "grossomodo" être reprensentée comme ceci :
Etape 0 -> Transition 0 -> Etape 1 -> Transition 1 -> Etape 2 -> Transition 2...
Dans le fichier XML créé à partir du Grafcet, chaque étape et transition possèdent :
- Un LocalId (adresse générale de l'étape ou de la transition)
- Un point de connexion "entrant" refLocalId relié au LocalId d'une autre étape ou transition (suivant le type)
Pour être plus clair, je me sert de l'exemple très simple que vous pouvez trouver en pièce jointe. Dans cette exemple vous pouvez voir un grafcet retranscrit en XML.
On peux notamment voir pour l'étape 0 (S0):
- Son LocalID = 1
- Son point de connexion "entrant" refLocalId = 8 correspondant au LocalID de la dernière transition (normal puisque le système est bouclé)
On regarde maintenant la première transition :
- Son LocalID = 5
- Son point de connexion "entrant" refLocalId = 1 correspondant au LocalID de la première étape (étape en amont) ce qui est normal.
Maintenant le fonctionnement expliqué, j'en arrive à mon problème
J'aimerai, via les liens entre les étapes et les transitions créer une matrice où l'on peux voir quelle transition est en rapport avec quelle étape.
Par exemple, les colonnes représentent les étapes et les lignes représentent les transitions. Si la transition 1 est en relation avec l'étape 2 on met un 1 sinon un 0.
Or je ne sais pas du tout comment récupérer les données du fichier XML tel que le nombre total d'étapes, de transitions...
J'aimerai donc programmer quelque chose qui "ressemblant" à cette logique:
Nbrcol = Nombre d'étapes.
Nbrlig = Nombre de transitions.
For x=0:1:Nbrc
InputStep(x)=refLocalId.step(x)
End
For y=0:1:Nbrlig
OutputTransition(y)=LocalId.transition(y)
End
Matrice = [Nbrcol * Nbrlig]
For x=0:1:Nbrcol
For y=0:1:Nbrlig
If InputStep(x)=OutputTransition(y)
Matrice[x * y] = 1;
Else Matrice[x * y] =0;
End
End
Je sais que ce n'est pas du tout comme cela doit être fait mais avec ceci vous pouvez voir où j'aimerai en arriver.
Voila j'espère avoir proprement expliqué mon problème. Merci d'avance pour votre aide, n'hésitez pas à me poser des questions si vous avez eu du mal à me comprendre.![]()
Partager