海川化工论坛-800F系统IO软冗余

发布时间 : 星期二 文章海川化工论坛-800F系统IO软冗余更新完毕开始阅读

Freelace 800F系统中通过S800标准I/O做软冗余

为了降低成本,在对IO冗余要求不高的地方,可以使用标准的S800非冗余IO模件,通过外部线路,并在程序中对IO通道的状态进行判断,以实现IO软冗余。本文给出AI810、AO810、DI810、DO810模件IO软冗余的外部硬件线路和CBF程序,为了方便用户使用,将软冗余程序做成自定义功能块。

一、 AI810(TU810)接4-20mA输入信号的IO软冗余 1. 硬件线路

对于4-20mA电流信号,先通过一个500Ω的精密电阻将电流信号转换为2-10V的电压信号,再并联接到冗余的两个AI通道。下面分别给出2线制、3线制和4线制仪表的连接图。

两个IO模件的外部供电端子L1+,L2+和L-接相同的24VDC电源。

模件1 模件2

24V+ 24V- 500Ω 24V- + - 图1. 2线制4-20mA仪表信号软冗余IO接线图

4-20mA 模件1 模件2

24V+ 24V- + 4-20mA 500Ω - 图2. 3线制4-20mA仪表信号软冗余IO接线图 模件1

模件2

24V- 24V+ 24V- 4-20mA 500Ω + - 24V- 图3. 4线制4-20mA仪表信号软冗余IO接线图 2. 硬件结构组态

在CBF中插入AI810模件(可以在同一个I/O站,也可以在不同的I/O站),设置需要冗余的通道的信号类型为2-10V电压:

拆分IO通道并连接变量,AI810输入地址的最后一个字节BYTE16为通道状态,有8个标志位,分别代表8个模拟量输入通道的状态,正常情况下为“0”,故障状态下为“1”。

3. 自定义AI软冗余功能块

插入一个用户自定义功能块类,命名为AIR,定义功能块的输入输出引脚: 名称 ST1 ST2 IN1 IN2 AI EC 数据类型 BOOL BOOL INT INT INT INT 存储类型 IN IN IN IN OUT OUT 说明 模件1的IO通道状态 模件2的IO通道状态 模件1的IO通道输入值 模件2的IO通道输入值 冗余IO输入过程数据取值 故障代码(0-无故障,1-模件1通道故障,2-模件2通道故障,3-两个模件通道均有故障)

编写自定义功能开程序代码:

首先通过一个“打包BOOL到BYTE”二进制数据转换函数PBOBY,将两个I/O通道

的状态位ST1、ST2打包到一个BYTE中,再通过两个数据类型转换函数,将其转换为值为0-3的一个整型数。将该整型数加1,作为多路选择器MUX的选择条件和功能块的故障代码。

两个模拟量输入IN1连接到多路选择器的第1个和第3个被选引脚,IN2连接到MUX的第2个被选引脚,由EC所对应的选择条件来选择其中的一个输出。

缺省情况下,模件1为主模件,模件2为Backup模件。当模件1正常,ST1状态为0,多路选择器MUX的选择条件为1或3,过程数据AI取模件1的IO通道输入值IN1,当模件1故障,ST1状态为1,这时如果模件2正常(ST2=0),MUX的选择条件为2,过程数据AI取模件2的IO通道输入值IN2,如果这时模件2也处于故障状态(ST2=1),MUX的选择条件为4,过程数据AI去值为整型数“0”。

表2 用户功能块的输入输出如下表所示

通道1状态 ST1 0 1 0 1 通道2状态 ST2 0 0 1 1 过程数据 AI AI=IN1 AI=IN2 AI=IN1 AI=0 故障代码 EC 1 2 3 4

4. AI软冗余用户程序

在用户任务列表中插入一个周期短,优先级高的用户任务(本例中任务周期为50ms,优

先级为58),在该任务下调用自定义功能块,编写AI软冗余的FBD程序。

先用两个解包Byte到Bool的二进制数据转换功能块(UPBYBO)将两个模块的状态字节拆成每个通道的状态位,再调用自定义功能块(AIR),连接互为冗余的两个AI通道的变量AI1_CH1,AI2_CH1以及相应的状态标志位AI1_ST1,AI2_ST1。功能块的输出连接的变量AIR1_AI即冗余AI模件两个通道的过程数据取值。

联系合同范文客服:xxxxx#qq.com(#替换为@)