您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400 PLC的诊断中断处理组织块(OB82)
来源:艾特贸易2017-06-05
简介如果模块具有诊断能力又使能了诊断中断,当它检测到错误时,它输出一个诊断中断请求给 CPU ,以及错误消失时,操作系统都会调用 OB82 。当一个诊断中断被触发时,有问题的模块自
如果模块具有诊断能力又使能了诊断中断,当它检测到错误时,它输出一个诊断中断请求给CPU,以及错误消失时,操作系统都会调用OB82。当一个诊断中断被触发时,有问题的模块自动地在诊断中断OB的启动信息和诊断缓冲区中存入4个字节的诊断数据和模块的起始地址。可以用SFC39~SFC42来禁用、延时或再使用诊断中断(OB82),表4-58描述了诊断中断OB82的临时变量。
表4-58 OB82的变量申明表
在编写OB82的程序时,要从OB82的启动信息中获得与出现的错误有关的更确切的诊断信息。例如,其是哪一个通道出错,出现的是哪种错误。使用SFC51“RDSYSST”也可以读出模块的诊断数据,用SFC52“WR 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不能时时监控程序的运行。
图4-130 CPU中的“中断(Interrupts)”选项
在SIMATIC管理器中S7 Program (1)下插入一个STL Source文件STL Source (1),如图4-131所示。
图4-131 插入STL Source文件
打开OB1,在“库( Libraries)”→“Standard Libraries”→“System Function Blocks”下找到SFC51“RDSYSST DIAGNSTC”,按<F1>键,出现SFC51在线帮助信息,在帮助信息的最底部单击“Example formodule diagnostics with the SFC51”,然后单击“STL Source File”,选中全部STL Source源程序复制到STL Source (1)中,编译并保存。这是在Blocks中生成OB1、OB82、DB13和SFC51。
打开OB82,对其中的程序做简单的修改,将19和20行的程序复制到go:后面,如图4-132所示。再进行保存,下载到CPU中。
下载完成后,将CPU上的模式选择开关切换到“RUN”状态,此时,CPU上的“RUN”灯和“SF”灯会亮,SM331模块上的“SF”灯也会亮。同时,查看CPU的诊断缓冲区可以获得相应的故障信息。
图4-132 修改OB82中的程序
打开DB13数据块,在线监控,如图4-133所示。因为通道断线事件发生,所以诊断信息存储到COME数组中。
图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通道相同。
点击排行
