下面章节将介绍如何使用TIA Portal配置S7-300/400单站系统通过CPx43-1 PN口与第三方模拟软件进行Modbus/TCP进行通讯的详细步骤
本文档配置方法需要TIA Portal版本至少是STEP7 V15.1。
若软件版本为V15及以下时,参考:
链接:https://support.industry.siemens.com/cs/cn/zh/view/109751178
下面以CP343-1及Modbus Slave软件为例,详细介绍如何将CP343-1 配置为Client,Modbus Slave作为Server进行Modbus TCP通讯。
本例中所用的硬件设备如下表:
名称 |
数量 |
订货号 |
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免授权版本 |
可从网上免费获取 |
打开TIA软件,新建一个工程项目文件,命名为“CP_MODBUS TCP Client”, 在项目下插入一个S7-300站,如下图1所示:
图1 新建S7-300 Station
打开设备视图,添加CP343-1,并设置CP343-1的IP地址,本例中将CP343-1的PN口IP地址设为192.168.0.221,如图所示:
图2设备视图中设置CP343-1的IP地址
使用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连接参数设置
配置完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 组态工艺对象
根据步骤3.4工艺对象中设置的数据区域,添加四个数据块,如下图所示
图13 创建数据块
图14 创建存放MODBUS 线圈数据的数据块
图15 创建存放MODBUS 数字量输入类型的数据块
图16 创建存放MODBUS 保持寄存器数据的数据块
图17 创建存放MODBUS 输入寄存器据的数据块
创建授权密钥数据块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
由于在获取授权密钥前,“MODBUSCP”指令是无授权状态,会使CPU报错而停机。而为了读取CPU 的“IDENT_CODE”码,需要CPU运行起来,则必须添加编程错误组织块OB121,如下图所示:
图19 OB121
下图为CPU诊断信息,若MODBUS TCP没有授权的情况下使用,会报错误“16#A090”和“读取时发生区域长度错误”,若调用了OB121,可避免CPU停机。
图20 CPU诊断信息
调用MODBUS TCP指令(通信---通信处理器---MODBUS TCP---MODBUSCP),填写参数。
为了在通信故障时查找原因,编写程序段2捕获错误代码。
图21 调用“MODBUSCP”指令
创建启动组织块OB100(名称COMPLETE RESTART),语言为“STL”,打开该OB块,置位初始化位输入管脚寄存器,如下图所示:
图22 初始化“MODBUSCP”指令
示例1:客户端读取服务器【 数字量输入】,偏移量2,长度为2的数据
图23 通信测试示例
示例2:客户端读取服务器【输入寄存器】,偏移量0,长度为3的数据
图24 通信测试示例
示例3:客户端读取服务器【线圈寄存器】,偏移量0,长度为8的数据
图25 通信测试示例
示例4:客户端读取服务器【保持寄存器】,偏移量0,长度为3的数据
图26 通信测试示例
示例5:客户端写入数据到服务器【保持寄存器】,偏移量5,长度为5的数据
图27 通信测试示例
示例6:客户端写入数据到服务器【线圈寄存器】,偏移量0,长度为8的数据
图28 通信测试示例
下面以S7-300单站系统及ModScan32软件为例,详细介绍如何将CP343-1PN口配置为Server,ModScan32作为Client进行Modbus TCP通讯。
本例中所用的硬件设备如下表:
名称 |
数量 |
订货号 |
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免授权版本 |
可从网上免费获取 |
打开TIA软件,新建一个工程项目文件,命名为“CP_MODBUS TCP Server”, 在项目下插入一个S7-300站,如下图所示:
图29 新建S7-300 Station
打开设备视图,增加CP343-1,修改CP343-1的IP地址,本例中将CP343-1的IP地址设为192.168.0.221,如下图17所示:
图30 设备视图中设置CP343-1的IP地址
使用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连接设置
配置完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.4工艺对象中设置的数据区域,添加四个数据块,如下图所示
图41 创建数据块
图42 创建存放MODBUS 线圈数据的数据块
图43 创建存放MODBUS 数字量输入类型的数据块
图44 创建存放MODBUS 保持寄存器数据的数据块
图45 创建存放MODBUS 输入寄存器据的数据块
创建授权密钥数据块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
由于在获取授权密钥前,“MODBUSCP”指令是无授权状态,会使CPU报错而停机。而为了读取CPU 的“IDENT_CODE”码,需要CPU运行起来,则必须添加编程错误组织块OB121,如下图所示:
图47 OB121
调用MODBUS TCP指令(通信---通信处理器---MODBUS TCP---MODBUSCP),填写参数。
为了在通信故障时查找原因,编写程序段2捕获错误代码。
图48 调用“MODBUSCP”指令
创建启动组织块OB100(名称COMPLETE RESTART),语言为“STL”,打开该OB块,置位初始化位输入管脚寄存器,如图所示:
图49 初始化“MODBUSCP”指令
按照如下设置,使能服务器端,并使用ModScan32建立连接
图50 建立和客户端的连接
示例1:客户端读写服务器【 线圈寄存器 】,偏移量0,长度为10的数据
图51 通信测试示例
示例2:客户端读取服务器【 数字量输入寄存器 】,偏移量0,长度为10的数据
图52 通信测试示例
示例3:客户端读写服务器【 保持寄存器 】,偏移量0,长度为10的数据
图53 通信测试示例
示例4:客户端读取服务器【 模拟量输入寄存器 】,偏移量0,长度为10的数据
图54 通信测试示例