S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门

2018年6月27日15:41:25 发表评论 603 阅读

基于 S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门(更新版本 V2.6)

关键字:S7-300/400,带集成 PN 口的 CPU, Modbus TCP,Mobus TCP PN-

CPU V2.6 软件包

目录

Modbus TCP 通讯概述 3

通讯所使用的以太网参考模型 3

Modbus TCP 数据帧 3

Modbus TCP 使用的通讯资源端口号 4

Modbus TCP 使用的功能代码 4

Modbus TCP 通讯应用举例 5

SIMATIC S7-300/400 系统 Modbus/TCP 通讯概述 6

S7-300/400 系统 Modbus/TCP 通讯产品概述 6

“ModbusTCP PN-CPU V2.6”软件选项包使用概述 7

“ModbusTCP PN-CPU V2.6”块库使用说明 7

“ModbusTCP PN-CPU V2.6”选项包硬件和软件需求 8

“ModbusTCP PN-CPU V2.6”软件选项包与 step7 集成概况 9

配置 S7-400 单站系统通过 CPU 集成 PN 口作为 Server 进行 Modbus

TCP 通讯 11

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

S7-400 系统及 Modscan32 软件组态 12

通讯测试 18

配置 S7-400 单站系统通过 CPU 集成 PN 口作为 Client 进行 Modbus

TCP 通讯 24

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

S7-400 单站系统与 ModSim32 软件组态 24

通讯测试 27

“ModbusTCP PN-CPU V2.6” 软件包通讯使用总结及相关注意事项 30

“ModbusTCP PN-CPU V2.6” 软件包授权 32

读取 IDENT_CODE 32

通过拨打西门子授权服务中心申请注册码 REG_KEY 34

通过网站申请注册码 REG_KEY 35

使用注册码 REG_KEY 38

附表一 CPU 集成 PN 口进行 Modbus TCP 通讯 FB 输出常见故障代码及处

理 39

Modbus TCP 通讯概述

MODBUS/TCP 是简单的、中立厂商的用于管理和控制自动化设备的 MODBUS 系列通讯协议的派生产品,显而易见,它覆盖了使用 TCP/IP 协议的“Intranet”和“Internet”环境中

MODBUS 报文的用途。协议的最通用用途是为诸如 PLC’s,I/O 模块,以及连接其它简单域总线或 I/O 模块的网关服务的。

MODBUS/TCP 使 MODBUS_RTU 协议运行于以太网,MODBUS TCP 使用 TCP/IP 和以太网在站点间传送 MODBUS 报文,MODBUS TCP 结合了以太网物理网络和网络标准

TCP/IP 以及以 MODBUS 作为应用协议标准的数据表示方法。MODBUS TCP 通信报文被封装于以太网 TCP/IP 数据包中。与传统的串口方式,MODBUS TCP 插入一个标准的

MODBUS 报文到 TCP 报文中,不再带有数据校验和地址。

通讯所使用的以太网参考模型

Modbus TCP 传输过程中使用了 TCP/IP 以太网参考模型的 5 层: 第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容第二层:数据链路层,格式化信号到源/目硬件址数据帧

第三层:网络层,实现带有 32 位 IP 址 IP 报文包

第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度第五层:应用层,Modbus 协议报文

Modbus TCP 数据帧

Modbus 数据在 TCP/IP 以太网上传输,支持 Ethernet II 和 802.3 两种帧格式,Modbus

TCP 数据帧包含报文头、功能代码和数据 3 部分,MBAP 报文头(MBAP、Modbus Application Protocol、Modbus 应用协议)分 4 个域,共 7 个字节,如图 1 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-1

图 1: MODBUS TCP 报文

由于使用以太网 TCP/IP 数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在 MODBUS 应用协议报文头中。

Modbus TCP 使用的通讯资源端口号

在 Modbus 服务器中按缺省协议使用 Port 502 通信端口,在 Modbus 客户器程序中设置任意通信端口,为避免与其他通讯协议的冲突一般建议 2000 开始可以使用。

Modbus TCP 使用的功能代码

按照使用的通途区分,共有 3 种类型分别为:

公共功能代码:已定义好功能码,保证其唯一性,由 Modbus.org 认可;

用户自定义功能代码有两组,分别为 65~72 和 100~110,无需认可,但不保证代码使用唯一性,如变为公共代码,需交 RFC 认可;

保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。按照应用深浅,可分为 3 个类别:

类别 0,客户机/服务器最小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器

(fc.16)。

类别 1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。

类别 2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)。

Modbus TCP 通讯应用举例

Copyright  Siemens AG Copyright year All rights reserved

在读寄存器的过程中,以 Modbus TCP 请求报文为例,具体的数据传输过程如下:

Modbus TCP 客户端实况,用 Connect()命令建立目标设备 TCP 502 端口连接数据通信过程;

准备 Modbus 报文,包括 7 个字节 MBAP 内请求;

使用 send()命令发送;

同一连接等待应答;

同 recv()读报文,完成一次数据交换过程;

当通信任务结束时,关闭 TCP 连接,使服务器可以为其他服务。

SIMATIC S7-300/400 系统 Modbus/TCP 通讯概述

Copyright  Siemens AG Copyright year All rights reserved

S7-300/400 系统 Modbus/TCP 通讯产品概述

通过 SIMATIC S7 和第三方设备的建立 MODBUS/TCP 通信时按照产品使用分单站和冗余系统,分为通过以太网通讯模块 CP 和 CPU 的集成 PN 口两种情况。

通过以太网通讯模块 CP343-1 或 CP443-1:

在 S7 控制器通过外部 CP343-1 或 CP443-1 和第三方设备间建立 Modbus/TCP 连接时需要软件选项包"ModbusTCP CP", 订货号为 2XV9450-1MB00 ,单授权(仅对一个 CPU 有效),最新的版本为 V4.3,支持功能代码 1、2、3、4、5、6、15 和 16,功能块库及订货号如下图 2 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-2

图 2:软件包”ModbusTCP CP V4.3”

通过 CPU 集成的 PN 接口:

在 S7 控制器通过 CPU 集成 PN 接口和第三方设备间建立 Modbus/TCP 连接时需要产品软件选项包"ModbusTCP PN ",订货号为 2XV9450-1MB02,最新版本 V2.6, 单授权(仅对一个 CPU 有效),支持功能代码 1、2、3、4、5、6、15 和 16,对 S7-300 和 S7-400 集成

PN 接口的 CPU 都适用,功能块库及订货号如下图 3 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-3

图 3:软件包”ModbusTCP PN-CPU V2.6”

通过 S7-400H 冗余系统的 CP443-1 接口:

通过 S7-400H 冗余系统的 CP443-1 建立第三方设备的 MODBUS/TCP 通信时需要产品软件选项包"Modbus/TCP Redundant ",订货号为 2XV9450-1MB11,最新版本 V2.1,可用于

S7-400H 或者 S7-400 单 CPU 带两个 CP443-1,支持功能代码 1、2、3、4、5、6、15 和

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-4 16,功能块库及订货号如下图 4 所示:

图 4: 软件包“Modbus/TCP Redundant”

通过 S7-400H 集成的 PN 接口:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-5 通过 S7-400H 集成的 PN 接口建立第三方设备的 MODBUS/TCP 通信时需要产品软件选项包"Modbus/TCP PN CPU Redundant",订货号为 6AV6 676-6MB10-0AX0,最新版本V1.0,可用于 S7-400H 或者 S7-400 单 CPU,支持功能代码 1、2、3、4、5、6、15 和16,功能块库及订货号如下图 5 所示:

图 5: 软件包“Modbus/TCP PN CPU Redundant”

“ModbusTCP PN-CPU V2.6”软件选项包使用概述

“ModbusTCP PN-CPU V2.6”块库使用说明

该功能块库可以用于 S7-300/400 单站系统或 ET200S 带 CPU 的接口模块通过 CPU

的集成 PN 口进行 ModbusTCP 通讯。

由于需要在 SIMATIC 站与其他通讯伙伴之间建立 TCP 连接用于 Modbus 通讯,而对于 CPU 的集成 PN 口来说使通过 Open IE(开放式以太网通讯)的方式来建立 TCP 连接, 因

此需要调用 SIMATIC S7 标准功能块,包括 FB63(TSEND)、FB64(TRCV)、FB65(TCON)、

Copyright  Siemens AG Copyright year All rights reserved

FB66(TDISCON)完成 TCP 的连接管理和数据通讯。

需要注意的是对于用于 Modbus TCP 的功能块 FB63/64/65/66 有一定的版本要求如下:

FB63(TSEND) V2.1 或更高

FB64(TRCV) V2.2 或更高

FB65(TCON) V2.4 或更高

FB66(TDISCON) V2.1 或更高

通过 S7-CPU 的 PROFINET 接口 进行 Modbus TCP 通信时,需要使用通信块 FB65

"TCON"、FB66 "TDISCON"、FB63 "TSEND" 和 FB64 "TRCV",要进行 Modbus TCP 通

信,必须在数据块中为每个连接指定相应的参数,因此通过 Modbus TCP Wizard 向导软件,可以非常便捷地指定各连接的参数,通过 Modbus TCP Wizard ,只需指定各连接类型所需的相应参数,之后,该向导将包含有连接描述的所有参数的 DB 导 入到 STEP 7 项目中,向导的安装界面如下图 6 所示,另外通过软件包安装集成到 Step7 后也有参数 DB,具体可以根据实际的项目情况来进行调整,详细地内容将在下面的配置章节中详细描述。

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-6

图 6: Modbus TCP Wizard 起始界面关于 Modbus TCP Wizard 的相关信息及下载可以参考以下连接: http://support.automation.siemens.com/CN/view/zh/31535566

“ModbusTCP PN-CPU V2.6”选项包硬件和软件需求

软件需求:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-7

图 7:“ModbusTCP PN-CPU V2.6”软件包软件需求

“ModbusTCP PN-CPU V2.6”软件选项包与 step7 集成概况

下面章节将介绍如何使用软件选项包“ModbusTCP PN-CPU V2.6 ”的功能块库配置S7-300/400 单站系统通过 CPU 的集成 PN 口与第三方模拟软件进行 Modbus/TCP 进行通讯的详细步骤,实际上当将软件选项包安装完集成到 Step7 时,可以在 Step7 安装文件的相应目录中找到块库、例程、英文手册,如下图 8~10 所示,在实际的项目调试过程中由于例子程序的各项功能比较完善,因此可以直接使用例子程序根据项目的实际情况修改相应的参数即可,可以节省大量的参数设置时间,以下主要描述了使用软件选项包” ModbusTCP PN- CPU V2.6"配置 S7-300/400 站基于 CPU 集成 PN 口进行 Modbus TCP 通讯的详细配置和编程步骤。

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-8

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-9 图 8: 块库、例程、英文手册和软件注册的文件夹位置

图 9:例程(注:当找不到例程时可以通过”Browse..”按钮来进行查找)

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-10

图 10:功能块库(注:当找不到块库时可以通过”Browse..”按钮来进行查找)

配置 S7-400 单站系统通过 CPU 集成 PN 口作为 Server 进行 Modbus TCP

Copyright  Siemens AG Copyright year All rights reserved

通讯

下面以 S7-400 单站系统及 Modscan32 软件为例,详细介绍如何将 S7-400 单站系统通过

CPU 集成 PN 口配置为 Server,Modscan32 为 Client 进行 Modbus TCP 通讯,下图 11 为服务器功能块库的程序结构及各功能块完成的功能:

图 11:服务器功能块库程序结构

注:Modscan32 软件可以从网上免费下载得到,本例中使用的版本为 V7.0 版,由于各版本的功能不尽相同,因此需要注意版本问题。

例子中使用的硬件设备及软件本例中所用的硬件设备如下表:

名称 数量 订货号
S7-400 电源模块 PS 407 10A 1 6ES7407-0KA01-0AA0
S7-400 CPU414-3PN/DP 1 6ES7414-3EM05-

0AB0(V5.2)

S7-400 机架 1 6ES7400-1JA00-0AA0
网线 若干
笔记本电脑 1

所用到软件如下表:

表 1:服务器硬件清单

Copyright  Siemens AG Copyright year All rights reserved

名称 订货号
STEP7 V5.5 组态编程软件 英文版
“ ModbusTCP PN-CPU V2.6” 软件选项包 2XV9450-1MB02
Modscan32 V7.0

表 2:服务器软件清单

S7-400 系统及 Modscan32 软件组态

打开 Step7 软件,新建一个工程项目文件,命名为“M_TCP_CPU_V26 (Server)”, 在项目下插入一个 S7-400 站,如下图 12 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-12

图 12:新建 S7-400 Station

双击插入的 SIMATIC 400 Station 的“Hardware”,打开硬件组态,在硬件组态界面下分别插入机架,电源 PS407、CPU414-3PN/DP,本例中将 CPU 的 PN 口 IP 地址设为

192.168.70.2,如下图 13 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-13

图 13:硬件组态并设置 PN 接口的 IP 地址

硬件组态完成后,编译保存,并将例程站点“SIMATIC 400(Server)”中的程序

(System data 不需要拷贝)拷贝到该项目中。

由于需要在 SIMATIC 站与其他通讯伙伴之间建立 TCP 连接用于 Modbus 通讯,而对于

CPU 的集成 PN 口来说须通过 Open IE(开放式以太网通讯)的方式来建立 TCP 连接, 通过S7-CPU 的 PROFINET 接口 进行 Modbus TCP 通信时,需要使用通信块 FB65 "TCON"、FB66 "TDISCON"、FB63 "TSEND" 和 FB64 "TRCV",要进行 Modbus TCP 通信,必须在数据块中为每个连接指定相应的参数,相应得参数在程序中主要由

DB2“MODBUS_PARAM“来完成初始化,其中各参数的含义如下图 14、15 所示:

Copyright  Siemens AG Copyright year All rights reserved

通过OPEN IE方式创建的TCP连接的相关参数设置

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-14

图 14:DB2“MODBUS_PARAM“的 TCP 连接参数设置部分关于 DB2“MODBUS_PARAM”的 TCP 连接参数含义如下表 3 所示:

类型 参数 含义
OPEN IE

通讯参数

block_length 固定值W#16#40
Id 连接ID,用于FB63/64/65/66
connection_type 取决于CPU类型,用于FB65(TCON)

TCP(兼容模式): CPU315、317<= FWV2.3

W#16#01;

TCP:CPU315,317>= FW V2.4、IM151-8PN/DP CPU、

CPU314C、CPU319、CPU412、CPU414与CPU416 W#16#11

active_est 主动或被动连接:

S7作Client时为主动 TRUE

S7作Server时为被动 FALSE

local_device_id 取决于CPU类型:

IM151-8PN/DP B#16#1

CPU314C、315、317 B#16#2

Copyright  Siemens AG Copyright year All rights reserved

CPU319 B#16#3

CPU412、414、416 B#16#5

local_tsap_id_len local_device_id的长度: 主动连接时 W#16#0

被动连接时 W#16#2

rem_subnet_id_len 未使用
rem_staddr_len 参数rem_staddr的长度: 未具体定义连接 B#16#0

有具体连接 B#16#4

rem_tsap_id_len rem_tsap_id的长度: 主动连接时 W#16#2

被动连接时 W#16#0

next_staddr_len 通讯接口类型选择:

通过外部CP模块: 非0的其它值通过CPU的集成PN 口: W#16#0

local_tsap_id 本地连接TSAP号,与参数connection_type有关:

connection_type= B#16#01时

local_tsap_id[1] 本地连接端口号的低字节[16进制]

local_tsap_id[2] 本地连接端口号的高字节[16进制] local_tsap_id[3-16] B#16#00

connection_type= B#16#11时

local_tsap_id[1] 本地连接端口号的高字节[16进制]

local_tsap_id[2] 本地连接端口号的低字节[16进制] local_tsap_id[3-16] B#16#00

rem_subnet_id 未使用
rem_staddr 通信伙伴的IP地址,与参数connection_type有关,以

192.168.0.1为例:

1)connection_type= B#16#01时rem_staddr[1]= B#16#01(1), rem_staddr[2]= B#16#00(0) rem_staddr[3]= B#16#A8(168) rem_staddr[4]= B#16#C0(192)

rem_staddr[5-6]=B#16#00(为IPV6预留)

Copyright  Siemens AG Copyright year All rights reserved

2)connection_type= B#16#11时rem_staddr[1]= B#16#C0(192) rem_staddr[2]= B#16#A8(168) rem_staddr[3]= B#16#00(0) rem_staddr[4]= B#16#01(1)

rem_staddr[5-6]=B#16#00(为IPV6预留)

rem_tsap_id 远程连接TSAP号,与参数connection_type有关:

connection_type= B#16#01时

local_tsap_id[1] 本地连接端口号的低字节[16进制]

local_tsap_id[2] 本地连接端口号的高字节[16进制] local_tsap_id[3-16] B#16#00

connection_type= B#16#11时

local_tsap_id[1] 本地连接端口号的高字节[16进制]

local_tsap_id[2] 本地连接端口号的低字节[16进制] local_tsap_id[3-16] B#16#00

next_staddr CP的机架号和槽号,当使用CPU的PN口时为 B#16#00

表 3: DB2“MODBUS_PARAM”的 TCP 连接参数含义

客户端/服务器选择

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-15 S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-16

与功能码相关,单写模式

建立连接模式(ENQ_ENR/PLC启动后)选

可定义8个数据区,支持功能码1、2、3、4、5、6、

15、16

IN:含义如下

Data_type_x:预定义的 Modbus数据类型

db_x: 数据块号

start_x: modbus寄存器或比特值起始地址,对应DB从0字节开始

消息内部存储区接收数据存储区

图 15:DB2“MODBUS_PARAM”的 Modbus 参数设置部分

3.3 通讯测试

由于“ ModbusTCP PN-CPU V2.6”选项包支持功能码 FC1,2,3,4,5,6,15,16, 不同的功能码测试过程中类似,因此下面以 FC03(读写保持寄存器)为例来说明通讯测试的整个过程,对于其他功能码的测试将不再重复描述,对于 Modbus 的数据类型可参考下表 4:

基本表 对象类型 访问类型 注释
离散量输入 单个位 只读 I/O系统可提供这种类型数据
线圈 单个位 读写 通过应用程序可改变这种类型数据
输入寄存器 16位字 只读 I/O系统可提供这种类型数据
保持寄存器 16位字 读写 通过应用程序可改变这种类型数据

表 4:Modbus 数据类型

由于服务器主功能块 FB102“MODBUSPN”的参数需要初始化,因此分别在 OB100 及

OB1 中调用 FB102,在 OB100 中调用 FB102 完成相关参数的初始化,FB102 的管脚分布如下图 16 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-17

IN:连接ID号

IN:Modbus TCP参数化DB

IN:连接超时时间

IN:连接断开

OUT:是否授权

OUT:连接是否建立

OUT:错误信号

OUT:连接状态错误代码

OUT:授权码

IN/OUT:数据类型

IN/OUT:寄存器长度

IN/OUT:读写使能

IN:接收超时响应时间,最短20ms

IN:请求/使能信号

IN:授权码

OUT:正在作业

OUT:作业完成无错误

OUT:modbus报文错误代码

OUT:故障名称

IN/OUT:单元标识符

IN/OUT:Modbus起始地址

IN/OUT:传输标识符

图 16: FB102“MODBUSPN”的管脚参数定义

Copyright  Siemens AG Copyright year All rights reserved

注意:在图 16 中已经填写的参数不需要初始化,在 OB1 调用赋值;而未填写的参数需要初始化,在 OB100 中调用完成。

打开 Modscan32 软件,在“Connection--->connect”中打开连接属性对话框,连接接口选择“Remote TCP/IP Server”,IP Address 分别填入 CPU 的 IP 地址 192.168.70.2,Service 为远程服务器的端口 502,在协议的选择对话框中可以定义传输模式、通讯超时响应时间, 报文发送间隔及允许写多个保持寄存器等,这里分别保持缺省设置即可,如下图 17 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-18

图 17:对应 TCP 通讯的 Modscan32 连接窗口

下载硬件组态及程序到 CPU 中,将 DB2“MODBUS_PARAM”的参数“server_client”使能为 1,在 Modscan32 的“Set up->Data Definition”中设置数据扫描周期、寄存器连接类型、起始地址、长度等,如下图 18 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-19

图 18:Modscan32 中 Modbus 数据参数定义

由于 Modbus 的内部地址编排时基于数据链路层和应用层有一定的映射关系,因此

Modbus 的地址与 SIMATIC 中的 DB 块的地址时按照一定的地址映射关系来相对应,这样造成了 DB 块中有一定的地址偏移量,在本例中假设数据区的定义如下图 19 所示,其 DB 偏移量、Modbus 物理编址、应用层编址如下图 20 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-20

图 20: DB 偏移量、Modbus 物理编址、应用层编址对应关系

在 Step7 的项目程序中新建一个变量监控表,插入需要监控的参数和数据区变量,可以看到 Modscan32 软件与 CPU414-3PN/DP 的数据通讯已经建立起来了,双方可以进行正常的保持寄存器数据读写操作,如下图 21 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-21

图 21:通讯连接建立

配置 S7-400 单站系统通过 CPU 集成 PN 口作为 Client 进行 Modbus TCP

通讯

下面以 S7-400 单站系统及 ModSim32 软件为例,详细介绍如何将 S7-400 单站系统 CPU 的集成 PN 口配置为 Client,ModSim32 为 Server 进行 Modbus TCP 通讯,由于客户端和服务器模式均使用相同的功能块,因此客户端功能块库的程序结构及各功能块完成的功能可以参考图 11。

例子中使用的硬件设备及软件本例中所用的硬件设备如下表:

名称 数量 订货号
S7-400 电源模块 PS 407 10A 1 6ES7407-0KA01-0AA0
S7-400 CPU414-3PN/DP 1 6ES7414-3EM05-

0AB0(V5.2)

S7-400 机架 1 6ES7400-1JA00-0AA0
网线 若干
笔记本电脑 1

所用到软件如下表:

表 5:客户端硬件清单

Copyright  Siemens AG Copyright year All rights reserved

名称 订货号
STEP7 V5.5 组态编程软件 英文版
“ ModbusTCP PN-CPU V2.6” 软件选项包 2XV9450-1MB02
ModSim32 免授权版本 可从网上免费获取

表 6:客户端软件清单

S7-400 单站系统与 ModSim32 软件组态

打开 Step7 软件,新建一个工程项目文件,命名为“M_TCP_CPU_V26(Client)”, 在项目下插入一个 S7-400 站,如下图 22 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-22

图 22:新建 S7-400 Station

双击插入的 SIMATIC 400 Station 的“Hardware”,打开硬件组态,在硬件组态界面下分别插入机架,电源 PS407、CPU414-3PN/DP,本例中将 CPU 的 PN 口 IP 地址设为

192.168.70.2,如下图 23 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-23

图 23: 硬件组态并设置 CPU 的 IP 地址

由于需要在 SIMATIC 站与其他通讯伙伴之间建立 TCP 连接用于 Modbus 通讯,而对于

CPU 的集成 PN 口来说须通过 Open IE(开放式以太网通讯)的方式来建立 TCP 连接, 通过S7-CPU 的 PROFINET 接口 进行 Modbus TCP 通信时,需要使用通信块 FB65 "TCON"、FB66 "TDISCON"、FB63 "TSEND" 和 FB64 "TRCV",要进行 Modbus TCP 通信,必须在数据块中为每个连接指定相应的参数,相应得参数在程序中主要由

DB2“MODBUS_PARAM”来完成初始化,关于 DB2“MODBUS_PARAM”各参数的含义请参见 3.2 章节中的图 14、15 说明。

硬件组态完成后,编译保存,并将例程站点“SIMATIC 400(Client)”中的程序(System

data 不需要拷贝)拷贝到该项目中。打开 DB2“MODBUS_PARAM”并切换到数据视图, 修改需要访问的 Modbus TCP server 的 IP 地址和端口号,本例中作为服务器的电脑 IP 为192.168.70.245,端口号为 502;设置方式如下图 24 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-24

图 24:S7-400 单站系统做客户端时不同的功能码的参数定义

4.3 通讯测试

由于“ModbusTCP PN-CPU V2.6”选项包支持功能码 FC1,2,3,4,5,6,15,16, 不同的功能码测试过程中类似,因此下面同样以 FC03(读写保持寄存器)为例来说明通讯测试的整个过程,对于其他功能码的测试将不再重复描述。

需要说明的是由于客户端功能块需要定义具体的功能码,而主功能块FB102“MODBUSPN”并没有直接的管脚来定义功能码,而是由 DB2“MODBUS_PARAM”中的两个参数“DATA_TYPE”和 “single-write”共同决定,详细情况如下图 25 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-25

图 25:S7-400 单站系统做客户端时不同的功能码的参数定义

由于客户端和服务器均使用相同的功能块 FB102“MODBUSPN”的参数需要初始化,因此分别在 OB100 及 OB1 中调用 FB102,在 OB100 中调用 FB102 完成相关参数的初始化,

FB102 的管脚分布参见 3.3 章节中图 16 的说明。

打开 ModSim32 软件,在“Connection--->connect”中打开连接属性对话框,连接接口选择“Modbus/TCP svr”,TCP/IP Server Port 为本地服务器的端口 502,如下图 26 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-26

图 26:ModSim32 中设置端口号

下载硬件组态及程序到 CPU 中,将 DB2“MODBUS_PARAM”的参数“server_client”使能为 0,给参数 ENQ_ENR 发送脉冲信号;在打开的 ModSim32 软件窗口设置寄存器连接类型、起始地址、长度等,如下图 27 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-27

图 27: ModSim32 中 Modbus 数据参数定义

关于 SIMATIC 中 DB 偏移量、Modbus 物理编址、应用层编址对应关系请参考本文中

3.3 章节图 20 的说明。

在 Step7 的项目程序中新建一个变量监控表,插入需要监控的参数和数据区变量,可以看到 ModSim32 软件与 CPU414-3PN/DP 的数据通讯已经建立起来了,双方可以进行正常的保持寄存器数据读写操作(读写权限由参数"WRITE_ READ"决定),如下图 28 所示:

Copyright  Siemens AG Copyright year All rights reserved

图 28:S7-400 单站系统作为客户端与 ModSim32 软件通讯

29

“ModbusTCP PN-CPU V2.6” 软件包通讯使用总结及相关注意事项

Copyright  Siemens AG Copyright year All rights reserved

由于是通过 PC 测试软件模拟第三方设备与 SIMATIC CPU 的集成 PN 口进行 Modbus

TCP 通讯,因此在实际的第三方设备与 CPU 的集成 PN 口进行通讯时需要注意以下几点:

由于订货号 2XV9450-1MB02 程序中会占用 CPU 较大的装载和工作存储区,因此对于性能比较低特别是 S7-300 的低端 CPU 进行通讯时必须考虑一定的富余量。

对于 SIMATIC S7,参数 DB_x 的数据区建议使用不同的 DB 块,使用同一个 DB 的不同地址区会造成地址编排混乱,另外参数 Start_x 与 END_x 参数不能出现地址叠加情况。

第三方设备的数据区与 SIMATIC S7 的数据 DB 块的地址对应关系可以先按照第三方的数据区域 Modbus 地址的偏移关系之后计算相应的偏移量。

4)建议使用项目中的样例程序,只须修改连接 ID,定义通讯双方的 IP 地址、端口号及相应的数据存储区等,能减少编程量,只须把样例程序放到一个单独的 FC 块中即可,样例程序中定义了足够的数据区,连接成功及错误次数指示等。

Modbus TCP 每一包的数据最多只能发送 125 个寄存器或 2000 个比特位,超过该范围必须进行分包处理。

S7-300/400 作为 Client 能与多少个 Server 建立通讯或者作为 Server 时能与多少个

Client 通讯取决于产品所支持的 TCP 连接数,Modbus/TCP 协议并没有对此进行约束和限制。

7)如果使用 SIMATIC S7 作为 Modbus 服务器,那么一些 CPU 的可用端口号会受到限制, 以下端口号可用于本地端口,如下图 29 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-29

未经授权的 Modbus TCP 软件可用于测试和学习,不允许用于商业行为;未经授权的软件测试时 CPU 的 INTF 指示灯红色闪烁,并在 CPU 故障缓冲区生成错误信息;同时, Modbus TCP 功能块报错,如图 30、31 所示:

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-30

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-31 图 30: CPU 诊断缓冲区报错

图 31: Modbus TCP 功能块报错 A090

每个 CPU 都需要对功能块 MODBUSPN 进行授权。授权有两个步骤:读取

IDENT_CODE 和申请注册码 REG_KEY。且在 CPU 中必须调用 OB121。

读 取 IDENT_CODE 1、下载程序并将 CPU 切换到 RUN 模式;

2、打开 MODBUSPN(FB102)的背景块 DB102,确认 IDENT_CODE 的偏移地址为 54; 如图 32 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-32

图 32: 确认 IDENT_CODE 的偏移地址

3、打开变量监视表,输入 DB102.DBB54 开始的 20 个字节,偏移地址 56 开始的 18 个字符即为 IDENT_CODE,监控如图 33 所示:

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-33

图 33: 确认 IDENT_CODE

4、按上图方式,获取 IDENT_CODE 和软件包装上的 License-No,并按照章节 6.2 和 6.3

的描述步骤申请注册码。

通过拨打西门子授权服务中心申请注册码 REG_KEY

授权中心联系方式:010-64757575

通过西门子授权服务中心申请注册码时,需要您提供所购买的软件订货号、IDENT_CODE 和软件包装上的 License-No ,如图 33 所示。

 

2、请按如下示例的步骤进行操作(注意:由于步骤 3 搜索出来的参考信息无法解决授权问题,请直接点击“继续”进入步骤 4),如图 35~39 所示。

图 35: 步骤 1

图 36: 步骤 2

36

图 37: 步骤 4

图 38: 步骤 5

37

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-38

Copyright  Siemens AG Copyright year All rights reserved

图 39: 步骤 6

使用注册码 REG_KEY

1、西门子授权中心收到技术支持申请后,将会尽快给您回复邮件;

2、当获取到注册码后,在项目中打开 LICENSE_DB(DB3);

3、通过菜单“View--->Data View”将 DB 块切换到数据视图模式,将获取的 17 位注册码填写到“Actual value”中,如图 40 所示。

Copyright  Siemens AG Copyright year All rights reserved

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-39

图 40: 输入注册码

4、将 LICENSE_DB(DB3)下载到 CPU 中,CPU 的 INTF 指示灯熄灭;并可通过查看MODBUSPN(FB102)的输出引脚 LICENSED 为 true 且不再报 A090 错误代码,确认注册码激活成功,如图 41 所示。

S7-300,400 CPU 集成 PN接口 Modbus TCP 通讯快速入门-40

图 41: 注册码激活成功

附表一 CPU 集成 PN 口进行 Modbus TCP 通讯 FB 输出常见故障代码及处理

STATUS(Hex) 故障原因 处理措施
参数STATUS_MODBUS代码含义
A001 数据块 DB(MODBUS_PARAM)长度

过短

修改 DB 长度
A002 参数 END_x 小于 Start_x 修改参数 END_x 大于 Start_x
A003 Modbus 地址映射的 DB 块的数据区 扩展 DB 区域
长度太短,最低长度: 当 CPU 为 Client 时:
-寄存器: 修改参数 START-ADDRESS 或者
(START_ADDRESS – start_x +

LENGTH) * 2

LENGTH

当 CPU 为 Server 时:

-位 修改客户端的请求
(START_ADDRESS – start_x +

LENGTH) / 8

其他可能的原因:

参数初始化错误(CPU 为 Client 时)

客户端请求报文时错误的地址区域

(CPU 为 Server 时)

A004 仅在 CP 为 Client 时才有此故障: 参数DATA_TYPE及WRITE_READ

设置不匹配,不可能对输入寄存器

或离散输入进行写操作

修改此两个参数
A005 CP 为 Client 时:

参数 LENGTH 设置无效

CP 为 Server 时:

Client 请求的寄存器号无效,合法的数据类型范围如下:

读线圈/离散输入: 1 to 2000

写线圈: 1 to 1968

读寄存器: 1 to 125

写保持寄存器: 1 to 123

CPU 为 Client 时: 修改参数 LENGTH

CPU 为 Server 时:

修改 Client 请求的寄存器地址

A006 CP为客户端时:

数据区1-8中对应的Modbus地址范围(DATA_TYPE,

START_ADDRESS和 LENGTH

)不存在

CP 为服务器时:

客户端请求的报文不正确

CPU 为 Client 时:

修改参数 DATA_TYPE,START-

ADDRESS 或者 LENGTH

CPU 为 Server 时:

修改 Client 请求或修改参数

data_type_x

A007 CPU 为 Client 时:

参数RECV_TIME或CONN_TIME时

间设置无效,RECV_TIME最少

20ms, CONN_

TIME为100ms

修改此两参数
A009 仅在 CPU 为 Client 时发生,标示符

TI 与发送方不一致,连接中断

修正通讯伙伴的报文
A00A CPU 为 Client 时:

Copyright  Siemens AG Copyright year All rights reserved

接收参数 UNIT 与发送的不一致
A00B CPU 为 Client 时:

接收与发送功能码不一致

CPU 为 Server 时: 无效的功能码被接收

CPU 为 Client 时:

检查通讯伙伴的数据报文格式

CPU 为 Server 时:

注意 FB MODBUSPN 仅支持功能码

FC01,02,03,04,05,06、15, 16

A00C 接收到的字节长度与寄存器地址+不

匹配,连接中断

检查通讯伙伴的数据报文格式
A00D 仅在 CPU 为 Client 时发生:

响应的 MODBUS 寄存器地址与请求的不一致

A00E MODBUS 报文报头的长度与寄存器

地址不匹配,FB 将忽略

A00F 非 0 的协议标示符被接收,通讯中断
A010 参数 DB1-DB8 中有重复使用的 DB

修改为单独的 DB
A011 参数 DATA_TYPE 设置无效(范围为

1-4)

修改该参数
A012 数据区参数data_type_1和

data_type_2设置重叠

统一类型的寄存器地址不能有叠加情况
A013 数据区参数 data_type_1 和

data_type_3 设置重叠

A014 数据区参数 data_type_1 和

data_type_4 设置重叠

A015 数据区参数 data_type_1 和

data_type_5 设置重叠

A016 数据区参数 data_type_1 和

data_type_6 设置重叠

A017 数据区参数 data_type_1 和

data_type_7 设置重叠

A018 数据区参数 data_type_1 和

Copyright  Siemens AG Copyright year All rights reserved

data_type_8 设置重叠
A019 当参数 data_type_x 设置不为 0

时,db_x 被赋值 0

DB 块号不能为 0
A01A Modbus 报头中错误的长度(1-253

字节有效)

检查通讯伙伴的数据报文格式
A01F FB MODBUSPN 处于无效的连接状

联系产品支持
A023 数据区参数data_type_2和

data_type_3设置重叠

统一类型的寄存器地址不能有叠加情况
A024 数据区参数data_type_2和

data_type_4设置重叠

A025 数据区参数data_type_2和

data_type_5设置重叠

A026 数据区参数data_type_2和

data_type_6设置重叠

A027 数据区参数data_type_2和

data_type_7设置重叠

A028 数据区参数data_type_2和

data_type_8设置重叠

A034 数据区参数data_type_3和

data_type_4设置重叠

A035 数据区参数data_type_3和

data_type_5设置重叠

A036 数据区参数data_type_3和

data_type_6设置重叠

A037 数据区参数data_type_3和

data_type_7设置重叠

A038 数据区参数data_type_3和

data_type_8设置重叠

A045 数据区参数data_type_4和

data_type_5设置重叠

 

A046 数据区参数data_type_4和

data_type_6设置重叠

A047 数据区参数data_type_4和

data_type_7设置重叠

A048 数据区参数data_type_4和

data_type_8设置重叠

A056 数据区参数data_type_5和

data_type_6设置重叠

A057 数据区参数data_type_5和

data_type_7设置重叠

A058 数据区参数data_type_5和

data_type_8设置重叠

A067 数据区参数data_type_6和

data_type_7设置重叠

A068 数据区参数data_type_6和

data_type_8设置重叠

A078 数据区参数data_type_7和

data_type_8设置重叠

A079 参数 ID 在 DB(MODBUS_PARAM)

中未定义

修改参数 ID
A07A 无效的参数 ID(ID 值范围为 1-4095)
A07B 参数 ID 在 DB(MODBUS_PARAM)

中存在 2 次

修改 DB 块 DB(MODBUS_PARAM)
A07C 参数 data_type_x 无效(范围 1-4)
A07D 参数 data_type_1 未定义,

data_type_1 为缺省的使用数据区, 需要定义

A07E 参数 DB_x 与

DB(MODBUS_PARAM)或 FB102

的背景 DB 号冲突

A07F FB102 接口参数 PARAM_DB 错

误,非通讯参数 DB

指定正确的 DB 给接口参数

PARAM_DB

Copyright  Siemens AG Copyright year All rights reserved

A080 数据块 DB(MODBUS_PARAM)更改

但没有执行 CPU 重起

数据块 DB(MODBUS_PARAM)需要初

始化,当更改时需要 CPU 重起

A081 CP 为 Client 且使用 FC05 功能码时:

接收的线圈状态与发送不一致

通过抓包工具来分析和修正通讯伙伴的报文
A082 CP 为 Client 且使用 FC06 功能码时:

接收的寄存器值与发送不一致

通过抓包工具来分析和修正通讯伙伴的报文
A083 仅在 CP 为 Client 时:在上一个请求

还没有处理完成时又发送新的请求

等待DONE =TRUE 或 ERROR =

TRUE后再发送新请求

A084 授权码”IDENT_CODE”不能识别 联系产品支持
A085 在授权期间由于无效的写权限导致

发生错误

对于授权DB,确认参数REG_KEY的

结构是否正确

A090 功能块未授权,此为一状态信息, 参数 ERROR 并不会置 1,功能块在未授权情况仍然可以运行而不影

响通讯

针对CPU读出预授权解码,之后按照授权操作向IT4industry.部门索取授权码
A091 收到异常响应码 1(仅在 Client 模

式),连接将终止和重新建立

通讯伙伴不支持请求的报文
A092 收到异常响应码 2(仅在 Client 模式),无效的或不存在的地址请求 确认参数LENGTH 或

START_ADDRESS

是否正确

A093 收到异常响应码 3(仅在 Client 模式) 通讯伙伴无法执行报文接收(例如请求

长度不支持等)

A094 收到异常响应码 4(仅在 Client 模式) 通讯伙伴无法执行报文接收
A095 收到未知的异常响应码(仅在 Client

模式)

通过抓包工具来分析和修正通讯伙伴

的报文

参数STATUS_CONN代码含义
A100 CONN_TIME 与 RECV_TIME 时间

超出,RECV_TIME 超出时连接终止

检查连接参数
A101 参数 TDISCON 的监控时间超出 联系产品供应商

Copyright  Siemens AG Copyright year All rights reserved

SFC6/20 故障代码
7xxx 请参考 SIMATIC 的在线帮助 通过在线帮助 SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code evaluation 可以查到

相关帮助信息

8xxx 请参考 SIMATIC 的在线帮助 通过在线帮助 SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code evaluation 可以查到

相关帮助信息

FB63,64,65,66 故障代码
7xxx 请参考 SIMATIC 的在线帮助 通过在线帮助 SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code evaluation 可以查到

相关帮助信息

8xxx 请参考 SIMATIC 的在线帮助 通过在线帮助 SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code evaluation 可以查到

相关帮助信息

SFC24 故障代码
80A1 DB=0 或超出了 CPU 允许的范围 选择有效的 DB
80B1 DB 块在 CPUU 中不存在 DB_x 参数中的 DB 块必须创建并下载

到 CPU 中

80B2 DB 块被创建为“Unlinked”类型 DB 块不能创建为“Unlinked”类型
weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: