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

S7-200 SMART Modbus TCP 服务器指令

IT圈 admin 27浏览 0评论

2024年4月17日发(作者:卯梦之)

11

/CN/view/zh/xxxxx

Unrestricted

目录

1

2

3

Unrestricted

摘要 ................................................................................................................. 3

MODBUS TCP服务器功能 ............................................................................. 4

Modbus TCP 服务器指令使用示例 ................................................................ 6

3.1

MB_Server指令库安装 ........................................................................... 6

3.2

调用MB_Server指令库 .......................................................................... 6

3.3

MB_Server指令库错误代码 ................................................................... 8

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

1

Unrestricted

摘要

本文用于介绍S7-200 SMART Modbus TCP 服务器指令的使用。

伴随着STEP 7-Micro/WIN SMART V2.2 和S7-200 SMART CPU 固件V2.2的发布,

S7-200 SMART CPU开始支持TCP、ISO-on-TCP和UDP等开放式用户通信。STEP 7-

Micro/WIN SMART V2.2版本软件安装MB_Server指令库后,S7-200 SMART CPU 还

可以支持 Modbus TCP 服务器指令。

每个 MB_Server指令库只能创建一个Mdobus TCP连接,如果一个S7-200 SMART

需要连接多个Modbus TCP 客户端,则需要购买多个名称不同的MB_Server指令

库(例如MB_Server_0,MB_Server_1,MB_Server_2)。

3

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

2 MODBUS TCP服务器功能

Modbus 设备间的数据交换是通过功能码来实现的。S7-200 SMART CPU 调用

MB_Server指令库作为MODBUS TCP服务器时支持功能码见表 1.所示。

表1. MB_Server指令库支持的Modbus功能码

Modbus 地址

00001

0XXXX

00001

0XXXX

10001

1XXXX

10001

1XXXX

30001

3XXXX

30001

3XXXX

40001

4XXXX

40001

4XXXX

注意:当MODBUS TCP客户端使用功能码15 把多个离散量输出点的值写到 S7-

200 SMART CPU 的输出映像寄存器(Q 区)时,输出点的地址必须以字节边界起

始(如 Q0.0 或 Q2.0),并且输出点的数目必须是 8 的整数倍。

S7-200 SMART CPU 作为 Modbus TCP服务器时支持以下 Modbus 地址(与 CPU 地

址的映射关系见表 2.所示):

• 00001 至 00256 是映射到 Q0.0 - Q31.7 的开关量输出线圈。

• 10001 至 10256 是映射到 I0.0 - I31.7 的开关量输入触点。

• 30001 至 30056 是映射到 AIW0 - AIW110 的模拟量输入通道(紧凑型 CPU

除外) 。

• 40001 至 49999 和 400001 至 465536 是映射到 V 存储器的保持寄存器。

表2. Modbus 地址与 S7-200 SMART CPU 地址映射关系

Modbus 地址

00001

00002

00255

00256

10001

S7-200 SMART CPU 地址

Q0.0

Q0.1

Q31.6

Q31.7

I0.0

– 读

– 读

– 写

– 读

– 写

– 读

功能码

1

5

15

2

4

3

6

16

备注

读取单个/多个开关量输出线圈状

写单个开关量输出线圈

写多个开关量输出线圈

读取单个/多个开关量输入触点状

不支持

读取单个/多个模拟量输入通道数

不支持

读取单个/多个保存寄存器数据

写单个保持寄存器数据

写多个保持寄存器数据

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

Unrestricted

4

Unrestricted

10002 I0.1

… …

10255 I31.6

10256 I31.7

30009

AIW16

1

30010 AIW18

… …

30055 AIW108

30056 AIW110

40001

HoldStart

2

40002 HoldStart + 2

… …

4XXXX HoldStart + 2(XXXX -

1)

注意:

AIW16

1

:紧凑型 CPU 不支持模拟量输入;AIW16为第一个扩展模块 EM0 的

起始地址。

HoldStart

2

:MB_Server指令库中的MBS_Connect指令 的 HoldStart 参数用于

定义 V 存储区中保持寄存器的起始地址。

5

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

3

3.1

3.2

Unrestricted

Modbus TCP 服务器指令使用示例

MB_Server指令库安装

1) 打开STEP 7-Micro/WIN SMART V2.2 版本软件,鼠标右键项目树的“库”节点,

并从快捷菜单中选择“打开库文件夹”,如图 1. 所示。

图1.打开库文件夹

2) 将MB_Server指令库添加到打开的STEP 7-Micro/WIN SMART库文件夹中,如

图2. 所示。

图2.添加MB_Server指令库

备注:STEP 7-Micro/WIN SMART库文件夹一般存储路径为

C:UsersPublicDocumentsSiemensSTEP 7-MicroWIN SMARTLib

3) 关闭STEP 7-Micro/WIN SMART库文件夹,然后鼠标右键项目树的“库”节点,

并从快捷菜单中选择“刷新库”。刷新后,您可以看见“MB_Server_0”指

令库已经被添加到项目树的库节点下。

调用MB_Server指令库

MB_Server指令库包含MBS_Connect和MBS_Slave等2个指令。MBS_Connect

指令用于建立或断开Modbus TCP连接;MBS_Slave指令用于处理来自Modbus

TCP客户端的请求,并且该指令必须在每次扫描时执行,以便检查和响应

Modbus 请求。

每个 MB_Server指令库只能创建一个Mdobus TCP连接,如果一个S7-200 SMART

需要连接多个Modbus TCP 客户端,则需要购买多个名称不同的MB_Server指令

库(例如MB_Server_0,MB_Server_1,MB_Server_2)。

1) 在“MAIN”主程序中调用MBS_Connect和MBS_Slave指令,如图 3. 所示。

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

Unrestricted

图3.主程序中调用MB_Server指令库

MBS_Connect指令各个参数定义如下:

• EN 使能:必须保证每一扫描周期都被使能。

• Connect:启动TCP 连接建立操作。

• Disconnect: 断开TCP连接操作。

• ConnID: TCP 连接标识。

注意:Modbus TCP 属于TCP通信,也是开放式用户通信中的一种,所以

ConnID参数不能与其他TCP、ISO-on-TCP、UDP通信相同。

• IPaddr1~IPaddr4: Modbus TCP 客户端的IP地址,IPaddr1 是 IP 地址的最高

有效字节,IPaddr4 是 IP 地址的最低有效字节。如果不指定伙伴 IP ,则

可以设置为0.0.0.0 。

• LocPort: 本地设备上端口号

• MaxHold: 用于设置 Modbus 地址 4xxxx 或 4yyyyy 可访问的 V 存储器中的

字保持寄存器数。

• HoldStart: 间接地址指针,指向 CPU 中 V 存储器中保持寄存器的起始地址。

7

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

3.3

Unrestricted

本例中VW1000 即对于 Modbus 地址 40001 。

• ConnectDone:Modbus TCP连接已经成功建立。

• Busy: 连接操作正在进行时。

• Error: 建立或断开连接时,发生错误。

• Status:如果指令置位 “Error” 输出,Status 输出会显示错误代码。

MB_Server指令库错误代码见3.3章节。

MBS_Slave指令各个参数定义如下:

• EN 使能:必须保证每一扫描周期都被使能。

• Done:当 MB_Server 指令响应 Modbus 请求时,Done 完成位在当前扫描

周期被设置为 1 ; 如果未处理任何请求,Done 完成位为 0 。

• Error: 错误代码,只有在 Done 位为1时错误代码有效。MB_Server指令

库错误代码见3.3章节。

2) 为MB_Server指令库分配库存储器地址。

MB_Server指令库需要占用 300个字节 V 存储区用于库存储器地址分配。该

库存储器分配地址不能与 MBS_Connect 指令参数 HoadStart指向的 V 存储器

地址重叠,也不能与其它程序使用的地址有重叠,库存储器地址分配过程见

图4.所示。

图4.为MB_Server指令库分配库存储区

MB_Server指令库错误代码

MB_Server错误代码 描述

0 无错误

1~31 开放式用户通信库指令错误代码,请

参考STEP 7-Micro/WIN SMART在线帮

8

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

50

51

TCP连接未成功建立

HoldStart存储器范围错误

52 保持寄存器地址与库存储区地址重叠

53 TCP接收数据长度错误

54 Modbus TCP报文长度校验错误

55 非法的Modbus TCP功能码

56 请求的存储区地址非法

Unrestricted

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

2024年4月17日发(作者:卯梦之)

11

/CN/view/zh/xxxxx

Unrestricted

目录

1

2

3

Unrestricted

摘要 ................................................................................................................. 3

MODBUS TCP服务器功能 ............................................................................. 4

Modbus TCP 服务器指令使用示例 ................................................................ 6

3.1

MB_Server指令库安装 ........................................................................... 6

3.2

调用MB_Server指令库 .......................................................................... 6

3.3

MB_Server指令库错误代码 ................................................................... 8

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

1

Unrestricted

摘要

本文用于介绍S7-200 SMART Modbus TCP 服务器指令的使用。

伴随着STEP 7-Micro/WIN SMART V2.2 和S7-200 SMART CPU 固件V2.2的发布,

S7-200 SMART CPU开始支持TCP、ISO-on-TCP和UDP等开放式用户通信。STEP 7-

Micro/WIN SMART V2.2版本软件安装MB_Server指令库后,S7-200 SMART CPU 还

可以支持 Modbus TCP 服务器指令。

每个 MB_Server指令库只能创建一个Mdobus TCP连接,如果一个S7-200 SMART

需要连接多个Modbus TCP 客户端,则需要购买多个名称不同的MB_Server指令

库(例如MB_Server_0,MB_Server_1,MB_Server_2)。

3

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

2 MODBUS TCP服务器功能

Modbus 设备间的数据交换是通过功能码来实现的。S7-200 SMART CPU 调用

MB_Server指令库作为MODBUS TCP服务器时支持功能码见表 1.所示。

表1. MB_Server指令库支持的Modbus功能码

Modbus 地址

00001

0XXXX

00001

0XXXX

10001

1XXXX

10001

1XXXX

30001

3XXXX

30001

3XXXX

40001

4XXXX

40001

4XXXX

注意:当MODBUS TCP客户端使用功能码15 把多个离散量输出点的值写到 S7-

200 SMART CPU 的输出映像寄存器(Q 区)时,输出点的地址必须以字节边界起

始(如 Q0.0 或 Q2.0),并且输出点的数目必须是 8 的整数倍。

S7-200 SMART CPU 作为 Modbus TCP服务器时支持以下 Modbus 地址(与 CPU 地

址的映射关系见表 2.所示):

• 00001 至 00256 是映射到 Q0.0 - Q31.7 的开关量输出线圈。

• 10001 至 10256 是映射到 I0.0 - I31.7 的开关量输入触点。

• 30001 至 30056 是映射到 AIW0 - AIW110 的模拟量输入通道(紧凑型 CPU

除外) 。

• 40001 至 49999 和 400001 至 465536 是映射到 V 存储器的保持寄存器。

表2. Modbus 地址与 S7-200 SMART CPU 地址映射关系

Modbus 地址

00001

00002

00255

00256

10001

S7-200 SMART CPU 地址

Q0.0

Q0.1

Q31.6

Q31.7

I0.0

– 读

– 读

– 写

– 读

– 写

– 读

功能码

1

5

15

2

4

3

6

16

备注

读取单个/多个开关量输出线圈状

写单个开关量输出线圈

写多个开关量输出线圈

读取单个/多个开关量输入触点状

不支持

读取单个/多个模拟量输入通道数

不支持

读取单个/多个保存寄存器数据

写单个保持寄存器数据

写多个保持寄存器数据

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

Unrestricted

4

Unrestricted

10002 I0.1

… …

10255 I31.6

10256 I31.7

30009

AIW16

1

30010 AIW18

… …

30055 AIW108

30056 AIW110

40001

HoldStart

2

40002 HoldStart + 2

… …

4XXXX HoldStart + 2(XXXX -

1)

注意:

AIW16

1

:紧凑型 CPU 不支持模拟量输入;AIW16为第一个扩展模块 EM0 的

起始地址。

HoldStart

2

:MB_Server指令库中的MBS_Connect指令 的 HoldStart 参数用于

定义 V 存储区中保持寄存器的起始地址。

5

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

3

3.1

3.2

Unrestricted

Modbus TCP 服务器指令使用示例

MB_Server指令库安装

1) 打开STEP 7-Micro/WIN SMART V2.2 版本软件,鼠标右键项目树的“库”节点,

并从快捷菜单中选择“打开库文件夹”,如图 1. 所示。

图1.打开库文件夹

2) 将MB_Server指令库添加到打开的STEP 7-Micro/WIN SMART库文件夹中,如

图2. 所示。

图2.添加MB_Server指令库

备注:STEP 7-Micro/WIN SMART库文件夹一般存储路径为

C:UsersPublicDocumentsSiemensSTEP 7-MicroWIN SMARTLib

3) 关闭STEP 7-Micro/WIN SMART库文件夹,然后鼠标右键项目树的“库”节点,

并从快捷菜单中选择“刷新库”。刷新后,您可以看见“MB_Server_0”指

令库已经被添加到项目树的库节点下。

调用MB_Server指令库

MB_Server指令库包含MBS_Connect和MBS_Slave等2个指令。MBS_Connect

指令用于建立或断开Modbus TCP连接;MBS_Slave指令用于处理来自Modbus

TCP客户端的请求,并且该指令必须在每次扫描时执行,以便检查和响应

Modbus 请求。

每个 MB_Server指令库只能创建一个Mdobus TCP连接,如果一个S7-200 SMART

需要连接多个Modbus TCP 客户端,则需要购买多个名称不同的MB_Server指令

库(例如MB_Server_0,MB_Server_1,MB_Server_2)。

1) 在“MAIN”主程序中调用MBS_Connect和MBS_Slave指令,如图 3. 所示。

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

Unrestricted

图3.主程序中调用MB_Server指令库

MBS_Connect指令各个参数定义如下:

• EN 使能:必须保证每一扫描周期都被使能。

• Connect:启动TCP 连接建立操作。

• Disconnect: 断开TCP连接操作。

• ConnID: TCP 连接标识。

注意:Modbus TCP 属于TCP通信,也是开放式用户通信中的一种,所以

ConnID参数不能与其他TCP、ISO-on-TCP、UDP通信相同。

• IPaddr1~IPaddr4: Modbus TCP 客户端的IP地址,IPaddr1 是 IP 地址的最高

有效字节,IPaddr4 是 IP 地址的最低有效字节。如果不指定伙伴 IP ,则

可以设置为0.0.0.0 。

• LocPort: 本地设备上端口号

• MaxHold: 用于设置 Modbus 地址 4xxxx 或 4yyyyy 可访问的 V 存储器中的

字保持寄存器数。

• HoldStart: 间接地址指针,指向 CPU 中 V 存储器中保持寄存器的起始地址。

7

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

3.3

Unrestricted

本例中VW1000 即对于 Modbus 地址 40001 。

• ConnectDone:Modbus TCP连接已经成功建立。

• Busy: 连接操作正在进行时。

• Error: 建立或断开连接时,发生错误。

• Status:如果指令置位 “Error” 输出,Status 输出会显示错误代码。

MB_Server指令库错误代码见3.3章节。

MBS_Slave指令各个参数定义如下:

• EN 使能:必须保证每一扫描周期都被使能。

• Done:当 MB_Server 指令响应 Modbus 请求时,Done 完成位在当前扫描

周期被设置为 1 ; 如果未处理任何请求,Done 完成位为 0 。

• Error: 错误代码,只有在 Done 位为1时错误代码有效。MB_Server指令

库错误代码见3.3章节。

2) 为MB_Server指令库分配库存储器地址。

MB_Server指令库需要占用 300个字节 V 存储区用于库存储器地址分配。该

库存储器分配地址不能与 MBS_Connect 指令参数 HoadStart指向的 V 存储器

地址重叠,也不能与其它程序使用的地址有重叠,库存储器地址分配过程见

图4.所示。

图4.为MB_Server指令库分配库存储区

MB_Server指令库错误代码

MB_Server错误代码 描述

0 无错误

1~31 开放式用户通信库指令错误代码,请

参考STEP 7-Micro/WIN SMART在线帮

8

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

50

51

TCP连接未成功建立

HoldStart存储器范围错误

52 保持寄存器地址与库存储区地址重叠

53 TCP接收数据长度错误

54 Modbus TCP报文长度校验错误

55 非法的Modbus TCP功能码

56 请求的存储区地址非法

Unrestricted

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

发布评论

评论列表 (0)

  1. 暂无评论