LEN 和 DATA 参数 •LEN = 0 时,会发送使用参数 DATA 指定的所有数据。 • 如果参数 LEN 中的字节数大于使用参数 DATA定义的待发送数据的长度,则参数 STATUS 会输出错误代码 8088(请参见下面的参数 STATUS 的说明)。 • 如果通过DATA 参数引用一个结构 (Struct),则 LEN 指定的长度可以比该结构短。这种情 况下,仅传送Zui大为参数 LEN所指定长度的数据。 • 使用数据类型 STRING 和 WSTRING 时,如果参数 LEN = 0 则将传送所有数据。如果 LEN> 0,该长度必须至少是Zui大字节数再加两个包含长度信息的附加字节。有关数据类型结 构的更多详细信息,请参见“有效数据类型概述(页 255)”。 • 可传送的Zui大字节数为 8192。 • 使用优化数据块的结构化变量时,需在参数 DATA处互连该结构化变量的地址参数 LEN = 0。这样,当在接收端使用相同的结构时可确保这个整个结构的安全传输。 BUSY、DONE和 ERROR 参数 使用 BUSY、DONE、ERROR 和 STATUS 参数可以检查作业的状态。参数 BUSY 表示作业正在执行。使用参数 DONE,可以检查作业是否已成功执行完毕。如果在执行“TSEND”过程中出 错,则将置位参数ERROR。错误信息通过参数 STATUS 输出。 下表列出了参数 BUSY、DONE 和 ERROR 之间的关系: BUSYDONE ERROR 说明 作业正在处理。作业已成功完成。由于出错,导致作业结束。出错原因在参数 STATUS中指定未分配新作业。
由于“TSEND”是异步执行的,需要在参数DONE 或参数 ERROR 的值变为“1”之前,使发 送区中的数据保持一致。 ERROR 和 STATUS 参数 ERRORSTATUS* (W#16#.. .) 说明 0 0000 发送作业已完成且未出错。 0 7000 未激活任何作业处理。 0 7001启动作业执行,正在发送数据。 处理该作业期间,操作系统访问 DATA 发送区中的数据。 0 7002 作业正在执行(与 REQ无关)。 处理该作业期间,操作系统访问 DATA 发送区中的数据。 1 8085 • 参数 LEN 大于Zui大允许值 (65536)。• DATA 和 LEN 参数值均为“0”。 1 8086 ID 参数超出了允许的地址范围 (1..0xFFF)。 1 8088LEN 参数大于 DATA 中指定的区域。 1 80A1 通信错误: • 尚未建立指定的连接。 •正在终止指定的连接。无法通过此连接进行传送。 • 正在重新初始化接口。 1 80B3 协议选项(连接描述信息内的参数ConnectionType)被设置为 UDP。UDP 连接使用指令 “TUSEND”。 1 80C3 • 具有该 ID的块正在一个具有不同优先级的组中处理。 • 内部资源不足。 1 80C4 临时通信错误: • 此时无法建立与伙伴的连接。 •接口正在接收新参数设置或正在建立连接。 1 80C5 通信伙伴终止连接。 1 80C6网络错误。无法访问通信伙伴。TSEND:通过通信连接发送数据 (S7-1200, S7-1500) 说明 “TSEND”指令可用于:• 以太网 CPU S7-1200 固件版本 V4.0 及以上版本和 CPU S7-1500 • PROFIBUS S7‑1500 的FDL 连接(CM 1542‑5 V2.0 及以上版本且系统数据类型为 TCON_FDL)使用指令“TSEND”,可以通过现有通信连接发送数据。TSEND 为异步执行指令, 用户使用参数 DATA指定发送区。这包括要发送数据的地址和长度。待发送的数据可以使用 除 BOOL 和 Array of BOOL 外的所有数据类型。在参数 REQ 中检测到上升沿时执行发送作业。 使用参数 LEN 可指定通过一个发送作业发送的Zui大字节数。 • 使用TCP(流协议)传送数据时,“TSEND”指令不提供有关发送到“TRCV (页 5625)”的数 据的长度的信息。 • 使用ISO-on-TCP(面向消息的协议)传送数据时,所发送数据的长度传递给“TRCV (页 5625)”。还必须在(“TRCV (页 5625)”) 接收结束时接收通过“TSEND”以数据包形 式发送的数据量: –如果接收缓冲区对于待发送数据而言过小,那么在接收结束时会发生错误。 – 如果接收缓冲区足够大,那么在接收数据包后“TRCV”会立即返回DONE=1。 在发送作业完成前不允许编辑要发送的数据。如果发送作业成功执行,则参数 DONE 将设置为 “1”。参数 DONE的信号状态“1”并不能确定通信伙伴已读取所发送的数据。下表列出了“TSEND”指令的参数: 参数 声明 数据类型 存储区 说明 REQInput BOOL I、Q、M、D、L 或常量 在上升沿启动发送作业。 ID Input CONN_OUC I、Q、M、D、L或常量 引用由“TCON”建立的连接。 值范围:W#16#0001 到 W#16#0FFF LEN Input UDINTI、Q、M、D、L 或常量 随作业发送的Zui大字节数(S7-1200 的Zui大允许 值:8192,S7-1500允许的Zui大值:65536)。 对于 CM 1542-5 的 FDL 连接,Zui大长度为 240个字节。在此,需注意连接伙伴可处理的Zui大长 度。 DATA InOut VARIANT I、Q、M、D、L指向发送区的指针,该发送区包含要发送数据的 地址和长度。该地址引用: • 输入的过程映像 • 输出的过程映像 • 位存储器 • 数据块• 本地数据 传送结构时,发送端和接收端的结构必须相同。 DONE Output BOOL I、Q、M、D、L状态参数,可具有以下值: • 0:作业尚未启动,或仍在执行过程中 • 1:作业已经成功完成 BUSY Output BOOLI、Q、M、D、L 状态参数,可具有以下值: • 0:作业尚未启动或已完成 • 1:作业尚未完成。无法启动新作业。 ERROROutput BOOL I、Q、M、D、L 状态参数,可具有以下值: • 0:无错误 • 1:出错 STATUS OutputWORD I、Q、M、D、L 指令的状态 有关有效数据类型的更多信息,请参见“有效数据类型概述。LEN 和 DATA 参数 • LEN= 0 时,会发送使用参数 DATA 指定的所有数据。 • 如果参数 LEN 中的字节数大于使用参数 DATA定义的待发送数据的长度,则参数 STATUS 会输出错误代码 8088(请参见下面的参数 STATUS 的说明)。 • 如果通过DATA 参数引用一个结构 (Struct),则 LEN 指定的长度可以比该结构短。这种情 况下,仅传送Zui大为参数 LEN所指定长度的数据。 • 使用数据类型 STRING 和 WSTRING 时,如果参数 LEN = 0 则将传送所有数据。如果 LEN> 0,该长度必须至少是Zui大字节数再加两个包含长度信息的附加字节。有关数据类型结 构的更多详细信息,请参见“有效数据类型概述(页 255)”。 • 可传送的Zui大字节数取决于设备。 • 使用优化数据块的结构化变量时,需在参数 DATA处互连该结构化变量的地址参数 LEN = 0。这样,当在接收端使用相同的结构时可确保这个整个结构的安全传输。 BUSY、DONE和 ERROR 参数 使用 BUSY、DONE、ERROR 和 STATUS 参数可以检查作业的状态。参数 BUSY 表示作业正在执行。使用参数 DONE,可以检查作业是否已成功执行完毕。如果在“ERROR”的执行过程中 出错,则置位参数TSEND。错误信息通过参数 STATUS 输出。 下表列出了参数 BUSY、DONE 和 ERROR 之间的关系: BUSYDONE ERROR 说明 1 0 0 作业正在处理。 0 1 0 作业已成功完成。 0 0 1由于出错,导致作业结束。出错原因在参数 STATUS 中指定。 0 0 0 未分配新作业。 说明由于“TSEND”是异步执行的,需要在参数 DONE 或参数 ERROR 的值变为“1”之前,使发 送区中的数据保持一致。