您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400 PLC的诊断中断处理组织块(OB82)

来源:艾特贸易2017-06-05

简介如果模块具有诊断能力又使能了诊断中断,当它检测到错误时,它输出一个诊断中断请求给 CPU ,以及错误消失时,操作系统都会调用 OB82 。当一个诊断中断被触发时,有问题的模块自

    如果模块具有诊断能力又使能了诊断中断,当它检测到错误时,它输出一个诊断中断请求给CPU,以及错误消失时,操作系统都会调用OB82。当一个诊断中断被触发时,有问题的模块自动地在诊断中断OB的启动信息和诊断缓冲区中存入4个字节的诊断数据和模块的起始地址。可以用SFC39SFC42来禁用、延时或再使用诊断中断(OB82),表4-58描述了诊断中断OB82的临时变量。

    4-58    OB82的变量申明表

OB82的变量申明表

OB82的变量申明表

    在编写OB82的程序时,要从OB82的启动信息中获得与出现的错误有关的更确切的诊断信息。例如,其是哪一个通道出错,出现的是哪种错误。使用SFC51RDSYSST”也可以读出模块的诊断数据,用SFC52WR USMSG”可以将这些信息存入诊断缓冲区。

    现在通过结合模板的短线诊测应用和SFC51来说明诊断中断组织块OB82的使用方法。

    首先,在SIMATIC管理器中新建一个项目,插入一个300站。再进行硬件组态,在机架上插入CPU 314C-2DP和一块具有中断功能模拟量输入模块SM331,配置SM331模块的“输入(Inputs)”选项,选择0-1通道组为两线制电流(2DMU),其他通道组为电压,并注意模块的量程卡要与设置的相同。选中“启用(Enable)”框中的“诊断中断(DiagnosticInterrupt)”选项,选中“诊断(Diagnostics)”选项中的0-1通道组中的“组诊断(Group Diagnostics)”和“检查线路断开(with Check for Wire Break)”选项,如图4-129所示。

硬件组态

    4-129    硬件组态

    单击“确定”按钮,然后双击“CPU 314C-2DP”,选择“中断(Interrupts)”选项,可以看到CPU支持OB82,如图4-130所示。硬件组态完成后,保存编译,下载到CPU中。

    完成诊断程序。当在硬件组态中设定的诊断中断执行后,可以通过它的临时变量OB82_MDL_ADDR读出产生诊断中断的模块的逻辑地址。STEP 7不能时时监控程序的运行。

CPU中的“中断(Interrupts)”选项

    4-130    CPU中的“中断(Interrupts)”选项

    SIMATIC管理器中S7 Program (1)下插入一个STL Source文件STL Source (1),如图4-131所示。

 插入STL Source文件

    4-131    插入STL Source文件

    打开OB1,在“库( Libraries)”→“Standard Libraries”→“System Function Blocks”下找到SFC51RDSYSST DIAGNSTC”,按<F1>键,出现SFC51在线帮助信息,在帮助信息的最底部单击“Example formodule diagnostics with the SFC51”,然后单击“STL Source File”,选中全部STL Source源程序复制到STL Source (1)中,编译并保存。这是在Blocks中生成OB1OB82DB13SFC51

    打开OB82,对其中的程序做简单的修改,将1920行的程序复制到go:后面,如图4-132所示。再进行保存,下载到CPU中。

    下载完成后,将CPU上的模式选择开关切换到“RUN”状态,此时,CPU上的“RUN”灯和“SF”灯会亮,SM331模块上的“SF”灯也会亮。同时,查看CPU的诊断缓冲区可以获得相应的故障信息。

修改OB82中的程序

    4-132    修改OB82中的程序

    打开DB13数据块,在线监控,如图4-133所示。因为通道断线事件发生,所以诊断信息存储到COME数组中。

DB13中的数据变换

    4-133    DB13中的数据变换

    本例中COME数组字节的含义解释如下:

   COME[1]=B#16#D:表示通道错误,外部故障和模块问题。

   COME[2]=B#16#15:表示此段信息为模拟量模块的通道信息。

   COME[3]=B#16#0:表示CPU处于运行状态,无字节2中标示的故障信息。

   COME[4]=B#16#0:表示无字节3中标示的故障信息。

   COME[5]=B#16#71:表示模拟量输入。

   COME[6]=B#16#8:表示模块的每个通道有8个诊断位。

   COME[7]=B#16#8:表示模块的通道数。

   COME[8]=B#16#3:表示0通道错误和1通道错误,其他通道正常。

   COME[9]=B#16#10:表示0通道断线。

   COME[10]=B#16#10:表示1通道断线。

   COME[11]=B#16#0:表示2通道正常,其他通道与2通道相同。