Automate programmable S7-200 Manuel système
Comprendre le traitement des programmes d'interruption par le S7-200
Le programme d'interruption s'exécute en réaction à un événement interne ou externe associé. La main est
rendue au programme principal une fois la dernière opération du programme d'interruption exécutée. Vous
pouvez quitter le programme d'interruption en exécutant une opération de fin conditionnelle du programme
d'interruption (CRETI). Le tableau 6-46 présente certains conseils et certaines restrictions concernant
l'utilisation de programmes d'interruption dans votre programme.
Tableau 6-46 Conseils et restrictions pour l'utilisation de programmes d'interruption
Conseils
Le traitement par interruption fournit une réaction rapide à des événements internes ou externes spéciaux. Nous vous
conseillons d'exécuter une tâche spécifique par programme d'interruption, puis de rendre la main au programme principal.
En effet, l'exécution de programmes d'interruption courts et précis est rapide et ne retarde pas trop les autres processus.
Si vous n'agissez pas ainsi, des situations inattendues peuvent provoquer un fonctionnement anormal de l'équipement
piloté par le programme principal. Il est vraiment recommandé de suivre la règle "le plus court est le mieux".
Restrictions
Vous ne pouvez pas utiliser les opérations Inhiber tous les événements d'interruption (DISI), Valider tous les événements
6
d'interruption (ENI), Définir mode pour compteur rapide (HDEF) et Fin de traitement (END) dans un programme
d'interruption.
Prise en charge système des interruptions
Comme les interruptions peuvent influer sur les contacts, bobines et accumulateurs, le système sauvegarde
la pile, les accumulateurs et les mémentos spéciaux indiquant l'état des accumulateurs et des opérations,
puis les recharge. Cela évite que le programme utilisateur principal soit perturbé après appel et retour du
programme d'interruption.
Partage de données entre programme principal et programmes d'interruption
Vous pouvez partager des données entre le programme principal et un ou plusieurs programmes
d'interruption. Comme il est impossible de prédire quand le S7-200 va générer une interruption, il vaut mieux
limiter le nombre de variables utilisées à la fois par le programme d'interruption et à un autre endroit du
programme. Il peut s'ensuivre des problèmes de cohérence des données partagées, dus à l'action des
programmes d'interruption lorsque l'exécution d'opérations dans votre programme principal est interrompue
par des événements d'interruption. Utilisez la table des variables locales du programme d'interruption pour
être sûr que ce dernier ne fait appel qu'à de la mémoire temporaire et n'écrase pas des données provenant
d'autres endroits de votre programme.
Il existe un certain nombre de techniques de programmation permettant d'assurer un partage correct des
données entre votre programme principal et les programmes d'interruption. Ces techniques restreignent
l'accès aux adresses de mémoire partagées ou bien empêchent l'interruption des séquences d'opérations
utilisant des adresses de mémoire partagées.
Programme LIST partageant une variable unique : Si la donnée partagée est une variable d'octet, de
-
mot ou de double mot unique et que votre programme est écrit en LIST, vous pouvez assurer un
accès partagé correct en rangeant les valeurs intermédiaires des opérations sur données partagées
uniquement dans des accumulateurs ou des adresses de mémoire non partagées.
Programme CONT partageant une variable unique : Si la donnée partagée est une variable d'octet,
-
de mot ou de double mot unique et que votre programme est écrit en CONT, vous pouvez assurer un
accès partagé correct en convenant que l'accès aux adresses de mémoire partagées se fasse
uniquement par les opérations de transfert MOVB, MOVW, MOVD et MOVR. En effet, alors que de
nombreuses opérations CONT se composent de séquences d'opérations LIST interruptibles, ces
opérations de transfert correspondent à une opération LIST unique dont l'exécution ne peut pas être
affectée par des événements d'interruption.
Programme LIST ou CONT partageant plusieurs variables : Si les données partagées sont
-
composées de plusieurs octets, mots ou doubles mots apparentés, vous pouvez commander
l'exécution du programme d'interruption à l'aide des opérations DISI (Inhiber tous les événements
d'interruption) et ENI (Valider tous les événements d'interruption). Inhibez les interruptions à l'endroit
de votre programme principal où l'exploitation d'adresses de mémoire partagées doit commencer.
Une fois toutes les actions touchant les adresses partagées achevées, validez à nouveau les
interruptions. Pendant la durée d'inhibition des interruptions, les programmes d'interruption ne
peuvent pas s'exécuter et ne peuvent donc pas accéder aux adresses de mémoire partagées.
Toutefois, cette méthode peut entraîner un retard dans la réaction aux événements d'interruption.
158