• 沒有找到結果。

侧视图

7.5 连接冗余 I/O 的其它可能性

用户级冗余 I/O

如果不能使用系统支持的冗余 I/O 第 3.4 节 可能是由于冗余模板不包含在可用模板 的列表中 可以在用户级使用冗余 I/O

配置

以下为采用冗余 I/O 的配置 图 7-12

1. 带有单向集中式和/或分布式 I/O 的冗余系统

一个I/O 模板插入 CPU0 子系统 一个 I/O 模板插入 CPU1 子系统 2. 带有切换式I/O 的冗余配置

两个I/O 模板插入带有一条有源背板总线的两个 ET 200M 分布式 I/O 设备中

长沙工控帮教育科技有限公司整理

冗余单向I/O

冗余切换式I/O

图7-12 冗余单向和切换式 I/O

注意

如果使用冗余I/O 额外时间必须计入监视时间 参见第 6.3.2 节

冗余I/O 的硬件安装和配置

如果要使用冗余I/O 我们推荐您按以下方法进行 1. 按以下模式使用I/O

- 采用单向配置 每个子系统一个I/O 模板

- 采用切换式配置 两个I/O 模板插入两个分布式 ET 200M I/O 设备 2. 为I/O 接线使得两个子系统都可对其寻址

3. 将I/O 模板设置为不同的逻辑地址 注意

我们不推荐将输出模板的逻辑地址设置成与输入模板相同 然而 如果这样做了 则除了 逻辑地址外还必须在OB 122 中询问出故障的组的类型 输入或输出

在单一模式中用户程序必须为单通道 单向输出模板更新过程映象 例如 直接存取 如果使用子过程映象 用户程序必须在OB72 中 冗余返回 更新相应子过程映象 SFC 27 UPDAT-PO 如果不这样做 则在转换到冗余系统模式后 旧的值会被读出到热备CPU 的单通道 单向输出模板中去

长沙工控帮教育科技有限公司整理

用户程序中的冗余I/O

以下例子程序所示为两个冗余的数字量输入模板的使用情况

机架0 的模板 A 逻辑基地址为 8

机架1 的模板 B 逻辑基地址为 12

其中一个模板直接读入 OB1 假定它是模板 A 变量 BGA 值为真 如果不出现错误 数值读操作继续进行

如果发生 I/O 存取错误 则直接访问模板 B 读取的值 OB1 中的 二次尝试 如果 不发生错误 模板 B 的数值读入操作继续进行 如果这时再发生同样错误 两个模板当 前都失效 则以替代值继续工作

例子程序基于以下事实 即模板A 出现访问错误后 模板 B 代替模板 A 在 OB1 中首先被 处理 模板A 不会在 OB1 中再次被首先处理直到模板 B 发生访问错误

注意

变量BGA 和 PZF_BIT 在 OB1 和 OB122 之外也必须有效 变量 VERSUCH2 只用于 OB1

长沙工控帮教育科技有限公司整理

第二次尝试 = WRONG

有 首先读模板A? 无

读操作模板 A 访问模板B

今后不再先读模板A 今后再次先读模板A

I/O访问错误? 第二次尝试 = TRUE 第二次尝试 = TRUE I/O访问错误?

无 无

第二次尝试 第二次尝试

== TRUE? == TRUE?

无 无

有 有

使用模板A的值 采用替代值 使用模板B的值

图7-13 OB1 流程图

长沙工控帮教育科技有限公司整理

STL 实例

长沙工控帮教育科技有限公司整理