Skip to main content

Utilizzo delle chiamate API per attivare gli eventi in modo programmatico

Gli eventi sono allarmi di tipo osservativo Evento (API). Vengono attivati a livello di programmazione nel codice dell'applicazione utilizzando la funzionalità di AlarmManager libreria e IAR ArmHandler 7 interfaccia.

Gli eventi sono definiti direttamente in un gruppo di allarmi o in un modello di gruppo di allarmi come istanza di allarme.

Per ulteriori informazioni, vedere Esempio: AlarmManager

Allarmante per un evento

Definizione di un allarme con Evento (API) tipo

  1. Nel Alarm Configuration, imposta un gruppo di allarme.

  2. Definire un allarme del tipo di osservazione Evento (API) nel gruppo di allarme.

  3. Nel Classe colonna, seleziona ad esempio la classe di allarme Error e specificare il messaggio di allarme desiderato in Messaggio.

L'allarme ID_0, che viene attivato tramite API su un evento, è definito.

È possibile definire tale evento con qualsiasi classe di allarme. I dettagli non sono richiesti e non viene fornita una condizione di allarme. L'evento viene attivato tramite una chiamata API

Suggerimento

È inoltre possibile definire un evento in un modello di gruppo di allarmi.

Implementazione di una chiamata API

Un evento viene attivato nel codice dalla chiamata API dell'istanza FB della libreria RaiseEvent, con il passaggio di un ID di allarme. Ogni allarme ha un ID univoco. Questa può essere utilizzata come variabile nel codice e quindi funge da variabile di trasferimento.

Nello specifico, la variabile alarmID è un'enumerazione che segue questo schema:

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

Procedura. Passo dopo passo
  1. Posizionare il cursore nella posizione del programma in cui deve avvenire la chiamata del blocco funzione.

  2. Inserisci "AlarmManager«seguito da un punto.

  3. Selezionare AlarmGlobals e inserisci un punto.

    Si apre una finestra contenente l'elenco di tutti gli elementi inseribili (funzione "Elenca componenti").

    _cds_img_autocomplete_alarms.png
  4. Allo stesso modo, inserisci gli elementi g_AlarmHandler E RaiseEvent.

    Si ottiene la seguente riga: Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent.

  5. Definiamo ora le variabili di trasferimento AlarmGroup_ID E Alarm_ID. Per fare ciò, inserisci una parentesi aperta.

    Viene visualizzato un suggerimento che mostra informazioni sulle variabili di trasferimento

  6. Premere il F2 chiave.

    Si apre l'Input Assistano.

  7. Sul Categorie scheda (_3_r.png), seleziona la categoria Variabili (_4_r.png).

    Assistente di input

    _cds_img_input_assistant_alarms.png
  8. Selezionare la variabile ID del gruppo di allarmi desiderata (_1_r.png).

    La variabile viene applicata nella riga del programma.

  9. Inserisci una virgola e usa l'Input Assistant per inserire la variabile ID di allarme desiderata (_2_r.png). Inserite una parentesi chiusa e un punto e virgola

    Si ottiene la seguente riga di programma:

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

    Questo codice attiva l'allarme ID_0 nel gruppo di allarme AlarmGroup1.

Attivazione di un evento tramite un'istanza di allarme

Ciò è particolarmente importante per gli sviluppatori di librerie.

Importante

Se osservi la variabile di tipo personalizzato (blocco funzione della struttura) e desideri definire un evento per questo POU, dovresti preferibilmente farlo in un modello di gruppo di allarmi.

È un vantaggio che sia il POU che il modello di gruppo di allarmi possano entrare a far parte di una libreria di sviluppo.

Definizione di un allarme con Evento (API) tipo

  1. Sotto la tua applicazione, crea Modello di gruppo di allarmi denominato AGT_0.

  2. In un modello di gruppo di allarmi, definisci un allarme del tipo di osservazione Evento (API).

  3. Nel Classe colonna, seleziona la classe di allarme Error e specificare il messaggio di allarme desiderato in Messaggio.

L'allarme ID_0, che deve essere attivato tramite API su un evento, è definito.

Questo tipo di allarme può essere definito con una classe di allarme e un metodo di riconoscimento specificati nella casella di riepilogo. I dettagli non sono obbligatori

Implementazione di una chiamata API

Un evento di allarme di istanza viene attivato dalla chiamata API della libreria FB RaiseEventAlarmInstance o in alternativa tramite RaiseEventAlarmInstanceByName.

Procedura. Passo dopo passo
  1. Implementa il FB_MyAlarm blocco funzionale con METH_RaiseEvent metodo.

    1. Seleziona il nodo dell'applicazione e fai clic su Aggiungi oggettoPOU comando.

    2. Configurare il POU come segue: nome FB_MyAlarm, digitare Blocco funzionale, linguaggio di implementazione ST.

    3. Dichiarare le variabili di input della funzione.

      Dichiarazione:

      FUNCTION_BLOCK FB_MyAlarm
      VAR_INPUT
          xCondition : BOOL;
      END_VAR
      VAR_OUTPUT
      END_VAR
      VAR
      END_VAR
    4. Seleziona il POU e aggiungi METH_RaiseEvent metodo.

    5. Aprire l'editor ST di METH_RaiseEvent metodo e programma la chiamata alla libreria.

      Suggerimento

      Lascia che l'Input Assistant (F2) ti aiutano in questo.

      Questo codice attiva l'allarme ID_0 dal modello del gruppo di allarmi AGT_0.

      METHOD RaiseEvent : BOOL
      VAR_INPUT
      END_VAR
      Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstance(THIS, Alm_AGT_0_Alarm_IDs.ID_0);
  2. Crea un'istanza del blocco funzione nel modello del gruppo di allarmi.

    1. Apri l'editor di AGT_0 e fate clic sul pulsante con i puntini di sospensione verticali nel Digita per la definizione dell'allarme riga.

      Si apre l'Input Assistant.

    2. Sotto Application, seleziona FB_MyAlarm blocco funzionale.

    La definizione dell'allarme viene istanziata.

  3. Implementa la chiamata API nel codice IEC.

    Dichiarazione

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

    Attuazione

    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');