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.