ARC156 抗噪声性能

从固件版本6.00起,BACRouter的RS485端口内置了一个软件噪声过滤器,在这里我们将考察其在ARC156上的表现

对照设备的性能

我们使用的对照设备是ZN551与AAR模块。它们采用了微芯公司的COM20019i芯片来处理ARCnet通讯

从测试数据来看,对照设备只关心信号的下降沿,此处信号对应RS485的差分电压。信号的宽度对解码没有影响,除非信号的脉宽小于0.52us,此时信号被忽略。下面我们将解释其原理。

对照设备内置一个硬件滤噪电路,此电路由SN74HC164 与 SN74AHC1G32 器件组成。在10M时基下,由RS485收发器来的输入信号,只有在第1个时钟与第5个时钟同时为低电平时,COM20019i才能接收到低电平信号,所以当脉冲宽度小于0.5us的低电平信号将被滤除。

空闲状态下的RS485总线对噪声更敏感,因为此时的偏置电流只为数毫安,对比被驱动的总线,它将要花费长得多的时间来从噪声信号中恢复。

在空闲的总线上,脉冲宽度大于0.52us的噪声信号将被COM20019i错误地识别为帧的起始信号。

在被驱动的总线上,当位1被发送,一个差分电压的下降沿将出现在总线上,如果噪声信号的下降沿出现在有效信号下降沿的+/-3.2us范围内,COM20019i将检测到多个下降沿,重复的下降沿将被忽略。

当位0被发送,如果噪声信号出现在下降沿检测位置+/- 3.2us范围内,COM20019i将错误地将其解码为位1。

BACRouter的性能

在空闲的总线上,BACRouter能容忍脉冲宽度小于2.1us的噪声信号。

在被驱动的总线上,如果位1被连续发送,信号的脉宽为3.2us,BACRouter只能容忍脉冲宽度小于1.05us的噪声信号。如果位0被发送,则信号的脉宽将大于6.4us,BACRouter可以容忍脉冲宽度小于2.1us的噪声信号。

结论

容忍噪声信号宽度BACRouter对照设备
空闲总线2.1us0.52us
位1发送中1.05us噪声无影响
位0发送中2.1us0.52us

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 毫秒是我们一开始讨论的节点可以持有令牌的最长时间。