MB_SERVER:作为Modbus TCP 服务器通过 PROFINET 通信 (S7-1200, S7-1500) MB_SERVER 介绍(S7-1200, S7-1500) 说明 “MB_SERVER”指令作为 Modbus TCP 服务器通过 PROFINET连接进行通信。“MB_SERVER”指 令将处理 Modbus TCP 客户端的连接请求、接收并处理 Modbus 请求并发送响应。S7-1200 固件版本 V4.0 支持“MB_SERVER”指令和Zui高 V3.1 版本的库。S7-1200 固件版本 V4.1及更高版本和 S7-1500,支持“MB_SERVER”指令的所有库版本。 可通过 CPU 或 CM/CP 的本地接口建立连接。使用该指令时,无需其它任何硬件模块。 注意 安全提示 请注意,网络的每个客户端都会被授予对过程映像输入和输出以及数据块或 Modbus保持 性寄存器定义的位存储区的读写访问权。 还提供有选项,用于限制 IP 地址访问,以防未授权读写操作。但请注意,共享地址也可能会受到未授权访问。 多个服务器连接 可以创建多个服务器连接。这允许一个单独 CPU 能够接受来自多个 Modbus TCP客户端 的连接。 Modbus TCP 服务器可以支持多个 TCP 连接,连接的Zui大数目取决于所使用的 CPU。 一个 CPU的总连接数,包括 Modbus TCP 客户端和服务器的连接数,不能超过所支持的Zui大 连接数。 Modbus TCP连接还可由“MB_CLIENT”和/或“MB_SERVER”实例共用。 连接服务器时,请记住以下规则: •每个“MB_SERVER”连接都必须使用唯一的背景数据块。 • 每个“MB_SERVER”连接都必须使用唯一的连接 ID。该指令的各背景数据块都必须使用各自相应的连接 ID。连接 ID 与背景数据块组合成对, 对每个连接,组合对都必须唯一。 •对于每个连接,都必须单独调用“MB_SERVER”指令。
端口正在处理另一个 Modbus 请求, •MB_CLIENT 具有相同连接参数的另一实例正在处理现有 Modbus 请求。 *在程序编辑器中,状态代码可显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。 说明 内部使用的通信指令的错误代码对于“MB_CLIENT”指令,除了会发生表中列出的错误外,还会发生由该指令所使用的通信指令(“TCON”、“TDISCON”、“TSEND”、“TRCV”、“T_DIAG”和“TRESET”)所引起的错误。错误代码通过“MB_CLIENT”指令的背景数据块来指定。相应指令的错误代码会显示在 "Static" 部分中的 STATUS 下。错误代码的含义在相应通信指令文档中提供。 说明 发送或接收数据时发生通信错误 如果发送或接收数据时(80C4 (Temporarycommunications error. The specified connection is temporarilydown.)、80C5 (Remote partner closed connection actively.)、80A1 (Thespecified connection is disconnected or is not yet established.))发生通信错误,则终止现 有连接。 即,可查看连接终止时所有返回的 STATUS 值,以及连接中止时仅输出造成连接终止原因的STATUS 代码。 示例:如果接收数据时发生临时通信错误,则先输出 STATUS 7003 (ERROR=false),再 输出80C4 (ERROR=true)。下表列出了“MB_SERVER”指令的参数: 参数 声明 数据类型 说明 DISCONNECTInput BOOL “MB_SERVER”指令建立与一个伙伴模块的被动连接。服务器会响 应在 CONNECT 参数的SDT“TCON_IP_v4”中输入的 IP 地址的连接 请求。 接受一个连接请求后,可以使用该参数进行控制: •0:在无通信连接时建立被动连接。 • 1:终止连接初始化。如果已置位该输入,那么不会执行其它 操作。成功终止连接后,STATUS参数将输出值 0003。 MB_HOLD_REG (页 6293) InOut VARIANT指向“MB_SERVER”指令中 Modbus 保持性寄存器的指针 MB_HOLD_REG 引用的存储区必须大于两个字节。保持性寄存器中包含 Modbus 客户端通过 Modbus 功能 3(读 取)、6(写入)、16(多次写入)和23(在一个作业中读写) 可访问的值。 作为保持性寄存器,可以使用具有优化访问权限的全局数据块, 也可以使用位存储器的存储区。CONNECT (页 6294) InOut VARIANT 指向连接描述结构的指针 可以使用下列结构 (SDT): •TCON_IP_v4:包括建立指定连接时所需的所有地址参数。默 认地址为 0.0.0.0(任何 IP 地址),但也可输入具体 IP地址, 以便服务器仅响应来自该地址的请求。使用 TCON_IP_v4 时, 可通过调用指令“MB_SERVER”建立连接。 •TCON_Configured:包括所组态连接的地址参数。使用 TCON_Configured 时,会在下载硬件配置后由 CPU建立连接。 对于 V4.2 以上指令版本的 MB_SERVER,TCP 的以下连接描述也 可用: •TCON_IP_V4_SEC(S7-1200 CPU 固件版本 V4.3 及以上版 本,或 S7-1500 CPU 固件版本 V2.5及以上版本) 相关说明,请参见“AUTOHOTSPOT” • TCON_QDN(S7-1200 CPU 固件版本 V4.4及以上版本,或 S7-1500 CPU 固件版本 V2.5 及以上版本) 相关说明,请参见“AUTOHOTSPOT” •TCON_QDN_SEC(S7-1200 CPU 固件版本 V4.4 及以上版本, 或 S7-1500 CPU 固件版本 V2.5及以上版本) 相关说明,请参见“AUTOHOTSPOT” 有关安全连接的更多信息,请参见“AUTOHOTSPOT”参数 声明 数据类型说明 NDR Output BOOL “New Data Ready”: • 0:无新数据 • 1:从 Modbus客户端写入的新数据 DR Output BOOL “Data Read”: • 0:未读取数据 • 1:从 Modbus客户端读取的数据 ERROR Output BOOL 如果在调用“MB_SERVER”指令过程中出错,则将 ERROR 参数的输出设置为“1”。有关错误原因的详细信息,将由 STATUS 参数指 定。 STATUS (页 6296) OutputWORD 指令的详细状态信息。 说明 在指令“MB_SERVER”中使用 Modbus 功能 23 “MB_SERVER”指令支持使用Modbus 功能 23 在单个作业中写入和读取保持寄存器;只 有指令版本为 V6.0及以上版本的“MB_CLIENT”支持此功能。V6.0 以下的指令版本会返回错 误代码。另请注意,对于具有读写访问权限的作业,在读访问之前执行写访问。 有关有效数据类型的更多信息,请参见“有效数据类型概述(页 255)”。 MB_SERVER 指令版本 V4.2 中的静态变量下表列出了在程序中使用的“MB_SERVER”指令背景数据块的静态变量。可以写入 HR_Start_Offset变量。可以读取其它变量来监视 Modbus 状态。 变量 数据类型 起始值 说明 HR_Start_Offset WORD 0 指定Modbus 保持性寄存器的起始地址。 QB_Start WORD 0 可写入输出的寻址范围的起始地址(0 到 65535 个字节)QB_Count WORD 0xFFFF Modbus 主站可写入的输出字节数 示例: QB_Start=0 和QB_Count=10:可写入输出字节 0 到 9。 QB_Count=0:不写入任何输出字节。 Request_Count WORD0 服务器接收的请求总数。