读取报警 ID


  • 创建标准项目并选择 CODESYS Control Win V3 作为设备。
  • 通过网络扫描连接目标系统。

图1

  • 在设备树中插入报警配置。
  • 这里会自动创建 Error、Info 和 Warning 报警类,以及 AlarmStorage 对象。 此外,还创建了一个 AlarmManagerTask 。

图2

创建全局变量列表 GVL,定义变量 g_sAlarmID 。

图3

  • 创建一个名为 FB_AlarmNotifiable 的新 FB 并实现接口 AlarmManager.IAlarmNotifiable。

图4

Execute 方法是 FB 自动创建的方法:

图5

  • 修改 Execute 方法如下:

声明


//{warning 'add method implementation '}
(* Executes the action.*)
METHOD Execute
VAR_INPUT
    (* The currently processed alarm state transition. This will be
 evaluated in order to determine, whether the action has to be
 executed or not*)
    eCurrTransition    : ALARMMANAGER.AlarmStateTransition;
    (* The alarm, for which the action has to be performed*)
    itfAlarm    : ALARMMANAGER.IAlarm;
    (* An optional pointer to a structure variable containing
 additional parameter*)
    pbyAdditionalData    : POINTER TO BYTE;
END_VAR
VAR
    itfAlarmGroup : ALARMMANAGER.IAlarmGroup;
END_VAR

实现

itfAlarmGroup := itfAlarm.GetAlarmGroup();
GVL.g_sAlarmID := itfAlarmGroup.GetStringID(itfAlarm.GetID());

  • 修改 PLC_PRG 如下:

声明

VAR
    xAlarm              :    BOOL;
    fbAlarmNotifiable   : FB_AlarmNotifiable;
END_VAR

实现

// no implementation

  • 在 Alarm configuration 中插入一个新的 alarm group, 配置一个 alarm 如下:

图6

为了在报警时也调用 fbAlarmNotifiable 实例,仍然必须通知 Error 报警类。

图7

  • 将项目加载到控制器并启动它。在 PLC_PRG 中将 xAlarm 变量 设置 xAlarm 为 TRUE。现在全局变量 GVL.g_sAlarmID 将传递在警报配置中设置的 MyAlarmId 。

图8