Skip to main content

Utilisation d'appels d'API pour déclencher des événements par programmation

Les événements sont des alarmes de type observation Événement (API). Ils sont déclenchés par programmation dans le code de l'application à l'aide des fonctionnalités du AlarmManager bibliothèque et IAR Arm Handler 7 interface.

Les événements sont définis directement dans un groupe d'alarmes ou dans un modèle de groupe d'alarmes en tant qu'instance d'alarme.

Pour plus d'informations, voir Exemple : AlarmManager

Alarmant lié à un événement

Définition de l'alarme d'événement dans le groupe d'alarmes

  1. Dans Alarm Configuration, définissez un groupe d'alarmes.

  2. Dans un groupe d'alarmes, définissez une alarme du type d'observation Événement (API).

  3. Dans le Classe colonne, sélectionnez par exemple la classe d'alarme Error et spécifiez le message d'alarme souhaité sous Message.

L'alarme ID_0, qui est déclenchée via l'API lors d'un événement, est définie.

Vous pouvez définir un tel événement avec n'importe quelle classe d'alarme. Les détails ne sont pas requis et aucune condition d'alarme n'est donnée. L'événement est déclenché par un appel d'API.

Astuce

Vous pouvez également définir un événement dans un modèle de groupe d'alarmes.

Implémentation d'un appel d'API

Un événement est déclenché dans le code par l'appel d'API de l'instance FB de la bibliothèque RaiseEvent, avec un identifiant d'alarme transmis. Chaque alarme possède un identifiant unique. Elle peut être utilisée comme variable dans le code et sert donc de variable de transfert.

Plus précisément, la variable AlarmID est une énumération suivant ce schéma :

Alm_<name of alarm group>_ IDs.ID_<configured ID>

Procédure. Étape par étape
  1. Placez le curseur à la position du programme où l’appel du bloc de fonctions doit avoir lieu.

  2. Entrez « »AlarmManager« suivi d'un point.

  3. Sélectionner AlarmGlobals et entrez un point.

    Une fenêtre s'ouvre contenant la liste de tous les éléments insérables (fonction « Lister les composants »).

    _cds_img_autocomplete_alarms.png
  4. De la même manière, insérez les éléments g_AlarmHandler et RaiseEvent.

    Vous obtenez la ligne suivante : Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent.

  5. Définissez maintenant les variables de transfert AlarmGroup_ID et Alarm_IDPour ce faire, entrez une parenthèse ouvrante.

    Une info-bulle apparaît, affichant des informations sur les variables de transfert

  6. Appuyez sur F2 clé.

    L'assistant de saisie s'ouvre.

  7. Sur le Catégories onglet (_3_r.png), sélectionnez la catégorie Variables (_4_r.png).

    Assistant de saisie

    _cds_img_input_assistant_alarms.png
  8. Sélectionnez la variable d'identification du groupe d'alarmes souhaitée (_1_r.png).

    La variable est appliquée dans la ligne de programme.

  9. Entrez une virgule et utilisez l'assistant de saisie pour insérer la variable d'identification d'alarme souhaitée (_2_r.png). Entrez une parenthèse fermante et un point-virgule

    Vous obtenez la ligne de programme suivante :

    Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent(Alm_AlarmConfiguration_Alarmgroup_IDs.ID_AlarmGroup1, Alm_AlarmGroup1_Alarm_IDs.ID_0);

    Ce code déclenche l'alarme ID_0 dans le groupe d'alarme AlarmGroup1.

Déclencher un événement via une instance d'alarme

Ceci est particulièrement pertinent pour les développeurs de bibliothèques.

Important

Si vous observez la variable d'un type personnalisé (bloc fonctionnel ou structure) et que vous souhaitez définir un événement pour ce POU, vous devez de préférence le faire dans un modèle de groupe d'alarmes.

Le fait que le POU et le modèle de groupe d'alarmes puissent faire partie d'une bibliothèque de développement constitue un avantage.

Définition d'une alarme avec Événement (API) type

  1. Dans votre application, créez le Modèle de groupe d'alarmes nommé AGT_0.

  2. Dans un modèle de groupe d'alarmes, définissez une alarme du type d'observation Événement (API).

  3. Dans le Classe colonne, sélectionnez la classe d'alarme Error et spécifiez le message d'alarme souhaité sous Message.

L'alarme ID_0, qui doit être déclenchée via l'API lors d'un événement, est définie.

Ce type d'alarme peut être défini à l'aide d'une classe d'alarme et d'une méthode d'accusé de réception spécifiées dans la zone de liste. Les détails ne sont pas obligatoires.

Implémentation d'un appel d'API

Un événement d'alarme d'instance est déclenché par l'appel d'API de la bibliothèque FB RaiseEventAlarmInstance ou bien par RaiseEventAlarmInstanceByName.

Procédure. Étape par étape
  1. Mettre en œuvre le FB_MyAlarm bloc de fonctions avec METH_RaiseEvent méthode.

    1. Sélectionnez le nœud de l'application et cliquez sur Ajouter un objetPOU commande.

    2. Configurez le POU comme suit : nom FB_MyAlarm, tapez Bloc fonctionnel, langage de mise en œuvre ST.

    3. Déclarez les variables d'entrée de la fonction.

      Déclaration :

      FUNCTION_BLOCK FB_MyAlarm
      VAR_INPUT
          xCondition : BOOL;
      END_VAR
      VAR_OUTPUT
      END_VAR
      VAR
      END_VAR
    4. Sélectionnez le POU et ajoutez le METH_RaiseEvent méthode.

    5. Ouvrez l'éditeur ST du METH_RaiseEvent méthode et programme l'appel de bibliothèque.

      Astuce

      Laissez l'assistant de saisie (F2) vous y aideront.

      Ce code active l'alarme ID_0 à partir du modèle de groupe d'alarmes AGT_0.

      METHOD RaiseEvent : BOOL
      VAR_INPUT
      END_VAR
      Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstance(THIS, Alm_AGT_0_Alarm_IDs.ID_0);
  2. Instanciez le bloc fonctionnel dans le modèle de groupe d'alarmes.

    1. Ouvrez l'éditeur de AGT_0 et cliquez sur le bouton représentant une ellipse verticale dans le Type de définition de l'alarme rangée.

      L'assistant de saisie s'ouvre.

    2. En dessous Application, sélectionnez le FB_MyAlarm bloc fonctionnel.

    La définition de l'alarme est instanciée.

  3. Implémentez l'appel d'API dans le code IEC.

    Déclaration

    PROGRAM PLC_PRG
    VAR
        // Alarm Instances
        myInst : FB_MyAlarm;
        myInst2 : FB_MyAlarm;
    END_VAR

    Mise en œuvre

    Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstance(ADR(myInst), Alm_AGT_0_Alarm_IDs.ID_0); 
    Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstanceByName(ADR(myInst2), Alm_AGT_0_Alarm_IDs.ID_0, 'AGT_0');