Skip to content

BiDiB Track Occupancy Detection

Eugene edited this page Jan 9, 2023 · 7 revisions

The GBM16T boards can detect whether their track outputs are being occupied by a DCC item (e.g., a digital locomotive) or by an analog item (e.g., a wagon or hand). When multiple DCC items are on the same track output, the connected GBM16T board will recognise and report them to the GBMboost Master.

Limitation: Delayed Address Detection of DCC Items

After a DCC item has been placed across a GBM16T board's track output, the GBM16T board will report that the track output has become occupied and, shortly after, will report the item's DCC address if it exists. Delays in the (occupancy and address) reports can hinder the performance of automated train control, e.g., the stopping of trains when they reach their destinations, or the recognition of unsafe train movements.

Through experimentation using BiDiB Wizard, the following time delays in address detection have been observed for a train:

  • Time 0.000s: Front wheels of the train enters a track segment (i.e., a track output)
  • Time 0.075s: Track occupancy is reported
  • Time 0.333s: Train's DCC address is reported
  • Time 0.500s: Train's orientation is reported

The reporting delay seems to be affected by the round-robin communication schedule used by the boards, because delays in the range of 0.183s to 1.575s have been observed. Depending on the reporting delay and the speed of the train, the distance travelled until the train's DCC address has been reported can be substantial. For example, at a DCC speed step of 50, the distance travelled can be up to 18cm.

There does not appear to be a way to increase the frequency at which the train broadcasts its address, or to decrease the time it takes for a DCC address to be reliably detected and reported by a GBM16T board.

Limitation: Delayed Detection of Removed DCC Items

By design, the GBM16T boards will wait about 1 second to report the removal of a DCC item from a track output. This delay filters out intermittent disconnections between DCC items and the track outputs, thereby reducing the potential amount of BiDiB messages.

Limitation: DCC Addresses Propagate Through Connected Items

    ##  ___      ##  ___
   _\/__|_|_    _\/__|_|_
  ( DCC_A  |   ( DCC_B  |
  //o--=OOO-   //o--=OOO-
[=================] [=================]
  Track output X     Track output Y

Suppose there is a DCC item, called DCC_A, that only occupies track output X. When another DCC item, called DCC_B, is placed across track outputs X and Y, the GBM16T will report the following:

  • Track output X is occupied by DCC_A and DCC_B
  • Track output Y is occupied by DCC_B and also DCC_A

DCC_A is reported on track output Y because its address is being conducted from track output X to Y via the power rails of DCC_B. Thus, phantom DCC items can appear on the track outputs if there is a closed electrical circuit between them.

Limitation: Analog Items on the Same Track Output Cannot be Distinguished

It is not possible for the GMB16T to distinguish between one or more analog items on the same track output. This is because analog items can only provide a resistive feedback to the GBM16T.

Limitation: Analog Items May Become Lost

As soon as a DCC item occupies the same track output as an analog item, the analog item is no longer detected by the GBM16T. If the DCC item is removed from the track output before the analog item, then the removal of the DCC item and the presence of the analog item is detected and reported by the BiDiB boards. If the analog item is removed before the DCC item, then the removal of the analog item is not detected. Thus, there is no reliable method for detecting track outputs that are occupied simultaneously by DCC items and analog items. Only the DCC items are reliably detected and reported. This is summarised by the following sequence diagram.

   DCC item
(Address 0x01)   Analog item       Track Output
      |               |                 | Free
      |               *--Place--------->| Occupied (Address: null)  \ Mutually exclusive
      *--Place--------+---------------->| Occupied (Address: 0x01)  / states
      |               +--Remove-------->| Occupied (Address: 0x01)
      *--Remove-------+---------------->| Free
      |               |                 |
      |               |                 |
      |               |                 |
      |               *--Place--------->| Occupied (Address: null)
      *--Place--------+---------------->| Occupied (Address: 0x01)
      *--Remove-------+---------------->| Occupied (Address: null)
      |               *--Remove-------->| Free
      |               |                 |

Clone this wiki locally