发布于 2011-05-13 22:17:58
57楼
51楼的问题就是典型的中断引起的,我也是在尝试的使用中断编程来解决问题,最后发现只用下载一个OB82 的空模块就好了,查看资料OB82的功能:如果模块具有诊断能力又使能了诊断中断,当它检测到故障时,它输出一个
诊断中断请求给CPU(到来和离去事件)。于是操作系统调用OB82。OB82 的局部变量中含有故障模板四个BYTE 的诊断数据(见下表)。如果OB82 未编
程,CPU 变为STOP 方式。您可以用SFC39 至42 来禁止或延时并再使能诊断
中断OB。
我实际的情况是当DP总线的227掉线之后,315-2dp仅仅只是提示,但是CPU不会停止,我调用的是OB122来处理300无法找到数据交换区的错误。当227恢复上线之后,227对应的地址2047上线,在缓冲区中造成数据错误,但是没有OB82来接收这个错误导致300CPU停止运行。
虽然只是通过简单的下载一些空的OB模块,但是这些问题就能够解决,还是挺有效果的。至于如何在中断模块中处理这些错误,是我下一步要继续学习的