[西门子] XCNet-PN采集西门子S7-1200/1500的两种方法

[复制链接]
查看306 | 回复0 | 2024-4-16 16:44:53 | 显示全部楼层 |阅读模式
XCNet-PN用于西门子带以太网接口的PLC(S7-1200/1500、S7-200SMART)的以太网数据采集。

XCNet-PN具备两个物理性接口,LAN1和LAN2口分别具备独立的局域网能力。其中LAN1为一个双RJ45接口,具备交换机功能,用于连接PLC;LAN2为单端口RJ45,主要用于上位机采集或者触摸屏的连接。
XCNet-PN的LAN1/LAN2具备跨网段功能,能将LAN1口的S7TCP协议转换成LAN2口的ModbusTCP协议和BCNetS7协议(S7TCP协议),LAN2支持ModbusTCP主从站通讯功能。

本文介绍XCNet-PN在连接西门子S7-1200/1500时的两种数据采集方法。
一、MODBUS TCP数据采集

XCNet-PN内部集成ModbusTCP通讯服务器,因此ModbusTCP客户机,如支持ModbusTCP的组态软件、OPC服务器、PLC以及实现ModbusTCP客户机的高级语言开发的软件等,可以直接访问S7系列PLC的内部数据区。Modbus协议地址在XCNet-PN内部已经被默认映射至S7系列PLC的地址区,实现功能号包括:FC1、FC2、FC3、FC4、FC5、FC6和FC16,如果不采用默认的地址映射关系,也可以自定义地址映射关系。
【默认地址映射关系采集】
默认的地址映射关系为全区域映射(0~65535):
线圈Coil(000001~)映射为PLC的Q区;
输入Input(100001~)映射为PLC的I区;
输入寄存器InputRegsiter映射为PLC的M区;
保持寄存器HoldingRegsiter映射为PLC的DB1数据块。

Modbus
S7系列PLC
数据类型
计算公式
功能号
从站地址
S7站点地址
字节
相等
-
00001~
Q0.0~

Qm.n = 00001 + m*8  + n
FC1(读线圈)
FC5(写线圈)
10001~
I0.0~

Im.n = 10001 + m*8  + n
FC2(读输入)
30001~
MW0
字(2字节)
MWm= 30001 + m/2,m为偶数
FC4(读输入寄存器)
40001~
DB1.DBW0
字(2字节)
DB1.DBWm = 40001 + m/2,m为偶数
FC3(读乘法寄存器)
FC16(写乘法寄存器)
FC6(写单一乘法寄存器)



【自定义地址映射关系采集】

除了默认的地址映射外,我们也可以自定义地址映射关系,我们推荐使用【自动分配映射关系(推荐)】来配置地址映射表,在此之前,我们需要手动删除默认的地址映射表。
1)选中映射块,点击【删除映射块】来删除映射块;

2)点击【自动分配映射地址(推荐)】,添加自定义映射块。

3)我们大致可以按照以下思路来完成自定义映射块的编辑:

4)映射表编辑完成后,可以通过地址查询确定对应关系,比如要查询DB1.DBW0对应的modbus地址:点击【映射地址查询】,按如下设置,点击【查询】按钮,可以查询到对应的Modbus映射地址。

【ModScan32测试】

1、运行ModScan32软件。
2、选择菜单Connection/Connect,选择Remote TCP/IP Server,输入XCNet-PN的IP地址,Service端口为502;点击[OK]按钮。
3、在子窗口“ModSca1”中,功能号选择03:HOLDING REGISTER,Address = 00001,Length = 10。
4、子窗口数据区显示40001-40010的16进制数据。
5、双击子窗口数据区的数据可以修改数值。



二、BCNetS7(S7TCP兼容协议)数据采集
XCNet-PN模块在以太网上作为服务器运行,远程计算机作为客户机通过TCP/IP协议连接到XCNet-PN并向其发送和接收数据来实现与PLC的通讯。BCNetS7协议的服务端口号为1099。XCNet-PN支持市面上常见的SCADA组态软件,比如组态王、力控、杰控、WINCC等、KepWareOPC、BCNetS7 OPC等。
【S7-1200/1500通过XCNet-PN连接WINCC】



西门子S7-1200通过XCNet-PN连接WINCC,采用西门子S7-1200的以太网驱动。
1、运行WINCC软件,右击【变量管理】,点击【打开】;

2、右击【变量管理】,选择【添加新的驱动程序】下的【SIMATIC S7-1200、S7-1500 Channel】;

3、右击【OMS+】,点击【新建连接】,新建一个通讯连接,例如NewConnection_1;

4、右击新建的通讯连接,点击【连接参数】;

5、在弹出的对话框中,【IP地址】填入XCNet-PN的IP地址,【访问点】选择S7ONLINE,产品系列选择相应PLC的型号系列,例如S7 1200。

【XCNet-PN通过高级语言访问S7-1200/1500】



BCNetS7协议的以太网通讯报文由固定的8个字节的报文头、8个字节的扩展报文头和可选的最大200个字节的用户数据组成,无论是发送报文还是接收报文都遵循此结构;如下表:

字节
参数
类型
注释
8字节报文头
0
msg.rx
byte
接收方识别ID
1
msg.tx
byte
发送方识别ID
2
msg.ln
byte
扩展报文头和用户数据总长度
3
msg.nr
byte
报文ID
4
msg.a
byte
响应号
5
msg.f
byte
错误号
6
msg.b
byte
命令号
7
msg.e
byte
扩展号
8字节扩展报文头
8
msg.device_adr
byte
远程(PLC)站地址
9
msg.data_area
byte
数据区
10,11
msg.data_adr
word
数据地址
12
msg.data_idx
byte
数据索引号
13
msg.data_cnt
byte
数据字节个数
14
msg.data_type
byte
数据类型
15
msg.function
byte
功能号
用户数据
16~215
msg.d[0~199]
byte array
最大200个字节的用户数据
其中:
1、对于客户机(计算机)的识别ID为0xFF(十进制数255),服务器(XCNet-PN模块)的识别ID为0x03(十进制数3);因此:
1)客户机发送数据命令帧到服务器:msg.rx=0x03,msg.tx=0xFF;
2)服务器发送数据响应帧到客户机:msg.rx=0xFF,msg.tx=0x03;
3)客户机应该对接收报文的msg.rx和msg.tx进行检查以确定是否是XCNet的响应报文;
2、扩展报文头和用户数据区总长度msg.ln为扩展报文头和用户数据之字节数和,因此:
1)客户机发送读数据命令帧到服务器:msg.ln=0x08;无用户数据;
2)客户机发送写数据命令帧到服务器:msg.ln=0x08+待写数据字节长度;
3)服务器发送读数据响应帧到客户机:msg.ln=0x08+返回数据字节长度;
4)服务器发送写数据响应帧到客户机:msg.ln=0x08;无用户数据;
5)客户机应该根据接收报文的msg.ln来判断该报文的完整性;
3、报文ID msg.nr标识每对发送/接收报文的对应信息。为了接收到正确的应答报文,客户机应在每次发送报文前将msg.nr自动增1,然后判断接收报文的msg.nr是否与发送报文的msg.nr一致,如果一致说明接收报文为当前发送报文的响应帧;
4、响应号msg.a在客户机发送报文中为0x00;在服务器发送报文中应为发送报文的命令号msg.b;客户机在接收报文数据时应判断接收报文的msg.a是否等于发送报文的msg.b,如果一致再处理数据;
5、错误号msg.f在客户机发送报文中为0x00;在服务器发送报文中为错误号,如果msg.f=0x00表明客户机的请求被服务器正确处理;客户机应该检查接收报文的msg.f,如果非0则应重试或者检查发送命令;
6、命令号msg.b在客户机发送报文中为指定命令代号(见后描述),在服务器发送报文中为0x00;
7、扩展号msg.e总为0x00;
8、8字节扩展报文头的定义见文档后续每个命令报文的详细描述;
9、用户数据区在客户机发送读数据命令时长度为0,即无用户数据区;在客户机发送写数据命令时储存待写数据;在服务器发送读数据响应帧时储存读取的数据;在服务器发送写数据响应帧时长度为0,即无用户数据区。
关于具体的读写S7-1200/1500的各寄存器地址,请参考《XCNet-PN使用手册》。
XCNet-PN主要用于西门子带以太网接口的PLC(S7-1200/1500、S7-200SMART)的以太网数据采集,虽然XCNet-PN也支持PLC数据写入的功能,但在一些涉及脉冲控制、伺服控制等速度和精度控制要求极高的场合,则不强烈建议使用。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则