点对点握手程序

2021-07-30 浏览次数:147
握手程序

简介

握手用于控制两个通信伙伴之间的数据流。 如果设备以不同的速度操作,则使用握手方法可以防止在传输期间产生的数据丢失。

我们可从根本上区别以下方法:

列表: 方法和接口概述

方法

RS232

RS422

RS485

软件数据流控制 XON/XOFF

X

X

硬件数据流控制 (RTS/CTS)

X

伴随信号的自动操作

X


软件数据流控制

在通信模块上按照以下方式执行软件数据流控制:

XON/XOFF

只要通过参数分配将通信模块设置为 "XON/XOFF" 操作模式,该通信模块就将发送 XON 字符,从而允许通信伙伴发送数据。

在接收缓冲区上溢前达到所组态的较大帧数,或达到 16 个字符时,通信模块会发送 XOFF 字符,从而请求通信伙伴停止发送。 如果通信伙伴仍然继续发送数据,则在接收缓冲区上溢时将生成一条错误消息。 在最后一个帧中接收到的数据将被丢弃。

只要 CPU 提取帧并且接收缓冲区已准备好再次接收数据,通信模块就会发送 XON 字符。

如果通信模块在发送期间接收到 XOFF 字符,则其将取消当前的发送操作,直至从其通信伙伴处再次接收到 XON。 如果在特定的可组态时间内未接收到 XON,则会取消发送操作,并输出相应的错误消息。


提示

可为 XON 和 XOFF 组态字符(任何 ASCII 字符)。

在 XON/XOFF 软件数据流控制的参数分配期间,用户数据不可包含任何已组态的 XON 或 XOFF 字符。



硬件数据流控制


提示

*为 "Hardware RTS always ON, ignore DTR/DSR" 参数分配连接 DTR/DSR 信号。

如果组态了 "Hardware RTS always ON",则必须将所使用的接口信号完全连接起来。 请确保本地 RTS(输出)与通信伙伴的 CTS (输入)相连接,而本地 CTS 与通信伙伴的 RTS 相连接。 相应地,本地 DTR 必须与通信伙伴的 DSR 相连接,而本地 DSR 与通信模块的 DTR 相连接。




图片: 接口信号的接线

硬件 RTS 始终切换,忽略 DTR/DSR

只要通过参数分配将通信模块设置为带有 "Hardware RTS always ON" 的工作模式,该通信模块就会向通信伙伴输出 RTS = ON 信号,以指示其准备就绪状态。

只要在缓冲区上溢前达到所组态的较大帧数或 16 个字符,RTS 就将被设置为 OFF。
如果通信伙伴仍继续发送数据,则在接收缓冲区上溢时会生成一条错误消息。 在最后一个帧中接收到的数据将被丢弃。

只要 CPU 提取帧并且接收缓冲区已准备好再次接收数据,RTS 就会被设置为 ON。

如果 CTS 在发送操作期间切换为 OFF,则通信模块会中断发送操作,直至将 CTS 重置为 ON。 如果 CTS 未在特定的可组态时间内重置为 ON,则会取消发送操作,并输出一条相应的错误消息。

硬件 RTS 始终开启

"Hardware RTS always ON" 模式对应于 "Hardware RTS always ON, ignore DTR/DSR" 模式。 但还需要连接 DTR 和 DSR。

只要通过参数分配将通信模块设置为带有 "Hardware RTS always ON" 的工作模式,该通信模块就会设置 DTR = ON 和 RTS = ON,以向通信伙伴表示其准备就绪状态。

只要在缓冲区上溢前达到所组态的较大帧数或 16 个字符,RTS 就将被设置为 OFF。
如果通信伙伴仍继续发送数据,则在接收缓冲区上溢时会生成一条错误消息。 在最后一个帧中接收到的数据将被丢弃。

只要 CPU 提取帧并且接收缓冲区已准备好再次接收数据,RTS 就会被设置为 ON。

如果 CTS 在发送操作期间切换为 OFF,则通信模块会中断发送操作,直至将 CTS 重置为 ON。 如果 CTS 未在特定的可组态时间内重置为 ON,则会取消发送操作,并输出一条相应的错误消息。

从 DSR = ON 切换为 DSR = OFF 将取消激活的发送作业并触发错误消息。

伴随信号的自动操作

硬件 RTS 始终切换

在通信模块上按照以下方式执行 "Hardware RTS always switched":

只要通过参数分配将通信模块设置为带有 "Hardware RTS always switched" 的操作模式,该通信模块就会将线路 RTS 设置为 OFF,将 DTR 设置为 ON(通信模块准备就绪)。

在将 DSR 线路设置为 ON 后才能发送帧。 只要将 DSR 设置为 OFF,就无法通过 RS232C 接口发送数据。 取消发送作业并生成一条相应的错误消息。

发送作业未决时,RTS 会设置为 ON,并且启动组态的 RTS 接通延迟。 数据输出时间结束后,系统会检查通信伙伴是否已将 CTS 设置为 ON。 如果已设置为 ON,则会通过 RS232 接口发送数据。

如果 CTS 线路在 RTS 接通延迟范围内未设置为 ON,或在传输期间 CTS 切换为 OFF,则发送作业会被中止,并生成一条错误消息。

一旦数据发送完毕且**过组态的清除 RTS 关断延迟,RTS 线路将立即设置为 OFF。 系统不会等待 CTS 更改为 OFF。

始终都可通过 RS232 接口接收数据。 如果存在通信模块的接收缓冲区上溢的危险,则将不会有响应。

从 DSR = ON 切换为 DSR = OFF 将取消激活的发送作业并触发错误消息。


提示

设置“RTS 接通延迟”(RTS ON delay),使通信伙伴能够在此时间结束之前进入准备好接收状态。

设置“RTS 关断延时”(RTS OFF delay),使通信伙伴能够在 RTS 设置为 OFF 以及取消发送请求前完整接收帧的最后字符。




提示

组态自动使用 RS232 信号后,将不能通过相应指令控制 RTS 和 DTR!



时序图

下图显示了在已组态数据流控制“硬件 RTS 始终切换”(Hardware RTS always switched) 下,发送作业的时间顺序:


图片: “硬件 RTS 始终切换”(Hardware RTS always switched) 的时序图

更多信息


提示

通信模块接受 DTR/DSR 或 RTS/CTS 的操作,该操作采用以下设置:

硬件 RTS 始终切换,忽略 DTR/DSR

硬件 RTS 始终开启

硬件 RTS 始终切换


shtxjd.cn.b2b168.com/m/
top