Métrique : Stack Size

Description de l’utilisateur

Une application ou une bibliothèque s'articule autour de types complexes tels que des programmes, des blocs fonction, des listes de variables globales, des méthodes, des actions, des fonctions, des structures, etc. Au sein de chacun de ces types, des variables peuvent être définies.

Lorsqu'un type complexe est appelé, par exemple une fonction, une méthode, une action, une opération Get ou Set de propriété ou une transition, l'exécution nécessite la mémoire de la pile. Les informations de taille de pile peuvent être utilisées pour identifier le type complexe qui consomme une quantité trop importante de mémoire de la pile.

NOTE : La mémoire de pile disponible par tâche est limitée et définie par le contrôleur utilisé. Une consommation importante de la taille de la pile peut entraîner des exceptions.
NOTE : Si un type de bloc fonction est utilisé comme type de variable d'entrée de méthode (appel par valeur), la taille mémoire du type complexe est nécessaire (voir Données de taille mémoire). N'utilisez pas l'appel par valeur pour des types complexes tels que des entrées de méthode ou de fonction.

Calcul de mesure

Pour un type complexe tel qu'une fonction ou une méthode, les tailles des variables s'additionnent. Lors de l'appel du type complexe, la taille mémoire est allouée par-dessus la pile et les valeurs d'entrée y sont copiées. Pendant l'exécution du code de la fonction ou de la méthode, ces valeurs de mémoire sont utilisées.

NOTE : Chaque appel de méthode ou de fonction a sa propre mémoire et aucun conflit ne se produit si une méthode est appelée en parallèle par une autre tâche.

Exemple

Exemple de calcul de la métrique Stack Size :

FUNCTION_BLOCK FB_XXX
VAR
    fbComplex: FB_Test; // 20 byte
END_VAR

// method call of FB_XXX
Meth1(TRUE);

METHOD Meth1
VAR_INPUT
   xTest1: BOOL;
END_VARVAR
   iTest2: INT;
END_VAR


METHOD METH2
VAR_INPUT
    fbComp: FB_XXX;
END_VAR

Résultats de la métrique Stack Size

Stack Size (METH1) = 8
Stack Size (METH2) = 32