PLC 概念 3
TIME 32 位 存储形式
6.2.5 通信指令
6.2.5.1 开放式以太网通信
可自动连接/断开的开放式以太网通信(TSEND_C 和 TRCV_C)
说明
处理 TSEND_C 和 TRCV_C 指令花费的时间量无法确定。 要确保这些指令在每次扫描循 环中都被处理,务必从主程序循环扫描中对其调用,例如,从程序循环 OB 中或从程序循 环扫描中调用的代码块中对其调用。 不要从硬件中断 OB、延时中断 OB、循环中断 OB、错误中断 OB 或启动 OB 调用这些指令。
有关使用这些指令传送数据的信息,请参阅数据一致性 (页 94)部分。
TSEND_C 描述
TSEND_C 可与伙伴站建立 TCP 或 ISO on TCP 通信连接,发送数据并且可以终止该连
说明
LEN 参数的默认设置 (LEN = 0) 使用 DATA 参数来确定要传送的数据的长度。 确保 TSEND_C 指令传送的 DATA 的大小与 TRCV_C 指令的 DATA 参数的大小相同。
下列功能说明了 TSEND_C 指令的操作:
● 要建立连接,请在 CONT = 1 时执行 TSEND_C。
● 成功建立连接后,TSEND_C 便会置位 DONE 参数一个周期。
● 要终止通信连接,请在 CONT = 0 时执行 TSEND_C。连接将立即中止。 这还会影响 接收站。 将在接收站关闭该连接,并且接收缓冲区内的数据可能会丢失。
● 要通过建立的连接发送数据,请在 REQ 的上升沿执行 TSEND_C。 发送操作成功执 行后,TSEND_C 便会设置 DONE 参数一个周期。
● 要建立连接并发送数据,请在 CONT =1 且 REQ = 1 时执行 TSEND_C。发送操作成 功执行后,TSEND_C 便会置位 DONE 参数一个周期。
TRCV_C 描述
TRCV_C 可与伙伴 CPU 建立 TCP 或 ISO on TCP 通信连接,接收数据并且可以终止该 连接。设置并建立连接后,CPU 会自动保持和监视该连接。 TRCV_C 指令兼具 TCON、
TDISCON 和 TRCV 指令的功能。
使用 TRCV_C 指令可以接收的最小数据单位是字节。 TRCV_C 指令不支持传送布尔数据 或布尔数组。
说明
LEN 参数的默认设置 (LEN = 0) 使用 DATA 参数来确定要传送的数据的长度。 确保 TSEND_C 指令传送的 DATA 的大小与 TRCV_C 指令的 DATA 参数的大小相同。
下列功能说明了 TRCV_C 指令的操作:
● 要建立连接,请在参数 CONT = 1 时执行 TRCV_C。
● 要接收数据,请在参数 EN_R = 1 时执行 TRCV_C。参数 EN_R = 1 且 CONT = 1 时 TRCV_C 连续接收数据。
● 要终止连接,请在参数 CONT = 0 时执行 TRCV_C。连接将立即中止且数据可能丢 失。
接收模式
TRCV_C 处理与 TRCV 指令相同的接收模式。 下表说明了在接收区输入数据的方法。
协议选项 在接收区输入数据 参数“connection_type”
TCP 指定长度的数据接收 B#16#11
ISO on TCP 协议控制 B#16#12
说明
由于 TSEND_C 采用异步处理,所以在 DONE 参数值或 ERROR 参数值为 TRUE 前,必 须保持发送方区域中的数据一致。
对于 TSEND_C,DONE 参数状态为 TRUE 表示数据成功发送。 但并不表示连接伙伴 CPU 实际读取了接收缓冲区。
由于 TRCV_C 采用异步处理,因此仅当参数 DONE = 1 时,接收器区域中的数据才一 致。
下表说明了参数 BUSY、DONE 和 ERROR 之间的关系。
BUSY DONE ERROR 说明
TRUE 不相关 不相关 作业正在处理。
FALSE TRUE FALSE 作业已成功完成。
FALSE FALSE TRUE 该作业以出错而结束。 出错原因可在 STATUS 参数中找 到。
FALSE FALSE FALSE 未分配新作业。
TSEND_C 参数
参数 参数类型 数据类型 说明
REQ INPUT Bool 控制参数 REQ 在上升沿启动具有 CONNECT 中 所述连接的发送作业。
CONT INPUT Bool 0: 断开
1: 建立并保持连接
LEN INPUT Int 要发送的最大字节数。 (默认值 = 0,这表示 DATA 参数决定要发送的数据的长度)。
CONNECT IN_OUT TCON-Param
指向连接描述的指针
DATA IN_OUT Variant 发送区;包含要发送数据的地址和长度。
COM_RST IN_OUT Bool 1: 完成功能块的重新启动,现有连接将终止。
DONE OUTPUT Bool 0: 作业尚未开始或仍在运行。
1: 无错执行作业。
BUSY OUTPUT Bool 0: 作业完成。
1: 作业尚未完成。 无法触发新作业。
ERROR OUTPUT Bool 1: 处理时出错。 STATUS 提供错误类型的详 细信息。
STATUS OUTPUT Word 错误信息
TRCV_C 参数
参数 参数类型 数据类型 说明
EN_R IN Bool 启用接收的控制参数:EN_R = 1 时,TRCV_C 准备接收。 处理接收作业。
CONT IN Bool 控制参数 CONT:
0: 断开
1: 建立并保持连接
LEN IN Int 接收区长度(字节)。 (默认值 = 0,这表示 DATA 参数决定要发送的数据的长度)。
CONNECT IN_OUT TCON-Param
指向连接描述的指针
DATA IN_OUT Variant 接收区包含接收数据的起始地址和最大长度。
COM_RST IN_OUT Bool 1: 完成功能块的重新启动,现有连接将终止。
DONE OUT Bool 0: 作业尚未开始或仍在运行。
1: 无错执行作业。
BUSY OUT Bool 0: 作业完成。
1: 作业尚未完成。 无法触发新作业。
ERROR OUT Bool 1: 处理时出错。 STATUS 提供错误类型的详 细信息。
STATUS OUT Word 错误信息 RCVD_LE
N
OUT Int 实际接收到的数据量(字节)
参数 Error 和 Status
ERROR STATUS (W#16#...)
说明
0 0000 作业已无错执行 0 7000 无激活的作业处理
ERROR STATUS (W#16#...)
说明
0 7004 连接已建立并受到监视,无激活的作业处理 1 8085 LEN 参数的值比最大的允许值大
1 8086 CONNECT 参数超出允许范围
1 8087 已达到最大连接数;无法建立更多连接
1 8088 LEN 参数大于 DATA 中指定的存储区;接收存储区过小 1 8089 参数 CONNECT 未指向数据块。
1 8091 超出最大嵌套深度
1 809A CONNECT 参数指向的域与连接描述的长度不匹配。
1 809B 连接描述中的 local_device_id 与 CPU 的不匹配。
1 80A1 通信错误:
尚未建立指定的连接
当前正在终止指定的连接;无法通过该连接传输
正在重新初始化接口 1 80A3 正在尝试终止不存在的连接
1 80A4 远程伙伴连接的 IP 地址无效。 例如,远程伙伴的 IP 地址与本地 伙伴的 IP 地址相同。
1 80A7 通信错误: 在 TCON 完成前调用了 TDISCON(TDISCON 必须 先完全终止 ID 引用的连接)
1 80B2 参数 CONNECT 指向使用关键字 UNLINKED 生成的数据块 1 80B3 不一致的参数:
连接描述错误
本地端口(参数 local_tsap_id)已在另一个连接描述中存在
连接描述中的 ID 与作为参数指定的 ID 不同
ERROR STATUS (W#16#...)
说明
1 80B4 使用 ISO on TCP (connection_type = B#16#12) 建立被动连接 时,条件代码 80B4 提示您输入的 TSAP 不符合下列某一项地址 要求:
若是本地 TSAP 长度为 2 个字节且首字节的 TSAP ID 值为 E0 或 E1(十六进制),第二字节必须为 00 或 01。
如果本地 TSAP 长度为 3 个或更多字节,且首字节的 TSAP ID 值为 E0 或 E1(十六进制),则第二字节必须为 00 或 01,且所有其它字节必须为有效的 ASCII 字符。
如果本地 TSAP 长度为 3 个或更多字节,且首字节的 TSAP ID 值既不为 E0 也不为 E1(十六进制),则 TSAP ID 的所 有字节都必须为有效的 ASCII 字符。
有效 ASCII 字符的字节值为 20 到 7E(十六进制)。
1 80C3 所有连接资源都在使用。
1 80C4 临时通信错误:
此时无法建立连接
接口正在接收新参数
TDISCON 当前正在删除已组态连接
1 8722 CONNECT 参数: 源区域无效: DB 中不存在该区域 1 873A CONNECT 参数: 无法访问连接描述(例如,DB 不可用)
1 877F CONNECT 参数: 内部错误,如无效 ANY 引用
具有连接/断开控制的开放式以太网通信
说明
处理 TCON、TDISCON、TSEND 和 TRCV 指令花费的时间量无法确定。 要确保这些指 令在每次扫描循环中都被处理,务必从主程序循环扫描中对其调用,例如,从程序循环 OB 中或从程序循环扫描中调用的代码块中对其调用。 不要从硬件中断 OB、延时中断 OB、循环中断 OB、错误中断 OB 或启动 OB 调用这些指令。
使用 TCP 和 ISO on TCP 协议的以太网通信 以下这些程序指令控制通信过程:
● TCON 建立连接。
● TSEND 和 TRCV 发送和接收数据。
● TDISCON 断开连接。
使用 TSEND 和 TRCV 指令可以传送或接收的最小数据单位是字节。 TRCV 指令不支持 传送布尔数据或布尔数组。 有关使用这些指令传送数据的信息,请参阅数据一致性 (页 94)部分。
说明
LEN 参数的默认设置 (LEN = 0) 使用 DATA 参数来确定要传送的数据的长度。 确保 TSEND 指令传送的 DATA 的大小与 TRCV 指令的 DATA 参数的大小相同。
两个通信伙伴都执行 TCON 指令来设置和建立通信连接。 用户使用参数指定主动和被动 通信端点伙伴。 设置并建立连接后,CPU 会自动保持和监视该连接。
例如,如果连接由于断线或远程通信伙伴而终止,主动伙伴会尝试重新建立组态的连接。
不必再次执行 TCON。
执行 TDISCON 指令或 CPU 进入 STOP 模式后,会终止现有连接并删除所设置的连接。
要设置和重新建立连接,必须再次执行 TCON。
功能说明
TCON、TDISCON、TSEND 和 TRCV 异步运行,即,作业处理需要使用多个指令执行 来完成。
例如,在参数 REQ = 1 时执行指令 TCON 来启动用于设置和建立连接的作业。然后,再 执行 TCON 来监视作业进度并使用参数 DONE 来测试作业是否已完成。
下表给出了 BUSY、DONE 和 ERROR 之间的关系。 使用该表可以确定当前作业状态。
BUSY DONE ERROR 说明
TRUE 不相关 不相关 作业正在处理。
FALSE TRUE FALSE 作业已成功完成。
FALSE FALSE TRUE 该作业以出错而结束。出错原因可在 STATUS 参数中找 到。
FALSE FALSE FALSE 未分配新作业。
TCON
参数 参数类型 数据类型 说明
REQ IN Bool 控制参数 REQUEST 启动用于建立连接的作 业,该连接是通过 ID 指定的。在上升沿启动该 作业。
ID IN CONN_OUC (Word)
引用要建立的、连接到远程伙伴或在用户程序 和操作系统通信层之间的连接。 标识号必须与 本地连接描述中的相关参数标识号相同。
值范围: W#16#0001 到 W#16#0FFF CONNECT IN_OUT
TCON-Param
指向连接描述的指针
DONE OUT Bool 状态参数 DONE:
0: 作业尚未启动或仍在运行
1: 作业已无错执行 BUSY OUT Bool BUSY = 1: 作业尚未完成
BUSY = 0: 作业已完成 ERROR OUT Bool 状态参数 ERROR:
ERROR = 1: 作业处理期间出错。 STATUS 提供错误类型的详细信息。
STATUS OUT Word 状态参数 STATUS:错误信息
TDISCON
TCP 和 ISO on TCP: TDISCON 终止从 CPU 到通信伙伴的通信连 接。
参数 参数类型 数据类型 说明
REQ IN Bool 控制参数 REQUEST 启动用于建立连接的作 业,该连接是通过 ID 指定的。在上升沿启动该 作业。
ID IN CONN_OU C (Word)
引用要终止的、连接到远程伙伴或在用户程序和 操作系统通信层之间的连接。标识号必须与本地 连接描述中的相关参数标识号相同。
值范围: W#16#0001 到 W#16#0FFF DONE OUT Bool 状态参数 DONE:
0: 作业尚未启动或仍在运行
1: 作业已无错执行 BUSY OUT Bool BUSY = 1:作业尚未完成
BUSY = 0:作业已完成 ERROR OUT Bool ERROR = 1:处理时出错。
BUSY = 0:作业已完成 ERROR OUT Bool ERROR = 1:处理时出错。