恭喜,你发布的帖子
发布于 2017-07-05 10:09:44
9楼
相关问题,提供一下前人的解题思路,归纳和编写得都很好,我自己也解决了不少这类问题了,但还是感觉人家写得比我好,贴出来给楼主看看,以供参考:
现场遇到刚好这方面的问题了
我在程序里已经将相关的组织块都添加了,现场I/O模块有松动,CPU就停了,导致现场无法生产。并提示错误:stop caused by I/O management
为什么CPU会停呢
--------------------------------------------------------------------------------
此类错误不能被相应的OB8x所获取,更无法解释,所以对于此类错误即使加入相应的OB8x,也不能保证CPU不停机。
---------------------------------------------
那此类问题要如何让CPU不停机呢,并能获取到呢
谈这个问题首先我们需要考虑一下,这个错误“stop caused by I/O management”是如何产生的?有以下几种可能:
1,模块松动*例如ET200S的IM151-8CPU的模块去掉大于2个。
2,模块不支持热插拔*例如ET200M(不带有源底板)不支持热插拔,ET200S的IM151-8CPU的终端模块去除。
3,背板总线故障*例如ET200S的端子模块故障。
4,电源跌落*例如同一电源即给CPU供电,又给DO模块供电。
5,其它。
以上错误,必须人为注意,例如ET200S规定最大只能热插拔一个模块,那么就不该插拔大于1个,所以此类错误需要人为注意。只有这样才能避免CPU停机,此时的CPU故障只能通过CPU的BUffer中读到,以下就是读到的信息。
Event 1 of 129: Event ID 16# 4548
STOP caused by I/O management
Previous operating mode: RUN
Requested operating mode: STOP (internal)
Internal error, Incoming event
当遇到这样问题时,查找相应的故障代码,查询帮助,可以看到帮助中大部分是安装操作正确与否等。
L #OB86_RACKS_FLTD //将受影响的从站地址存到MD1590
T MD 1590
A(
L #OB86_EV_CLASS //根据是否等于39或38判断是新事件,还是老事件,=39是新发生,=38是以发生过
L B#16#39
==I
)
A(
O(
L MB 1593 //判断从站地址是否=10--15,属于32配电室,如果是,则置位 M1594.0
L 10
==I
)
O(
L MB 1593
L 11
==I
)
O(
L MB 1593
L 12
==I
)
O(
L MB 1593
L 13
==I
)
O(
L MB 1593
L 14
==I
)
O(
L MB 1593
L 15
==I
)
)
S M 1594.0
A(
L #OB86_EV_CLASS //如果是过去事件,则复位
L B#16#38
==I
)
R M 1594.0
此程序放在OB86里面,同时须将OB86_RACKS_FLTD数据类型改为Dword
自己写的一小段OB86程序,DP诊断的,只要理解了各个参数什么意思,可以自己编写。
请填写推广理由:
分享
只看
楼主