Multi-Drop Bus / Internal Communication Protocol

Multi-Drop Bus / Internal Communication Protocol (MDB/ICP) is the latest, US-European iteration of a multidrop bus computer networking protocol used within the vending machine industry, currently published by the American National Automatic Merchandising Association and supported by the European Vending Association and the European Vending Machine Manufacturers Association. It is based on earlier protocols (also known as MDB in the US) dating back to at least the early 1990s.

Mechanism
The multidrop bus used by vending machine controllers to communicate with the vending machine's components, such as a currency detector, is also called MDB (for Multi-Drop Bus). In use since the 1980s, it is now an open standard of the National Automatic Merchandising Association, or NAMA. The devices communicate in a single-master, multiple-slave configuration using the MDB protocol, which is based on a Motorola 9-bit UART implemented as an 8-bit data value with an additional mode bit. The mode bit differentiates between ADDRESS and DATA bytes. The master sends messages containing one address byte and a variable number of data bytes. The bus "slave devices" listen for an address, and if it matches their address that slave device will process the message and respond to the master. Though 9-bit compliant UARTs are not popular in PCs, they can be found in many microcontrollers.

The physical connection is realized as a serial bus with a fixed data rate of 9600 baud. There are just 2 communications signals plus the essential common-ground reference signal. The TX signal goes from the MASTER to every SLAVE device. The RX signal goes from every SLAVE device to the MASTER device. Both signals have pull-ups. The bus is driven at every transmitter by an open collector transistor driver, and isolated at each receiver with an opto-isolator - though cable harnesses carrying the communication signals may also carry 24-volt power and ground signals to devices, meaning the devices may not be isolated from each other as they share the same power bus. Some devices, however, may have alternate power supplies, especially devices with motors and high current needs such as vintage bill acceptors or currency detector devices.

History
MDB originated as a proprietary bus used by CoinCo for their coin-acceptors in the late 1980s and was deployed in high volume in vending machines for Coca-Cola. Coke forced CoinCo to open-source it in 1992 to increase competition, and NAMA released the first version of the standard in 1995, allowing other vendors to compete for the coin-acceptor portion of the vending machines (CoinCo and Mars were the 2 major suppliers in North America at the time) and also enabled alternative payment schemes (e.g. Smartcard based) to be connected to existing vending machines.

Bus addressing is based on the device type only, which allows for a very simple protocol stack, as no initial enumeration needs to be performed.

Timeline

 * August, 2019: Version 4.3 released (seventh MDB release)
 * February, 2011: Version 4.2 released (sixth MDB/ICP release)
 * July, 2010: Version 4.1 (fifth MDB/ICP release)
 * April, 2009: Version 4.0 (fourth MDB/ICP release)
 * March, 2003: Version 3.0 (third MDB/ICP release)
 * October, 2002: Version 2.0 (second MDB/ICP release)
 * October, 1998: Version 1.0 (first MDB/ICP release)
 * 1994: Revised EVMMA document.
 * August, 1994: Revised NAMA document.
 * 1994: Original EVMMA document.
 * October, 1993: Original NAMA document.
 * Earlier US versions were known as MDB rather than MDB/ICP. Prior to this, it was allegedly a proprietary protocol developed by CoinCo.