侧视图
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 实例