1

我正在尝试为微控制器项目编写仅在 ABM(点对点)中工作的 HDLC 协议。我主要依靠 ISO 13239 文档click

通信应以双向同时模式工作。现在我想连接在同一个微上运行两个 HDLC 上下文的微的两个 USART。我在理解 ABM 中的 P/F 位用途时遇到了问题。

在具有正常响应模式 (NRM) 的半双工链路中,原理很简单 - 主站发送在最后一帧设置了 P 位的命令帧,授予辅助站以在主站也设置了 F 位的帧进行响应的权限最后一帧。

在 NRM 的全双工链路中,主站发送第一帧 P 位设置的命令,可以发送更多帧。当辅助接收到第一个设置了 P 位的命令帧时,它可以发送在第一帧上设置了 F 位的响应帧。在第一个命令/响应帧上设置 P/F 位的目的是提高速度 - 主节点允许尽快将命令传输到辅助节点,以便辅助节点可以在主节点仍在发送命令时发送响应(双向同时)。

在全双工 ABM 中,情况对我来说很复杂。没有主从关系,但两个站都是组合站,并且都可以随时(异步)发送命令和响应。这是我之前提到的 ISO 文档中 ABM 信息交换的示例信息交换。为什么两个站都使用带有 P/F 位的帧。如果没有 P/F 位,交易所看起来会不会一样?一个站何时以及为什么发送带有 ABM 中 P/F 位的帧

4

2 回答 2

0

如 ISO13239 第 5.4.3.1.3 节所述:

在 ARM 和 ABM 中,设置为“1”的 P 位应用于在最早的响应机会时请求响应,而 F 位设置为“1”。

注意:例如,如果主站/组合站需要肯定确认已接收到特定命令,则它将命令中的 P 位设置为“1”。如 5.4.3.1.6 中所述,这会强制来自辅助/组合站的响应。

(对 5.4.3.1.6 的引用必须是错字,因为该部分不存在......)

于 2019-05-06T14:53:19.413 回答
0

一个站何时以及为什么发送带有 ABM 中 P/F 位的帧?

什么时候?站尽快发送命令帧(目标站地址和 P/F 位设置的帧。在这种情况下,P/F 位被视为 P 位)。即在对话开始时,然后每次收到响应。响应是设置了发送站地址(对等地址)和 P/F 位的帧。在这种情况下,P/F 位被视为 F 位。

6.4 寻址方案

在所有类别(不平衡、平衡和无连接)中,必须始终发送包含目标数据站地址的命令,并且始终发送包含分配的发送数据站地址的响应。

为什么?因为检查点。它有助于检测丢失的帧并重新传输它们。您也可以使用 REJ 框架,但它是可选的。

5.4.3.3.4 检查点

在 ABM 中,如果接收到的 I、RR 或 RNR 响应帧的 F 位设置为“1”,则 N(R) 将导致接收到的组合站启动适当的错误恢复,如果 N(R) 不确认至少所有由接收组合站在P比特设置为“1”的情况下由接收组合站发送的最后一帧之前和同时发送的所有I帧。

于 2020-08-25T10:20:30.907 回答