Structures dans un FB Somachine

Forum traitant des automates industriels de marque Schneider - Telemecanique
Moulares2110
Apprend le binaire
Apprend le binaire
Messages : 5
Inscription : 03 août 2018, 10:24

Structures dans un FB Somachine

Message par Moulares2110 »

Bonjour à tous,

Je suis débutant en automatisme et souhaite avoir vos lumières sur deux petites questions.
Je suis sur Somachine v4.2 et ai créé un FB qui contient des structures que j'ai déclaré en DUT à l'extérieur de la fonction.

Mes questions :
1) Au départ je voulais déclaré ma structure directement dans mon FB et ça ne m'a pas l'air possible. Qu'en pensez vous ?
2) si je suis obligé de la déclarer à l'extérieur de ma fonction, comment faire pour que le bloc soit fonctionnel sans exporter les structures une par une. Je pensais qu'il le ferait tout seul mais j'ai essayé et les structures sont inutilisables dans la fonction si je ne les importe pas.

J'espère avoir été clair.

Merci !
Avatar de l’utilisateur
nicekev
Code son premier grafcet
Code son premier grafcet
Messages : 48
Inscription : 25 avr. 2017, 11:37
Localisation : Ici et là !

Re: Structures dans un FB Somachine

Message par nicekev »

Bonjour Moulares,

1) Je n'ai jamais déclaré une structure dans un FB, je l'ai toujours déclarée à l'extérieur.
2) Je ne sais pas si j'ai bien saisie ta demande, je t'ai mis en PJ une capture avec la création de la structure, sa déclaration dans le GVL et son utilisation dans mon pou FB. Tu peux l'utiliser dans plusieurs FB.

@+
Pièces jointes
Capture.JPG
Moulares2110
Apprend le binaire
Apprend le binaire
Messages : 5
Inscription : 03 août 2018, 10:24

Re: Structures dans un FB Somachine

Message par Moulares2110 »

Merci pour ta réponse,
J'ai du mal m'exprimer dans ma 2e question. J'arrive à utiliser les structures dans ma fonction mais je pense à l'avenir. Si je dois réutiliser cette fonction dans un autre projet (où je n'ai pas déclarer les structures). Je devrais importer le bloc fonction AINSI que les structures indépendamment ?? ou bien il existe une possibilité qu'il le fasse tout seul.
Avatar de l’utilisateur
nicekev
Code son premier grafcet
Code son premier grafcet
Messages : 48
Inscription : 25 avr. 2017, 11:37
Localisation : Ici et là !

Re: Structures dans un FB Somachine

Message par nicekev »

A ma connaissance, il te faudra importer l'ensemble des éléments liés entre eux.
JAMPID
Apprend le binaire
Apprend le binaire
Messages : 6
Inscription : 30 oct. 2019, 11:49

Re: Structures dans un FB Somachine

Message par JAMPID »

Bonjour,
il n'est pas possible de déclarer un structure à l'intérieur d'un FB. Par contre on peut créer des données qui font références aux structures en VAR_IN_OUT.
Ensuite je choisi le langage CFC (génial pour cela) qui permet de poser ton FB instancié et d'y associer via une composition et/ou une sélection les E/S de ton bloc si tu détailler; sinon plus simple en instanciant une structure que l'on met en Entrée du FB instancié (apparaît une double flèche au dessus de l'entrée de type structure de ton FB.

Pour l'avenir, je pense qu'il faudrait faire une bibliothèque en y intégrant ton FB de base ainsi que la structure de base.
Comme aujourd'hui l'IEC 61131-3 intègre de la POO et la notion d'héritage, il est facile d'étendre les FB et les structures si nécessaire.

J'espère que ces pistes (issues de codesys v3.5) permettront de répondre à tes interrogations. cela devrait aller dans le Somachine 4.2 et les suivants; sinon tester dans Machine Expert.

Bonne expérimentations!
Avatar de l’utilisateur
pach30
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 116
Inscription : 26 mars 2019, 14:20
Localisation : ben le Sud de ?

Re: Structures dans un FB Somachine

Message par pach30 »

Bonjour
De mémoire , SoMachine exporte automatiquement les structures utilisées dans un FB . Une structure est le début d'une classe , cela défini un nouveau type de données( à l'égal de INT, WORD etc..) donc c'est pour cela qu'on ne peut pas la déclarer dans un FB et qu'il faut le faire au niveau prog principal .Une fois ce nouveau type défini, on peut sans problème alors l'instancier (déclarer) dans un FB .

Question subsidiaire sur les structures : Quand on en utilise et que l'on veut la localiser (l'adresser ) , SoMachine impose de le faire en utilsant %IL comme type de donnée : par contre , aucune trace de ce type de donnée dans la doc .

un exemple

Code : Tout sélectionner

TYPE Experience :
STRUCT
	szNom : STRING[10] ;  // nom de l'experience 10 caractéres max  
	iJours : INT ; 
	xImage : BOOL ; 
END_STRUCT
END_TYPE

// LA DECLARATION 
Expe AT %IL0 : Experience;
	Expe1 AT %IL1 : Experience;
	Expe2 AT %IL2 : Experience;
	
en visu dynamique
Capture.JPG
On peut voir que ca chevauche joyeusement !!!

Quelqu'un à des infos sur ce type de données et surtout son rangement en mémoire ??
Avatar de l’utilisateur
Bruce33
Créateur de langage
Créateur de langage
Messages : 716
Inscription : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: Structures dans un FB Somachine

Message par Bruce33 »

Bonjour,
pach30 a écrit : 31 juil. 2020, 09:44 Quand on en utilise et que l'on veut la localiser (l'adresser ) , SoMachine impose de le faire en utilsant %IL comme type de donnée : par contre , aucune trace de ce type de donnée dans la doc .
Pourquoi dites-vous %IL ? La syntaxe %I correspond à des entrées.
Sur le site de Schneider Electric, ce sont les variables %ML qui sont indiquées : https://www.se.com/fr/fr/faqs/FA146144/
Mais c'est vraiment court comme explication.
L'explication espagnole est un peu plus intéressante : alocatar_variable_estructura.pdf

C'est normal le chevauchement des %IL. On est sur la mémoire des entrées, adressée par octet.
C'est au programmeur de gérer la taille de la variable structurée.
Avatar de l’utilisateur
pach30
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 116
Inscription : 26 mars 2019, 14:20
Localisation : ben le Sud de ?

Re: Structures dans un FB Somachine

Message par pach30 »

%IL car effectivement je veux aller taper dans la zone des entrées !!
J'ai deux API relié par EtherNet/IP avec le TM241 en cible . Le mappage fait par SoMachine passe par des %IW et forcement sous la forme d'un tableau de word ( je ne pense pas que l'on puisse changer les "assemblies" ) . Il faut donc réinterpréter cette zone mémoire et se palucher la couche "présentation" quand on a des informations structurées à échanger. Alors que si j'arrive à "pointer" sur cette zone , c'est fini . C'est rigide comme systéme , si une structure est modifiée , bing , il faut refaire , mais c'est également vrai dans l'autre cas .

C'est typiquement ce que je fais avec Unity et le M340 ou avec des Baluff BNI xxx (passerelle EtherNet/IP - IOLink ) , j'ai juste à recréer dans le M340 le type de structure à celle que donne le fichier EDS , à l'instancier et a le faire pointer sur la zone mémoire de la NOC.
Avatar de l’utilisateur
Bruce33
Créateur de langage
Créateur de langage
Messages : 716
Inscription : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: Structures dans un FB Somachine

Message par Bruce33 »

Je comprends mieux.
Il faut maintenant trouver à quelles adresses se trouvent les données...
Répondre