1.诊断错误中断组织块OB82
STEP 7系统中装有OB82组织块,该组织块用于检测某些模块有检测和报告诊断错误的功能。如果激活了模块的诊断功能,在检测到诊断错误事件时,CPU将会调用OB82。只有OB82支持诊断错误事件。
下列情况将调用OB82:有诊断功能的模块没有用户电源、输入信号超过模拟量模块的测量范围(上溢出和下溢出)、AO模块输出电路断线和短路故障。
2.OB82组织块实验
【例5-15】OB82组织块实验,观察OB82的调用及运行情况。
1)打开STEP 7 Basic的项目视图,生成一个名为“诊断错误中断”的新项目并双击项目树中的“添加新设备”,添加一个新设备,CPU的型号为CPU 1214C。
2)将硬件目录中的AO信号板拖放到CPU中。
3)将AO信号板安装到CPU上,选中设备视图中CPU上的AO信号板,打开巡视窗口中的“属性”选项卡,如图5-66所示,选中左边的“模拟输出”的通道0,设置该通道输出0~20mA的电流。用复选框启用断路诊断功能,此外默认的上溢出和下溢出诊断被激活(不可更改)。
图5-66 组态AO信号板的诊断功能
4)生成0882。打开项目视图中的文件夹“程序块”,双击其中的“添加新块”,单击打开的对话框中的“组织块”按钮(见图5-24),选中“Diagnostic error interrupt”(OB82默认的名称),生成诊断错误中断组织块OB82。双击打开OB82编写程序,在每次调用OB82时,用INC指令将MB30加1。
5)运行程序。将程序块和组态信息下载到CPU,CPU切换到RUN模式。用监视表监视AO信号板的输出QW80(见图5-67)和MB30,单击按钮,启动监控功能。在QW80的“修改值”列输入一个较大的值,单击按钮,将它写入AO通道。断开AO模块通道0的输出电路(见图2-2),CPU模块的ERROR LED和AO信号板的0号通道的红色LED闪烁,调用一次OB82。每调用一次OB82,MB30的值被加1。
接通AO模块的输出电路,故障消失,错误LED熄灭,又调用一次OB82。
图5-67 监视表
如果输出值较小,断开输出电路时PLC不会显示故障信息。
3.诊断缓冲区
双击PLC-1文件夹中的“在线和诊断”(见图5-61),在工作区打开在线与诊断视图。单击工具栏上的按钮,进入在线模式。选中图5-68左边窗口中的“诊断缓冲区”,右边窗口是诊断缓冲区。选中“Wire break”(断路)诊断事件,下面是事件的详细信息,“输入事件”表示事件刚发生,“离开事件”表示事件刚结束。
图5-68 诊断缓冲区(www.xing528.com)
缓冲区中的内容包含事件被记录时的日期和时间,以及对事件的描述。内容按事件出现的顺序排列,最上面的是最后发生的事件。PLC通电时诊断缓冲区最多保留50个条目,缓冲区装满后,新的条目将取代最老的条目。PLC断电后,只保留10个最后出现的事件的条目。将CPU复位到工厂设置将删除缓冲区中的条目。选中某个事件,诊断缓冲区下面是该事件的详细信息。
系统出现错误时,诊断事件可能非常快地连续不断地出现,将会使诊断缓冲区的显示以非常快的速率更新。单击“冻结显示”按钮,将会冻结显示,可以更好地查阅诊断事件详细的信息。单击后该按钮上的字符变为“取消冻结”,单击它可以解除冻结。
单击“关于事件的帮助”按钮,将看到选择的事件的详细信息和解决问题的方法。
单击“打开块”按钮,引起错误的指令所在的离线的块被打开,可以检查和修改块中的程序,然后将它下载到CPU。
单击“另存为”按钮,诊断缓冲区的内容被保存为文本文件,可以修改文件默认的名称。
4.用在线的设备视图诊断故障
在线时可以看到项目树中项目“诊断中断”和PLC1站点右边的故障符号(中间有“!”号的橙色小圆和红色的扳手,见图5-69),各程序块右边的绿色小圆表示离线与在线的程序块一致。双击PLC-1站点中的“设备配置”,打开PLC1的设备视图,CPU上也有故障符号。还可以看到下面的“设备概览”中PLC1和AO模块左边红色的故障符号。
图5-69 用在线的设备视图诊断故障
如果将AO模块的输出类型设为±10V的电压,可以设置短路诊断功能。OB82的启动信息提供了产生诊断错误事件的信息。可以在OB82中编程来读取启动信息,并采取相应的处理措施。表5-9中是OB82的启动信息。可以在OB82中编写程序,保存OB82的局部变量,供进一步分析时使用。
表5-9 OB82的启动信息
5.用DISAIRT与ENAIRT指令禁止与激活报警中断
使用DISAIRT(禁止报警中断,见图5-70),可以延迟处理优先级高于当前OB的中断OB。可以在一个OB中多次调用DISAIRT,DISAIRT的调用将由操作系统进行计数。这些调用中的每一个都将保持有效,直到调用ENAIRT指令取消延迟,或直到处理完当前OB为止。
DISAIRT的参数RETVAL是延迟的次数,该参数为0表示没有延迟。
通过调用ENAIRT(激活报警中断),可以启用以前调用DISAIRT禁用的更高优先级的中断处理。为了取消所有的延迟,执行ENAIRT的次数应等于调用DISAIRT的次数。ENAIRT的参数RETVAL是执行ENAIRT后,未取消的延迟次数,该参数为0表示所有的延迟被取消。
图5-70 DISAIRT与ENAIRT指令
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。