工控编程吧
标题: 为什么在CPU停止再启动后,S7-300 通信进程会发生偶发错误 [打印本页]
作者: baikhgmv 时间: 2016-11-14 10:22
标题: 为什么在CPU停止再启动后,S7-300 通信进程会发生偶发错误
为什么在CPU停止再启动后,S7-300 通信进程会发生偶发错误
描述
S7 通信(PUT/GET、 USEND/URECV、BSEND/BRECV) 是需要实例(背景 DB 块)的功能块(FB)。
CPU 经过运行-停止-运行状态变换后将可能发生以下情况。
在 CPU S7 执行运行-停止 模式转换之前,已经开始的通信进程在此转换过程发生时并未完成。块的当前值/数据存储在背景 DB 中。执行完 停止-运行 模式转换后,背景 DB 保持当前值。虽然 DONE 位不是1(意味着上一个激活的进程并未完成),但 S7 通信会再次触发。然而,在背景 DB 中会仍然保存进程正在执行的信号。由于这种不正确的进程状态,块会终止一次进程,并且错误状态位为1(通信错误)。由于该次进程终止,通信任务的状态被重 置,因此进程的循环会成功继续。
补救方法
- 在应用程序中,参数 DONE, ERROR 和 STATUS 是由块的描述决定的(见在线帮助)。对于 BSEND 块也可以通过块现有的输入来执行重启。
- 从 CPU 315-2 PN/DP, CPU 317 起 (包括工艺模块)和许多现在的 CPU 都可以生成非保持的 DB 块。想实现这种效果需要 CPU 支持设置 DB 块的“保持”属性。具有“非保持”属性的 DB 块是不存储在这种 CPU (例如 CPU 317 V2.1)的保持存储区的,因此每次网络重启或者每次 CPU 从停止切换到运行 DB 块都会被重置为装载值。
(, 下载次数: 7)