Skip to main content

使用 API 调用以编程方式触发事件

事件是观察类型的警报 事件 (API)。它们是使用应用程序的功能在应用程序代码中以编程方式触发的 AlarmManager 图书馆和 iararmHandler7 接口。

事件直接在警报组或警报组模板中定义为警报实例。

有关更多信息,请参阅 示例:警报管理器

用事件报警

使用定义警报 事件 (API) 键入

  1. Alarm Configuration,设置一个 警报组

  2. 在警报组中,定义观察类型的警报 事件 (API)

  3. 课堂 列,例如选择警报等级 Error 并在下方指定所需的警报消息 留言

警报 ID_0定义了通过 API 在事件上触发的。

您可以使用任何警报类别定义此类事件。不需要提供详细信息,也没有给出警报条件。该事件通过 API 调用触发。

提示

您还可以在警报组模板中定义事件。

实现 API 调用

代码中的事件由库 FB 实例的 API 调用触发 RaiseEvent,并传递了警报 ID。每个警报都有一个唯一的 ID。它可以在代码中用作变量,因此可以用作传递变量。

具体而言,AlarmID 变量是遵循以下方案的枚举:

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

过程. 一步一步
  1. 将光标设置在应进行功能块调用的程序位置。

  2. 输入”AlarmManager” 接着是一个句点。

  3. 选择 AlarmGlobals 并输入句号。

    打开一个窗口,其中包含所有可插入元素的列表(“列出组件”功能)。

    _cds_img_autocomplete_alarms.png
  4. 以同样的方式,插入元素 g_AlarmHandlerRaiseEvent

    您将得到以下行: Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent

  5. 现在定义传输变量 AlarmGroup_IDAlarm_ID。为此,请输入一个左括号。

    出现一个工具提示,显示有关传输变量的信息

  6. F2 钥匙。

    输入助手打开。

  7. 类别 制表符 (_3_r.png)选择类别 变量_4_r.png)。

    输入助手

    _cds_img_input_assistant_alarms.png
  8. 选择所需的警报组 ID 变量 (_1_r.png)。

    该变量被应用到程序行中。

  9. 输入逗号并使用输入助手插入所需的警报 ID 变量 (_2_r.png)。输入右括号和分号。

    您将获得以下程序行:

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

    此代码触发警报 ID_0 在警报组中 AlarmGroup1

通过警报实例触发事件

这对于库开发人员尤其重要。

重要

如果您观察到自定义类型的变量(结构的功能块),并且想要为此 POU 定义一个事件,则最好在 警报组模板

POU 和警报组模板都可以成为开发库的一部分是一个优势。

使用定义警报 事件 (API) 键入

  1. 在您的应用程序下,创建 警报组模板 命名 AGT_0

  2. 在警报组模板中,定义观察类型的警报 事件 (API)

  3. 课堂 列,选择警报类别 Error 并在下方指定所需的警报消息 留言

警报 ID_0定义了应该通过API在事件上触发。

可以使用列表框中指定的警报类别和确认方法来定义此类警报。不需要提供详细信息。

实现 API 调用

实例警报的事件由库 FB 的 API 调用触发 RaiseEventAlarmInstance 或者换句话说 RaiseEventAlarmInstanceByName

过程. 一步一步
  1. 实现 FB_MyAlarm 带有 METH_RaiseEvent 方法。

    1. 选择应用程序节点,然后单击 添加对象POU 命令。

    2. 按如下方式配置 POU:名称 FB_MyAlarm,键入 功能块,实现语言 ST

    3. 声明函数输入变量。

      声明:

      FUNCTION_BLOCK FB_MyAlarm
      VAR_INPUT
          xCondition : BOOL;
      END_VAR
      VAR_OUTPUT
      END_VAR
      VAR
      END_VAR
    4. 选择 POU 并添加 METH_RaiseEvent 方法。

    5. 打开的 ST 编辑器 METH_RaiseEvent 方法和编程库调用。

      提示

      让输入助手 (F2) 帮你解决这个问题。

      此代码激活警报 ID_0 来自警报组模板 AGT_0

      METHOD RaiseEvent : BOOL
      VAR_INPUT
      END_VAR
      Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstance(THIS, Alm_AGT_0_Alarm_IDs.ID_0);
  2. 在警报组模板中实例化该功能块。

    1. 打开的编辑器 AGT_0 然后单击中的垂直省略号按钮 警报定义的类型 行。

      输入助手打开。

    2. 在下面 Application,选择 FB_MyAlarm 功能块。

    警报定义已实例化。

  3. 在 IEC 代码中实现 API 调用。

    声明

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

    实施

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