quote:以下是引用VOLLMER在2012-11-04 20:50:33的发言:quote:以下是引用Automann在2012-11-01 19:16:49的发言:quote:以下是引用VOLLMER在2012-10-31 18:05:49的发言:quote:以下是引用Automann在2012-10-23 10:51:05的发言:
如果扩展机架、DP主站系统或分布式I/O由于掉电、总线导线断开、I/O系统的故障,或者某些其他原因引起的故障,CPU的操作系统将调用OB86。故障出现和消失时将分别调用一次OB86。
请问automann老师,如何根据cpu消息进一步区分上述故障源?
可以根据OB86的局部变量来判断故障。
选中管理器中的OB86,按F1键,打开OB86的在线帮助,可以看到它的局部变量的意义。在OB86的程序中首先根据OB86_FLT_ID(错误代码)判断是哪一类故障,OB86_MDL_ADDR是与故障类型有关的扩展机架的接口模块、DP主站、IO控制器的逻辑基地址,OB86_Z23包含有关故障的细节的信息。局部变量的第一个字节可判断故障产生或消失。根据这些就可以编写出诊断程序。
谢谢automann老师,谢谢n侠的帮助。
目前作为权宜之计,我已经针对6号站的闪断故障(100ms左右)写了一段延时进入stop状态的程序,目前效果尚好。:
ob86中,判断6号站闪断的进入事件、离开事件,对某内存位进行set reset
在ob1中,用该内存位进行200ms定时,定时时间到,再触发stp块。
从cpu日志可以看出,通过这种滤波,每班次都出现五六次未导致停机的闪断。当然,从根源进行处理的工作正在继续,包括更规范地接地、屏蔽等电势链接以及将dp电缆更换为光纤。
实际系统中,有可能出现几个DP从站同时出现故障,或DP主站系统(网络)出现故障的情况。前一种情况将会先后对每个从站调用OB86。编程时应考虑这些问题。