La première partie d’une section est une zone pour les calculs ou pour les déclarations des variables temporaires utilisées dans la section et qui sont « ACTUALISEES EN PERMANENCE » à chaque appel de la section.
L’utilisation des variables temporaires est inspirée des programmes SIEMENS où il y a la possibilité de déclarer des variables visibles uniquement à l’intérieur d’une fonction. Pour les blocs type FC, ces variables doivent être réécrites à chaque appel (Ex. #Temp_Valeur_En_Cours). Dans ces programmes, les variables sont identifiées par la présence du caractère "#" devant le nom de la variable.
Dans les programmes Schneider, il n’y a pas la possibilité de créer des variables de type « privées » en dehors des blocs DFB. Donc il ne faut pas utiliser les variables « temporaires » d’une section en dehors de la section. Leur fonctionnalité sera expliquée en détail dans une section dédiée.
Figure 14 : autorisation var tmp
La deuxième partie est le début « classique » d’une séquence IMAP. Elle inclue les éléments suivants :
- L’initialisation de la séquence : étape 0 ;
- Les sauts en cas de défauts si besoin ;
- La gestion des tempos.
Figure 15 : step 0 init sequence
La troisième partie est l’étape initiale 10.
Dans cette étape toutes les variables sont déclarées et commentées.
S’il n’y a pas de bits affectés dans un mot de commande, il faut déclarer uniquement le mot de base. S’il y a au moins un bit, il faut déclarer tous les poids binaires.
La différence entre l’étape 0 - RAZ et l’étape 10 - INIT c’est que dans l’étape 0, il ne faut déclarer que les mots de base avec les mêmes commentaires dans les deux étapes. Ne pas déclarer les poids binaires des commandes afin d’éviter des sections trop longues dans le cas de structure de 20 ou 50 mots.
Surtout éviter les mauvaises affectations : une variable a un commentaire en étape 0 et n'a pas de commentaire en étape 10. Elle peut apparaître comme disponible avec des risques graves dans l’utilisation.
La quatrième partie est le corps de la séquence. Étapes > 10 et < 32767 (limite d’un INT).
Le pas entre deux étapes de la même fonction est 10 selon le standard IMAP.
La méthodologie de programmation est expliquée en détail dans une section dédiée.
La cinquième partie est la fin de la séquence. Dans cette section il aura tous les calculs et les particularités de la séquence après la scrutation de la séquence et la gestion d’états.
Il faut accorder une attention spéciale à l’endroit où sont faites les déclarations : avant le label L999, toute déclaration sera suspendue et la dernière valeur sera prise en compte en cas d’activation des sauts suite à un défaut. Après L999, les valeurs seront actualisées en permanence à chaque appel de la séquence.
Pour ces raisons, les états de la fonction sont écrits en dernier. Il faut toujours déclarer au moins l’état « Fonction en cours active ». Il sert de contrôle et de verrouillage dans le pilotage des actionneurs.
Les autres états peuvent servir de contrôle, animation, identification. En général un poids binaire correspond à une fonction « en cours ».
Note : Il faut faire la différence entre une fonction « active » telle qu'une Demande d’opération vidange active et une fonction « en cours » au sujet du déroulement actif de la séquence.
Exemple : le blocage d’un transfert sur une ligne si un des tanks adjacents est en vidange.
- Dans le 1er cas, si les contrôles et les blocages sont faits avec la « Demande d’Opération », la demande s’arrête ; Le transfert est autorisé même si les vannes sont encore ouvertes ;
- Dans le deuxième cas, le transfert est bloqué tant que la fonction est « en cours ».
Il faut TOUJOURS utiliser les Demandes d’OP en parallèle avec les états des séquences pour réaliser des blocages et des interverrouillages.
