Noise Immunity of ARC156

From firmware 6.00,  BACRouter had built in a software noise filter for RS485. Here we will investigate its performance on ARC156.

Performance Of Reference Devices

The reference devices are ZN551 and AAR modules which utilize microchip COM20019i to handle ARCnet communication.

From testing, the reference devices only care about the falling edge of signals which corresponds to differential voltage of RS485 bus.  Signal width does not participate to decode, unless the width is less than 0.52us which will be ignored. The mechanism is described in following paragraph.

These reference devices have a hardware noise filter built on SN74HC164 and SN74AHC1G32. On 10M clock base, only input signal levels from RS485 transceiver are low both on 1th and 5th clock, COM20019i will receive a low signal, so low level pulses shorter than 0.5us will be filtered.

Idle RS485 bus is more vulnerable to noise, because the biasing current is only a few Milli-amperes, it will take much longer to recover from noise signal than a driven bus which one node is in sending state.

On an idle bus, noise signals wider than 0.52us will be mistakenly decoded by COM20019i as a starting pulse of a new frame.

On a driven bus, when a bit 1 is being sent, there should be a falling edge of differential voltage,  if falling edge of noise is in the range of +/- 3.2us of valid signal’s falling edge, COM20019i will detect multiple falling edges, duplicated edges will be ignored.

When a bit 0 is being sent, there is no falling edge, but if there is noise of which falling edge is in the range of +/- 3.2us, COM20019i will incorrectly decode to bit 1.

Performance Of BACRouter

On and idle bus, BACRouter can tolerate noise signals shorter than 2.1us.

On a driven bus, if there is continuous bit 1s being sent,  the pulse width is 3.2us, BACRouter can only tolerate noise signal shorter than 1.05us. If there is bit 0 being sent, the pulse width will be greater than 6.4us, then BACRouter can tolerate noise signal shorter than 2.1us.

Conclusion

Immunity(Width of Noise signal)BACRouterReference Device
Idle Bus2.1us0.52us
Bit 1s being sent1.05usDon’t care
Bit 0 being sent2.1us0.52us

ARC156 and Multiple Frame Ratio

One of ARCNET’s greatest feature is determinacy. It has several design decisions to help it being deterministic.

  • Only 1 packet can be sent for each token pass.
  • The max payload of a packet is limited to 507 bytes.
  • Every delay is strictly limited.

So for ARC156, the time of the token passing a node is about 40.1 milliseconds in worst case that the node has a non-broadcast packet with 507 bytes payload to send and the propagation delay is extreme.

If a node has no packets to send, neglecting propagation delay, it only take 448 microseconds for the token passing. It’s very fast comparing to ms/tp.

In BACnet network, most packets have less than 50 bytes. For example, a ReadProperty request relayed from BACnet IP to ARC156 has only 25 bytes payload, a typical respond has only 32 bytes payload.

If there is a ARC156 bus with 30 nodes, one of nodes is router which relays packets from/to BACnet IP network. For each token passing round, the router sends one ReadProperty request asking for Present_Value property of Analog object in one of other nodes which replies a Complex ACK.  The time for the a passing round is about  21.4 milliseconds, so the throughout is 1/21.4 = 0.0467 transaction per milliseconds.

If we allow the router to send multiple request when it holds a token but passes token out before it has used token for 40.1 milliseconds,  the throughout will be improved while the determinacy is not degraded.

For example, if the router send 10 requests to different nodes before it passes the token out, it only takes 36.7 milliseconds. Nodes with request received will send reply when token is passing them. The total time for a token passing round is about 90.8 milliseconds.  The throughout is 10/90.8 = 0.11 transaction per milliseconds, it is about 2.36 times as standard implementation.

“Multiple Frame Ratio” parameter for BACRouter’s ARC156 port defines how long time BACRouter can hold the token to send multiple packets. For example, If “Multiple Frame Ratio” is 0.5,  then BACRouter can hold the token for 0.5 * 40.1 milliseconds = 20 milliseconds. 40.1 milliseconds here is the longest time a node can hold token we discussed at the begin.