
MDB: cómo funciona el protocolo de las máquinas expendedoras
Acepta pagos con tarjeta, contactless y wallets digitales en tus máquinas expendedoras y micromarkets. Sin efectivo, sin complicaciones.
Este artículo es la versión técnica. Si lo que quieres es saber si tu máquina puede aceptar tarjeta y cómo revisarlo, empieza por esta otra guía, que está escrita sin tecnicismos.
Aquí vamos al detalle: cómo está construido el bus, cómo se direccionan los dispositivos y qué hay en el conector.
Qué es MDB en una línea
MDB (Multi-Drop Bus) es un bus serie maestro-esclavo que comunica el controlador de la máquina, el VMC o Vending Machine Controller, con sus periféricos de pago: monederos, billeteros, lectores cashless, displays y gestores de energía.
El VMC siempre es el maestro. Los periféricos nunca inician la conversación: solo responden cuando se les pregunta.
De dónde viene
No nació como estándar abierto. Empezó a finales de los ochenta como un bus propietario de CoinCo para sus monederos, desplegado en máquinas de Coca-Cola. Fue Coca-Cola quien exigió a CoinCo liberarlo, en 1992.
El documento original de NAMA está fechado en octubre de 1993, y NAMA publicó la primera versión del estándar en 1995. A partir de ahí, la línea de versiones MDB/ICP ha sido: 1.0 en octubre de 1998, 2.0 en octubre de 2002, 3.0 en marzo de 2003, 4.0 en abril de 2009, 4.1 en julio de 2010, 4.2 en febrero de 2011 y 4.3 en agosto de 2019.
Capa física
Velocidad: 9600 baudios, fija. No hay negociación de velocidad.
Trama de 9 bits. Esto es lo que más sorprende a quien viene de un UART normal: cada byte lleva 8 bits de datos más un bit de modo. Ese noveno bit es el que distingue un byte de dirección de un byte de datos. Si lo ignoras, el bus no se entiende.
Alimentación. El bus es de 34 VDC nominales, con rango válido de 20 a 42.5 VDC. En la práctica muchas instalaciones trabajan a 24 VDC, simplemente porque las fuentes de 24 V son más fáciles de conseguir.
Niveles de señal. El maestro pone Master Transmit a 5 V cuando está activo y a 0 V cuando no. Master Receive está en pull-up a 5 V y el esclavo lo lleva a nivel bajo cuando transmite.
El conector de seis pines
- Pin 1: +34 VDC
- Pin 2: retorno de alimentación
- Pin 3: sin conexión (a veces tierra)
- Pin 4: master receive
- Pin 5: master transmit
- Pin 6: común de comunicaciones, referencia 0 V
Viene en pareja, macho y hembra, porque los periféricos se encadenan unos con otros en el mismo bus. De ahí el nombre: multi-drop, varias derivaciones sobre una misma línea.
Direccionamiento
El byte de dirección se reparte así: los cinco bits altos llevan la dirección del esclavo y los tres bits bajos llevan el comando.
Las direcciones son fijas por tipo de dispositivo. No hay enumeración ni descubrimiento: un billetero sabe de fábrica que su dirección es la del billetero. Esa es la razón de fondo por la que puedes conectar periféricos de distintos fabricantes y se entienden sin configurar nada.
Direcciones, en los cinco bits altos y expresadas en hexadecimal:
- 00 VMC, el controlador
- 08 monedero o changer
- 10 cashless #1
- 18 pasarela de comunicaciones
- 20 display
- 28 gestor de energía
- 30 billetero
- 38 reservado
- 40, 48, 50 dispositivos satélite universales #1 a #3
- 58 hopper o tubo dispensador 1
- 60 cashless #2
- 68 verificación de edad
- 70 hopper o tubo dispensador 2
- 78 y D8 reservados
- E0, E8 experimentales, solo desarrollo
- F0, F8 específicos del fabricante
Los dos que importan para pagos son 10 y 60: cashless #1 y cashless #2. Ahí es donde entra una terminal de tarjeta. Que existan dos posiciones es lo que te permite tener, por ejemplo, un lector de tarjeta y un sistema de credencial de empleado conviviendo en la misma máquina.
Con cinco bits de dirección caben 32 posiciones en el bus. El estándar no las usa todas.
Lo que MDB no hace
MDB mueve el cobro. No reporta ventas. De eso se encarga DEX, que es un camino completamente distinto y ni siquiera comparte conector.
Es un error común al integrar: pedirle a MDB datos de auditoría. No los tiene. Lo explicamos en detalle en el artículo de DEX y EVA-DTS.
Si vas a integrar
Casi nadie implementa MDB desde cero sobre un microcontrolador pelón. Lo habitual es usar una pasarela que traduzca MDB a algo manejable, sea serie, USB o red, y trabajar contra esa capa.
Es exactamente lo que resuelve TERPAPay: tu sistema habla con la terminal, y la terminal se encarga del lado MDB de la máquina. La conexión física es MDB o USB-C, según lo que traiga el equipo.
Si quieres ver cómo se compara MDB con los otros protocolos que te vas a encontrar en campo, Ejecutivo, pulsos o VCCS, está el comparativo de protocolos.