S7TCP驱动,支持西门子的S7系列PLC以太网TCP协议,可以与S7-200、300、400、1200、1500通讯;
n 此通讯驱动与西门子设备通讯非常简单方便,具有以下特点:
Ø 不需要安装和设置西门子网络软件包SIMATIC NET,
Ø 不需要Set PG/PC Interface支持,计算机中可以不安装Step 7等西门子软件;
Ø 连接PLC的最大数量为16;
n PLC网络模块设定
¨ 通过Micro/Win或Step 7编程软件为通讯模块(CP243-1/CP343-1/CP443-1)设定IP地址和子网掩码,并下传到PLC中;如IP地址(192.168.1.10)、子网掩码(255.255.255.0);
n 计算机网络参数设定
¨ 要确认计算机中安装有以太网卡,并已与PLC连接到同一网络中;
¨ 为计算机设定IP地址和子网掩码:
¨ 如IP地址(192.168.1.20)、子网掩码(255.255.255.0);
¨ 使用ping命令,保证能ping到PLC站;
n 通讯设定
¨ 选择<设备通讯>功能,执行<安装驱动>任务,出现对话框:
¨ 选择S7TCP驱动程序,进行安装;
¨ 选择<设备通讯>功能,执行<选择驱动>任务,选择S7TCP:
¨ 选择<设备通讯>功能,执行<定义设备数据表>任务,在出现的设备数据表中定义某个设备号:
Ø CPU槽号, CPU所在机架中的插槽位置:
S7-200 |
S7-300 |
S7-400 |
S7-1200 |
S7-200Smart |
S7-1500 |
0 |
2 |
2-18 |
1 |
1 |
1 |
Ø 设备IP地址,PLC的IP地址,如192.168.1.10;
Ø 本地IP地址,本地计算机所使用网卡IP地址,如192.168.1.20,用缺省即可;
Ø 数据类型
|
S7-200 |
S7-300 |
S7-400 |
S7-1200 |
S7-200S |
S7-1500 |
I |
Y |
Y |
Y |
Y |
Y |
Y |
Q |
Y |
Y |
Y |
Y |
Y |
Y |
M |
Y |
Y |
Y |
Y |
Y |
Y |
DB |
N |
Y |
Y |
Y |
N |
Y |
PI |
N |
Y |
Y |
N |
N |
N |
PQ |
N |
Y |
Y |
N |
N |
N |
T |
N |
Y |
Y |
N |
N |
N |
C |
N |
Y |
Y |
N |
N |
N |
V |
Y |
N |
N |
N |
Y |
N |
IF |
N |
Y |
Y |
N |
N |
N |
DT |
N |
Y |
Y |
N |
N |
N |
S1 |
N |
Y |
Y |
N |
N |
N |
S2 |
N |
Y |
Y |
N |
N |
N |
S3 |
N |
Y |
Y |
N |
N |
N |
S4 |
N |
Y |
Y |
N |
N |
N |
S5 |
N |
Y |
Y |
N |
N |
N |
S6 |
N |
Y |
Y |
N |
N |
N |
S7 |
N |
Y |
Y |
N |
N |
N |
Ø 处理方式:
数值类型 |
处理方式 |
字节 |
y=x |
整数 |
y=I2(x2,x1)、y=UI2(x2,x1) |
双整数 |
y=I4(x4,x3,x2,x1)、y=UI4(x4,x3,x2,x1) |
浮点数 |
y=R4(x4,x3,x2,x1) |
n 得到S7-300/400中诊断信息
Ø 使用S7TCP驱动可以得到S7-300/400中的诊断信息;
Ø 可最多读取最近20条诊断信息,每条信息占用10个字节,所以最大长度应为200;
Ø 通过VT变量可组态显示诊断信息的内容:
Ø 文本的格式必须为S7INFO(m,n),m为读取诊断信息的设备号(2-2000),n为信息的起始单元号,应为10的倍数(0、10、20、30);例如:D2中存放了诊断信息,则第1条信息为“S7INFO(2,0)”, 第2条信息为“S7INFO(2,10)”, 第3条信息为“S7INFO(2,20)”, 第4条信息为“S7INFO(2,30)”,…
Ø VT变量显示的诊断信息内容:
n 得到S7-300和400时钟
Ø 使用S7TCP驱动可以得到S7-300/400中的时钟;
Ø 通过VT变量可显示时钟:
n 得到S7-300和400CPU指示灯状态
Ø 使用S7TCP驱动可以得到S7-300/400的CPU指示灯状态;
Ø 设备号的有效字节为20个,指示灯亮则字节为1,各单元字节和CPU指示灯的对应关系如下:
单元号 |
对应指示灯 |
描述 |
B0 |
预留 |
|
B1 |
SF |
系统错误 |
B2 |
INTF |
内部错误 |
B3 |
EXTF |
外部错误 |
B4 |
RUN |
运行 |
B5 |
STOP |
停止 |
B6 |
FRCE |
强制 |
B7 |
CRST |
重启动 |
B8 |
BAF |
电池故障 |
B9-10 |
预留 |
|
B11 |
BUS1F |
总线接口1故障 |
B12 |
BUS2F |
总线接口2故障 |
B13 |
REDF |
冗余故障 |
B14 |
MSTR |
主站 |
B15 |
RACK0 |
机架0 |
B16 |
RACK1 |
机架1 |
B17 |
RACK2 |
机架2 |
B18 |
IFM1F |
接口模板1故障 |
B19 |
IFM2F |
接口模板2故障 |
n 得到S7-300和400DP站或机架状态
Ø 使用S7TCP驱动可以得到S7-300/400的DP从站或各机架的状态;
Ø 读中央机架及扩展机架状态:
[数据类型]选择<S2> ,[开始地址]=0,16个单元字节分别对应128个中央及扩展机架状态,1代表激活,0代表无效;
Ø 读CPU上集成DP主站接口连接的DP从站状态:
[数据类型]选择<S2> ,[开始地址]=<DP主系统ID>,16个单元字节分别对应128个DP从站状态, 1代表激活,0代表无效;
Ø 读扩展DP主站接口连接的DP从站状态:
[数据类型]选择<S3>,[开始地址]=<DP主系统ID>,16个单元字节分别对应128个DP从站状态, 1代表激活,0代表无效;
n 得到S7-300和400的DP站或机架故障状态
Ø 使用S7TCP驱动可以得到S7-300/400的DP从站或各机架的故障状态;
Ø 读中央机架及扩展机架故障状态:
[数据类型]选择<S4> ,[开始地址]=0,16个单元字节分别对应128个中央及扩展机架故障状态,1代表有故障;
Ø 读CPU上集成DP主站接口连接的DP从站故障状态:
[数据类型]选择<S4> ,[开始地址]=<DP主系统ID>,16个单元字节分别对应128个DP从站故障状态, 1代表有故障;
Ø 读扩展DP主站接口连接的DP从站故障状态:
[数据类型]选择<S5>,[开始地址]=<DP主系统ID>,16个单元字节分别对应128个DP从站故障状态, 1代表有故障,0代表无效;
n 得到S7-300和400的某个机架或站的所有模块状态
Ø 使用S7TCP驱动可以得到S7-300/400的模块状态;
机架号的格式为xxxyy:
为本地机架时xxx=000,yy=实际机架号(00-21);
为DP/PN扩展机架时xxx=主站系统标识号,DP主站系统标识范围为001-031,PN主站系统标识范围为100-115,yy=DP从站号或PN设备号(01-99);
例1:监视本地的1号机架,机架号为1(00001);
例2:监视系统标识为1的DP主站下的3号从站,则机架号为103(00103);
例3:监视系统标识为101的PN主站下的设备号为3的从站,则机架号为10103;
Ø 返回数据的长度与机架的最大槽号有关,设备号的字节单元内容:
单元号 |
描述 |
位号 |
有效状态 |
内容 |
|
0 |
DP站 或 本地机架 |
机架状态 |
0 |
1 |
机架被组态 |
1 |
1 |
机架未被组态 |
|||
4 |
1 |
机架有错误 |
|||
PN站 |
接口模块状态 |
0 |
1 |
模块出错 |
|
1 |
1 |
模块存在 |
|||
2 |
1 |
站错误 |
|||
1 |
1号插槽模块状态 |
0 |
1 |
模块出错 |
|
1 |
1 |
模块存在 |
|||
2 |
1 |
模块不存在 |
|||
3 |
1 |
模块被禁用 |
|||
2 |
2号插槽模块状态 |
同上 |
|||
3 |
3号插槽模块状态 |
||||
… |
… |
||||
63 |
63号插槽模块状态 |
注意:并发与PLC通讯会导致通讯失败,即PLC无法实时应答状态信息;
n 得到S7-300和400的某PN/DP总线中所有站状态
主站标识:DP(1-31),PN(100-115)
字节单元内容:
单元号 |
描述 |
位号 |
有效状态 |
内容 |
0 |
保留 |
|
||
1 |
1#站状态 |
0 |
1 |
站被组态 |
1 |
1 |
运行正常 |
||
2 |
1 |
至少有1个模块故障 |
||
2 |
2#站状态 |
0 |
1 |
站被组态 |
1 |
1 |
运行正常 |
||
2 |
1 |
至少有1个模块故障 |
||
3 |
3#站状态 |
同上 |
||
4 |
4#站状态 |
|||
… |
… |
|||
256 |
256#站状态 |
注意:并发与PLC通讯会导致通讯失败,即PLC无法实时应答状态信息;
n S7-1200数据块属性设置:
n S7-1500保护参数设置:
S7-1500数据块属性设置: