工控编程吧

标题: S7-200 SMART Modbus TCP 服务器指令库 [打印本页]

作者: qq263946146    时间: 2019-10-20 16:39
标题: S7-200 SMART Modbus TCP 服务器指令库
Modbus  设备间的数据交换是通过功能码来实现的。
S7-200 SMART CPU 调用MB_Server指令库作为MODBUS TCP服务器时支持功能码见表 1.所示。
表1. MB_Server指令库支持的Modbus功能码
Modbus 地址
读写
功能码
备注
00001 – 0XXXX
1
读取单个/多个开关量输出线圈状态
00001 – 0XXXX
5
写单个开关量输出线圈
15
写多个开关量输出线圈
10001 – 1XXXX
2
读取单个/多个开关量输入触点状态
10001 – 1XXXX
不支持
30001 – 3XXXX
4
读取单个/多个模拟量输入通道数据
30001 – 3XXXX
不支持
40001 – 4XXXX
3
读取单个/多个保存寄存器数据
40001 – 4XXXX
6
写单个保持寄存器数据
16
写多个保持寄存器数据

注意:当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 地址
S7-200 SMART CPU 地址
00001
Q0.0
00002
Q0.1
00255
Q31.6
00256
Q31.7
10001
I0.0
10002
I0.1
10255
I31.6
10256
I31.7
30009
AIW161
30010
AIW18
30055
AIW108
30056
AIW110
40001
HoldStart2
40002
HoldStart + 2
4XXXX
HoldStart + 2(XXXX -1)

注意:
AIW161:紧凑型 CPU 不支持模拟量输入;AIW16为第一个扩展模块 EM0 的起始地址。
HoldStart2 :MB_Server指令库中的MBS_Connect指令 的 HoldStart 参数用于定义 V 存储区中保持寄存器的起始地址。

2                     Modbus TCP 服务器指令使用示例2.1                 MB_Server指令库安装
1)    打开STEP 7-Micro/WIN SMART V2.2 版本软件,鼠标右键项目树的“库”节点,并从快捷菜单中选择“打开库文件夹”,如图 1. 所示。
(, 下载次数: 1)
图1.打开库文件夹
2)    将MB_Server指令库添加到打开的STEP 7-Micro/WIN SMART库文件夹中,如图2. 所示。
(, 下载次数: 2)
图2.添加MB_Server指令库
备注:STEP 7-Micro/WIN SMART库文件夹一般存储路径为C:\Users\Public\Documents\Siemens\STEP 7-MicroWIN SMART\Lib
3)    关闭STEP 7-Micro/WIN SMART库文件夹,然后鼠标右键项目树的“库”节点,并从快捷菜单中选择“刷新库”。刷新后,您可以看见“MB_Server_0”指令库已经被添加到项目树的库节点下。
2.2                 调用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. 所示。
(, 下载次数: 1)
图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 存储器中保持寄存器的起始地址。本例中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.所示。
(, 下载次数: 1)
图4.为MB_Server指令库分配库存储区

2.3                 MB_Server指令库错误代码
MB_Server错误代码
描述
0
无错误
1~31
开放式用户通信库指令错误代码,请参考STEP 7-Micro/WIN SMART在线帮助
50
TCP连接未成功建立
51
HoldStart存储器范围错误
52
保持寄存器地址与库存储区地址重叠
53
TCP接收数据长度错误
54
Modbus TCP报文长度校验错误
55
非法的Modbus TCP功能码
56
请求的存储区地址非法







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4