CONNECT 参数(S7-1200, S7-1500) MB_CLIENT 指令版本 V4.1 及以下版本的 CONNECT 参数的连接描述“MB_CLIENT”指令可使用 2 种不同的连接描述: • TCON_IP_v4 结构的设定连接 该连接参数存储在TCON_IP_v4 结构中,并通过调用指令“MB_CLIENT”来建立连接。 • TCON_Configured 结构的组态连接CPU 已建立了组态连接。使用 TCON_Configured 结构指定指令使用的现有连接。指令“MB_CLIENT”的每个实例都需要一个唯一的连接。为每个指令实例都创建一个单独的 TCON_IP_v4 或TCON_Configured 结构来描述连接。 设定连接的连接描述 对于 CONNECT 参数的设定连接,使用以下结构的TCON_IP_v4 描述连接: • 确保仅在 TCON_IP_v4 结构中指定了 TCP 类型的连接。 • 该连接不能使用下列TCP 端口号:20、21、25、80、102、123、5001、34962、 34963 和 34964。 字节 参数 数据类型起始值 说明 0 … 1 InterfaceID HW_ANY - 本地接口的硬件标识符(值范围:0 到 65535)。 2 … 3ID CONN_OUC - 引用该连接(值范围:1 到 4095)。 该参数将唯一确定 CPU 中的连接。指令“MB_CLIENT”的每个实例都必须使用唯一的 ID。 注:对于固件版本为 V2.9 或更高版本的 S7-1500 CPU 和固件版本为 V4.5或更高版本的 S7-1200 CPU,ID 也 可能由指令“TCONSettings”提供。此时,ID 超出值范 围 1 到4095。 4 ConnectionType BYTE 11 连接类型 对于 TCP,选择 11(十进制)。不允许使用其它连接类型。如果使用了其它连接类型(如 UDP),该指令 的 STATUS 参数将输出相应的错误消息。 5 ActiveEstablished BOOL TRUE 建立连接的方式所对应的 ID 对于主动连接建立,应选择 TRUE。
远程连接伙伴的端口号(值范围:1 到49151)。 使用客户端通过 TCP/IP 协议与其建立连接并Zui终通信 的服务器的 IP 端口号(默认值:502)。 12 … 13LocalPort UINT 0 本地连接伙伴的端口号: • 端口号:1 至 49151 • 任意端口:“0” 说明 移植 V2.1版“MB_CLIENT”指令 参数 CONNECT_ID、IP_PORT 和 IP_OCTET_x 映射到 TCON_IP_v4结构中的 3.0 版 “MB_CLIENT”指令。 • “MB_CLIENT”V2.1 指令的 CONNECT_ID 参数对应于TCON_IP_v4 的参数 ID。 • “MB_CLIENT”V2.1 指令的 IP_PORT 参数对应于 TCON_IP_v4的参数 RemotePort。 • “MB_CLIENT”V2.1 指令的 4 个 IP_OCTET_x 参数对应于TCON_IP_v4 的 RemoteAddress 参数 数组。 组态连接的连接描述 对于 CONNECT参数的设定连接,使用以下结构的 TCON_Configured. 描述连接 • 确保仅在 TCON_Configured 结构中指定了TCP 类型的连接。 • 该连接不能使用下列 TCP 端口号:20、21、25、80、102、123、5001、34962、34963 和 34964。参数 STATUS (S7-1200, S7-1500) 参数 STATUS(常规状态信息)STATUS* (W#16#) 说明 0000 指令已执行,且无任何错误。 0001 连接已建立。 0003 连接已终止。 7000未激活任何作业且未建立任何连接(REQ=0,DISCONNECT=1)。 7001 已触发连接建立操作。 7002中间调用。正在建立连接。 7003 正在终止连接。 7004 连接已建立且处于受监视状态。未激活任何作业处理。 7005正在发送数据。 7006 正在接收数据。 *在程序编辑器中,状态代码可显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。
参数 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 本地 - • 指令版本 <V6.0:读/写数据错误或访问了 MB_DATA_PTR (页 6279) 地址外的区域。 • 指令版本 >=V6.0:读/写数据出错或访问了 MB_DATA_PTR、 RD_MB_DATA_PTR 或 WR_MB_DATA_PTR地址外的区域。 远程 02 读/写数据错误或访问服务器地址区域以外的位置。 8384 本地 - • 接收到无效的异常代码。 •接收到的数据值与Zui初由客户端发送的不同(功能 5、6 和 8)。 • 接收到无效状态值(功能 11) 远程 03 功能 5 数据值错误8385 本地 - • 诊断代码不支持。 • 接收到的子功能代码与Zui初由客户端发送的不同(功能 8)。 远程 03 诊断代码不支持8386 本地 - 接收到的功能代码与Zui初发送的代码不一致。 8387 本地 - 服务器接收到的 Modbus TCP 帧协议 ID不为“0”。STATUS * (W#16 #) 本地/远程 错误 “MB_SERVER”应 答中的错误代码 (B#16#) 说明8388 本地 - Modbus 服务器发送的数据长度与所请求的不同。只有使用 Modbus 功能 5、6、15 或 16时,才会发生该错误。 * 在程序编辑器中,状态代码可显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。 参数STATUS(参数错误) STATUS* (W#16#) 说明 80B6 无效连接类型,仅支持 TCP 连接。 80BBActiveEstablished 参数值无效(建立此类连接的标识符,请参见“CONNECT 参数(页6282)”): •只允许对服务器建立被动连接 (ActiveEstablished = FALSE)。 • 只允许对客户端建立主动连接(ActiveEstablished = TRUE)。 8188 参数 MB_MODE 的值无效。 8189 • 指令版本 <V6.0:MB_DATA_ADDR 参数的数据地址无效。 • 指令版本 >= V6.0:参数MB_DATA_ADDR、RD_MB_DATA_ADDR 或 WR_MB_DATA_ADDR 中的 数据地址无效。 818A •指令版本 < V6.0:MB_DATA_LEN 参数中的数据长度无效。 • 指令版本 >= V6.0:参数MB_DATA_LEN、RD_MB_DATA_LEN 或 WR_MB_DATA_LEN 中的数据 长度无效。 818B • 指令版本< V6.0:参数 MB_DATA_PTR 中的指针无效。请检查 MB_DATA_ADDR (页 6279) 和MB_DATA_LEN 参数的值。 • 指令版本 >= V6.0:参数 MB_DATA_PTR、RD_MB_DATA_PTR 或WR_MB_DATA_PTR 处的指针 无效。还需检查参数 MB_DATA_ADDR 和 MB_DATA_LEN 的值,如果MB_MODE = 123, 则检查参数 RD_MB_DATA_ADDR/WR_MB_DATA_ADDR 和RD_MB_DATA_LEN/ WR_MB_DATA_LEN 的值。 818C 参数 BLOCKED_PROC_TIMEOUT 或RCV_TIMEOUT 超时(参见指令的静态变量)。 BLOCKED_PROC_TIMEOUT 和 RCV_TIMEOUT 必须介于0.5 s 和 55 s 之间。 818D 一个或多个参数的值不是默认值,但未通过指定的 Modbus 功能使用。 示例:如果MB_MODE 的值为 123,则 MB_DATA_ADDR 和 MB_DATA_LEN 的值必须为 0,且 MB_DATA_PTR必须为空。如果 MB_MODE 的值不是 123,则所有以“RD_”或“WR_”开头的参数的 值都必须为 0 或为空。