您现在的位置是:首页 > PLC技术 > PLC技术
S7系列PLC的诊断中断处理组织块(OB82)
来源:艾特贸易2018-04-11
简介如果模块既有诊断能力又能使诊断中断,当它检测到错误时,会输出一个诊断中断请求给 CPU ;以及错误消失时,操作系统都会调用 OB82 。当一个诊断中断被触发时,有问题的模块自动
如果模块既有诊断能力又能使诊断中断,当它检测到错误时,会输出一个诊断中断请求给CPU;以及错误消失时,操作系统都会调用OB82。当一个诊断中断被触发时,有问题的模块自动地在诊断中断OB的启动信息和诊断缓冲区中存入4个字节的诊断数据和模块的起始地址。可以用SFC39~42来禁用、延时或再使用诊断中断(OB82)。表4-12是诊断中断OB82的变量声明表。
表4-12 OB82的变量声明表
在编写OB82的程序时,要从OB82的启动信息中获得与出现的错误有关的更确切的诊断信息,如是哪一个通道出错,出现的是哪种错误。使用SFC51“RDSYSST”也可以读出模块的诊断数据,用SFC52“WR_USMSG”可以将这些信息存入诊断缓冲区。
现在通过结合模块的短线诊测应用和SFC51来说明诊断中断组织块OB82的使用方法。首先,在SIMATIC管理器中新建一个项目,插入一个300站并进行硬件组态,在机架上插入CPU315 -2DP和一块具有中断功能模拟量输入模块SM331,配置SM331模块的“Inputs”选项,选择0-1通道组为2线制电流(2DMU),其他通道组为电压,并注意模块的量程卡要与设置的相同。选中“Enable”框中的“Diagnosticlnterrupt”选项,选中“Diagnostics”选项中的0-1通道组中的“GroupDiagnostics”和“withCheckforWireBreak”选项,如图4-9所示。
图4-9 硬件组态
单击OK,然后双击CPU315 -2DP,选择“Interrupts”选项,可以看到CPU支持OB82,如图4-10所示。硬件组态完成后,保存编译,下载到CPU中。然后完成诊断程序。OB82程序当在硬件组态中设定的诊断中断发生后执行,但OB82执行时可以通过它的临时变量OB82_MDL_ADDR读出产生诊断中断的模块的逻辑地址。STEP7不能实时监控程序的运行。
图4-10 CPU中的“Interrupts”选项
在SIMATIC管理器中S7Program(1)下插入一个STLSource文件STLSource(1),如图4-11所示。
图4-11 插入STLSource文件
打开OB1,在“Libraries”→“StandardLibraries”→“SystemFunctionBlocks”下找到SFC51“RDSYSSTDIAGNSTC”,按F1键,出现SFC51在线帮助信息,在帮助信息的底部单击“Exampleformodulediagnostic swiththeS FC51”,然后单击“STLSourceFile”,选中全部STL-Source源程序并复制到STLSource(1)中,编译保存,这时在Blocks中生成OB1、OB82、DB13和SFC51。
打开OB82,对其中的程序做简单的修改,将第19和第20行的程序复制到go:后面,如图4-12所示。再进行保存,下载到CPU中。
图4-12 OB82的程序修改
下载完成后,将CPU上的模式选择开关切换到“RUN”状态,此时,CPU上的“RUN”灯和“SF”灯会亮,SM331模块上的“SF”灯也会亮。同时,查看CPU的诊断缓冲区可以获得相应的故障信息。
打开DB13数据块,在线监控,如图4-13所示。因为通道断线是一通道事件,所以诊断信息存储到COME数组中。本例中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通道相同。
(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:)