1、Unrestricted操 作 指 南 11/2016S7-200 SMART Modbus TCP 服 务器 指 令 库S7-200 SMART、 Modbus TCPhttp:/ 2CopyrightSiemensAGCopyrightyearAllrightsreserved目录1 摘要 .32 MODBUS TCP 服务器功能 .43 Modbus TCP 服务器指令使用示例 .63.1 MB_Server 指令库安装 .63.2 调用 MB_Server 指令库 .63.3 MB_Server 指令库错误代码 .8Unrestricted 3CopyrightSiemensAGCop
2、yrightyearAllrightsreserved1 摘要本文用于介绍 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 指令库只能创建一个 M
3、dobus TCP 连接,如果一个 S7-200 SMART 需要连接多个 Modbus TCP 客户端,则需要购买多个名称不同的MB_Server 指令库(例如 MB_Server_0,MB_Server_1,MB_Server_2)。Unrestricted 4CopyrightSiemensAGCopyrightyearAllrightsreserved2 MODBUS TCP 服务器功能Modbus 设备间的数据交换是通过功能码来实现的。S7-200 SMART CPU 调用MB_Server 指令库作为 MODBUS TCP 服务器时支持功能码见表 1.所示。表 1. MB_Serv
4、er 指令库支持的 Modbus 功能码Modbus 地址 读写 功能码 备注00001 0XXXX读 1 读取单个/多个开关量输出线圈状态写 5 写单个开关量输出线圈00001 0XXXX 写 15 写多个开关量输出线圈10001 1XXXX读 2 读取单个/多个开关量输入触点状态10001 1XXXX写 不支持30001 3XXXX读 4 读取单个/多个模拟量输入通道数据30001 3XXXX写 不支持40001 4XXXX读 3 读取单个/多个保存寄存器数据写 6 写单个保持寄存器数据40001 4XXXX 写 16 写多个保持寄存器数据注意:当 MODBUS TCP 客户端使用功能码
5、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 的模拟量输入通道(紧凑
6、型 CPU 除外) 。 40001 至 49999 和 400001 至 465536 是映射到 V 存储器的保持寄存器。表 2. Modbus 地址与 S7-200 SMART CPU 地址映射关系Modbus 地址 S7-200 SMART CPU 地址00001 Q0.000002 Q0.1 00255 Q31.600256 Q31.710001 I0.010002 I0.1Unrestricted 5CopyrightSiemensAGCopyrightyearAllrightsreserved 10255 I31.610256 I31.730009 AIW16130010 AIW18
7、 30055 AIW10830056 AIW11040001 HoldStart240002 HoldStart + 2 4XXXX HoldStart + 2(XXXX -1)注意:AIW161:紧凑型 CPU 不支持模拟量输入;AIW16 为第一个扩展模块 EM0 的起始地址。HoldStart2 :MB_Server 指令库中的 MBS_Connect 指令 的 HoldStart 参数用于定义 V 存储区中保持寄存器的起始地址。Unrestricted 6CopyrightSiemensAGCopyrightyearAllrightsreserved3 Modbus TCP 服务器指令
8、使用示例3.1 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 SMARTLib3) 关闭 STEP 7-
9、Micro/WIN SMART 库文件夹,然后鼠标右键项目树的“库”节点,并从快捷菜单中选择“刷新库”。刷新后,您可以看见“MB_Server_0”指令库已经被添加到项目树的库节点下。3.2 调用 MB_Server 指令库MB_Server 指令库包含 MBS_Connect 和 MBS_Slave 等 2 个指令。MBS_Connect 指令用于建立或断开 Modbus TCP 连接; MBS_Slave 指令用于处理来自 Modbus TCP 客户端的请求,并且该指令必须在每次扫描时执行,以便检查和响应 Modbus 请求。每个 MB_Server 指令库只能创建一个 Mdobus TC
10、P 连接,如果一个 S7-200 SMART 需要连接多个 Modbus TCP 客户端,则需要购买多个名称不同的MB_Server 指令库(例如 MB_Server_0,MB_Server_1,MB_Server_2)。1) 在“MAIN”主程序中调用 MBS_Connect 和 MBS_Slave 指令,如图 3. 所示。Unrestricted 7CopyrightSiemensAGCopyrightyearAllrightsreserved图 3.主程序中调用 MB_Server 指令库MBS_Connect 指令各个参数定义如下: EN 使能:必须保证每一扫描周期都被使能。 Conn
11、ect:启动 TCP 连接建立操作。 Disconnect: 断开 TCP 连接操作。 ConnID: TCP 连接标识。注意:Modbus TCP 属于 TCP 通信,也是开放式用户通信中的一种,所以 ConnID 参数不能与其他 TCP、ISO-on-TCP、UDP 通信相同。 IPaddr1IPaddr4: Modbus TCP 客户端的 IP 地址,IPaddr1 是 IP 地址的最高有效字节,IPaddr4 是 IP 地址的最低有效字节。如果不指定伙伴 IP ,则可以设置为 0.0.0.0 。 LocPort: 本地设备上端口号 MaxHold: 用于设置 Modbus 地址 4xx
12、xx 或 4yyyyy 可访问的 V 存储器中的字保持寄存器数。Unrestricted 8CopyrightSiemensAGCopyrightyearAllrightsreserved HoldStart: 间接地址指针,指向 CPU 中 V 存储器中保持寄存器的起始地址。本例中 VW1000 即对于 Modbus 地址 40001 。 ConnectDone:Modbus TCP 连接已经成功建立。 Busy: 连接操作正在进行时。 Error: 建立或断开连接时,发生错误。 Status:如果指令置位 “Error” 输出,Status 输出会显示错误代码。MB_Server 指令库错
13、误代码见 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 指令参数 HoadS
14、tart 指向的 V 存储器地址重叠,也不能与其它程序使用的地址有重叠,库存储器地址分配过程见图 4.所示。图 4.为 MB_Server 指令库分配库存储区3.3 MB_Server 指令库错误代码MB_Server 错误代码 描述0 无错误131 开放式用户通信库指令错误代码,请参考 STEP 7-Micro/WIN SMART 在线帮助50 TCP 连接未成功建立Unrestricted 9CopyrightSiemensAGCopyrightyearAllrightsreserved51 HoldStart 存储器范围错误52 保持寄存器地址与库存储区地址重叠53 TCP 接收数据长度错误54 Modbus TCP 报文长度校验错误55 非法的 Modbus TCP 功能码56 请求的存储区地址非法