作者 | 主题 |
---|---|
西门子Auto 官方工程师 经验值:2465 发帖数:132 精华帖:16 |
楼主 2014-10-23 13:25:27
主题:让CPU停下来,找到错误的程序 SIMATIC S7-300/400 CPU中的组织块 (OB) 是指CPU 的操作系统与用户程序之间的接口。发生特定的事件后CPU 的操作系统会调用相应的组织块,在OB中编写执行程序可以获取特定事件的信息。例如,如果一个模块具有诊断能力,并且已为它启用了诊断中断,那么当它检测出其诊断状态发生变化时,它将发送一个诊断中断请求到CPU,操作系统就会调用诊断中断组织块OB82。在OB82中编程读取局部变量可以知道故障模块的逻辑基址和四字节的诊断数据。但是如果CPU中没有下载特定事件发生所需调用的组织块,那么CPU将会停止,进入STOP模式。所以,很多工程技术人员在项目刚开始编程时,就会先创建一些特定事件对应空的组织块直接下载到CPU中,这样就可以避免发生特定事件时由于CPU中没有相应OB而导致CPU转为STOP模式。这样做的好处是避免了CPU停止,但是对于查找错误的原因也会带来一定的麻烦。下面我们就举一个技术支持热线上经常遇到的现象: 上面是一个技术热线上经常发生的场景,技术支持工程师利用CPU缺少相应事件对应的OB会导致停机的性质,利用诊断缓冲区帮助客户找到问题的原因。下面,通过一个简单的例子,有图有真相说明。 下载后,CPU的SF指示灯亮,由于有OB121所以可以正常运行,诊断缓冲区中充满了发生区域长度访问错误的信息,见图3。
|