最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

S7-1200_ModbusTCP_Communication_Getting_Start

IT圈 admin 27浏览 0评论

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

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论