О Multi-Drop Bus замолвите слово или торговый автомат по розливу воды с управлением по MDB

Когда речь заходит о протоколе MDB, то мы понимаем, что рассматривается «умный протокол», а не простой вариант подключения платёжных систем к торговым автоматам. В простейших вариантах платёжные системы, по существу, исполняют роль датчиков, например: принял монетоприемник монетку — выдал импульс по проводку, сработал электромагнит и вам в руку упала шоколадка.

Что такое вендинговые аппараты или торговые автоматы?

Это автоматы для продажи товаров и услуг. Многие из нас наверняка сталкивались с такими в аэропортах или бизнес-центрах. Машина, в которую мы кидаем монетки, чтобы получить кофе, шоколадку или бутерброд, и есть вендинговый аппарат.

Продажа снеков и напитков — самый привычный формат таких устройств. Но на деле их потенциал гораздо шире. Вендинговые автоматы услуг делают массаж (это такие специальные кресла), чистят обувь, копируют документы, принимают платежи. В последнее время очень распространены автоматы по отпуску воды в тару потребителя.

a6d9370e82957ba922f42ff8745b154d.PNG

А что является мозгом вендингового аппарата?

Мозгом является контроллер торгового автомата, другое название Vending Machine Controller (VMC) которое значительно чаще используется в технической документации к оборудованию. Поэтому и я буду использовать это сокращение. Вот о нем и пойдет речь, точнее о взаимодействии контроллера торгового аппарата и периферийного оборудования.

Все устройства (монетоприемник, банкнотоприемник, системы безналичной оплаты) подсоединяются к общей шине (набор проводов). При включении торгового аппарата, VMC производит опрос по этой шине и таким образом узнает о наличии различных платежных устройств в системе. После этого VMC непрерывно опрашивает каждое устройство и узнает его состояние.

Например, Вы подошли к автомату и опустили 10 рублей в банкнотоприемник; VMC последовательно опрашивает каждый компонент платёжной системы одним вопросом: «у тебя что?»

банкнотоприемник отвечает: «у меня ничего», то же самое отвечает и система безналичной оплаты.

А вот монетоприемник ответит: «у меня 10 рублей». VMC проанализирует ответ и выдаст команду: «принять» или «не принять» монеты к оплате. После принятия монет Вы выбираете напиток, ну, предположим, за 6 рублей; VMC его Вам выдаст, после чего даст команду диспенсеру, часто совмещенному с монетоприемником, выдать 4 рубля сдачи.

Монетоприемники как правило и принимают, и выдают сдачу. Если идет перебор, и монеты не помещаются в отведенные для них тубы, то они сбрасываются в кешбокс. Так же некоторые номиналы сразу выкидываются в кешбокс. Кешбокс — железная банка для монет, деньги из нее можно забрать только руками.

При работе по протоколу MDB, ведущим (главным) в связке «автомат — платежка» выступает контроллер VMC (ПК или другое управляющее устройство).

Некоторые преимущества:

  • простота подключения воткнул — заработало

  • простота настройки

  • простота получения данных аудита статистики с дисплея автомата

Но есть и недостатки:

  • совместимость оборудования: MDB так называемый «открытый» протокол, который постоянно дорабатывается, поэтому не стоит удивляться если на автомате заработал монетник, но почему-то не заработал купюрник или кешлес, или их сочетание…

  •  обмен по шине MDB высокий, каждые 50mS идет опрос состояния.

  •  невозможность использования универсальных
    средств снятия статистики, у каждого производителя оборудования для торговых
    автоматов свой девайс, свои переходники и программаторы для настройки.

Стандарт MDB определяет электрические и механические характеристики разъемов для соединения Master и Slave устройств, а также материалы, из которых разъемы должны изготавливаться.

Рекомендуемые разъемы:

Для периферии:

Molex 39–01–2060 / AMP P/N 106527–6.

Для VMC:

Molex 39–28–1063 / AMP P/N 794664.

Контакты:

1 — Питание 34В.

2 — Питание, обратный провод.

3 — Не используется.

4 — Master прием.

5 — Master передача.

6 — Общий связи.

Вот эта распиновка разъема взята из описания протокола MDB

6965e89f9f64f8b27c0db37ca4213a57.png

Стандарт определяет связь между VMC и Slave, как оптически изолированную токовую петлю с уровнем напряжения 5 В.

VMC/Передача:

Минимальный ток (активное состояние): 100 мА (4 В).

Максимальный ток утечки (неактивное состояние): 100 мкА.

 VMC/Прием:

Минимальный входной ток (активное состояние): 15 мА (1 В).

Максимальный входной ток (неактивное состояние): 1 мА.

 Slave/Передача:

Минимальный ток (активное состояние): 15 мА (1 В).

Максимальный ток утечки (неактивное состояние): 30 мкА.

 Slave/Прием:

Максимальный входной ток (активное состояние): 15 мА (4 В).

Максимальный входной ток (неактивное состояние): 100 мкА.

Отсюда, как мы видим, возникают некоторые трудности, связанные с подключением устройств к разрабатываемому VMC. Это связано с тем, что вход монетоприемника потребляет 15 мА, по сути, это потребление светодиода. А если в системе помимо монетоприемника есть купюроприемник и бесконтактная оплата — то получим потребление порядка 50 мА, а это очень много для выходов большинства микросхем. Чтобы защитить выход от возможного короткого замыкания применяется следующая рекомендованная схема управляемого генератора тока на двух транзисторах, схема которого также приводится в описании.

3233fecc5472a11e1cc99ac888fcbb8a.png475347b547bfae4f9dc010e156b5e1aa.png

Оптроны 4N37 входят схему периферийного оборудования и показаны для лучшего понимания принципов работы.

Многие контроллеры разрабатываются для универсального использования. Наличие порта RS232 для них норма, но нет разъема или порта для подключения по MDB, поэтому необходимо сделать внешний преобразователь уровней, который представлен на следующих рисунках.

45a03817c90f12ebe2ad536f8e1d018b.PNGc7d6a42bbfb8c73c29e654543ed82afc.PNG

Схема и печатная плата согласования уровней RS232-MDB

Коротко опишем формат байтов.

Скорость обмена: 9600 Бод.

Формат двоичной последовательности: 1 старт бит, 8 бит данных, 1 бит режима, 1 стоп бит.

Start 0 1 2 3 4 5 6 7 Mode Stop

Сравнивая с форматом асинхронной последовательной передачи данных бит режима используется вместо бита четности в качестве признака передачи байта адреса периферийного устройства.

Бит режима: Направление передачи — от Master к Slave.

Значение бита режима зависит от того, предается байт адреса или байт данных. Байт Адрес воспринимается всеми Slave устройствами одновременно. Байты Данные воспринимаются только теми Slave, которым они адресованы предыдущим байтом Адрес. Бит режим равен логической 1 при передаче байта Адрес и логическому 0 при передаче байта Данные.

Бит режима: Направление от Slave к Master.

Бит должен быть установлен в 1 в последнем байте данных, передаваемых от Slave к Master.

Вся эта информация доступна в описании протокола MDB или в описании конкретных монетоприемников , которые используются в системе.

А сейчас приведем временные диаграммы работы устройства, которые вы не найдете ни в одном описании. Многие разработчики согласятся с тем, что наличие временных диаграмм очень помогает в разработке VMC, или других контроллеров. На рисунках верхний канал — это отправляемые запросы и подтверждения от VMC, а нижний канал — это ответы монетоприемника, конкретно СС61100.

Контроллер вендингового аппарата отправляет запросы каждые 50mS

df3725c730e0bc18ee1e3c555b50c6e6.png

Если был длинный ответ монетоприемника, то время следующего запроса отсчитывается от момента подтверждения приема данных

80884b1a00693b08669b01b436bdfef3.png

Это нужно учитывать, чтобы не завалить запросами монетоприемник.

Команд, которыми управляется монетоприемник по протоколу MDB не так уж и много для того, чтобы сделать простой торговый автомат.

Вот как они приводятся в описании протокола:

Command

Hex Code 

Description

RESET

08H

Command for changer to self-reset

SETUP

09H

Request for changer setup information

TUBE STATUS 

0AH

Request for changer tube status

POLL

0BH

Request for changer activity status

COIN TYPE   

0CH

Signifies coin types accepted and allowable coin dispensing.  This  command is followed by setup data. See command format section.

DISPENSE

0DH

Command to dispense a coin type.  Followed by coin type to dispense. See command format section.

EXPANSION

0FH

Command to allow addition of  COMMAND  features and future enhancements

Нам понадобятся всего четыре команды:

RESET-программный сброс периферийного оборудования

POLL — запрос статуса оборудования. На этот запрос монетоприемник будет сообщать VMC о принятых монетах и состоянием занято при выдаче монет.

TUBE STATUS — запрос состояния наполнения туб с монетами. Это больше информативные данные.

DISPENSE- выдача монет из туб. Стоит отметить, что командой можно указать какие монеты и сколько нужно выдать. Под тип выдаваемых монет отведено 4 бита и под количество монет отведено поле 4 бита. Таким образом один бай кодирует сразу и тип выдаваемых монет и их количество. За один раз можно выдать не более 15 монет одного номинала.  К примеру, если нам нужно выдать 8руб сдачи, то мы должны последовательно подать команду на выдачу одной монеты достоинством 1руб, потом одной монеты достоинством 2руб и еще одной монеты достоинством 5 руб. Есть конечно диспенсеры, которые могут выдавать сдачу путем указания суммы в команде, но это нужно проверять и смотреть руководство на конкретный диспенсер.

Если в монетоприемнике нет никаких событий, то он отвечает кодом 0×0100. На этот ответ VMC не нужно слать подтверждение о получении ответа.

e75f80ade878c9c692d61c77ea0f486e.png

Но, если, к примеру, монетоприемник занят выдачей монет

1bc8b9904bf2211f348cc7420fb9efc2.png

Или он сообщает что принял монету

d0dbef7e202c1facf4594f7b167fe81d.png

То в этом случае VMC должен прислать подтверждение кодом 0×0000

Если монетоприемник занят выдачей монет, то запрос POLL нужно слать

87a963c909017b098600265ed91087f9.png

До тех пор, пока не получим в ответе код 0×0000

ccd8856ad8ab25ea9bb1ff33aaa61c2f.png

Как только получили ответ 0×0000 то можно спросить сколько монет в тубах

f600bf7d822c2ef78d241b16e8de14a7.png3a634fb8c6eafdf82ba28f69cee5b8c1.png

Для выдачи сдачи посылаем команду »0D выдать монеты»

e04e9b7bf84cfa430b539c6b5f3b9826.png

После этого читаем состояние и видим ответ

b4ec38e95e0afa6593e6326a686b57a4.png

Такой ответ будет приходить пока аппарат не выдаст нужное количество монет

16be8fd294941218833eab9a176bd070.pngb11dc95a03cc13cf2ad340d3212255cd.png

После получения состояния ОК, можно попросить выдать другие монеты или посмотреть, что у нас осталось в тубах.

d16f871eb67f6336fafd8fd246b44fec.png

Автомат по продаже воды в тару потребителя, предназначен для продажи очищенной питьевой воды. Очистка производится многоступенчатой системой фильтрации и дальнейшей нормализации минерального состава.

Требования к контроллеру управления торговым автоматом:

1.   Размещение аппарата уличное, но возможна установка внутри помещения.

2.   Продажа воды.

2.1.  На мониторе отображается информация для клиента: Дата, время, стоимость 1 литра

воды, дата замены фильтров.

2.2.  Внесение средств клиентом (купюры, монеты, бесконтактная оплата) с выдачей сдачи

2.3.  В момент внесения на мониторе отображается сумма внесённых средств.

2.4.  Клиент подставляет в приёмную нишу ёмкость для воды и кратковременно нажимает кнопку «СТАРТ».

2.5.  После кратковременного нажатия кнопки «СТАРТ» включается насос розлива,

одновременно активизируется возможность нажатия второй кнопки «ОЗОН», то есть во 

время налива воды можно (по желанию клиента) озонировать воду.

2.6.  Кнопки «СТАРТ» и «ОЗОН» становятся активными только когда сумма внесённых средств больше нуля.

2.7.  Во время розлива воды на мониторе отображается «Progress bar», визуально отображающий процесс заполнения ёмкости.

2.8.  Кнопка «СТАРТ» при повторном нажатии выполняет функцию «ПАУЗА». 

3.   В аппарате предусмотрена ночная подсветка, которая включается и выключается по времени, время включения и выключения, устанавливается в контроллере клиентом самостоятельно.

4.   Внутри аппарата в зимнее время должна поддерживаться рабочая температура от +4 до +25 °С.

5.   При низком уровне очищенной воды в баке (датчик низкого уровня), должна включаться блокировка приёма денег (купюры, монеты, бесконтактная оплата) функция ingibit.

6.   Для контроля и возможного управления функционалом автомата по розливу воды должна быть предусмотрена связь (автомат — сервер) по средствам GSM-GPRS модуля, а при наличии возможности подключаться по LAN.

6.1.  Перечень данных, периодичность и формат передачи согласовываются разработчиком контроллера и разработчиком серверной части (личного кабинета).

6.2.  Аппарат должен иметь возможность дооснащение хоппером и чеком. 

6.3.  Дистанционный контроль аппарата и возможность изменения основных настроек автомата.

6.4.  Датчик протечки воды 

6.5.  Датчик открытие двери.

 Настройки контроллера

1 настройки соединения с сервером: IP адрес, Порт сервера, APN провайдера, ID номер контроллера.

2 Минимальная температура для включения подогрева. Температура отключения подогрева

3 Стоимость одного литра воды

4 Количество импульсов расходомера на 1 литр воды

5 время замены фильтров

6 время работы подсветки рекламы

7 настройки чтения показаний счетчика: тип счетчика, серийный номер, скорость порта

 Мне очень нравится делать контроллеры со встроенным ВЕБ интерфейсом. ВЕБ интерфейсом легко пользоваться, он интуитивно понятен для обслуживающего персонала. Хотя им пользуются только при настройке контроллера во время пусконаладочных работ это сильно экономит время настройки и подготовки контроллера к работе. Наличие в контроллере ТСР клиента и ТСР сервера расширяет возможности диагностики оборудования. Контроллер выполнен на процессоре PIC32MX795F512L фирмы Micrpchip. Программное обеспечение разработано без использования ОС, написано на С.

На рисунке мы видим плату контроллера, которая устанавливается в стандартный корпус для DINрейки.

0a0a17ccc9dc0f2ac47f44472dab1f33.jpg

Веб-интерфейс контроллера взаимодействует с внешним миром по протоколу HTTP, что позволяет обмениваться данными с любыми подключёнными к контроллеру устройствами, поддерживающим этот протокол.

Чтобы зайти в веб-интерфейс контроллера, откройте браузер и введите в адресную строку IP-адрес контроллера, к примеру 192.168.1.9.

46054a0a0c6c323f998abd1618caea9d.PNG1f4a511ef3ab16d1adba7c4eb6131a84.PNG

Надеюсь, что эта статья была вам интересной и полезной.

© Habrahabr.ru