REQ 和 DISCONNECT参数 (S7-1200) 说明 如果当前未执行“MB_CLIENT”指令的实例,并且 DISCONNECT 参数的值为“0”,那么将在REQ = 1 时执行新作业。如果尚无连接,将在执行期间建立一个连接。如果在执行该活动作业之前执行“MB_CLIENT”指令的相同实例(DISCONNECT = 0 且 REQ =1),那么不会在活动作业完成时执行该实例。 只有在活动作业完成时,才能启动新作业 (REQ = 1)。 可以使用 DONE参数监视执行状态。 如果顺序执行“MB_CLIENT”指令,那么可以使用该参数 监视执行状态。 参见 MB_CLIENT 介绍(页 6249) MB_MODE、MB_DATA_ADDR 和 DATA_LEN 参数 (S7-1200) 说明 参数MB_MODE、MB_DATA_ADDR 和 DATA_LEN 的组合定义了 MB_MODE 值为 0、1 和 2 时,当前Modbus 消息中所用的 Modbus 功能代码: • MB_MODE 中包含有关读写操作的信息。MB_MODE=0:读取,MB_MODE=1 和 2:写入 • MB_DATA_ADDR中包含有关待读取/写入的目标信息,以及“MB_CLIENT”指令用于计算远 程地址的地址信息。 • DATA_LEN中包含有待读取/写入的值数量信息。 示例: • MB_MODE=1、MB_DATA_ADDR=1、DATA_LEN=1的组合将指定功能代码 05。将从远程 地址 0 开始写 1 个输出位。 •MB_MODE=1、MB_DATA_ADDR=1、DATA_LEN=2 的组合将指定功能代码 15。将从远程 地址 0 开始写 2个输出位。
该指令的静态变量下表列出了“MB_CLIENT”指令背景数据块的可编辑静态变量。 变量 数据类型 起始值 说明 Blocked_Proc_Timeout REAL 3.0 如果有一个被阻止的 Modbus 实例,则为复位静态变量 ACTIVE前的等待时间(单位为秒)。例如,如果输出了一个 客户端请求,在该请求完全执行之前中止执行客户端功能,则可能发生这种情况。Zui大等待时间为 55 秒。 MB_Transaction_I D WORD 1 Modbus TCP协议的事务 ID。只有在 Modbus TCP 服务器需 要一个不同值的情况下,才能更改起始值“1”。 MB_Unit_ID BYTE255 单元标识符 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 参数 在有限的值范围内进行初始化。 RCV_TIMEOUT REAL 2.0“MB_CLIENT”指令等待服务器响应的时间间隔(单位为秒)。 Connected BOOL 0指示是否已建立与所指定客户端的连接:1 = 已连接,0 = 未 连接。下表列出了“MB_CLIENT”指令中输入参数MB_MODE、MB_DATA_ADDR 和 DATA_LEN 与相关 Modbus 功能的关系。 MB_MOD EMB_DATA_AD DR DATA_LE N Modbus 功能 功能和数据类型 0 1 到 9999 1 到 2000 01在远程地址 0 到 9998 处,读取 1 到 2000 个输出位 0 10001 到 19999 1 到 2000 02 在远程地址0 到 9998 处,读取 1 到 2000 个输入位 0 40001 到 49999 1 到 125 03 在远程地址 0 到9998 处,读取 1 到 125 个保持性寄 存器 0 30001 到 39999 1 到 125 04 在远程地址 0 到9998 处,读取 1 到 125 个输入字 1 1 到 9999 1 05 在远程地址 0 到 9998 处,写入 1 个输出位 140001 到 49999 1 06 在远程地址 0 到 9998 处,写入 1 个保持性寄存器 1 1 到 9999 2 到1968 15 在远程地址 0 到 9998 处,写入 2 到 1968 个输出位 1 40001 到 49999 2 到 12316 在远程地址 0 到 9998 处,写入 2 到 123 个保持性寄 存器 2 1 到 9999 1 到 1968 15在远程地址 0 到 9998 处,写入 1 到 1968 个输出位 2 40001 到 49999 1 到 123 16 在远程地址0 到 9998 处,写入 1 到 123 个保持性寄 存器 11 执行该功能时,不会评估 MB_DATA_ADDR 和DATA_LEN 参数。 11 读取服务器的状态字和事件计数器: • 状态字反映了处理的状态(0 - 未处理,0xFFFF - 正在处理) • Modbus 请求成功执行时,事件计数器将递增。如 果执行 Modbus 功能时出错,则服务器将发送消息,但不会递增事件计数器。 80 - 1 08 通过诊断代码 0x0000 检查服务器状态(返回循环测试 - 服务器发回请求): •每次调用 1 个 WORD 81 - 1 08 通过诊断代码 0x000A 复位服务器的事件计数器: • 每次调用 1 个 WORD3 到 10、 12 到 79、 82 到 255 预留说明 基于 MB TCP 的 RTU 设备的单元标识符 基于 ModbusTCP 的 RTU 设备的单元标识符,位于“MB_CLIENT”指令背景数据块的可编辑静态变量中的“MB_Unit_ID”变量内。单元标识符用于唯一分配耦合伙伴。 参见 MB_CLIENT 介绍 (页 6249)MB_DATA_PTR 参数 (S7-1200) 说明 MB_DATA_PTR 参数是一个指向数据缓冲区的指针,该缓冲区用于存储从Modbus 服务器读 取或写入 Modbus 服务器的数据。 作为数据缓冲区,可以使用全局数据块或存储区域 (M)。 对于存储区域(M) 中的缓冲区,可通过以下方式使用 ANY 格式的指针: “P#位地址” “数据类 型” “长度”(例如: P#M1000.0WORD 500). MB_DATA_PTR 参数使用一个通信缓冲区: • 对于“MB_CLIENT”指令的通信功能: – 读取和写入Modbus 服务器地址 00001 到 09999 和 10001 到 19999 的 1 位数据。 – 读取 Modbus服务器地址 30001 到 39999 和 40001 到 49999 的 16 位 WORD 数据。 – 写入 Modbus服务器地址 40001 到 49999 的 16 位 WORD 数据。 • 在从/向全局 DB 或 由 MB_DATA_PTR参数指定的存储区 (M) 进行数据传输的过程中(长 度:位或 WORD)。 如果在 MB_DATA_PTR参数中使用该缓冲区的一个数据块,那么需要为 DB 元素指定数据类型。 • 对于 Modbus 位地址,将使用 1 位的数据类型BOOL • 对于 Modbus WORD 地址,将使用 16 位的数据类型,如 WORD、UINT、INT 或 REAL。 • 对于2 个 Modbus WORD 地址,将使用 32 位的数据类型(双字),如 DWORD、DINT 或 REAL。• 通过MB_DATA_PTR,还可以访问复杂的 DB 元素,如: – 标准数组 – 元素名称唯一的结构 – 元素名称唯一且数据类型长度为16 或 32 位的复杂结构。 • MB_DATA_PTR 参数的数据区可以在不同的全局数据块中(或在不同的存储区中)。 例如,可以根据读作业和写作业使用不同的数据块,或者为每个“MB_CLIENT”站使用单独的 数据块。 参见 MB_CLIENT 介绍(页 6249) 参数 STATUS (S7-1200) 参数 STATUS(常规状态信息)(库版本 V2.1)STATUS* (W#16#) 说明 0000 指令已执行,且无任何错误。 7000 未激活任何调用 (REQ=0)。 7001首次调用时,REQ=1:开始执行;BUSY 的值为 1。 7002 中间调用(与 REQ 无关)。已激活执行;BUSY 的值为 1。7003 正在终止连接。 * 在程序编辑器中,错误代码可显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。 参数STATUS(常规状态信息)(库版本 V3.x) STATUS* (W#16#) 说明 0000 指令已执行,且无任何错误。 0001连接已建立。 0003 连接已终止。 7000 未激活任何调用 (REQ=0)。 7001 首次调用时,REQ=1:开始执行;BUSY的值为 1。 7002 中间调用(与 REQ 无关)。已激活执行;BUSY 的值为 1。参数 STATUS(协议错误) STATUS* (W#16 #) 本地/远程 错误 “MB_SERVER”应 答中的错误代码 (B#16#) 说明 80C8 本地 -在指定时间段内,服务器无响应。检查与 Modbus 服务器的连接。 仅当尝试了所组态的可重复尝试次数后,才报告该错误。如果“MB_CLIENT”指令在指定时间内没有收到Zui初传输事务 ID (MB_TRANSACTION_ID变量)的应答,则输出该错误代码。 8380 本地 - 接收到的 Modbus 帧格式错误或字节数过少。 8381 远程 01不支持功能代码。 8382 本地 - • 帧标头中的 Modbus 帧长度与接收到的字节数目不一致。 •字节数目与实际传送的字节数不一致(仅功能 1 到 4)。例如,当“MB_CLIENT”请求奇数个字,但“MB_SERVER”始终发送偶数个 字时,将发生该状况。 •收到的帧的起始地址与已经保存的起始地址不一致(功能 5、 6、15、16)。 • 字数与实际传送的字数不一致(功能 15 和 16)。远程 03 接收到的 Modbus 帧长度无效。检查服务器。 8383 本地 - 读/写数据错误或访问了 MB_DATA_PTR(页 6255) 地址外的区域。 远程 02 读/写数据错误或访问服务器地址区域以外的位置。 8384 本地 - •接收到无效的异常代码。 • 接收到的数据值与Zui初由客户端发送的不同(功能 5、6 和 8)。 • 接收到无效状态值(功能 11) 远程03 功能 5 数据值错误。,