• 电话: 010-64734946  64734947   64738638
  • 传真: 010-64738090

当前位置:首页 >> 行业资讯

如何读取冗余控制器状态灯

信息来源:      发布时间:2011-12-21 10:03:43      点击次数:0

如果读取冗余控制器状态灯的状态?
回答:本文将简单介绍通过编程的方式如何读取冗余控制器的状态灯,并附录相关源代码。
控制器运行过程中,控制器内部的各种不同信息都被保存在 CPU 的内部存储器中,并根 据运行情况由控制器内部的操作系统实时进行更新。在冗余控制器中,这些内部信息也包含 了冗余控制器的状态灯信息。
在系统提供的系统功能 SFC 中,功能 SFC51(RDSYSST)专门用于读取系统的状态信 息。该功能块提供的 SSL-ID 功能码输入管脚用于设置需要读取的信息类型,例如, 16#0013 用于读取控制器内部工作内存分配情况;16#00B1 用于读取模块的诊断信息;而 16#0074 则可以用于读取控制器的状态灯(包括单 CPU 和冗余 CPU)。
注意:功能码 16#0019 仅仅支持单 CPU 和冗余 CPU 单机模式,不能用在普通的冗余 CPU 中。关于 SFC51 的详细帮助请参考 Step7 在向帮助或有个系统提供的系统功能介绍。
参 数
声 明
数据类型
描 述
REQ
INPUT
BOOL
REQ = 1:启动处理
SSL-ID
INPUT
WORD
需要读取的系统状态功能码
INDEX
INPUT
WORD
部分功能码中对象的类型或编号
如果执行 SFC 时出错,则 RET_VAL
RET_VAL
OUTPUT
INT
将包含出错代码
BUSY
OUTPUT
BOOL
TRUE:尚未完成读取
数据记录信息:
SSL_HEADER
OUTPUT
STRUCT
LENTHDR:单条数据记录长度
N_DR:DR中记录的数据记录的条数 读取的数据记录存储区域:
• 如果仅读取了SSL列表的单条信息, 则不能评估DR的值,而只能评估
DR
OUTPUT
ANY
SSL_HEADER的值。
• 否则,LENTHDR 和 N_DR 的乘积 为已在 DR 中存储的字节数
表 1. SFC51 接口
\SFC51 的输入/输出接口如上表所示,其中 SSL-ID 用于指定需要读取的信息类型(功能 码);部分功能码支持单条数据记录的读取,则此时可以通过 INDEX 管脚输入;
SSL_HEADER 指示读取的数据记录的长度及数据记录的条数;DR 中则为读取的数据记录的 存储空间;
¾ 使用 SSL-ID=16#0074 读取冗余 CPU 的状态灯时,SSL_HEADER 数据结构中
LENTHDR= 16#0004,即每条数据记录占用 4 个字节,具体结构如下表所示:
表 2. DR 数据记录结构
也就是说通过 SFC51(功能码 16#0074)读取的数据记录存储在 DR 中,每条数据记录 都拥有上述的结构,每条数据记录通过 CPU_LED_ID 字节 1(LED 标识符)来标识该记录 对应的具体 LED,通过评估记录的后两字节,即可判断该 LED 的当前状态,LED 标识符如 下所示:
W#16#000A:USR1(用户自定义)
W#16#0001:SF(组出错)
W#16#000B:BUS1F(总线出错接口1)
W#16#0002:INTF(内部出错)
W#16#000C:BUS2F(总线出错接口2)
W#16#0003:EXTF(外部出错)
W#16#000D:REDF(冗余出错)
W#16#0004:RUN
W#16#000E:MSTR(主站)
W#16#0005:STOP
W#16#000F:RACK0(机架号0)
W#16#0006:FRCE(强制)
W#16#0010:RACK1(机架号1)
W#16#0007:CRST(冷重启)
W#16#0011:RACK2(机架号2)
W#16#0008:BAF(总线上的电池故障/超
载、电池电压短路)
W#16#0012:IFM1F(接口出错接口模块1)
W#16#0009:USR(用户自定义)
W#16#0013:IFM2F(接口出错接口模块2)
¾ 使用 SSL-ID=16#0074 读取冗余 CPU 的状态灯时,SSL_HEADER 数据结构中 N_DR=
16#001A,即每次读取并存储在 DR 中的数据记录条数最大为 26 条。因此,设置接受 DR 的数据区间长度应该至少大于等于:
LENTHDR×N_DR=4×26=104 bytes 采用 Step7 编程时,手动构建如下 DB 块结构:
\

 在相应的循环 OB 中调用 SFC51,具体调用如下:

\

注意:由于调用 SFC51 将占用 CPU 系统资源,建议采用较慢循环周期的 OB 来调用该 SFC51,例如 OB32,1 秒钟调用一次或更慢。

通过 SSL_74.REQ_S 来启动读取 LED 信息,所有信息将存储在 SSL_74.DR。根据上述 的 DR 数据记录结构表 2 来分析每条数据记录,并将其显示在 OS 上即可。
随本文同时附录的源代码有:
♦ @SFC51_LED_H:采用 SCL 编写的读取 LED 的源代码,支持冗余 CPU 和单
CPU 两种类型的控制器,已经在 41x-H V4.0 CPU 测试通过;

@*.PDL 文件:专门为 PCS7 开发的上位显示图标和面板,需结合上述源代码
一起使用;
在 CFC 中调用上述源代码编写的功能块及面板,最终上位显示效果如下图所示:
\