Протокол MDB: как работи
MDB (Multi-Drop Bus) е интерфейсът, чрез който контролерът на вендинг машина общува с платежната си периферия. Тази страница обяснява частите от него, които са нужни, за да добавите платежен или фискален модул.
За какво служи MDB
Вендинг машината има един контролер — VMC — и около него набор платежни устройства: монетник, банкнотоприемник, картов или безконтактен четец. MDB е общият език между тях. Тъй като е публикуван отраслов интерфейс, а не протокол на конкретен производител, четец от един доставчик може да се монтира в машина от друг.
Точно това прави шината важна за интегратора: тя е шевът, по който съществуваща машина може да се модернизира, без да се сменя самата машина.
Master и slave устройства
MDB е строго master-slave. VMC е master и е единственото устройство, което може да започне обмен; всяка периферия е slave, който отговаря при запитване и никога не говори пръв. Slave, който има какво да съобщи — пусната монета, поднесена карта — изчаква следващото запитване.
Следствието за всеки, който пише фърмуер за шината, е че отзивчивостта се определя от интервала на запитване, а не от вашия код. Решение, което предполага, че може да прекъсне master-а, няма да работи.
Формат на серийния кадър
MDB работи като асинхронна серийна връзка на 9600 bit/s с девет бита данни, без паритет и с един стоп бит. Деветият бит е това, което кара шината да работи: master-ът го вдига, за да отбележи първия байт на съобщението като адрес, и го сваля за следващите байтове с данни. Така всеки slave веднага знае дали байтът започва нова транзакция, или продължава текуща.
Това е най-честото препятствие, когато някой се опита да реализира MDB на универсален микроконтролер: стандартен UART с осем бита данни не може да предаде mode бита, а обичайното решение е паритетният бит да се използва като девети.
Адреси на периферията
Всеки клас периферия има фиксиран адрес на шината, така че master-ът знае с какво говори, без стъпка на откриване. Адресите, които интеграторът среща най-често:
| Адрес | Периферия |
|---|---|
| 0x08 | Монетник |
| 0x10 | Безкасово устройство №1 |
| 0x30 | Банкнотоприемник |
| 0x60 | Безкасово устройство №2 |
Двата адреса за безкасови устройства съществуват именно за да може машината да носи два независими четеца — така фискален модул може да се добави към машина, която вече има картов терминал.
Как протича безкасова продажба
Последователността е кратка и си струва да се знае, защото повечето грешки при интеграция са стъпка, изпълнена не по ред:
- Master-ът нулира четеца, прочита конфигурацията му и го разрешава.
- Четецът изчаква, запитван непрекъснато, докато клиент поднесе плащане.
- Master-ът иска от четеца да одобри конкретен артикул и цена.
- Четецът отговаря одобрено или отказано; едва тогава машината издава продукта.
- Master-ът потвърждава резултата, за да може четецът да финализира или анулира плащането.
Последната стъпка е тази, която най-често се пропуска — и точно заради това клиентите биват таксувани за продукт, който не са получили.
Къде се вписват нашите модули
FisLight се вгражда в снопа между контролера на машината и серийната ѝ периферия: носи два независими UART канала и inhibit линия, така че фискално устройство или принтер може да се добави и към машина с един свободен порт. Свързва се към съществуващия IDC сноп, без преправяне на окабеляването.
Документация на ниво платка
Разположението на конекторите, клемите, изискванията към захранването и бележките по фърмуера се издават за конкретна платка и ревизия на фърмуера, затова се изпращат при запитване, а не се публикуват като страница, която може незабелязано да остарее. Кажете ни машината и платката, около която проектирате, и ще изпратим съответния комплект.
Изводите, клемите и бележките по фърмуера са обвързани с конкретна ревизия на платката, затова ги изпращаме директно, вместо да публикуваме страница, която може да остарее. Кажете ни машината и ще изпратим съответния комплект.