使用 API 调用以编程方式触发事件
注意
事件是观察类型的警报 事件 (API)。它们是使用应用程序的功能在应用程序代码中以编程方式触发的 AlarmManager 图书馆和 iararmHandler7 接口。
事件直接在警报组或警报组模板中定义为警报实例。
有关更多信息,请参阅 示例:警报管理器
用事件报警
使用定义警报 事件 (API) 键入
在
Alarm Configuration,设置一个 警报组。在警报组中,定义观察类型的警报 事件 (API)。
在 课堂 列,例如选择警报等级
Error并在下方指定所需的警报消息 留言。
警报 ID_0定义了通过 API 在事件上触发的。
您可以使用任何警报类别定义此类事件。不需要提供详细信息,也没有给出警报条件。该事件通过 API 调用触发。
提示
您还可以在警报组模板中定义事件。
实现 API 调用
代码中的事件由库 FB 实例的 API 调用触发 RaiseEvent,并传递了警报 ID。每个警报都有一个唯一的 ID。它可以在代码中用作变量,因此可以用作传递变量。
具体而言,AlarmID 变量是遵循以下方案的枚举:
Alm_<name of alarm group>_ IDs.ID_<configured ID>
将光标设置在应进行功能块调用的程序位置。
输入”
AlarmManager” 接着是一个句点。选择
AlarmGlobals并输入句号。打开一个窗口,其中包含所有可插入元素的列表(“列出组件”功能)。

以同样的方式,插入元素
g_AlarmHandler和RaiseEvent。您将得到以下行:
Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent。现在定义传输变量
AlarmGroup_ID和Alarm_ID。为此,请输入一个左括号。出现一个工具提示,显示有关传输变量的信息
按 F2 钥匙。
输入助手打开。
在 类别 制表符 (
)选择类别 变量 (
)。输入助手

选择所需的警报组 ID 变量 (
)。该变量被应用到程序行中。
输入逗号并使用输入助手插入所需的警报 ID 变量 (
)。输入右括号和分号。您将获得以下程序行:
Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent(Alm_AlarmConfiguration_Alarmgroup_IDs.ID_AlarmGroup1, Alm_AlarmGroup1_Alarm_IDs.ID_0);
此代码触发警报
ID_0在警报组中AlarmGroup1。
通过警报实例触发事件
这对于库开发人员尤其重要。
使用定义警报 事件 (API) 键入
在您的应用程序下,创建 警报组模板 命名
AGT_0。在警报组模板中,定义观察类型的警报 事件 (API)。
在 课堂 列,选择警报类别
Error并在下方指定所需的警报消息 留言。
警报 ID_0定义了应该通过API在事件上触发。
可以使用列表框中指定的警报类别和确认方法来定义此类警报。不需要提供详细信息。
实现 API 调用
实例警报的事件由库 FB 的 API 调用触发 RaiseEventAlarmInstance 或者换句话说 RaiseEventAlarmInstanceByName。
实现
FB_MyAlarm带有METH_RaiseEvent方法。选择应用程序节点,然后单击 添加对象 → POU 命令。
按如下方式配置 POU:名称
FB_MyAlarm,键入 功能块,实现语言 ST。声明函数输入变量。
声明:
FUNCTION_BLOCK FB_MyAlarm VAR_INPUT xCondition : BOOL; END_VAR VAR_OUTPUT END_VAR VAR END_VAR选择 POU 并添加
METH_RaiseEvent方法。打开的 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);
在警报组模板中实例化该功能块。
打开的编辑器
AGT_0然后单击中的垂直省略号按钮 警报定义的类型 行。输入助手打开。
在下面
Application,选择FB_MyAlarm功能块。
警报定义已实例化。
在 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');
