Skip to main content

Dispositifs de bus de terrain et pilotes d'E/S

La base technique de chaque appareil de bus de terrain, qui est configurée dans l'arborescence des appareils, est le pilote d'E/S.

Le pilote d'E/S est le lien entre la pile de bus de terrain, l'application CEI et l'IDE. Le pilote configure la pile de bus de terrain à partir des données de la configuration de l'appareil. Il affiche le diagnostic, fournit une API pour l'application CEI et est responsable du mappage des E/S (voir chapitre « Mappage des E/S »).

Ce chapitre fournit un bref aperçu des fonctionnalités de base des périphériques de pilote d'E/S, sans aborder les détails des systèmes de bus spécifiques. De plus, quelques recommandations pour la configuration sont fournies.

Tâche de cycle de bus

La tâche de cycle de bus est la tâche CEI dans le contexte de laquelle le pilote d'E/S est exécuté. Certains pilotes d'E/S utilisent plusieurs tâches : généralement une tâche critique en temps réel (avec une priorité élevée), qui est utilisée pour le transfert des données d'E/S, et une autre tâche avec une faible priorité pour des tâches telles que l'évaluation des diagnostics et l'exécution de services acycliques du système d'autobus.

Avec les systèmes de bus critiques en temps réel, il faut s'assurer qu'aucune opération n'est exécutée dans le cadre de cette tâche de bus qui interromprait l'horloge du bus en raison du temps d'exécution.

La tâche de bus peut être configurée dans la boîte de dialogue de mappage d'E/S du périphérique de pilote d'E/S. Notez que les paramètres de l'appareil parent sont hérités par défaut. Si cet équipement est l'automate, alors son réglage d'automate s'applique dans la tâche de cycle de bus.

Important

Si ce paramètre ci-dessus n'est pas défini, la tâche avec le temps de cycle le plus court est utilisée. De cette manière, un pilote d'E/S non temps réel peut être exécuté de manière non intentionnelle dans le contexte de tâche d'un pilote critique temps réel, interrompant ainsi sa communication. Pour diagnostiquer ces problèmes de communication, il est recommandé de vérifier le suivi des tâches.

Pour plus d'informations, voir : Onglet : Paramètres API

Mappage d'E/S

Une fonction essentielle d'un pilote d'E/S est de mettre à jour le mappage d'E/S. Cela signifie le mappage des données d'E/S du système de bus aux variables de l'application CEI (et vice versa).

Les données d'entrée/sortie sont mappées cycliquement par des opérations de copie et de conversion dans les deux sens depuis l'image mémoire interne du système de bus vers les variables CEI affectées aux adresses %I et %Q.

Pour le pilote d'E/S, il n'y a aucune différence interne si les noms symboliques ou l'accès "direct" aux adresses %I et %Q sont utilisés pour ce mappage d'E/S. Pour la maintenabilité de l'application, il est recommandé de toujours utiliser des noms de variables descriptifs (exemple : variable "TemperatureReactor" au lieu de l'accès "%IW117").

. La mise à jour du mappage E/S peut être définie avec Toujours mettre à jour les variables (globalement dans le Paramètres API ou individuellement pour chaque appareil dans la boîte de dialogue de mappage d'E/S) :
  • Désactivé:

    Seules les données d'E/S utilisées dans l'application sont mappées.

    Cela peut améliorer les performances en évitant les opérations de copie, mais peut entraîner une confusion si les données d'E/S dans la boîte de dialogue de mappage d'E/S ne sont pas mises à jour (les valeurs sont alors grisées). Ce paramètre est recommandé pour une application dont le développement est terminé.

  • Activé 1 :

    Toutes les données sont mises à jour.

  • Activé 2 :

    Important

    La disponibilité de cette option dépend de la description de l'appareil.

    Attention : Pour une utilisation productive dans des cas particuliers uniquement.

    Par conséquent, des données d'E/S incohérentes peuvent se produire, car la tâche de cycle de bus lit/écrit ces données alors que le code d'application les utilise dans d'autres tâches.

Pour plus d'informations, consultez : Onglet : <nom de l'appareil> Mappage d'E/S

Cohérence des données d'E/S

Le système de programmation permet à l'application IEC d'utiliser plusieurs tâches exécutées en parallèle (pour la visualisation, les bus de terrain ou d'autres POU). Le code d'application peut accéder aux données d'E/S à partir du contexte de ces tâches via les variables CEI mappées. En accédant aux mêmes données à partir de différentes tâches, des données incohérentes ou corrompues pourraient se produire (par exemple, en raison d'un accès en écriture interrompu).

Le pilote d'E/S assure la cohérence des données en fournissant à chaque tâche exécutant un cycle de tâche un mappage cohérent – un instantané, pour ainsi dire – de toutes les données d'E/S utilisées.

Ainsi, un code comme dans l'exemple suivant ne peut pas poser de problèmes : (Note "DIV by ZERO")

IF(inputData <> 0) THEN              // inputData is mapped to %I
    x := y / inputData;              // This will never result in DIV_BY_ZERO Exception
END_IF                               // inputData is not updated by bus cycle during execution of POU

Important

Avec le Toujours mettre à jour les variables option définie sur Activé 2 – toujours dans la tâche de cycle de bus, ce mécanisme est ignoré. Par conséquent, le code d'application doit en tenir compte.

Prestations de service

En plus des fonctionnalités de base, certains pilotes d'E/S fournissent des services pouvant être appelés depuis l'IDE, tels que la fonction d'analyse de périphérique ou la définition d'adresses de périphérique.

Recommandations générales

. Réglages:
  • Paramètres API: _cds_icon_checked.png Mises à jour des E/S à l'arrêt :

    Le cycle de bus continue même lorsque l'application est arrêtée, par exemple lorsque l'application est sur un point d'arrêt de débogage. De cette manière, la communication avec les appareils de terrain est maintenue et peut être poursuivie immédiatement sans interruption.

  • Paramètres API: Toujours mettre à jour les variables est réglé sur Activé 1 - utiliser la tâche de cycle de bus si elle n'est utilisée dans aucune tâche:

    Lors du développement de l'application, il est utile de voir les valeurs de toutes les données d'E/S.

. Paramétrage de la tâche :
  • En particulier pour les systèmes de bus de terrain critiques en temps réel tels que Profinet, EtherCAT ou CAN, qui dépendent du maintien d'une horloge d'émission/réception exacte, il est recommandé d'utiliser une tâche de cycle de bus séparée avec une priorité élevée. Pour les tâches moins critiques en temps réel (par exemple, la visualisation), une priorité nettement inférieure doit être sélectionnée par rapport à la tâche de cycle de bus.

  • Afin d'obtenir un débit d'E/S maximal avec le moins de décalage possible, des POU séparées peuvent être exécutées dans la tâche de bus du système de bus de terrain. Cependant, ceux-ci doivent alors répondre aux exigences de temps réel : par exemple, aucune fonction d'accès aux fichiers ou de blocage de socket ne peut être exécutée, mais par exemple uniquement le calcul des données de sortie.

Pilotes et tâches d'E/S multiples (dépannage)

Si un accès cohérent aux données d'E/S à partir de plusieurs tâches et éventuellement à travers plusieurs instances de pilote d'E/S doit être synchronisé, des interférences réciproques indésirables entre le bus et la tâche d'application peuvent se produire dans certaines circonstances.

C'est le cas, par exemple, lorsque la charge générale du système est élevée ou lorsque les données d'E/S du système de bus de terrain critique en temps réel sont utilisées avec les données d'E/S d'un système de bus local lent et bloquant dans la même tâche. .

En cas d'interférence inattendue de la communication, avec les bus de terrain particulièrement critiques en temps réel (EtherCAT, Profinet, CAN), la surveillance des tâches doit donc d'abord être examinée pour une très grande gigue ou des valeurs aberrantes dans le temps de cycle (valeur maximale par rapport à la moyenne évaluer). La liste des tâches fournit des informations détaillées sur l'utilisation des données d'E/S dans différentes tâches.

Il peut être possible d'éviter d'utiliser des données d'E/S de différents systèmes de bus dans une seule et même tâche ou de réduire le nombre de tâches d'E/S.

Pour plus d'informations, consultez : Onglet : Déploiement des tâches