S7-300/400以太网模块CPx43-1 MODBUS TCP 通讯(TIA)

下面章节将介绍如何使用TIA Portal配置S7-300/400单站系统通过CPx43-1 PN口与第三方模拟软件进行Modbus/TCP进行通讯的详细步骤

1.使用说明

本文档配置方法需要TIA Portal版本至少是STEP7 V15.1

若软件版本为V15及以下时,参考:

链接:https://support.industry.siemens.com/cs/cn/zh/view/109751178

2.配置CP343-1作为 Modbus TCP Client 与通信伙伴建立通讯

下面以CP343-1Modbus Slave软件为例详细介绍如何将CP343-1 配置为ClientModbus Slave作Server进行Modbus TCP通讯

2.1 硬件设备及软件

本例中所用的硬件设备如下表:

名称

数量

订货号

S7-300电源模块PS 307 10A

1

6ES7307-1KA02-0AA0

S7-300 CPU317-2PN/DP

1

6ES7317-2EK14-0AB0(V3.2)

CP343-1 1 6GK7343-1GX31-0XE0

网线

若干

 

笔记本电脑

1

 

 

 

 

 

所用到软件如下表:

名称

订货号

STEP7 V16 Update3 组态编程软件

 

Modbus Slave免授权版本

可从网上免费获取

 

 

 

2.2 S7-300单站系统与Modbus Slave软件组态

打开TIA软件,新建一个工程项目文件,命名为“CP_MODBUS TCP Client”, 在项目下插入一个S7-300站,如下图1所示: 

1 新建S7-300 Station

打开设备视图,添加CP343-1,并设置CP343-1的IP地址,本例中将CP343-1PNIP地址设为192.168.0.221如图所示:

2设备视图中设置CP343-1IP地址

2.3 组态网络视图

使用CP343-1做MODBUS TCP通信前,首先要创建CP343-1和MODBUS TCP服务器的TCP连接

步骤①:添加TCP连接

3 添加TCP连接

步骤②:设置通信伙伴方的IP地址

TCP连接属性---常规---填写伙伴方的IP地址(此处为MODBUS TCP服务器的IP地址)

4 TCP连接参数设置

步骤③:设置本地ID

TCP连接属性---本地ID

此处的“本地ID” 和“ LADDR”,在之后的配置MODBUS TCP工艺对象时,对应连接设置中的“连接ID”和“梯级”

5 TCP连接参数设置

步骤④:勾选“主动建立连接”

TCP连接属性---特殊连接属性,CP343-1做TCP的客户端时,需要勾选“主动建立连接”

6 TCP连接参数设置

步骤⑤:CP343-1作为客户端和服务器TCP通信,必须要指定服务器的IP地址和端口号。

TCP连接属性---地址详细信息,设置伙伴方的IP地址和端口号

7 TCP连接参数设置

TCP连接属性---选项,默认设置

8 TCP连接参数设置

2.4 组态工艺对象

配置完TCP连接后,接下来需要新增工艺对象,

步骤①:新增工艺对象

选择“Modbus”---"通信处理器"---“MODBUS_TCP”---"MB_CP_PARAM"

9 新增工艺对象

步骤②:设置“连接设置”

连接设置:连接ID,梯级这两个参数 查看2.3章节TCP连接参数中的“本地ID”

10 组态工艺对象

步骤③:设置“Modbus设置”---“内部”

“SIMATIC S7是服务器”选项默认不勾选;“单次写入”选项根据Modbus TCP 服务器对于功能代码的要求而定,默认情况下不勾选。

11 组态工艺对象

步骤④:设置“Modbus设置”---“数据区域”

Modbus 设置---数据区域:下图中设置了4个Modbus数据区域

12 组态工艺对象

2.5 根据工艺对象中创建的数据区域添加数据块

根据步骤3.4工艺对象中设置的数据区域,添加四个数据块,如下图所示

13 创建数据块

14 创建存放MODBUS 线圈数据的数据块

15 创建存放MODBUS 数字量输入类型的数据块

16 创建存放MODBUS 保持寄存器数据的数据块

17 创建存放MODBUS 输入寄存器据的数据块

2.6 创建具有可用于授权的注册表项的数据块

创建授权密钥数据块DB3(名称REG_KEY),选择类型为“全局DB”,打开该DB块,创建变量“REG_KEY”,数据类型为“String[17]”,如图所示:

18 创建存放授权码的数据块

授权密钥的获取方法,参考:http://www.ad.siemens.com.cn/productportal/Prods/published/Comm/Comm_9.4/Comm_9.4.html

2.7 调用OB121

由于在获取授权密钥前,“MODBUSCP”指令是无授权状态,会使CPU报错而停机。而为了读取CPU 的“IDENT_CODE”码,需要CPU运行起来,则必须添加编程错误组织块OB121,如下图所示:

19 OB121

下图为CPU诊断信息,若MODBUS TCP没有授权的情况下使用,会报错误“16#A090”和“读取时发生区域长度错误”,若调用了OB121,可避免CPU停机。

20 CPU诊断信息

2.8 调用通信指令

调用MODBUS TCP指令(通信---通信处理器---MODBUS TCP---MODBUSCP),填写参数。

为了在通信故障时查找原因,编写程序段2捕获错误代码。

21 调用“MODBUSCP”指令

2.9 初始化指令

创建启动组织块OB100(名称COMPLETE RESTART),语言为“STL”,打开该OB块,置位初始化位输入管脚寄存器,如下图所示:

22 初始化“MODBUSCP”指令

2.10 通信测试

示例1:客户端读取服务器【 数字量输入】,偏移量2,长度为2的数据

23 通信测试示例

示例2:客户端读取服务器【输入寄存器】,偏移量0,长度为3的数据

24 通信测试示例

示例3:客户端读取服务器【线圈寄存器】,偏移量0,长度为8的数据

25 通信测试示例

示例4:客户端读取服务器【保持寄存器】,偏移量0,长度为3的数据

26 通信测试示例

示例5:客户端写入数据到服务器【保持寄存器】,偏移量5,长度为5的数据

27 通信测试示例

示例6:客户端写入数据到服务器【线圈寄存器】,偏移量0,长度为8的数据

28 通信测试示例

3.配置CP343-1作为 Modbus TCP Server 与通信伙伴建立通讯

下面以S7-300单站系统及ModScan32软件为例详细介绍如何将CP343-1PN口配置为ServerModScan32作Client进行Modbus TCP通讯

3.1例子中使用的硬件设备及软件

本例中所用的硬件设备如下表:

名称

数量

订货号

S7-300电源模块PS 307 10A

1

6ES7307-1KA02-0AA0

S7-300 CPU317-2PN/DP

1

6ES7317-2EK14-0AB0(V3.2)

CP343-1 1 6GK7343-1GX31-0XE0

网线

若干

 

笔记本电脑

1

 

 

 

 

 

所用到软件如下表:

名称

订货号

STEP7 V16 Update3 组态编程软件

 

ModScan32免授权版本

可从网上免费获取

 

 

3.2 S7-300单站系统与ModScan32软件组态

打开TIA软件,新建一个工程项目文件,命名为“CP_MODBUS TCP Server”, 在项目下插入一个S7-300站,如下图所示: 

29 新建S7-300 Station

打开设备视图,增加CP343-1,修改CP343-1的IP地址,本例中将CP343-1IP地址设为192.168.0.221如下图17所示:

30 设备视图中设置CP343-1IP地址

3.3 组态网络视图

使用CP343-1做MODBUS TCP通信前,首先要创建CP343-1和MODBUS TCP服务器的TCP连接

步骤①:添加TCP连接

31 添加TCP连接

步骤②:常规

TCP连接属性---常规---填写伙伴方的IP地址(伙伴的IP地址也可以不指定)

32 TCP连接设置

步骤③:设置本地ID

TCP连接属性---本地ID

此处的“本地ID” 和“ LADDER”,在之后的配置MODBUS TCP工艺对象时,对应连接设置中的“连接ID”和“梯级”

33 TCP连接设置

步骤④:特殊连接属性

TCP连接属性---特殊连接属性,CP343-1做TCP的服务器时,不需要勾选“主动建立连接”

34 TCP连接设置

步骤⑤:地址详细信息

TCP连接属性---地址详细信息,设置伙伴方的IP地址和端口号

CP343-1作为服务器端和客户端TCP通信时,客户端的IP地址和端口号也可以不指定,需要注意,不能仅指定端口号或者IP地址。

35 TCP连接设置

TCP连接属性---选项,默认设置

36 TCP连接设置

3.4 组态工艺对象

配置完TCP连接后,接下来需要新增工艺对象,

步骤①:新增工艺对象

新增工艺对象,选择“Modbus”---"通信处理器"---“MODBUS TCP”---"MB_CP_PARAM"

37 新增工艺对象

步骤②:设置“连接设置”

连接设置:连接ID,梯级这两个参数 查看3.3章节TCP连接参数中的“本地ID”

38 组态工艺对象

步骤③:设置“Modbus设置”---“内部”

勾选“SIMATIC S7是服务器”选项;“单次写入”选项根据Modbus TCP 服务器对于功能代码的要求而定,默认情况下不勾选。

39 组态工艺对象

步骤④:设置“Modbus设置”---“数据区域”

下图中设置了4个Modbus数据区域

40 组态工艺对象

3.5 根据工艺对象中创建的数据区域添加数据块

根据步骤3.4工艺对象中设置的数据区域,添加四个数据块,如下图所示

41 创建数据块

42 创建存放MODBUS 线圈数据的数据块

43 创建存放MODBUS 数字量输入类型的数据块

44 创建存放MODBUS 保持寄存器数据的数据块

45 创建存放MODBUS 输入寄存器据的数据块

3.6 创建具有可用于授权的注册表项的数据块

创建授权密钥数据块DB3(名称REG_KEY),选择类型为“全局DB”,打开该DB块,创建变量“REG_KEY”,数据类型为“String[17]”,如图所示:

46 创建存放授权码的数据块

授权密钥的获取方法,参考:http://www.ad.siemens.com.cn/productportal/Prods/published/Comm/Comm_9.4/Comm_9.4.html

3.7 调用OB121

由于在获取授权密钥前,“MODBUSCP”指令是无授权状态,会使CPU报错而停机。而为了读取CPU 的“IDENT_CODE”码,需要CPU运行起来,则必须添加编程错误组织块OB121,如下图所示:

47 OB121

3.8 调用通信指令

调用MODBUS TCP指令(通信---通信处理器---MODBUS TCP---MODBUSCP),填写参数。

为了在通信故障时查找原因,编写程序段2捕获错误代码。

48 调用“MODBUSCP”指令

3.9 初始化指令

创建启动组织块OB100(名称COMPLETE RESTART),语言为“STL”,打开该OB块,置位初始化位输入管脚寄存器,如图所示:

49 初始化“MODBUSCP”指令

3.10 建立和客户端的连接

按照如下设置,使能服务器端,并使用ModScan32建立连接

50 建立和客户端的连接

3.11 通信测试

示例1:客户端读写服务器【 线圈寄存器 】,偏移量0,长度为10的数据

51 通信测试示例

示例2:客户端读取服务器【 数字量输入寄存器 】,偏移量0,长度为10的数据

52 通信测试示例

示例3:客户端读写服务器【 保持寄存器 】,偏移量0,长度为10的数据

53 通信测试示例

示例4:客户端读取服务器【 模拟量输入寄存器 】,偏移量0,长度为10的数据

54 通信测试示例