Généralités
Les instances de bloc fonction dérivé (DFB) peuvent être utilisées dans tous les langages [liste d'instructions (IL), littéral structuré (ST), schéma à contacts (LD) et langage en blocs fonctionnels (FBD)], ainsi que dans toutes les tâches du programme d'application (sections, sous-programmes, etc.), à l'exception des transitions du programme SFC.
Règles générales d'utilisation
Lorsque vous utilisez un bloc fonction dérivé, vous devez respecter les consignes suivantes, quel que soit le langage utilisé :
Certains paramètres d'entrée, de sortie ou d'entrée/de sortie n'ont pas besoin d'être définis. Par contre, les paramètres suivants doivent obligatoirement être affectés :
paramètres d'entrée/de sortie,
paramètres de sortie de type données génériques (ANY_INT, ANY_ARRAY, ...).
Les paramètres suivants sont facultatifs :
paramètres d'entrée de type données génériques (ANY_INT, ANY_ARRAY, etc.),
paramètres d'entrée de type STRING.
Les paramètres d'entrée non définis conservent la valeur du précédent appel ou la valeur d'initialisation correspondante, si le bloc n'a jamais été appelé.
Tous les objets affectés aux paramètres d'entrée, de sortie et d'entrée/de sortie doivent être du même type que ceux définis lors de la création du type bloc fonction dérivé. Par exemple, si le type INT est défini pour le paramètre d'entrée « vitesse », vous ne pouvez pas affecter le type DINT ni REAL.
Seuls les types BOOL et EBOOL peuvent être combinés pour les paramètres d'entrée et de sortie (pas pour les paramètres d'entrée/de sortie).
Exemple : le paramètre d'entrée « Validation » peut être défini comme BOOL et associé à un bit interne %Mi de type EBOOL. Toutefois, le paramètre d'entrée possède des propriétés de type BOOL dans le code interne du type bloc fonction dérivé (il ne gère pas les fronts).
Affectation des paramètres
Le tableau ci-dessous résume les possibilités d'affectation des paramètres dans les différents langages de programmation.
Paramètre |
Type |
Affectation du paramètre (1) |
Affectation |
---|---|---|---|
Entrées |
EDT (2) |
Défini, valeur, objet ou expression |
Facultative (3) |
BOOL |
Défini, valeur, objet ou expression |
Facultative |
|
DDT |
Défini, valeur ou objet |
Facultative |
|
DDT d'équipement |
Défini ou objet |
Obligatoire |
|
ANY_… |
Défini ou objet |
Facultative |
|
ANY_ARRAY |
Défini ou objet |
Facultative |
|
Entrées/sorties |
EDT |
Défini ou objet |
Obligatoire |
DDT |
Défini ou objet |
Obligatoire |
|
DDT d'équipement |
Défini ou objet |
Obligatoire |
|
IODDT |
Défini ou objet |
Obligatoire |
|
ANY_… |
Défini ou objet |
Obligatoire |
|
ANY_ARRAY |
Défini ou objet |
Obligatoire |
|
Sorties |
EDT |
Défini ou objet |
Facultative |
DDT |
Défini ou objet |
Facultative |
|
ANY_… |
Défini ou objet |
Obligatoire |
|
ANY_ARRAY |
Défini ou objet |
Obligatoire |
(1) Défini en langage schéma à contacts (LD) ou langage en blocs fonctionnels (FBD). Valeur ou objet en langage littéral structuré (ST) ou liste d'instructions (IL).
(2) Sauf paramètres de type BOOL
(3) Sauf paramètres de type STRING, qui sont obligatoires
Règles d'utilisation des blocs fonction dérivés avec des tableaux
AVERTISSEMENT | |
---|---|
Lorsque vous utilisez des tableaux dynamiques, il est obligatoire de vérifier que la taille des tableaux est identique. Dans un cas spécifique, avec des tableaux dynamiques en sortie ou en entrée/sortie, un dépassement peut entraîner une exécution incorrecte du programme et arrêter le contrôleur.
Ce comportement se produit si les conditions ci-dessous sont remplies simultanément :
Un bloc fonction dérivé avec au moins un paramètre de sortie ou d'entrée/de sortie de type de tableau dynamique (
ANY_ARRAY_XXX
) est utilisé.Dans le codage d'un bloc fonction dérivé, une fonction ou un bloc fonction (FFB de type FIFO, LIFO, MOVE, MVX, T2T, SAH ou SEL) est utilisé(e). Notez que la fonction ou le bloc fonction a besoin de deux paramètres de type
ANY
avec au moins un paramètre défini en sortie.Le paramètre DFB du tableau dynamique est utilisé en écriture pendant l'appel du FFB (sur le paramètre de type
ANY
). Pour les autres paramètresANY
, un tableau de taille fixe est utilisé.La taille du tableau de taille fixe est supérieure à la taille du tableau dynamique calculée pour stocker le résultat.
Exemple de vérification de la taille des tableaux
L'exemple ci-dessous indique comment vérifier la taille
des tableaux à l'aide de la fonction LENGTH_ARWORD
dans un bloc fonction dérivé.

Dans cet exemple, Table_1
est un tableau
de taille fixe, Table_2
est un tableau dynamique
de type ANY_ARRAY_WORD
. Ce programme vérifie
la taille de chaque tableau. Les fonctions LENGTH_ARWORD
calculent la taille de chaque tableau afin de conditionner l'exécution
de la fonction MOVE
.