摘要
本文章为MpAlarmX的入门实践,报警功能是实际生产项目中必不可少的功能之一,贝加莱的MpAlarmX报警相对来说比较齐全,但是依然存在入门困难的问题,该文章可以避免读者遇到一些奇奇怪怪的坑,降低入门门槛。
文章系列目录
一、准备工作
1.1 新建项目
首先尝试建立一个新的工程项目,以便进行简易的报警测试。其中硬件组态可以任意配置,相对而言无关紧要。
1.2 加入MpAlarmX Libraries
点击LogicalView中的Libraries,选择ToolBox中的B&RLibraries,找到MpAlarmX点击Finish即可。
二、配置设置
2.1 MpAlarmXCore配置
在ConfigurationView的对应项目中找到mappServices文件夹,在ToolBox中加入MpAlarmXCore。
更改如下:
其中,MpLink相当于是这个文件的绑定信息,我们更改为 gAlarmXCoreLink。
Name更改为报警的简要信息,比如此处的The temperature is too high.
Code为报警数值码,
Severity为报警优先级。
Behavior这里选择持续报警Persistent Alarm。
点击保存
2.2 MpALarmXHistory配置
三、简易测试代码
这里测试代码使用梯形图完成,(原因是用C++或者C进行时,报错“ADR was not declared in this scope”,详情见 常见问题 章节)
3.1 加入LD Program
在LogicalView中,点击空白处,再在ToolBox中选择LDProgram拖入LogicalView。
点击Program下的Cyclic.Id,绘制如下的梯形图。
3.2 绘制告警梯形图
在0001的双竖线中点击,并且在右侧ToolBox中输入MpAlarmX,找到MpAlarmXCore添加:
其中MpAlarmXCore_0模块名自行输入,然后在变量表中定义即可,定义变量类型为MpAlarmXCore。
同理,点击回车或者上方工具栏的Insert Network都可以再添加一段内容,现在将另外几个部分梯形图按如下配置:
当然其中需要部分变量需要进行定义,如下所示:
3.3 告警仿真验证
点击开启仿真,然后点击编译和下载:
再开启激活仿真旁边的Monitor:
然后在LogicalView的Program处右击选择Open-Watch:、
在Watch文件中右键选择InsertVariable:
选择自己感兴趣的变量添加,比如添加这几个:
接下来,将通过仿真验证来解析一下这些告警函数是如何工作的:
当我们在Watch中将UserAlarm的值强制修改为1,可以发现在MpAlarmXCore_0中Active Alarms变为了1,同时PendingAlarms也变为了1:
当我们将UserAlarm的值再强制修改为0,可以发现Active Alarms变为了0,同时PendingAlarms依然为1,这是因为PendingAlarm的告警如果不被手动确认,将一直保持:
现在我们将Ack UserAlarm修改为1,发现PendingAlarm也变为了0:
出现以上现象即掌握了最基本的告警方法,接下来可以将UserAlarm使用其他变量替代进行自己的方案设计了。
四、常见问题
4.1 ADR操作符
在使用C++进行编程时,对于内置函数ADR使用时,会出现:
ADR was not declared in this scope 的报错信息