Bonjour
Je suis débutant en automatisme et j'aimerai avoir un conseil d'ordre particulier sur la structuration de programme.
Le programme sur lequel je travaille actuellement utilise plusieurs FB qui peuvent s'imbriquer les un dans les autres ou être appelés individuellement.
Prenons par exemple un FB A qui utilise en son sein un FB B, un FB C qui utilise aussi le FB B. Il va sans dire que le FB B possède pour chaque appel une instance DB qui lui est propre . Cependant dans mon cas FB A et C n'ont aucun risque de tourner en même temps. Par ailleurs je m'interroge sur l'empreinte mémoire ( et comme je ne suis qu'au début de mon projet et j'ai peur de ne pas avoir assez de mémoire de travail pour arriver à la fin). Donc j'ai imaginé une autre approche ou FB B est unique et est lancé soit par FB A, soit FB C en communicant au travers de la DB B et attende la fin de réalisation de FB B pour continuer leurs cycles.
Même si cela me parait jouable, je ne suis pas sur que se soit une bonne pratique. Merci pour vos retours.
[TIA V15] Structuration Programme
Re: [TIA V15] Structuration Programme
Salut,
Qu'est ce que tu as comme automate ? Parce que pour arriver à saturer la mémoire il faut y aller.
Il y a toujours plusieurs façon de programmer. Les FB avec les DB instances c'est top pour faire ce que tu as décri.
Sinon pour charger des paramètres différents dans un FB tu peux utiliser un UDT (data type) puis tu crée un DB avec un tableau (ARRAY) de cet UDT (par exemple array [0..1] de ton UDT). Tu viens choisir l'index correspondant aux paramètres pour ton DB A et ton DB B (par exemple index 0 pour ton DB A et index 1 pour ton DB B).
Qu'est ce que tu as comme automate ? Parce que pour arriver à saturer la mémoire il faut y aller.
Il y a toujours plusieurs façon de programmer. Les FB avec les DB instances c'est top pour faire ce que tu as décri.
Sinon pour charger des paramètres différents dans un FB tu peux utiliser un UDT (data type) puis tu crée un DB avec un tableau (ARRAY) de cet UDT (par exemple array [0..1] de ton UDT). Tu viens choisir l'index correspondant aux paramètres pour ton DB A et ton DB B (par exemple index 0 pour ton DB A et index 1 pour ton DB B).
Re: [TIA V15] Structuration Programme
Bonjour Pepino672
J'ai un S7-1214C. Et pour le moment je suis déjà 43% d'utilisation de ma mémoire de travail et je ne suis qu'au tiers de mon projet. Il utilise un lecteur RFID RF260 via IO-Link , deux modules de Pesage Siwarex WP231, plus plein de modules I/O. Les librairies des modules RFID et pesage sont assez compliquées et consomment pas mal de ressources et sont immodifiables.
Concernant ma question , je pense que ma DB d'instance correspond à ma proposition initiale. Par contre pour l'UDT en array, je ne pense pas que cela me fasse gagner de la place et de toutes façons, le FB B de mon exemple aurait sa DB B unique et utilisable par FB A et FB C mais pas en même temps. Donc pas de risque de collision.
J'ai un S7-1214C. Et pour le moment je suis déjà 43% d'utilisation de ma mémoire de travail et je ne suis qu'au tiers de mon projet. Il utilise un lecteur RFID RF260 via IO-Link , deux modules de Pesage Siwarex WP231, plus plein de modules I/O. Les librairies des modules RFID et pesage sont assez compliquées et consomment pas mal de ressources et sont immodifiables.
Concernant ma question , je pense que ma DB d'instance correspond à ma proposition initiale. Par contre pour l'UDT en array, je ne pense pas que cela me fasse gagner de la place et de toutes façons, le FB B de mon exemple aurait sa DB B unique et utilisable par FB A et FB C mais pas en même temps. Donc pas de risque de collision.
Re: [TIA V15] Structuration Programme
Bonjour,
Les données d'instances sont-elles vraiment utiles? Certaines variables peuvent peut-être passer en Temp.
Ne serait-il pas suffisant d'utiliser un FC?
il faut t'interroger sur l'utilité ou non du FB B.
Les données d'instances sont-elles vraiment utiles? Certaines variables peuvent peut-être passer en Temp.
Ne serait-il pas suffisant d'utiliser un FC?