下面是与网络通信故障有关的中断组织块:
1.诊断中断组织块OB82
具有诊断功能并启用了诊断中断的模块检测到错误,以及错误消失时,产生诊断中断,CPU的操作系统自动调用诊断中断组织块OB82。
2.优先级错误中断组织块OB85
由于通信或组态的原因,模块不存在或有故障,刷新过程映像表时I/O访问出错,CPU将会调用OB85。S7-300和S7-400默认的设置分别是发生I/O访问错误时不调用OB85和每个扫描循环周期都要调用一次OB85。另一种可选的设置是错误刚发生和刚消失时分别调用一次OB85。
3.机架故障或分布式I/O的站故障中断(OB86)
如果扩展机架、DP主站系统或分布式I/O出现故障,CPU将在故障出现和消失时分别调用一次OB86。
4.I/O访问错误中断(OB122)
CPU如果用PI/PQ区的地址访问有故障的I/O模块、不存在的或有故障的DP从站,CPU将在每个扫描循环周期调用一次OB122。
出现硬件和网络故障时,如果没有生成和下载对应的组织块,CPU将切换到STOP状态。如果采用默认的设置,S7-300应生成和下载OB82、OB86和OB122;S7-400还应增加OB85。
即使没有在这些OB中编写任何程序,出现上述故障时,CPU也不会进入STOP模式。但是可能不易察觉到故障的出现和发生的频率,反而会给系统的安全带来威胁。
可以在上述OB中,用下面的程序记录故障出现的次数,并用人机界面显示。应设置一个将故障计数值清零的按钮。
L MW 10
+ 1
T MW 10
可以用下面的程序调用SFC 20,将OB86的局部变量保存到某个数据块的数组中。
CALL "BLKMOV"
SRCBLK :=P#L 0.0 BYTE 20
RET_VAL :=MW54
DSTBLK :=DB86.ARY
下图是DP从站出现故障时保存的OB86的局部数据。OB86的在线帮助给出了局部数据意义的详细解释。DBB0的16#39、16#38分别表示故障出现和消失。DBB1为#C3~C5时分别表示DP网络故障、DP从站故障和DP从站内部的故障。
http://blog.gkong.com/uploadfile4/20113288650397.jpg
在DP从站故障时,DBW10中的16#0103表示DP网络编号为1,从站的站地址为3。DBD12和DBD16是调用OB的日期和时间。
可以编写程序来分析局部数据,并用人机界面显示分析的结果。例如在某个DP从站出现故障时将画面上对应的指示灯点亮,在故障消失时将对应的指示灯关掉。
可以用类似的方法编写OB82中的程序。但是遗憾的是OB82的局部数据并不包含与诊断故障有关的全部信息,例如并不包含AO模块输出电路开路和短路的故障信息。