ARC156与发送多帧比例

ARCNET协议最大的特点之一是确定性。它有几个设计决策来帮助它实现确定性:

  • 每次传递令牌只能发送 1 个数据包。
  • 数据包的最大有效载荷限制为 507 字节。
  • 所有延迟都受到严格限制。

因此,对于 ARC156,在最坏的情况下,令牌传递节点的时间约为 40.1 毫秒,即节点有一个非广播数据包,其有效载荷为 507 字节,且传播延迟为极限值。

如果节点没有数据包要发送,忽略传播延迟,令牌传递仅需 448 微秒。与 ms/tp 相比,它非常之快。

在 BACnet 网络中,大多数数据包小于 50 字节。例如,从 BACnet IP 中继到 ARC156 的 ReadProperty 请求只有 25 字节的有效载荷,典型的响应只有 32 字节的有效载荷。

如果有一条带有 30 个节点的 ARC156 总线,其中一个节点是路由器,它从/向 BACnet IP 网络中继数据包。对于每个令牌传递轮次,路由器都会发送一个 ReadProperty 请求,询问其他节点之一的 Analog 对象的 Present_Value 属性,该节点会回复一个Complex ACK。此时令牌传递一轮的时间约为 21.4 毫秒,因此吞吐量为 1/21.4 = 每毫秒 0.0467 个事务。

如果我们允许路由器在持有令牌时发送多个请求,但在使用令牌 40.1 毫秒之前将令牌传递出去,则吞吐量将会提高,同时不影响确定性指标。

例如,如果路由器在传递令牌之前向不同的节点发送 10 个请求,则仅需要 36.7 毫秒。收到请求的节点将在令牌传递给它们时发送回复。此时令牌传递一轮的总时间约为 90.8 毫秒。吞吐量为 10/90.8 = 每毫秒 0.11 个事务,约为标准实现的 2.36 倍。

BACRouter 的 ARC156 端口的“发送多帧比例”参数定义了 BACRouter 可以持有令牌以发送多个数据包的时间。例如,如果“发送多帧比例”为 0.5,则 BACRouter 可以持有令牌 0.5 * 40.1 毫秒 = 20 毫秒。这里的 40.1 毫秒是我们一开始讨论的节点可以持有令牌的最长时间。