How can I receive and send data on a RS485 9-bit multidrop bus (MDB) as used in vending machines?

How can I receive and send data on a RS485 9-bit multidrop bus (MDB) as used in vending machines?

Applies to: Docklight (all versions), Article ID: dl_faq046

The MDB MultiDropBus protocol features a 9th data bit called “mode bit”. Standard USB-to-RS485 converters, like most RS232/485 UARTs, only support 8 data bits. But with some limits in data display and transmission throughput, you can achieve basic MDB 9-bit monitoring and even transmission with standard PC hardware.

The Docklight project link below uses 9600 baud, 8 data bits and the following specialized communication settings:

1) Parity setting = Space

2) Parity Err. Char = (ignore)

This allows you to receive and display both ADDRESS (mode bit = 1) and DATA bytes (mode bit = 0) from MDB. As a limitation you do not have an indication which category your byte is. You need to explore other protocol characteristics, like timing and position of the character, to understand its meaning.

For sending data, temporary parity changes as supported via Docklight Function Character “!” can be used to switch between ADDRESS and DATA mode. (See the Docklight User Manual link below.)

NOTE: Though Docklight users have confirmed this approach works for MDB or related 9-bit protocols with “address bit”, we have not tested it ourselves. We simply do not have a vending machine available for some hacking. So we’d be really happy to hear about any MDB/vending specific Send or Receive Sequences you were able to write!

Docklight Applications – Example project for 9bit via parity switching

Docklight Manual – Temporary parity changes / 9 bit application