Type de contribution : FAQ, ID de la contribution : 48815048, Date de la contribution : 13/04/2011
(0)
Évaluer

Pourquoi les données locales et les variables des paramètres de bloc fonction sont-elles réécrites dans STEP 7 Basic V10.5 ?

  • Contribution
  • Concerne le/les produits(s)

Description
Contrairement au bloc fonctionnel (FB), le bloc fonction  (FC) est un bloc qui ne dispose pas de zone mémoire ni de variables statiques. Les variables temporaires et données locales sont mémorisées de manières différentes dans un bloc fonction et un bloc fonctionnel dans STEP 7 Basic V10.5.

Données locales statiques dans un FB

  • Variables qui servent à enregistrer les résultats intermédiaires statiques dans le bloc de données d'instance du FB.
  • Les données locales ne sont pas perdues en fin de traitement du bloc.
  • Les données statiques sont conservées, même sur plusieurs cycles, et cela jusqu'à ce qu'elles soient réécrites.

Données locales temporaires dans un FB, FC et OB

  • Les données locales temporaires sont sauvegardées dans la mémoire système de la CPU, dans l'ordre des déclarations et en fonction des type de données.
  • Les données des variables temporaires sont perdues après traitement de la fonction. 
  • Les variables servent à enregistrer des résultats intermédiaires temporaires et sont mémorisées uniquement pendant un  temps de cycle.

Dans un bloc fonction FC, la zone mémoire des données locales est uniquement de type "non rémanentes". Cela nécessite de réaliser une analyse et une affectation de ces données lors de l'appel du bloc FC. Avec cette manière d'attribution des paramètres dans les appels des blocs FC, le système d'exploitation consomme une partie de la zone de mémoire des données locales temporaires. Par conséquent, l'utilisateur ne peut pas disposer de l'ensemble de la zone mémoire système.

La sauvegarde des variables dans des données locales temporaires correspond à une sauvegarde dans un bloc de données global et avec un adressage des paramètres qui débute toujours par l'octet 0 (adresse relative). L'éditeur de programme utilise, lui aussi, des données locales dans les transferts de paramètres lors de  l'appel du bloc FC.

Le tableau 01 présente un exemple de structure d'appel avec un aperçu des blocs appelés avec la gestion des données locales effectuée par le système en fonctionnement:
 

Structure des appels Adresse Données locales (dans le chemin) Données locales
(dans le bloc)
Programme principal OB1 12 12
==> Fonction 1 (appelée par l'OB1) FC1 22 10
        ==> Fonction  2 (appelée par le FC1) FC2 32 10
==> Fonction  3 (appelée par l' OB1) FC3 14 2
        ==> Fonction  2 (appelée par le FC3) FC2 24 10
                ==> Fonction  4 (appelée par le FC2) FC4 34 10
Tableau 01

La colonne "Données locales (dans le chemin)" affiche le besoin en données locales de la totalité du chemin et la colonne "Données locales (dans le bloc)" affiche le besoin en données locales du bloc à chaque étape.

Note
Les blocs à adressage symbolique requièrent plus de données locales, car l'information pour l'adressage symbolique est également mémorisée.

La zone de mémoire des données locales temporaires sauvegarde toutes les données temporaires locales d'un bloc. Ces données sont uniquement temporaires et ne sont valides que pendant le traitement du bloc. Un bloc de données d'instance est une  zone de mémoire pour un bloc fonctionnel et qui contient les paramètres de transfert, les variables temporaires et statiques.
 

Variables de transfert OB FB FC
Entrée - DB-instance Mémoire système
Sortie - DB-instance Mémoire système
Entrée/Sortie - DB-instance Mémoire système
Variables de bloc OB FB FC
Données locales statiques - DB-instance -
Données locales temporaires Mémoire système Mémoire système Mémoire système
Tableau 02

Lorsque vous appelez un bloc fonction (FC) , veuillez observer les règles ci-dessous pour les variables des paramètres d'entrées et de sorties mais aussi lors de l'affectation de ces paramètres :

  • Tous les paramètres formels doivent être renseignés avec des valeurs actualisées puisque les blocs fonctions ne disposent pas de zone de mémoire.
  • Si aucune valeur n'a été écrite dans un paramètre de sortie d'une fonction, la valeur renvoyée au bloc appelant peut être aléatoire. En conséquence, des valeurs doivent toujours être écrites dans les paramètres de sortie
  • De même les paramètres d'entrée/sortie devront toujours être paramétrés avec des valeurs pour ne pas continuer à traiter le bloc involontairement avec d'anciennes valeurs.

Avec les blocs fonctionnels (FB), les valeurs des paramètres sont stockées dans le bloc de données d'instance. Si des paramètres d'entrée, de sortie ou d'entrée/sortie d'un bloc fonctionnel n'ont pas reçu de valeur, on utilise celles enregistrées dans le bloc de données d'instance. Contrairement aux fonctions (FC), il n'y a pas lieu de craindre l'utilisation de valeurs aléatoires, mais il existe un risque de continuer à traiter involontairement des valeurs anciennes. C'est pourquoi il est recommandé de fournir des valeurs à tous les paramètres du bloc.


Figure 01

Le tableau 01 présente un exemple de bloc principal OB1 qui  réalise l'appel d'un bloc fonctionnel avec son bloc d'instance et ensuite l'appel d'un bloc fonction. Puisque dans un FC la zone mémoire des données locales est uniquement de type "non rémanentes", il est nécessaire de  réaliser une analyse et une affectation de ces données lorsque le bloc FC est appelé.

Vous trouverez de plus amples informations dans l'aide en ligne du STEP 7 Basic V10.5 dans les rubriques suivantes :

  • Structure de l'interface de bloc,
  • Appel de structure,
  • Zones de mémoire système

Détails de l'erreur
Description détaillée de l'erreur
Aidez-nous à améliorer notre support en ligne.
La page demandée ne peut pas être affichée. Veuillez contacter le gestionnaire du site.
Contacter le gestionnaire du site