1 SFC 51 简介 1.1 程序功能介绍 通过系统功能SFC 51 "RDSYSST" (读取系统状态),可以读取系统状态列表或部分系统状态列表,例如指示灯状态,序列号,从站状态等等。 调用 SFC 51 时,通过将值“1”赋给输入参数 REQ 来启动读取。如果可以立即读取系统状态,则 SFC 将在 BUSY 输出参数中返回值 0。如果 BUSY 包含值 1,则尚未完成读取功能。 表1 SFC51 参数说明 参数 描述 REQ 输入参数 REQ = 1:启动处理 SSL_ID 输入参数 将要读取的系统状态列表或部分列表的 ID 号 INDEX 输入参数 部分列表中对象的类型或编号。 RET_VAL 输出参数 如果执行 SFC 时出错,则 RET_VAL 参数 将包含错误代码。 BUSY 输出参数 TRUE:尚未完成读取。 SSL_HEADER 输出参数 LENTHDR 是 SSL 列表或SSL 部分列表的数据记录的长度。 • 如果仅读取了 SSL 列表的标题信息,则 N_DR 包含属于它的数据记录数。 • 否则,N_DR 包含传送到目标区域的数据记录数。 DR 输出参数 SSL 列表读取或SSL 部分列表读取的目标区 域: • 如果仅读取了 SSL 列表的标题信息, 则不能评估 DR 的值, 而只能评估 SSL_HEADER 的值。 • 否则,LENTHDR 和 N_DR 的乘积将指 示已在 DR 中输入了多少字节。 2 读取CPU 指示灯 可以通过SFC 51 读取CPU 的指示灯状态,使用的 SSL_ID 参数为 16#74(16#19)读取全部指示灯状态 或者 16#174(16#119)读取单个指示灯状态 2.1 编程 首先需要创建一个数据块,用来存放读取出来的指示灯状态结果 图 1 创建 DB1,存放读取结果 打开OB1,在OB1 的临时变量区创建一个变量length,类型设置为 Struct(结构) 图 2 创建名为 length 的结构变量 双击 length 变量,进入结构变量成员定义,创建两个 word 类型的变量,本例中分别为 size 和 number: 图 3 创建length 的结构变量的两个 word 成员 编写 SFC51 程序: CALL "RDSYSST" REQ :=TRUE SZL_ID :=W#16#74 //读取全部指示灯状态 INDEX :=W#16#0 RET_VAL :=MW0 BUSY :=M2.0 SZL_HEADER:=#length DR :=P#DB1.DBX0.0 BYTE 500 //结果输出到DB1 数据块中 DB1 存放的结果即为模块的指示灯状态,每个指示灯有4 个字节的长度来描述。 前两个字节表示灯的类型(见表二),表示是 SF 灯还是 BF 灯等等。 第三个字节表示灯是亮还是灭,如果为1 ...