为什么在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 块都会被重置为装载值。
为什么在CPU停止再启动后,S7-300 通信进程会发生偶发错误
图. 01 具有“非保持”属性的 DB 块仍然会被分配占用主存储区,但是不再占用保持存储区。 另外一种可行的方式是根据每次的情况在重启 OB 中用初始值覆盖背景 DB。 注意 涉及到的模块包含以下 S7-300 CP:
总线系统
| 名称 | 订货号 | 工业以太网
| CP343-1 | 6GK7343-1EX11-0XE0 | 工业以太网 | CP343-1 | 6GK7343-1EX20-0XE0 | 工业以太网 | CP343-1 | 6GK7343-1EX21-0XE0 | 工业以太网 | CP343-1 | 6GK7343-1EX30-0XE0 | 工业以太网 | CP343-1 IT | 6GK7343-1GX11-0XE0 | 工业以太网 | CP343-1 IT | 6GK7343-1GX20-0XE0 | 工业以太网 | CP343-1 Advanced | 6GK7343-1GX21-0XE0 | 工业以太网 | CP343-1 Advanced | 6GK7343-1GX30-0XE0 | 工业以太网 | CP343-1 Advanced (Security) | 6GK7343-1GX31-0XE0 | PROFIBUS | CP342-5 | 6GK7342-5DA02-0XE0 | PROFIBUS | CP343-5 | 6GK7342-5DA03-0XE0 | PROFIBUS | CP342-5 FO | 6GK7342-5DF00-0XE0
|
|