使用各客户端连接时,请记住以下规则: • 每个“MB_CLIENT”连接都必须使用唯一的背景数据块。 •对于每个“MB_CLIENT”连接,必须指定唯一的服务器 IP 地址。 • 每个“MB_CLIENT”连接都需要一个唯一的连接 ID。该指令的各背景数据块都必须使用各自相应的连接 ID。连接 ID 与背景数据块组合成对, 对每个连接,组合对都必须唯一。 •根据服务器组态,可能需要或不需要 IP 端口的唯一编号。 参数 下表列出了“MB_CLIENT”指令的参数: 参数 声明 数据类型说明 REQ (页 6276) Input BOOL 对 Modbus TCP 服务的 Modbus 查询 REQ参数受到等级控制。这意味着只要设置了输入 (REQ=true),指令就会发送通信请求。 • Modbus查询开始后,背景数据块将锁定,其它客户端无 法使用。 • 在服务器进行响应或输出错误消息之前,对输入参数的更 改不会生效。 • 如果在Modbus 请求期间再次设置了参数 REQ,此后将 不会进行任何其它传输。 DISCONNECT (页 6276)Input BOOL 通过该参数,可以控制与 Modbus 服务器建立和终止连接: • 0:与通过 CONNECT参数组态的连接伙伴(请参见 CONNECT 参数)建立通信连接。 • 1:断开通信连接。在终止连接的过程中,不执行任何其它功能。成功终止连接后,STATUS 参数将输出值 0003。 而如果在建立连接的过程中设置了参数 REQ,将立即发送 Modbus请求。 MB_MODE (页 6276) Input USINT 选择 Modbus的请求模式(读取、写入或诊断)或直接选择 Modbus 功能 MB_DATA_ADDR (页 6276) InputUDINT 取决于 MB_MODE 注:该参数不适用于 Modbus 功能 23,并且其值必须为默 认值。
参数 声明数据类型 说明 MB_DATA_LEN Input UINT 数据长度:数据访问的位数或字数(参见“MB_MODE、MB_DATA_ADDR 和 MB_DATA_LEN 参数 (页 6276)”)。 注:该参数不适用于 Modbus 功能23,并且其值必须为默 认值。 MB_DATA_PTR (页 6279) InOut VARIANT 指向待从 Modbus服务器接收的数据或待发送到 Modbus 服 务器的数据所在数据缓冲区的指针。 注:该参数不适用于 Modbus 功能23,并且其值必须为默 认值。 CONNECT (页 6282) InOut VARIANT 指向连接描述结构的指针可以使用以下结构(系统数据类型): • TCON_IP_v4:包括建立指定连接时所需的所有地址参 数。使用 TCON_IP_v4时,可通过调用指令“MB_CLIENT” 建立连接。 • TCON_Configured:包括所组态连接的地址参数。使用TCON_Configured 时,将使用下载硬件配置后由 CPU 创 建的已有连接。 对于 V4.1 以上指令版本的MB_CLIENT,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_(S7-1200 CPU 固件版本 V4.4及以上版 本,或 S7-1500 CPU 固件版本 V2.5 及以上版本) 相关说明,请参见“AUTOHOTSPOT”有关安全连接的更多信息,请参见“AUTOHOTSPOT” DONE Out BOOL 如果Zui后一个 Modbus作业成功完成,则输出参数 DONE 中 的该位将立即置位为“1”。 BUSY Out BOOL • 0:无正在进行的 Modbus请求 • 1:正在处理 Modbus 请求 在建立和终止连接期间,不会设置输出参数 BUSY。 ERROR Out BOOL •0:无错误 • 1:出错。出错原因由参数 STATUS 指示。 STATUS (页 6284) Out WORD指令的详细状态信息。说明 “MB_CLIENT”调用过程中统一输入数据 调用 Modbus客户端指令时,输入参数的值将存储在内部并在下一次调用时进行比较。这种比较用于确定这一特定调用是否初始化当前请求。如果使用一个通用背景数据块,那么可以执行多个“MB_CLIENT”调用。在执行“MB_CLIENT”实例的过程中,不得更改输入参数的值。如果在执行过程中更改了输入参数,那么将无法使用“MB_CLIENT”检查实例当前是否正在执行。 该指令的静态变量下表列出了“MB_CLIENT”指令背景数据块的可编辑静态变量。 变量 数据类型 起始值 说明 Blocked_Proc_Timeout REAL 3.0 如果有一个被阻止的 Modbus 实例,则为复位静态变量 ACTIVE前的等待时间(单位为秒)。例如,如果输出了一个 客户端请求,而且在该请求完全执行之前中止执行客户端功能,则可能发生这种情况。等待时间必须介于 0.5 s 到 55 s 之间。 MB_Transaction_ID WORD 1Modbus TCP 协议的事务 ID。只有在 Modbus TCP 服务器需 要一个不同值的情况下,才能更改起始值“1”。单元标识符Modbus 设备检测: Modbus TCP 服务器使用其 IP 地址寻址。因此,寻址 Modbus TCP 时不会使用MB_UNIT_ID 参数。 MB_UNIT_ID 参数对应于 Modbus RTU 协议的从站地址域。 如果 Modbus TCP服务器用作 Modbus RTU 协议的网关,则 可以使用 MB_UNIT_ID 标识串行网络中的从站设备。这种情况下,MB_UNIT_ID 参数会将请求转发给正确的 Modbus RTU 从站地址。 请注意,某些 Modbus TCP设备可能要求 MB_UNIT_ID 参数 在有限的值范围内进行初始化。 有关 MB_Unit_ID参数的更多信息,请参见:RCV_TIMEOUT REAL 2.0 “MB_CLIENT”指令等待服务器响应的时间间隔(单位为秒)。该值必须介于 0.5 s 到 55 s 之间。 Connected BOOL 0 指示是否已建立与所指定服务器的连接:1 =已连接,0 = 未 连接。 RETRIES WORD 0 在指令“MB_CLIENT”返回错误 W#16#80C8 之前,该指令尝试的发送次数。变量 MB_Transaction_ID 如果 Modbus TCP 服务器应答中的事务 ID与“MB_CLIENT”作业中的事务 ID 不一致,则指令 “MB_CLIENT”将等待一段时间 (RCV_TIMEOUT *RETRIES),等待事务 ID 正确的 Modbus TCP 服务器进行应答;到达该时间后,该指令将返回错误 W#16#80C8。示例 有关两个 S7-1500 CPU 之间的 Modbus TCP 通信的示例项目,请参见服务与支持网站中的条 目 ID94766380。 本例中使用了两个 Modbus 功能。对于每个 Modbus 功能,使用 Modbus 块对(MB_CLIENT和 MB_SERVER)建立 Modbus TCP 连接。REQ 和 DISCONNECT 参数 (S7-1200, S7-1500)说明 如果参数 DISCONNECT 的值为“0”,且在 REQ=1 时执行新作业,则不会激活任何作业。如果连接不存在,那么将在执行过程中建立连接。 如果在执行该活动作业之前再次执行“MB_CLIENT”指令的相同实例(DISCONNECT= 0 且 REQ = 1),那么不会在活动作业完成时执行该实例。只有在活动作业完成时,才能启动新作业 (REQ = 1)。执行状态通过输出参数输出。顺序执行“MB_CLIENT”指令时,可以使用该参数监视执行状态。 MB_MODE、MB_DATA_ADDR和 MB_DATA_LEN 参数 (S7-1200, S7-1500) 说明 参数 MB_MODE、MB_DATA_ADDR 和MB_DATA_LEN 的组合定义了 MB_MODE 值为 0、1 和 2 时,当前 Modbus 消息中所用的 Modbus功能代码: • MB_MODE 中包含有关读写操作的信息。 MB_MODE=0:读取,MB_MODE=1 和2:写入(注:MB_MODE=2 时,Modbus 功能 15 和 05 或 Modbus 功能 16 和 06 无区别。) •MB_DATA_ADDR 中包含有关待读取/写入的目标信息,以及“MB_CLIENT”指令用于计算远 程地址的地址信息。 •MB_DATA_LEN 包含要读/写的值的数量。 示例: •MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=1 构成的组合设定的功能代码是 05。将从远程地址 0开始写 1 个输出位。 • MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=2 构成的组合设定的功能代码是15。将从远程地址 0 开始写 2 个输出位。 以下情况适用于 MB_MODE 值 101 到 106 和 115 到 116: •MB_MODE 定义 Modbus 功能代码。 • MB_DATA_ADDR 包含远程地址。 • MB_DATA_LEN包含要读/写的值的数量。