8s003f3p6读取程序,读取程序存储器的指令
chanong
|1 证监会51 概述
1.1 程序功能概述
系统功能SFC 51“RDSYSST”(读取系统状态)允许您读取系统状态列表或部分系统状态列表,例如指示灯状态、序列号和从站状态。
当调用SFC 51 时,它通过将值“1”分配给输入参数REQ 来开始读取。如果可以立即读取系统状态,则SFC 在BUSY 输出参数中返回值0。如果BUSY 包含值1,则读取功能尚未完成。
表1 SFC51参数说明
2 读取CPU指示灯
您可以通过SFC 51 读取CPU 的LED 状态。使用的SSL_ID 参数为16#74 (16#19) 来读取整个LED 状态,使用16#174 (16#119) 来读取单个LED 的状态。
2.1 编程
首先,我们需要创建一个数据块来存储读取的指标状态结果。
图1 创建DB1存储读取结果
打开OB1,在OB1的临时变量区创建一个变量length,类型设置为Struct。
双击长度变量并输入结构变量的成员定义以创建两个字变量(在本例中为大小和数量)。
图3 创建length结构体变量的两个word成员
创建SFC51 程序。
前两个字节表示灯的类型(见表2),例如是SF灯还是BF灯。
第三个字节表示灯是亮还是灭,1表示灯亮,0表示灯灭。
第四个字节表示灯是否闪烁。 0表示不闪烁,1表示正常闪烁(2hz),2表示慢速闪烁(0.5hz)。
以下是指示灯类型列表(不同的CPU有不同数量的指示灯):
表2 前两个字节的含义
3 读取Profibus DP从站状态
3.1 编程
首先,我们需要创建一个数据块来存储读取状态结果。
图4 创建DB1并保存读取结果
打开OB1,首先在OB1的临时变量区创建一个变量length,并将类型设置为Struct。
图5 创建名为length的结构体变量
双击长度变量并输入结构变量的成员定义以创建两个字变量(在本例中为大小和数量)。
图6 创建length结构体变量的两个字成员
创建SFC51 程序。
在此示例中,在P#DB1.DBX0.0 BYTE 500 中为每个DP 从站(16 x 8=128) 保留1 位。地址1 处DP 从站的状态存储在第三个字节中。在位1 中,地址3 处的DP 从站的状态存储在第三个字节的位3 中,依此类推。如果从站相应位未置位,则表明DP从站没有通信或不存在。
例:从DB1.DBW2开始,每一位对应一位,例如3号站对应的位为DB1.DBX2.3,该站存在的位为1,不存在的位是。 0。
4读取CPU序列号
4.1 编程
为了显示:
可以通过SFC 51“RDSYSST”从系统状态列表(SSL) 中读取以下识别数据:
下表显示了可以从各种CPU 型号和固件版本中读取的其他标识数据。这使用SFC 51 和SSL ID W#16#011C。
表3 索引说明
请注意,即使将旧CPU升级到上面列出的版本,也无法实现此功能。
首先,我们需要创建一个数据块来存储读取状态结果。
图7 创建DB1并保存读取结果
打开OB1,首先在OB1的临时变量区创建一个变量length,并将类型设置为Struct。
图8 创建名为length的结构体变量
双击长度变量并输入结构体变量的成员定义以创建两个字变量(在本例中为大小和数量)。
图9 创建length结构体变量的两个字成员
创建SFC51 程序。
呼叫“RDSYSST”
要求:=真
SZL_ID :=W#16#11C //读取CPU序列号
索引:=W#16#5
RET_VAL :=MW0
忙:=M2.0
SZL_HEADER:=#长度
DR :=P#DB1.DBX0.0 BYTE 500 //结果输出到DB1数据块
结果应该是这样的:
图10 CPU序列号
5 读取存储卡序列号
5.1 编程
描述:
要获取MMC 卡序列号,必须使用SFC 51 \'RDSYSST\' 读取系统状态列表(SSL) :
? SSL ID W#16#011C“组件标识”
? 索引W#16#0008“存储卡序列号”
从固件版本V2.0 开始(V2.1 中的CPU 317:),可以在所有带有MMC 卡的S7-300 CPU 和C7 上读取存储卡序列号。
S7-400 的V5 版本将唯一的序列号存储在存储卡上。
首先,我们需要创建一个数据块来存储读取状态结果。
图11 创建DB1存储读取结果
打开OB1,首先在OB1的临时变量区创建一个变量length,并将类型设置为Struct。
图12 创建名为length 的结构体变量
双击长度变量并输入结构体变量的成员定义以创建两个字变量(在本例中为大小和数量)。
图13 创建length结构体变量的两个字成员
创建SFC51 程序。
呼叫“RDSYSST”
要求:=真
SZL_ID :=W#16#11C //读取MMC序列号
索引:=W#16#8
RET_VAL :=MW0
忙:=M2.0
SZL_HEADER:=#长度
DR :=P#DB1.DBX0.0 BYTE 500 //结果输出到DB1数据块
结果如下。
图14 MMC序列号








