通过以太网 (UDP) 或 FDL 发送和接收数据 (S7-1200, S7-1500)TUSEND:发送数据 (S7-1200, S7-1500) 说明 TUSEND 支持通过 UDP进行数据传输(S7-1500-CPU 固件版本 V2.0 及以上版本 ,通过集成 PROFINET 接口,也可作为多播通信),和通过S7‑1500 的 FDL 连接(CM 1542-5 V2.0 及 以上版本且系统数据类型为TCON_FDL)进行数据传输。
程序段 4(TSEND): 如果 TSEND 发出信号指示错误(“TSEND.error”为“TRUE”),则所报告的状态(“TSEND.status”)将进行yongjiu性存储(“TSEND.memErrStatus”)。 程序段 5(TDISCON): 输入参数REQ(“TDISCON.start”)的信号状态为“TRUE”时,启动指令“TDISCON”。多次调用时,指令“TDISCON”将终止该通信连接。为此,需检索输入参数 ID(“connectionID”)中使 用的通信连接。连接终止成功时,输出参数 DONE(“#doneDISC”)的信号状态为“TRUE”,且输出参数STATUS(“TDISCON.status”)的值为“0000”。由于输出参数的值仅在有效时才显示,成功状态将保存在变量“TDISCON.done”中。复位连接设置(“TCON.done”)和数据传送(“TSEND.done”)的成功消息。 输出参数ERROR(“TDISCON.error”)或变量“TDISCON.memErrStatus”)可用于指示本示例中的执行过程是否出错。程序段 6 (TDISCON): 如果 TDISCON发出信号指示错误(“TDISCON.error”为“TRUE”),则所报告的状态(“TDISCON.status”)将进行yongjiu性存储(“TDISCON.memErrStatus”)。CPU 2 的行为TCON 和 TDISCON 的运行与 CPU 1 中的相同。 程序段 3 (TRCV): 根据输入参数ID(“connectionID”),指令“TRCV”可确定待使用的通信连接。 输入参数EN_R(“TRCV.start”)的信号状态为“TRUE”时,启动指令“TRCV”。进行多次调用时,“TRCV”指令将接收所传送的数据记录。并检查输入参数 DATA(“SLI_plcDB_rcvData_TRCV”)处的该数据记录。 并通过输出参数 LEN(“#length”),确定 BYTE 中实际传送的数据记录长度。仅当传送成功时,才显示该值。之后,将检查“0”。数据记录接收成功时,输出参数 DONE(“#doneRCV”)的信号状态为“TRUE”,且输出参数 STATUS(“TRCV.status”)的值为“0000”。由于输出参数的值仅在有效时才显示,请进行以下操作步骤: • 成功状态保存在变量“TRCV.done”中。 • BYTE长度保存在变量“TRCV.readLength”中。 输出参数ERROR(“TRCV.error”)或变量“TRCV.memErrStatus”)可用于指示本示例中的执行 过程是否出错。程序段 4(TRCV): 如果 TRCV发出信号指示错误(“TRCV.error”为“TRUE”),则所报告的状态(“TRCV.status”)将进行yongjiu性存储(“TRCV.memErrStatus”)。 程序代码有关上述示例的更多信息和程序代码,请参见“指令的示例库 ”。通过指令“TUSEND”,可将数据发送到参数 ADDR 寻址的通信伙伴处。警告 通过 UDP 传送数据 基于 RFC 768 标准进行 UDP 数据传输时,数据传送到通信伙伴时无需确认,数据的传输不安全。即,数据可能会丢失,但块却不会指示这一错误。 发送超过 1472 字节时,会大幅增加未检测到传输错误的风险。 说明对于目标为其它通信伙伴的的后续发送操作,仅需要在调用“TUSEND”时调整参数 ADDR 即 可。无需调用“TCON (页5602)”和“TDISCON (页 5615)”指令。为了确保特定伙伴端接 收数据,必需设置伙伴端的 UDP 端口。 发送超过1472 字节 自 S7-1500 CPU 固件版本 V2.5 起,使用单播或多播通过 UDP Zui多可发送 2048字节的数据, 而非仅 1472 字节的数据。 如果发送的数据超过 1472 字节,则必须检查接收方是否支持接收 1472以上字节。如果不 满足此条件,发送方端无法得知接收方接收失败。 功能描述指令“TUSEND”为异步执行指令。即,该作业的执行可以跨多个调用。在 REQ 参数中生成上 升沿以建立连接。 输出参数BUSY、DONE、ERROR 和 STATUS 用于指示作业状态。 另请参见“同步指令和异步指令之间的不同之处(页 715)”。 下表列出了 BUSY、DONE 和 ERROR 之间的关系。使用该表可以确定“TUSEND”的当前状态或发送过程结束的时间。 BUSY DONE ERROR 说明 TRUE FALSE FALSE 作业正在处理。 FALSE TRUEFALSE 作业已成功完成。 FALSE FALSE TRUE 由于出错,导致作业结束。错误的原因可以从参数 STATUS 中找出。FALSE FALSE FALSE 没有为该指令分配(新)作业。由于“TUSEND”采用异步执行方式,在参数 DONE 或者参数ERROR 的值变为 TRUE 之 前,必须保证发送区的数据一致性。 参数 下表列出了“TUSEND”指令的参数: 参数 声明数据类型 存储区 说明 REQ Input BOOL I、Q、M、D、L 或常量 控制参数 REQUEST 在上升沿时启动发送作业。数据从 DATA 和 LEN 指定的区域传出。 ID Input CONN_OU C I、Q、M、D、L 或常量指向用户程序与操作系统通信层之间相关连接 的引用。ID 必须与 TCON 指令本地连接描述中 的相关参数 ID 相同:值范围:W#16#0001 到 W#16#0FFF LEN Input UDINT I、Q、M、D、L 或常量通过该作业可发送的Zui大字节数 以太网/UDP 的值范围:1 到 1472(自 S7-1500 CPU 固件版本 V2.5起,单播或多播 Zui多可传输:1 到 2048) 对于 CM 1542-5 的 FDL 连接,Zui大长度为 240个字节。在此,需注意连接伙伴可处理的 Zui大长度。 DONE Output BOOL I、Q、M、D、L 状态参数 DONE: •0:作业未启动,或者仍在执行之中。 • 1:作业已执行,且无任何错误。此值将仅 显示一个周期。 BUSY Output BOOLI、Q、M、D、L • BUSY = 1:作业尚未完成。无法启动新作 业。 • BUSY = 0:作业已完成。 ERROROutput BOOL I、Q、M、D、L 状态参数 ERROR: • ERROR = 1:执行过程中发生错误。有关错误类型的详细信息,请参见“STATUS”。 STATUS Output WORD I、Q、M、D、L 状态参数STATUS:错误信息。