2024年4月23日发(作者:幸寒凝)
10
/CN/view/zh/81015512
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
目录
1 Modbus TCP通讯概述.......................................................................................... 3
1.1通讯所使用的以太网参考模型 ................................................................... 3
1.2 Modbus TCP数据帧 ................................................................................. 3
1.3 Modbus TCP使用的通讯资源端口号 ........................................................ 3
1.4 Modbus TCP使用的功能代码................................................................... 3
1.5 Modbus TCP通讯应用举例 ...................................................................... 4
2 SIMATIC S7-1200 Modbus TCP通讯概述.......................................................... 4
3配置 S7-1200 CPU作为Modbus TCP Server与通信伙伴建立通讯 .................. 5
4配置 S7-1200 CPU作为Modbus TCP Client与通信伙伴建立通讯 .................. 9
2
1 Modbus TCP通讯概述
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯
协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中
MODBUS报文的用途。协议的最通用用途是为诸如PLC’s,I/O模块,以及连接其它简单域
总线或I/O模块的网关服务的.
1.1通讯所使用的以太网参考模型
Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:
第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容
第二层:数据链路层,格式化信号到源/目硬件址数据帧
第三层:网络层,实现带有32位IP址IP报文包
第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度
第五层:应用层,Modbus协议报文.
1.2 Modbus TCP数据帧
Modbus数据在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP
数据帧包含报文头、功能代码和数据3部分,MBAP报文头(MBAP、Modbus Application
Protocol、Modbus应用协议)分4个域,共7个字节.
1.3 Modbus TCP使用的通讯资源端口号
在Moodbus服务器中按缺省协议使用Port 502通信端口,在Modus客户器程序中设置任意
通信端口,为避免与其他通讯协议的冲突一般建议2000开始可以使用.
1.4 Modbus TCP使用的功能代码
按照使用的通途区分,共有3种类型分别为:
1)公共功能代码:已定义好功能码,保证其唯一性,由认可;
2)用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使
用唯一性,如变为公共代码,需交RFC认可;
3)保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。
按照应用深浅,可分为3个类别
1)类别0,客户机/服务器最小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器
(fc.16)。
3
2)类别1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。
3)类别2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通
用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)
1.5 Modbus TCP通讯应用举例
在读寄存器的过程中,以Modbus TCP请求报文为例,具体的数据传输过程如下:
1) Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信
过程
2)准备Modbus报文,包括7个字节MBAP内请求;
3)使用send()命令发送;
4)同一连接等待应答;
5)同recv()读报文,完成一次数据交换过程
6)当通信任务结束时,关闭TCP连接,使服务器可以为其他服务
2 SIMATIC S7-1200 Modbus TCP通讯概述
S7-1200 CPU从Firmware V1.0.2开始,软件 STEP7 V11 SP1版本开始,可以直接调
用Modbus TCP的库指令“MB_CLIENT”和“MB_SERVER”使用实现Modbus TCP通信功
能,如下图1所示:
Picture1:TIA Portal中包含的ModbusTCP块库
下面将分别介绍如何配置S7-1200为Modbus/TCP的Server,Client与通信伙伴建立
通信,测试例程中用到的软硬件如下表1、2所示:
4
名称
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
数量
1
若干
1
Table1:例程中用到的硬件列表
订货号
6ES7 215-1AG31-0XB0
SIMATIC CPU1215C (固件V3.0)
网线
编程器兼软件测试机
名称
SIMATIC STEP7 Prossional V13
Modscan32用于在PC中模拟Modbus Client
Modsim32用于在PC中模拟Modbus Server
Table2:例程中用到的软件列表
订货号
6ES7 822-1AA01-0YA5
3配置 S7-1200 CPU作为Modbus TCP Server与通信伙伴建立通讯
打开TIA Portal V13软件,新建一个项目,在项目中添加CPU1215C,为集成的PN接
口新建一个子网并设置IP地址,本例中为“192.168.70.102”,如下图2所示:
Picture2:新建一个S7-1200项目并配置IP地址
5
在CPU1215C的OB1组织块中添加Modbus TCP Server功能块“MB_SERVER”,
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
软件将提示会为该FB块增加一个背景数据块,本例中为DB1“MB_SERVER_DB”,如下图
3所示:
Picture3:添加“MB_SERVER”功能块
创建一个全局数据块用于匹配功能块“MB_SERVER”的管脚参数
“MB_HOLD_REG”,本例中创建数据块 DB2“Data_block_1”,用于存储保持寄存器的
通信数据,并填写初始值,如下图4所示:
Picture4:创建数据块 DB2
需要注意的是该数据块必须为非优化数据块(支持绝对寻址),在该数据块的“属性”中
不勾选“优化的块访问”选项,如下图5所示:
6
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
Picture5:修改DB块属性
功能块“MB_SERVER”的其它管脚参数如下表3所示:
“MB_SERVER
”的管脚参数
DISCONNECT
CONNECT_ID
IP_PORT
管脚
声明
输入
数据类型含义
0:且连接不存在时,则可启动建立被动连接。
1:且连接存在时,则断开连接。
唯一标识PLC中的每个连接。
默认值=502:IP端口号,将监视该端口是否有来自
Modbus客户端的连接请求。
指向MB_SERVER Modbus保持寄存器的指针:必须是
一个标准的全局DB或M存储区地址。
0:没有新数据
1:从 Modbus客户端写入的新数据
0:没有读取数据
1:从 Modbus客户端读取的数据
MB_SERVER执行因错误而终止后,ERROR位将保持
为 TRUE一个扫描周期时间。
通信状态信息,用于诊断;STATUS参数中的错误代码
BOOL
输入 Uint
输入
输入/
输出
Uint
MB_HOLD_REG
Variant
NDR
输出
Bool
DR
输出
输出
Bool
ERROR
STATUS
输出
Bool
Word
值仅在ERROR = TRUE的一个循环周期内有效。
Table3:功能块“MB_SERVER”的其它管脚参数
7
上面提到保持寄存器是由功能块“MB_SERVER”的管脚参数“MB_HOLD_REG”关
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
联,对于其它数据类型,如线圈、离散输入、模拟量输入等通过功能块均已经与S7-1200的
过程映像区进行了映射,其映射地址对应如下图6所示:
Picture6:S7-1200的Modbus地址映射表
设置完上述各管脚参数后,下载项目到CPU1215C中,打开Modsan32应用程序,下面
以保持寄存器为例介绍通信测试过程。在Modscan32的数据定义界面中设置数据类型为保
持寄存器,并设置Modbus偏移量及长度,建立与CPU1215C集成PN口的通信连接,可以
看到双方可以建立通信连接并进行数据读写,如下图7所示:
Picture 7:通信测试
8
对于其它数据类型,由于与S7-1200CPU的过程映像区进行了映射,其过程类似。
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
使用功能块“MB_SERVER”的一些注意事项:
1)S7-1200 CPU的集成PN口通过功能块“MB_SERVER”支持与多个Modbus客户端的
通信,支持的个数取决于CPU集成PN口所支持的TCP连接数,必须为每一个客户端连接
分别调用一次功能块“MB_SERVER”,其背景数据块、ID、端口号等参数必须唯一。
2)S7-1200 CPU的集成PN口支持多协议,除了运行Modbus TCP协议外,同时可以运行
PROFINET、TCP/IP、S7等协议。
3)S7-1200 CPU的集成PN口可以同时作为Modbus TCP的Server及 Client。
4配置 S7-1200 CPU作为Modbus TCP Client与通信伙伴建立通讯
在上述新建的项目中增加一个CPU1215C的站点,设置PN的IP地址
“192.168.70.102”,之后在CPU1215C的OB1组织块中添加Modbus TCP Client功能块
“MB_CLIENT”,软件将提示会为该FB块增加一个背景数据块,本例中为DB1
“MB_CLIENT_DB”,如下图8所示:
Picture8:插入一个MB_CLIENT功能块
创建一个全局数据块用于匹配功能块“MB_CLIENT”的管脚参数
“MB_DATA_PTR”,本例中为DB2“Data_block_1”,用于存储Modbus通信的数据,
如下图9所示:
9
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
Picture9:创建数据块 DB2
需要注意的是该数据块必须为非优化数据块(支持绝对寻址),在该数据块的“属性”中
不勾选“优化的块访问”选项,如下图10所示:
Picture10:修改DB块属性
对于功能块“MB_CLIENT”的其它参数管脚含义如下表4所示:
10
“MB_CLIENT”
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
管脚
声明
输入
输入
输入
输入
输入
的管脚参数
REQ
DISCONNECT
CONNECT_ID
IP_OCTET_1
IP_OCTET_2
IP_OCTET_3
IP_OCTET_4
IP_PORT
MB_MODE
MB_DATA_ADDR
MB_DATA_LEN
MB_DATA_PTR
DONE
BUSY
数据类型
BOOL
BOOL
Uint
USint
USint
含义
FALSE=无Modbus通信请求
TRUE=请求与Modbus TCP服务器通信
0:且连接不存在时,则可启动建立被动连接。
1:且连接存在时,则断开连接。
唯一标识PLC中的每个连接。
Modbus TCP服务器IP地址:八位字节1
Modbus TCP服务器IP地址:八位字节2
Modbus TCP服务器IP地址:八位字节3
Modbus TCP服务器IP地址:八位字节4
默认值=502:服务器的IP端口号
模式选择:分配请求类型(0=读、1=写)
分配MB_CLIENT访问的数据的起始地址
数据长度:数据访问的位数或字数
指向Modbus数据寄存器的指针: 寄存器缓冲数据进
入Modbus服务器或来自Modbus服务器。 该指针必
须分配一个标准全局DB或一个M存储器地址。
上一请求已完成且没有出错后,DONE位将保持为
TRUE一个扫描周期时间
0:无MB_CLIENT操作正在进行
1:MB_CLIENT操作正在进行
0:无错误
1:出错。出错原因由参数 STATUS指示
指令的详细状态信息
输入 USint
输入
输入
输入
输入
USint
Uint
USint
UDINT
输入 UINT
输入/
输出
输出
输出
Variant
BOOL
BOOL
ERROR
STATUS
输出
输出
BOOL
WORD
Table 4:功能块“MB_CLIENT”的其它管脚参数
对于“MB_MODE”“MB_DATA_ADDR”和“MB_DATA_LEN”参数,其对应关系
如下图11所示:
11
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
Picture11:“MB_MODE”、“MB_DATA_ADDR”和“MB_DATA_LEN”参数对应关系
之后打开上述功能块“MB_CLIENT”的背景数据块,在“MB_UNIT_ID”参数中表示
通信服务器伙伴的从站地址,该地址必须与通信伙伴一致,如下图12所示:
Picture12:在功能块“MB_CLIENT”的背景数据块设置Unit ID
12
设置完上述各管脚参数后,下载项目到CPU1215C中,打开Modsim32应用程序,下
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
面以保持寄存器为例介绍通信测试过程。
在Modsim32的数据定义界面中设置数据类型为保持寄存器,依据功能块
“MB_CLIENT”设置的起始地址“MB_DATA_ADDR”和长度“MB_DATA_LEN”,可以
看到双方可以建立通信连接并进行数据读写,如下图13所示:
Picture13:通信测试
对于其它数据类型,测试过程类似。
使用功能块“MB_CLIENT”的一些注意事项:
1)S7-1200 CPU的集成PN口通过功能块“MB_CLIENT”支持与多个Modbus服务器的通
信,支持的个数取决于CPU集成PN口所支持的TCP连接数,必须为每一个服务器连接需
要分别调用一次功能块“MB_CLIENT”,其背景数据块、ID等参数必须唯一。
2)S7-1200 CPU的集成PN口可以同时作为Modbus TCP的Server及 Client。
13
2024年4月23日发(作者:幸寒凝)
10
/CN/view/zh/81015512
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
目录
1 Modbus TCP通讯概述.......................................................................................... 3
1.1通讯所使用的以太网参考模型 ................................................................... 3
1.2 Modbus TCP数据帧 ................................................................................. 3
1.3 Modbus TCP使用的通讯资源端口号 ........................................................ 3
1.4 Modbus TCP使用的功能代码................................................................... 3
1.5 Modbus TCP通讯应用举例 ...................................................................... 4
2 SIMATIC S7-1200 Modbus TCP通讯概述.......................................................... 4
3配置 S7-1200 CPU作为Modbus TCP Server与通信伙伴建立通讯 .................. 5
4配置 S7-1200 CPU作为Modbus TCP Client与通信伙伴建立通讯 .................. 9
2
1 Modbus TCP通讯概述
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯
协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中
MODBUS报文的用途。协议的最通用用途是为诸如PLC’s,I/O模块,以及连接其它简单域
总线或I/O模块的网关服务的.
1.1通讯所使用的以太网参考模型
Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:
第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容
第二层:数据链路层,格式化信号到源/目硬件址数据帧
第三层:网络层,实现带有32位IP址IP报文包
第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度
第五层:应用层,Modbus协议报文.
1.2 Modbus TCP数据帧
Modbus数据在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP
数据帧包含报文头、功能代码和数据3部分,MBAP报文头(MBAP、Modbus Application
Protocol、Modbus应用协议)分4个域,共7个字节.
1.3 Modbus TCP使用的通讯资源端口号
在Moodbus服务器中按缺省协议使用Port 502通信端口,在Modus客户器程序中设置任意
通信端口,为避免与其他通讯协议的冲突一般建议2000开始可以使用.
1.4 Modbus TCP使用的功能代码
按照使用的通途区分,共有3种类型分别为:
1)公共功能代码:已定义好功能码,保证其唯一性,由认可;
2)用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使
用唯一性,如变为公共代码,需交RFC认可;
3)保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。
按照应用深浅,可分为3个类别
1)类别0,客户机/服务器最小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器
(fc.16)。
3
2)类别1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。
3)类别2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通
用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)
1.5 Modbus TCP通讯应用举例
在读寄存器的过程中,以Modbus TCP请求报文为例,具体的数据传输过程如下:
1) Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信
过程
2)准备Modbus报文,包括7个字节MBAP内请求;
3)使用send()命令发送;
4)同一连接等待应答;
5)同recv()读报文,完成一次数据交换过程
6)当通信任务结束时,关闭TCP连接,使服务器可以为其他服务
2 SIMATIC S7-1200 Modbus TCP通讯概述
S7-1200 CPU从Firmware V1.0.2开始,软件 STEP7 V11 SP1版本开始,可以直接调
用Modbus TCP的库指令“MB_CLIENT”和“MB_SERVER”使用实现Modbus TCP通信功
能,如下图1所示:
Picture1:TIA Portal中包含的ModbusTCP块库
下面将分别介绍如何配置S7-1200为Modbus/TCP的Server,Client与通信伙伴建立
通信,测试例程中用到的软硬件如下表1、2所示:
4
名称
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
数量
1
若干
1
Table1:例程中用到的硬件列表
订货号
6ES7 215-1AG31-0XB0
SIMATIC CPU1215C (固件V3.0)
网线
编程器兼软件测试机
名称
SIMATIC STEP7 Prossional V13
Modscan32用于在PC中模拟Modbus Client
Modsim32用于在PC中模拟Modbus Server
Table2:例程中用到的软件列表
订货号
6ES7 822-1AA01-0YA5
3配置 S7-1200 CPU作为Modbus TCP Server与通信伙伴建立通讯
打开TIA Portal V13软件,新建一个项目,在项目中添加CPU1215C,为集成的PN接
口新建一个子网并设置IP地址,本例中为“192.168.70.102”,如下图2所示:
Picture2:新建一个S7-1200项目并配置IP地址
5
在CPU1215C的OB1组织块中添加Modbus TCP Server功能块“MB_SERVER”,
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
软件将提示会为该FB块增加一个背景数据块,本例中为DB1“MB_SERVER_DB”,如下图
3所示:
Picture3:添加“MB_SERVER”功能块
创建一个全局数据块用于匹配功能块“MB_SERVER”的管脚参数
“MB_HOLD_REG”,本例中创建数据块 DB2“Data_block_1”,用于存储保持寄存器的
通信数据,并填写初始值,如下图4所示:
Picture4:创建数据块 DB2
需要注意的是该数据块必须为非优化数据块(支持绝对寻址),在该数据块的“属性”中
不勾选“优化的块访问”选项,如下图5所示:
6
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
Picture5:修改DB块属性
功能块“MB_SERVER”的其它管脚参数如下表3所示:
“MB_SERVER
”的管脚参数
DISCONNECT
CONNECT_ID
IP_PORT
管脚
声明
输入
数据类型含义
0:且连接不存在时,则可启动建立被动连接。
1:且连接存在时,则断开连接。
唯一标识PLC中的每个连接。
默认值=502:IP端口号,将监视该端口是否有来自
Modbus客户端的连接请求。
指向MB_SERVER Modbus保持寄存器的指针:必须是
一个标准的全局DB或M存储区地址。
0:没有新数据
1:从 Modbus客户端写入的新数据
0:没有读取数据
1:从 Modbus客户端读取的数据
MB_SERVER执行因错误而终止后,ERROR位将保持
为 TRUE一个扫描周期时间。
通信状态信息,用于诊断;STATUS参数中的错误代码
BOOL
输入 Uint
输入
输入/
输出
Uint
MB_HOLD_REG
Variant
NDR
输出
Bool
DR
输出
输出
Bool
ERROR
STATUS
输出
Bool
Word
值仅在ERROR = TRUE的一个循环周期内有效。
Table3:功能块“MB_SERVER”的其它管脚参数
7
上面提到保持寄存器是由功能块“MB_SERVER”的管脚参数“MB_HOLD_REG”关
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
联,对于其它数据类型,如线圈、离散输入、模拟量输入等通过功能块均已经与S7-1200的
过程映像区进行了映射,其映射地址对应如下图6所示:
Picture6:S7-1200的Modbus地址映射表
设置完上述各管脚参数后,下载项目到CPU1215C中,打开Modsan32应用程序,下面
以保持寄存器为例介绍通信测试过程。在Modscan32的数据定义界面中设置数据类型为保
持寄存器,并设置Modbus偏移量及长度,建立与CPU1215C集成PN口的通信连接,可以
看到双方可以建立通信连接并进行数据读写,如下图7所示:
Picture 7:通信测试
8
对于其它数据类型,由于与S7-1200CPU的过程映像区进行了映射,其过程类似。
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
使用功能块“MB_SERVER”的一些注意事项:
1)S7-1200 CPU的集成PN口通过功能块“MB_SERVER”支持与多个Modbus客户端的
通信,支持的个数取决于CPU集成PN口所支持的TCP连接数,必须为每一个客户端连接
分别调用一次功能块“MB_SERVER”,其背景数据块、ID、端口号等参数必须唯一。
2)S7-1200 CPU的集成PN口支持多协议,除了运行Modbus TCP协议外,同时可以运行
PROFINET、TCP/IP、S7等协议。
3)S7-1200 CPU的集成PN口可以同时作为Modbus TCP的Server及 Client。
4配置 S7-1200 CPU作为Modbus TCP Client与通信伙伴建立通讯
在上述新建的项目中增加一个CPU1215C的站点,设置PN的IP地址
“192.168.70.102”,之后在CPU1215C的OB1组织块中添加Modbus TCP Client功能块
“MB_CLIENT”,软件将提示会为该FB块增加一个背景数据块,本例中为DB1
“MB_CLIENT_DB”,如下图8所示:
Picture8:插入一个MB_CLIENT功能块
创建一个全局数据块用于匹配功能块“MB_CLIENT”的管脚参数
“MB_DATA_PTR”,本例中为DB2“Data_block_1”,用于存储Modbus通信的数据,
如下图9所示:
9
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
Picture9:创建数据块 DB2
需要注意的是该数据块必须为非优化数据块(支持绝对寻址),在该数据块的“属性”中
不勾选“优化的块访问”选项,如下图10所示:
Picture10:修改DB块属性
对于功能块“MB_CLIENT”的其它参数管脚含义如下表4所示:
10
“MB_CLIENT”
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
管脚
声明
输入
输入
输入
输入
输入
的管脚参数
REQ
DISCONNECT
CONNECT_ID
IP_OCTET_1
IP_OCTET_2
IP_OCTET_3
IP_OCTET_4
IP_PORT
MB_MODE
MB_DATA_ADDR
MB_DATA_LEN
MB_DATA_PTR
DONE
BUSY
数据类型
BOOL
BOOL
Uint
USint
USint
含义
FALSE=无Modbus通信请求
TRUE=请求与Modbus TCP服务器通信
0:且连接不存在时,则可启动建立被动连接。
1:且连接存在时,则断开连接。
唯一标识PLC中的每个连接。
Modbus TCP服务器IP地址:八位字节1
Modbus TCP服务器IP地址:八位字节2
Modbus TCP服务器IP地址:八位字节3
Modbus TCP服务器IP地址:八位字节4
默认值=502:服务器的IP端口号
模式选择:分配请求类型(0=读、1=写)
分配MB_CLIENT访问的数据的起始地址
数据长度:数据访问的位数或字数
指向Modbus数据寄存器的指针: 寄存器缓冲数据进
入Modbus服务器或来自Modbus服务器。 该指针必
须分配一个标准全局DB或一个M存储器地址。
上一请求已完成且没有出错后,DONE位将保持为
TRUE一个扫描周期时间
0:无MB_CLIENT操作正在进行
1:MB_CLIENT操作正在进行
0:无错误
1:出错。出错原因由参数 STATUS指示
指令的详细状态信息
输入 USint
输入
输入
输入
输入
USint
Uint
USint
UDINT
输入 UINT
输入/
输出
输出
输出
Variant
BOOL
BOOL
ERROR
STATUS
输出
输出
BOOL
WORD
Table 4:功能块“MB_CLIENT”的其它管脚参数
对于“MB_MODE”“MB_DATA_ADDR”和“MB_DATA_LEN”参数,其对应关系
如下图11所示:
11
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
Picture11:“MB_MODE”、“MB_DATA_ADDR”和“MB_DATA_LEN”参数对应关系
之后打开上述功能块“MB_CLIENT”的背景数据块,在“MB_UNIT_ID”参数中表示
通信服务器伙伴的从站地址,该地址必须与通信伙伴一致,如下图12所示:
Picture12:在功能块“MB_CLIENT”的背景数据块设置Unit ID
12
设置完上述各管脚参数后,下载项目到CPU1215C中,打开Modsim32应用程序,下
C
o
p
y
r
i
g
h
t
ã
S
i
e
m
e
n
s
A
G
C
o
p
y
r
i
g
h
t
y
e
a
r
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
面以保持寄存器为例介绍通信测试过程。
在Modsim32的数据定义界面中设置数据类型为保持寄存器,依据功能块
“MB_CLIENT”设置的起始地址“MB_DATA_ADDR”和长度“MB_DATA_LEN”,可以
看到双方可以建立通信连接并进行数据读写,如下图13所示:
Picture13:通信测试
对于其它数据类型,测试过程类似。
使用功能块“MB_CLIENT”的一些注意事项:
1)S7-1200 CPU的集成PN口通过功能块“MB_CLIENT”支持与多个Modbus服务器的通
信,支持的个数取决于CPU集成PN口所支持的TCP连接数,必须为每一个服务器连接需
要分别调用一次功能块“MB_CLIENT”,其背景数据块、ID等参数必须唯一。
2)S7-1200 CPU的集成PN口可以同时作为Modbus TCP的Server及 Client。
13