如果通过 DATA参数引用数据类型 STRING,则参数 LEN 指定的长度必须为 0 或 >=2(不 允许 LEN = 1)。 • 如果通过DATA 参数引用数据类型 WSTRING,则参数 LEN 指定的长度必须为 0 和 >=5。 BUSY、NDR 和 ERROR参数 使用 BUSY、NDR、ERROR 和 STATUS 参数可以检查作业的状态。参数 BUSY 表示作业正在执 行。使用参数NDR,可以检查作业是否已成功执行完毕。参数 ERROR 被置位,表明 TRCV 的 执行过程出现了错误。错误信息通过参数STATUS 输出。 下表列出了参数 BUSY、NDR 和 ERROR 之间的关系:由于“TRCV”是异步执行指令,仅当参数NDR 设置为值“1”时,接收区中的数据才一致。 ERROR 和 STATUS 参数 ERROR STATUS* (W#16#...) 说明 0 0000 作业已成功完成。在参数 RCVD_LEN 中输出已接收数据的当前长度。 0 7000 块未做好接收准备。0 7001 块已经准备好接收,接收作业已激活。 0 7002 中间调用,接收作业正在执行。注:处理作业期间,数据会写入接收区。此时访问接收区可能会得到不一致的数据。 1 8085 • 参数 LEN 大于允许的Zui大值(对于S7-1200:8192 字节,S7-1500:65536 字节)。 • 参数 LEN 或 DATA 的值在第一次调用后发生改变。 •参数 LEN 与 DATA 的值均为“0”,或 LEN 的长度超出所允许的Zui大值(S7-1200: 8192字节,S7-1500:65536 字节)。
说明 1 8086ID 参数超出了有效范围。 1 8088 • 接收区过小。 • 参数 LEN 的值大于参数 DATA 中设置的接收区。 1 80A1通信错误: • 尚未建立指定的连接。 • 正在终止指定的连接。无法通过该连接执行接收作业。 • 正在重新初始化连接。 1 80B1在当前作业完成前更改了 DATA 参数。 1 80B3 协议选项(连接描述信息内的参数 connection_type)被设置为UDP。UDP 连接使用指 令“TURCV”。 1 80C3 • 具有该 ID 的块正在一个具有不同优先级的组中处理。 •内部资源不足。 1 80C4 临时通信错误: • 此时无法建立与伙伴的连接。 • 接口正在接收新参数设置或正在建立连接。 • R/H系统为 SYNCUP 系统状态,或进行了主备份切换。连接关闭。TRCV 停止执行。 1 80C5 远程伙伴终止了连接。 1 80C6无法访问远程伙伴(网络错误)。 1 80C7 执行超时。 1 80C9 接收区的长度小于发送数据的长度。 1 80EE通信握手尚未完成 1 xxyy, xx > 80 有关常见错误信息,请参见通过输出参数 RET_VAL 评估错误(页 184) *在程序编辑器中,错误代码可显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。TCON、TDISCON、TSEND 和TRCV 的编程示例 (S7-1200, S7-1500) 简介 在以下示例中,将在 S7-1500 系列的两个 CPU间创建一个编程连接,并将数据记录从 CPU 1 发送到 CPU 2 中。 要求 • 两个 S7-1500 系列的 CPU 通过PROFINET 进行互连,它们之间的连接尚未组态。 • 基于“属性 > 保护”(Properties >Protection) 中的低保护级别,可确保每个 CPU 都可进行 读写访问。 CPU 1 中的程序:数据的存储为数据记录,创建以下 PLC 数据类型。 要进行数据传送,需基于所创建的 PLC 数据类型,创建以下数据块(“SLI_plcDB_sendData_TSEND”)。要对该数据进行存储,需使用以下结构和变量,创建一个全局数据块(“SLI_gDB_TSEND”)。CPU1 中的程序:参数互连 创建函数块“SLI_FB_TSEND”,并在该数据块中创建以下局部变量。 程序段1:互连“TCON”指令的参数,如下所示:CPU 1 中的程序:TCON 的组态 要互连输入参数 CONNECT,可通过“属性> 组态”(Properties > Configuration) 打开指令 “TCON”的向导。对 TCON的组态进行如下设置: 输入字段 条目 端点 在下拉列表中,选择作为发送方和接收方的 CPU。 系统将自动输入接口、子网和地址。连接数据 在下拉列表中选择“新建”(New),为每个 CPU 创建一个数据块。 该数据块用于存储连接数据。数据块的名称可任意设置。 为CPU 1(本地 CPU)建立主动连接。 连接类型 选择条目“ISO-on-TCP”。这意味着,建立连接时将使用“ISO-on-TCP”协议的以太网连接。 连接 ID 在该通信连接中,输入任意一个选定的连接 ID。该连接 ID 在项目中尚未分配。确保数值与所用变量“connectionID”中的 值相同。 TSAP ID在选择“ISO-on-TCP”连接类型时,系统将自动输入详细的地址信息。CPU 2 中的程序:数据的存储 为数据记录,创建以下 PLC数据类型。 要进行数据传送,需基于所创建的 PLC 数据类型,创建以下数据块 (“SLI_plcDB_rcvData_TRCV”)。要对该数据进行存储,需使用以下结构和变量,创建一个全局数据块(“SLI_gDB_TRCV”)。CPU 2 中的程序:参数互连创建函数块“SLI_FB_TRCV”,并在该数据块中创建以下局部变量。 程序段 1:互连“TCON”指令的参数,如下所示: 程序段2:如果 TCON 出错,则保存状态信息,如下所示。 程序段 3:互连“TRCV”指令的参数,如下所示:CPU 2 中的程序:TCON的组态 根据 CPU 1 / TCON 的示例,对 CPU 2 / TCON 连接进行以下设置: 说明 连接数据 完成 CPU 1 /TCON 的组态之后,已创建了一个数据块(“PLC_Tsend_Connection_DB”,“PLC_Trcv_Connection_DB”),并带有为各 CPU 存储的连接数据。如果不希望创建新的数据块并输入连接数据,则可直接使用创建的数据块(“PLC_Tsend_Connection_DB”,“PLC_Trcv_Connection_DB”)。 如果要选择已创建的数据块,则这些数据块必须位于“项目树”(projecttree) 的“程序块 > 系 统块”(Program blocks > System blocks)中。建立连接的操作步骤 请遵循相关操作步骤的顺序: 1.对于 CPU 2 / TCON,将参数 REQ 更改为“TRUE”。 2.对于CPU 1 / TCON,将参数 REQ 更改为“TRUE”。 3.对于 CPU 2 / TCON,将参数 REQ更改为“FALSE”。 4.对于 CPU 1 / TCON,将参数 REQ 更改为“FALSE”。 终止连接的操作步骤请遵循相关操作步骤的顺序: 1.对于 CPU 1 / TDISCON,将参数 REQ 更改为“TRUE”。 2.对于 CPU 2 /TDISCON,将参数 REQ 更改为“TRUE”。 3.对于 CPU 1 / TDISCON,将参数 REQ 更改为“FALSE”。4.对于 CPU 2 / TDISCON,将参数 REQ 更改为“FALSE”。CPU 1 的行为 程序段 1 (TCON):输入参数 REQ(“TCON.start”)的信号状态为“TRUE”时,启动指令“TCON”。多次调用时,指令“TCON”将创建与伙伴 CPU 的通信连接。为此,可通过输入参数 CONNECT(或数据块“PLC_Trcv_Connection_DB”)检索该连接数据。 连接设置成功时,输出参数DONE(“#doneCON”)的信号状态为“TRUE”,且输出参数STATUS(“TCON.status”)的值为“0000”。由于输出参数的值仅在有效时才显示,成功状态将保存在变量“TCON.done”中。复位所有之前连接终止的成功状态(“TDISCON.done”)。 输出参数ERROR(“TCON.error”)或变量“TCON.memErrStatus”)可用于指示本示例中的执 行过程是否出错。 程序段2 (TCON): 如果 TCON发出信号指示错误(“TCON.error”为“TRUE”),则所报告的状态(“TCON.status”)将进行yongjiu性存储(“TCON.memErrStatus”)。 程序段 3 (TSEND): 根据输入参数ID(“connectionID”),指令“TSEND”可确定待使用的通信连接。 输入参数REQ(“TSEND.start”)的信号状态为“TRUE”时,启动指令“TSEND”。进行多次调用时,“TSEND”指令将传送输入参数 DATA(“SLI_plcDB_sendData_TSEND”)处检测到的数据记 录。数据记录传送成功时,输出参数 DONE(“#doneSEND”)的信号状态为“TRUE”,且输出参数STATUS(“TSEND.status”)的值为“0000”。由于输出参数的值仅在有效时才显示,成功状态将保存在变量“TSEND.done”中。 输出参数ERROR(“TSEND.error”)或变量“TSEND.memErrStatus”)可用于指示本示例中的执行过程是否出错。