Skip to main content

Uso de llamadas a la API para activar eventos mediante programación

Los eventos son alarmas de tipo observación Evento (API). Se activan mediante programación en el código de la aplicación mediante la funcionalidad del AlarmManager biblioteca y el iArarmHandler 7 interfaz.

Los eventos se definen directamente en un grupo de alarmas o en una plantilla de grupo de alarmas como una instancia de alarma.

Para obtener más información, consulte Ejemplo: AlarmManager

Alarmante con un suceso

Definir una alarma con Evento (API) tipo

  1. En Alarm Configuration, establece un grupo de alarmas.

  2. En un grupo de alarmas, defina una alarma del tipo de observación Evento (API).

  3. En el Clase columna, seleccione, por ejemplo, la clase de alarma Error y especifique el mensaje de alarma deseado en Mensaje.

La alarma ID_0, que se activa mediante la API en un evento, está definido.

Puede definir un evento de este tipo con cualquier clase de alarma. No se requieren detalles y no se proporciona una condición de alarma. El evento se desencadena mediante una llamada a la API.

Sugerencia

También puede definir un evento en una plantilla de grupo de alarmas.

Implementación de una llamada a la API

La llamada a la API de la instancia de FB de la biblioteca desencadena un evento en el código RaiseEvent, con un identificador de alarma que se está transmitiendo. Cada alarma tiene un identificador único. Esto se puede usar como una variable en el código y, por lo tanto, sirve como una variable de transferencia.

En concreto, la variable alarmID es una enumeración que sigue este esquema:

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

procedimiento. Paso a paso
  1. Coloque el cursor en la posición del programa donde debe realizarse la llamada al bloque de función.

  2. Ingresa "AlarmManager«seguido de un punto.

  3. Seleccionar AlarmGlobals e introduzca un punto.

    Se abre una ventana que contiene una lista de todos los elementos insertables (función "Listar componentes").

    _cds_img_autocomplete_alarms.png
  4. De la misma manera, inserte los elementos g_AlarmHandler y RaiseEvent.

    Obtendrás la siguiente línea: Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent.

  5. Ahora defina las variables de transferencia AlarmGroup_ID y Alarm_IDPara ello, introduzca un paréntesis de apertura.

    Aparece una información sobre herramientas que muestra información sobre las variables de transferencia.

  6. Pulsa el F2 clave.

    Se abre el Asistente de entrada.

  7. En el Categorías pestaña (_3_r.png), seleccione la categoría Variables (_4_r.png).

    Asistente de entrada

    _cds_img_input_assistant_alarms.png
  8. Seleccione la variable de ID de grupo de alarmas deseada (_1_r.png).

    La variable se aplica en la línea del programa.

  9. Introduzca una coma y utilice el Asistente de entrada para insertar la variable de ID de alarma deseada (_2_r.png). Introduzca un paréntesis de cierre y un punto y coma

    Obtendrás la siguiente línea de programa:

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

    Este código activa la alarma ID_0 en el grupo de alarmas AlarmGroup1.

Activación de un evento a través de una instancia de alarma

Esto es particularmente relevante para los desarrolladores de bibliotecas.

Importante

Si observa la variable de un tipo personalizado (bloque funcional de estructura) y desea definir un evento para esta POU, es preferible hacerlo en un plantilla de grupo de alarmas.

Es una ventaja que tanto la POU como la plantilla de grupo de alarmas puedan formar parte de una biblioteca de desarrollo.

Definir una alarma con Evento (API) tipo

  1. En tu solicitud, crea el Plantilla de grupo de alarmas denominada AGT_0.

  2. En una plantilla de grupo de alarmas, defina una alarma del tipo de observación Evento (API).

  3. En el Clase columna, seleccione la clase de alarma Error y especifique el mensaje de alarma deseado en Mensaje.

La alarma ID_0, que debe activarse mediante la API en un evento, está definido.

Este tipo de alarma se puede definir con una clase de alarma y un método de confirmación especificados en el cuadro de lista. No se requieren detalles

Implementación de una llamada a la API

La llamada a la API de la biblioteca (FB) desencadena un evento de alarma de instancia. RaiseEventAlarmInstance o alternativamente mediante RaiseEventAlarmInstanceByName.

procedimiento. Paso a paso
  1. Implemente el FB_MyAlarm bloque de funciones con METH_RaiseEvent método.

    1. Seleccione el nodo de la aplicación y haga clic en Agregar objetoPOU comando.

    2. Configure la POU de la siguiente manera: nombre FB_MyAlarm, escriba Bloque de funciones, lenguaje de implementación ST.

    3. Declare las variables de entrada de la función.

      Declaración:

      FUNCTION_BLOCK FB_MyAlarm
      VAR_INPUT
          xCondition : BOOL;
      END_VAR
      VAR_OUTPUT
      END_VAR
      VAR
      END_VAR
    4. Seleccione la POU y añada la METH_RaiseEvent método.

    5. Abra el editor ST del METH_RaiseEvent método y programa la llamada a la biblioteca.

      Sugerencia

      Deje que el Asistente de entrada (F2) te ayudará con esto.

      Este código activa la alarma ID_0 de la plantilla de grupo de alarmas AGT_0.

      METHOD RaiseEvent : BOOL
      VAR_INPUT
      END_VAR
      Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstance(THIS, Alm_AGT_0_Alarm_IDs.ID_0);
  2. Cree una instancia del bloque de funciones en la plantilla del grupo de alarmas.

    1. Abre el editor de AGT_0 y haga clic en el botón de puntos suspensivos verticales del Escriba la definición de alarma fila.

      Se abre el Asistente de entrada.

    2. Bajo Application, seleccione el FB_MyAlarm bloque de funciones.

    Se crea una instancia de la definición de alarma.

  3. Implemente la llamada a la API en el código IEC.

    Declaración

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

    Implementación

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