CPU在识别到一个故障或编程错误时,将会调用对应的中断组织块(OB),应生成这些OB,通过在OB中编写的程序对故障进行处理。下面介绍与通信故障有关的几个主要的中断组织块。
1.DP从站产生的诊断中断(OB82)
具有诊断功能并启用了诊断中断的模块检测到错误,以及错误消失时,产生诊断中断,CPU的操作系统将自动调用处理诊断中断的组织块OB82。
模块通过产生诊断中断来报告事件,例如信号模块导线断开、I/O通道的短路或过载、模拟量模块的电源故障等。OB82的启动信息(20B局部变量)提供产生故障的模块是输入模块或输出模块、模块的地址和故障的种类。当DP主站的CPU从RUN模式切换到STOP模式时,智能从站将调用OB82。
通过在OB82中调用故障诊断的程序块(例如SFC13),可以判断在哪个通道发生了什么样的故障。
2.优先级错误中断(OB85)
以下情况将会触发优先级错误中断:
1)产生了一个中断事件,但是没有将对应的OB块下载到CPU(不包括OB81)。
2)操作系统访问模块时出错。
3)由于通信或组态的原因,模块不存在或有故障,刷新过程映像表时I/O访问出错。出现故障的DP从站的输入/输出值装入S7 CPU的过程映像表时,就可能出现上述情况。
访问出错的输入字节被复位和保持为“0”,直到故障消失。
在硬件组态时双击机架中的CPU,打开CPU的属性对话框。可以用“周期/时钟存储器”选项卡中的选择框设置I/O访问错误时调用OB85的方式(见图7-1)。
图7-1 设置调用OB85的方式
S7-300 CPU默认的选项是“无OB85调用”,在发生I/O访问错误时不调用OB85,也不会在诊断缓冲区中生成条目。如果S7-300采用默认的设置,不用生成和下载OB85。(www.xing528.com)
S7-400 CPU默认的选项是“每单个访问时”,在满足条件时,每个扫描循环周期都要调用一次OB85和在诊断缓冲区中生成一个条目,这样会增加扫描周期。建议选用“仅用于进入和离开的错误”,该选项只是在错误刚发生和刚消失时分别调用一次OB85。
S7-400的DP从站电源断电时,CPU不能访问该从站,刷新过程映像表时I/O访问出错,如果采用默认的设置,将在每个扫描循环周期调用一次OB85。
3.机架故障或分布式I/O的站故障中断(OB86)
如果扩展机架、DP主站系统或分布式I/O(DP从站或PROFINET IO设备)由于掉电、总线导线断开、I/O系统的故障,或者某些其他原因引起的故障,CPU的操作系统将调用组织块OB86。故障出现和消失时将分别调用一次OB86。可以在OB86中编程保存OB86的启动信息,确定是哪个机架或分布式设备有故障或通信中断。
4.I/O访问错误中断(OB122)
同步错误是与执行用户程序有关的错误,程序中如果有不正确的地址区、错误的编号或错误的地址,都会出现同步错误,操作系统将调用同步错误OB。OB122用于处理模块访问错误。
同步错误OB的优先级与检测到出错的块的优先级一致。因此OB121和OB122可以访问中断发生时的累加器和其他寄存器的内容。用户程序可以用它们来处理错误。
S7-300/400的外设输入区/外设输出区(PI/PQ区)用于直接读写I/O模块。I/Q区是CPU内的过程映像存储区。
CPU如果用PI/PQ地址访问有故障的I/O模块、不存在的或有故障的DP从站(例如从站断电),CPU的操作系统将在每个扫描周期调用一次OB122。
5.故障处理中断组织块的作用
DP从站出现故障时,如果S7-400没有生成和下载OB82、OB85、OB86和OB122,S7-300没有生成和下载OB82、OB86和OB122,CPU将切换到STOP状态。
为了防止网络通信的故障造成CPU和整个PROFIBUS主站系统停机,作为一个常规的措施,至少要生成和下载上述组织块。即使没有在这些OB中编写任何程序,在DP从站出现上述故障时,CPU也不会进入STOP模式。
需要注意的是,生成上述OB后,CPU虽然不再进入STOP模式,但是可能不易察觉这些危险状态,它们会被忽视。为了解决这一问题,在故障OB中,应编写记录、处理和显示故障的程序,例如记录中断的次数,保存OB的局部变量,调用读取诊断数据的SFC13等。以便在出现故障时,迅速地查明故障的原因和采取相应的措施。
通过中断组织块的局部变量提供的信息,可以获得故障的原因、出现故障的模块地址、模块的类型(输入模块或输出模块)、是故障出现还是故障消失等信息。CPU的模块信息对话框中的诊断缓冲区保留着CPU请求调用组织块的信息。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。