西门子6GK1 105-2AA10西门子6GK1 105-2AA10
我公司经营西门子全新原装现货PLC;S7-200S7-300 S7-400S7-1200触摸屏,变频器,6FC,6SNS120 V10 V60 V80伺服数控备件:原装进口电机(1LA7、1LG4、1LA9、1LE1),国产电机(1LG0,1LE0)大型电(1LA8,1LA4,1PQ8)伺服电(1PH,1PM,1FT,1FK,1FS)西门子保内全新原装产品‘质保一年。欢迎致电咨询
上海戈辰自动化科技有限公司(西门子代理商) |
全国直销: | 张柏 (同步) |
: |
|
腾讯咨询: | 254598303 |
(SIEMENS-ABB) 诚信的人,走遍天下有朋友;虚伪的人,踏破铁鞋无知己。 |
公司优势产品; PLC 、触摸屏、变频器、电缆及通讯卡、数控系统、 网络接头、伺服驱动、 凡在公司采购西门子产品,均可质保一年,1 程序功能介绍
通过系统功能SFC 51 "RDSYSST" (读取系统状态),可以读取系统状态列表或部分系统状态列表,例如指示灯状态,序列号,从站状态等等。
调用SFC 51时,通过将值“1”赋给输入参数REQ来启动读取。如果可以立即读取系统状态,则SFC将在BUSY输出参数中返回值0。如果BUSY包含值1,则尚未完成读取功能。
按照下面的步骤可以探测ET200S故障插槽上模块的诊断状态。
No. | 步骤 |
1 | 在项目树中右键点击ET200S显示为故障的模块。选择“Online & diagnostics”弹出菜单打开故障模块的诊断信息和关于故障模块的更多信息。 图 07
|
2 | 故障模块的诊断信息显示诊断状态为“Not reachable” 。 图 08
|
3 | 分布式I/O ET200S(DP从站)的故障信息进入到CPU(DP主站)的诊断缓冲区。 图 09
|
表 03
ET200S的诊断信息(禁止运行假设组态与实际安装不匹配)
如果设置了当前组态与实际安装不匹配禁止运行(参数禁用),ET200S(DP从站)的行为如下:
- 如果设置了组态与实际安装不匹配禁止运行(错误的模块被插入),模块不会启动(不会进入循环数据交换)。
- 如果在运行过程中模块被移除或者插入,会导致站点故障并且模块不再参与循环数据交换。
基于上述行为描述,ET200S 产生下面的诊断状态:探测到在线与离线不*,这时移除或插入不正确的模块会显示为故障。
图 10
图 11
只有故障模块传递诊断状态“Not reachable”。
图 12
分布式I/O ET200S(DP从站)的故障信息进入到CPU(DP主站)的诊断缓冲区。
图 13
ET200S的诊断信息(终端模块没有插入)
如果ET200S上没有插入终端模块或者多个模块从Et200S上被移除,那么没有数据会在DP主站和从站间进行交换。
ET200S 产生下面的诊断状态:探测到在线与离线不*,并且所有的模块会显示为故障。
图 14
图 15
ET200S模块传递诊断状态为现有的模块有故障。
图 16
分布式I/O ET200S(DP从站)的故障信息进入到CPU(DP主站)的诊断缓冲区。
图 17
ET200S的SF及BF指示灯状态
下表介绍了当设置为组态与实际安装不匹配时允许运行,ET200S传递了上述诊断信息时ET200S SF及BF灯的状态。
诊断信息 | SF | BF |
终端模块没有被插入(ET200S启动时) | 常亮 | 闪烁 |
ET200S的多个模块被移除 | 常亮 | 闪烁 |
ET200S的一个模块被移除 | 常亮 | 熄灭 |
不正确的模块被组态 | 常亮 | 熄灭 |
表 04
下表介绍了当设置为组态与实际安装不匹配时禁止运行,ET200S传递了上述诊断信息时ET200S SF及BF灯的状态。
诊断信息 | SF | BF |
终端模块没有被插入(ET200S启动时) | 常亮 | 闪烁 |
ET200S的多个模块被移除 | 常亮 | 闪烁 |
ET200S的一个模块被移除 | 常亮 | 闪烁 |
不正确的模块被组态 | 常亮 | 闪烁 |
表 05
附加信息
更多关于STEP 7 V11 SP2 和ET200S的信息请参考下面的手册链接。
手册 | 条目号 |
STEP 7 V11 SP2 | 57185407 |
STEP 7 Professional V12.0 SP1 | 77991795 |
ET 200S (IM151-1 Standard) | 25548014 |
创建环境
本FAQ中的抓屏都来自于STEP 7 V11 SP2 。西门子伺服控制模块6SN1123专区:
表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则灯亮,如果为0则灯的状态是灭。
第四个字节表示灯是否闪烁,0表示不闪,1表示正常闪烁(2hz),2,表示慢闪(0.5hz)
灯的类型列表如下(不同的CPU会有不同数目的指示灯):
表2 前两个字节的含义
16#1 | SF |
16#2 | INTF |
16#3 | EXTF |
16#4 | RUN |
16#5 | STOP |
16#6 | FORCE |
16#7 | CRST |
16#8 | BAF |
16#9 | USR |
16#A | USR1 |
16#B | BUS1F |
16#C | BUS2F |
16#D | REDF |
16#E | MSTR |
注意事项:
关于系统功能SFC51的更多详情请参阅STEP 7的在线帮助,或者通过Start > SIMATIC > DOCUMENTATION选择手册“System Software for S7-300/400 System and Standard Functions”
3 读取Profibus DP从站 状态
3.1 编程
首先需要创建一个数据块,用来存放读取出来的状态结果
图4 创建DB1,存放读取结果
打开OB1,首先在OB1的临时变量区创建一个变量length,类型设置为Struct(结构)
图5 创建名为length的结构变量
双击length变量,进入结构变量成员定义,创建两个word类型的变量,本例中分别为size和number:
图6 创建length的结构变量的两个word成员
编写SFC51程序:
CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#294 //读取从站是否存在
INDEX :=W#16#1
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //结果输出到DB1数据块中
在本例中,P#DB1.DBX0.0 BYTE 500中为每个DP从站(16 x 8 = 128)保留一位,地址为Address 1的DP从站的状态保存在第三个字节的Bit 1位中, 地址为Address 3的DP从站的状态保存在第三个字节的Bit 3位中,依次类推。如果从站对应的位未被置位,则表明那个DP从站没有通信上或不存在。
举例:从DB1.DBW2开始,每个位对应一个bit,例如3号站对应的位是DB1.DBX2.3 ,站点存在的位为1,不存在的为0。
注意事项:
关于系统功能SFC51的更多详情请参阅STEP 7的在线帮助,或者通过Start > SIMATIC > DOCUMENTATION选择手册“System Software for S7-300/400 System and Standard Functions”
4读取CPU的序列号
4.1 编程
说明:
通过 SFC 51“RDSYSST”可以从系统状态列表(SSL)中读取下列标识数据:
下面的表格指明了可以从不同型号和固件版本的 CPU 读取其它哪些标识数据。为此使用 SFC 51 和 SSL ID W#16#011C。
表3 INDEX说明
索引 | 名称 | S7-300/C7 | S7-400 |
W#16#0001 | 自动化系统的名称 | 从固件版本 V2.2 起 | 支持 |
W#16#0002 | CPU 的名称 | 从固件版本 V2.2 起 | 支持 |
W#16#0003 | CPU 的设备 ID | 从固件版本 V2.2 起 | 支持 |
W#16#0004 | 版权条目 | 从固件版本 V2.2 起 | 支持 |
W#16#0005 | CPU 的序列号 | 从固件版本 V2.2 起 | 从 MLFB |
6ES741x-xxx04-0AB0 起 |
W#16#0006 | 为操作系统保留 | - | - |
W#16#0007 | CPU 型号名称 | - | 支持 |
W#16#0008 | MMC 或 MC 的序列号 (参见条目号:19215608) | 从固件版本 V2.0 起 | - |
(CPU317:从 V2.1 开始) |
需要注意,老CPU升级到上表版本也无法实现此功能。
首先需要创建一个数据块,用来存放读取出来的状态结果
图7 创建DB1,存放读取结果
打开OB1,首先在OB1的临时变量区创建一个变量length,类型设置为Struct(结构)
图8 创建名为length的结构变量
双击length变量,进入结构变量成员定义,创建两个word类型的变量,本例中分别为size和number:
图9 创建length的结构变量的两个word成员
编写SFC51程序:
CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#11C //读取CPU 的序列号
INDEX :=W#16#5
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //结果输出到DB1数据块中
结果如下图:
图10 CPU序列号
注意事项:
关于系统功能SFC51的更多详情请参阅STEP 7的在线帮助,或者通过Start > SIMATIC > DOCUMENTATION选择手册“System Software for S7-300/400 System and Standard Functions”
5 读取存储卡的序列号
5.1 编程
描述:
为了获得 MMC 卡的序列号,必须使用 SFC 51 "RDSYSST" 读出系统状态列表 (SSL) :
• SSL ID W#16#011C "元件的标识"
• Index W#16#0008 "存储卡的序列号"
对于所有的带有 MMC 卡的 S7-300 CPU 和 C7 从固件版本 V2.0 起都可以读出存储卡的序列号,(CPU 317: 从 V2.1 起)。
从S7-400的V5版本起,存储卡上保存*的序列号。
首先需要创建一个数据块,用来存放读取出来的状态结果
图11 创建DB1,存放读取结果
打开OB1,首先在OB1的临时变量区创建一个变量length,类型设置为Struct(结构)
图12 创建名为length的结构变量
双击length变量,进入结构变量成员定义,创建两个word类型的变量,本例中分别为size和number:
图13 创建length的结构变量的两个word成员
编写SFC51程序:
CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#11C //读取MMC 的序列号
INDEX :=W#16#8
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //结果输出到DB1数据块中
结果如下:
图14 MMC序列号
注意事项:
关于系统功能SFC51的更多详情请参阅STEP 7的在线帮助,或者通过Start > SIMATIC > DOCUMENTATION选择手册“System Software for S7-300/400 System and Standard Functions”
关键词
SFC 51,SSL_ID对于S7-300,S7-400和PC站像S7连接的通信在STEP7 V5.x 的NetPro中配置。可以通过NetPro的“激活/取消激活连接状态”确定通信连接的状态。
按如下操作确定通信连接状态。
说明
- 在NetPro中选择S7站的CPU,配置的通信连接显示在连接表中。
- 点击“Activate/Deactivate Connection Status”按钮,连接状态显示在连接表中。
图. 01
连接状态“不可用”
如果连接状态显示为“不可用”,则通信伙伴双方没有下载通信连接配置。在NetPro中选择S7站,点击“下载所选的站点”按钮下载通信连接配置。通信伙伴双方都需执行下载操作。
图. 02
连接状态“未建立”
如果连接状态显示“未建立”,则通信伙伴未连接,例如因为通信连接配置仅装载了通信双方的一方,或者网线是断开或损坏。
在NetPro中选择S7站,点击“下载所选的站点”按钮下载通信连接配置。
图. 03
连接状态“已建立”
连接状态“已建立”说明通信伙伴之间的通信连接已经建立成功。
图. 04
描述
在本条目中提供了如下信息,在STEP 7 V11 SP2 或更高版本中,如何在线访问一个DP从站,例如ET200S,来探测诊断状态和诊断信息。
条目描述:
- 如何在DP主站及连接的DP从站间建立在线连接
- ET200S的诊断信息(允许运行假设组态与实际安装不匹配)
- ET200S的诊断信息(禁止运行假设组态与实际安装不匹配)
- ET200S的诊断信息(终端模块没有插入)
- ET200S的SF及BF指示灯状态
DP从站(ET200S)启动和在运行(循环数据交换)期间的模块的拔插是通过参数“Operation if preset configuration does not match actual configuration”来控制。
可以在ET200 S的设备视图中的硬件和网络编辑器中启用或禁用参数“Operation if preset configuration does not match actual configuration”。
在ET200S的设备视图中选中接口模块。在巡视窗口中选择“Properties”标签。在巡航区域内选择“Module parameters”条目显示“Properties”标签。启用或禁用参数“Operation if preset configuration does not match actual configuration”。
图 01
ET200S启动和在运行(循环数据交换)期间的模块移出或插入产生的诊断状态和诊断信息取决于模块的行为和参数“Operation if preset configuration does not match actual configuration”。
根据下面的步骤来探测ET200S和组态的模块的诊断状态和诊断信息。
建立在线连接
首先要建立CPU(DP主站)和ET200S (DP从站)的在线连接。步骤如下:
No. | 步骤 |
1 | 在项目树中选中组态为DP主站的CPU文件夹。选择“Online > Go online”目录建立CPU(DP主站)和ET200S(DP从站)的在线连接。 图 02
|
2 | 一旦在线连接建立,在“Online”菜单中启用“Receive alarms”功能。 图 03
|
表 01
ET200S的诊断信息(允许运行假设组态与实际安装不匹配)
如果预设了当前组态与实际安装不匹配允许运行,ET200S(DP从站)行为如下:
- 模块仍然启动,尽管预设组态与实际组态不匹配(错误的模块被插入)。
- 拔插模块仍然进行循环数据交换(不报站故障)。
基于上述行为描述,ET200S 发出诊断状态“Module exists. OK”,并且移除或插入不正确的模块会显示为故障。
只有故障模块传递诊断状态“Not reachable”。
根据下面的步骤探测ET200S的诊断状态和诊断信息。
No. | 步骤 |
1 | 在项目视图中,组态为DP主站的CPU的文件夹包含相关的对象和功能。
在“Distributed I/O”文件夹中可以找到组态的PROFIBUS DP主站系统和连接的DP从站。在DP从站文件夹上双击“Online & Diagnose”来打开组态为DP从站的ET200S的诊断窗口。 图 04
|
2 | ET200S的诊断显示了诊断状态为“Module exists. OK”。 图 05 |
3 | 在ET200S的诊断窗口中移除的或者不正确的模块插槽显示为故障。 图 06
|
表 02
能)。