如何使用中断组织块OB82对系统进行故障诊断?
设备在运行过程中不可避免的会发生一些故障(比如外围传感器的断线或者短路),设备维护人员希望在故障发生后,能快速的找到故障的原因,以便最快的采取措施进行处理。西门子S7-300/400系列PLC的CPU内部有诊断缓冲区,通过在线读取缓冲区的数据可以获取故障信息,但是这种方法需要维修人员拿着笔记本电脑到现场(也可以远程)连接到CPU中进行在线读取,对故障的反应速度比较慢,也不直观。有没有一种方法能在故障发生后把故障源直接显示在现场的屏幕上,从而免去了再次连线的繁琐?今天这篇文章,我们以西门子ET200S的模拟量模块的传感器断线故障为例,介绍如何通过S7的诊断中断组织OB82来快速获得诊断信息。

要使用诊断功能,首先模块本身要支持诊断功能,其次需要在硬件组态上把诊断功能开启。比如使用ET200S的2AI 2/4WIRE HF模拟量模块,该模块支持断线诊断功能。通过勾选“Diagnostics:Wire Break(诊断:断线)”选项,可以开启通道0和通道1的断线诊断功能,如下图:

硬件组态开启诊断功能后,把组态信息下载到CPU中。
若在某个时刻通道0发生了断线故障,则AI模块会向CPU发出一个中断请求。CPU检测到中断请求后,会调用诊断中断组织块OB82进行处理。
若此时PLC的程序中没有OB82,则PLC会进入停机(STOP)状态。停机的是保证系统安全,防止意外的发生。
若编程人员下载了OB82组织块,但是里面没有任何处理中断的代码,那么PLC不会停机,而是会继续带故障运行。这种方法可以避免因为PLC停机造成的停线,但是并不推荐。因为断线可能产生的危害是未知的,PLC带故障运行存在很大的安全隐患。正确的做法是在OB82中对中断请求进行处理,获取中断地址,判断故障等级,以进行警告或者紧急停机。
OB82是PLC的操作系统和用户程序沟通的桥梁,它有很多的临时变量,如下图:

CPU在调用OB82的时候,会将相应的临时变量赋值。通过读取相应临时变量的值,就可以获取诊断信息。
接下来我们在OB82中写两段简单的代码,将故障发生时模块的地址和事件等级保存到一个全局数据块中。
首先,新建一个全局数据块,命名为DB82。在DB82中新建两个变量“Diagnostic_Address”和“Event_Class”,如下图:

然后在OB82中,加入两段代码分别对模块的地址和事件等级进行保存,如下图:

通过以上的代码,我们可以读取并保存诊断事件的等级及发生故障的模块的地址。可以在需要的时候把故障模块显示在触摸屏上,这样维修人员就可以直观的发现问题的所在,以便尽快处理。
OB82还支持很多诊断功能,比如外部低电压、通信故障、看门狗停止等等,可以根据实际需要读取或保存。
好了,关于S7-300/400的诊断中断组织块OB82就先介绍到这里
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03
