在 840Dpl/sl 等系统中,用户报警的编写方式各种各样,但是大部分还是以 DB2 接口形式展现出来,但是在以 DB2 接口展现的过程中,根据 PLC 编程的复杂难易程度而决定逆向查找的时间。
在现场中遇到如图1所示报警:

在图一中,主要需要关注 703163 和 703161 两个报警,703162 报警是由于上述两个报警被动触发的。
1. 确认起始接口地址
从报警的数值大小能看出来,报警的起始PLC 地址从 554 开始,这一点从图2也能看出来。


2. 确认报警号对应的接口信号
确定了其实地址后,需要计算一下报警对应的具体接口:
703161:DB2.DBX(554+31*8+7).5=DB2.DBX809.5
703163: DB2.DBX809.7
3. 通过 PLC 查找接口信号
在确定接口信号之后,通过图3所示的交叉索引在 PLC 中寻找。

打开 FC7711 程序块


从图中,能看出,报警接口地址在寄存器1中,而该值由DBW92传入。而temp3的值由参数in0传入,由OB1来调用,

综上所述,DB2 的接口由 DB700.DBW92 导入
由图1所示,在OB100中调用 FC7700 对DB700进行初始化,打开 FC7700,如图所示。

由图中可以看出,通过 OB100 调用FC7700,把参数 in5=31的值传入到DB700.DBW92,如图中的 network6.
再返回来看图4的 network17,按照逻辑往下进行,DBW92=31,DB7.DBW118=32,通过一系列比较和计算:31*8+554=802,右移3位,得出 AR1=802。所以,临时变量 LD0~LD4 的值会触发 DB2.DBD802 和 DB2.DBD806.
由于触发报警为DB2.DBX809.5和DB2.DBX809.7,因为这两个报警是由 L7.5和 L7.7 触发,即如图4临时变量 temp2 的数据组 temp[61] 和 temp[63]。

通过图中所示,临时变量 temp[61], temp[63],则是由 DB700 相关点位来决定,而该点位是状态位,而状态则是由从站来决定。
上述则是讲述一个报警处理的基本思路,不同的编程方法有不同的解决思路,需要根据实际情况来决定。