fasteria

Логи инициализации купюроприёмника по mdb

46 сообщений в этой теме

Приветствую, господа!

 

Заканчиваю сборку своего микроконтроллера для общения с mdb. Однако я не совсем понимаю, какие именно байты (или команды) надо слать на купюроприёмник для именно что инициализации начала работы купюроприёмника.

 

Если у кого из инженеров-программистов есть логи запуска и работы в целом, просьба выручить. Также было бы неплохо получить логи по работе с монетоприёмником. У кого есть - просьба поделиться.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть такой документ INTERNATIONAL MULTI-DROP BUS INTERFACE STANDARD

Там все описано

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вот что нашел: autovending.com.ua/forum/viewtopic.php?p=15036

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

bingo, я прочёл всё, вот только ничего не понял...
Там не написана конкретная процедура запуска купюрника

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Немного почитал мануал, и даже разобрался в коде, но он работает всё равно не ахти (через пень колоду)

Если есть те, кто поможет, буду благодарен.

 

1. Подключаю питание к купюрнику (JCM уникумовский). Он стандартно делает прокрут.

2. Запускаю микроконтроллер. Он при старте выполняет следующие команды:

* RESET

* POLL - получаю стандартные 06 09.
* SETUP - получаю стандартные 27 байт - индикатор валюты и т.д. feature level - 1

* EXPANSION COMMAND Level 1 - получаю стандартные 29 байт

* STACKER - в ответ - стэкер пустой + купюр нет

* BILL TYPE - посылаю принимать все типы денег, никакие не посылать в escrow. В ответ ACK

* (Если сейчас послать POLL, то возратит 06 и 09 - validator was reset и validator disabled соответственно)

 

Запускается постоянный цикл:

 

* STACKER
* BILL TYPE (те же значения)

* POLL - возвращается просто validator was reset

 

По мануалу всё должно работать, однако, возникают проблемы:

1. При вставке купюры купюрник на некоторое время меняет свой статус при POLL на busy. После этого он становится просто disabled, даже не указывая на то, что он принял купюру.

2. Вторую купюру он принимать не хочет, так как disabled. Спасает только отключение от сети питания и подсоединение обратно к нему.

 

У кого-либо есть идеи, как решить данные проблемы?

 

UPD: Светодиоды JCM горят постоянно, без морганий. В работе через уникум они постоянно моргают.

Изменено пользователем fasteria
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ЕМНИП, он должен таки сообщить о принятой купюре, после этого приём купюр стоит разрешить заново.

 

ещё, не стоит делать poll слишком часто, а остальные запросы точно не стоит делать на каждый poll.

может быть вы его просто подвесили обилием запросов? )

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

 

Наткнулся на такую же проблему, озвученную "Fasteria @"

Купюрник JCM по MDB протоколу, после приема купюры не возвращает ее номинал.

Возвращает 0x06, 0x09 validator was reset и validator disabled соответственно.

В чем проблема?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не отправили купюрнику команды инициализации в соответствии с его уровнем

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Один раз при инициализации отправляю следующую последовательность команд:

RESET, ответ ACK

POLL, ответ 0x06, 0x09, CHK(0x0F)

SETUP, ответ 27 байт

1 байт 0x01 (Уровень 1)

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

с какой частотой отправляете ему Poll?

 

пригодится:

мы делаем вендинговый автомат. подскажите пожалуйста по MDB протоколу.

подключаем купюроприемник

инициализируем его командой BILL TYPE

он принимает купюры в соответствии с BILL TYPE

потом даем команду POLL, купюрник шлет 06h,09h,ack и ни какого намека на тип и кол-во принятых купюр

по команде STACKER возвращает кол-во купюр в кэш боксе.

 

 1. Вы должны выдерживать 50 - 200 мс паузу отправки на валидатор

 любой команды. Я использую тайминг 100 - 200 мс. Все опросы должны

 уложиться в этот интервал.

 2. Вы должны ОБЯЗАТЕЛЬНО контролировать 5 мс паузу задержки ответа валидатора на

 любую команду и ACK VMC.

 3. Вы должны соблюдать процедуру инициализации Валидатора:

 RESET

 POLL пока не получите ответ JUST RESET (09H)

 SETUP

 EXPANSION IDENTIFICATION (Level 01+) (можно не выполнять)

 STACKER

 BILL TYPE

 4. После процедуры инициализации Вы должны выполнять цикл

 BILL TYPE

 BILL STACKER

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

 

В вашем случае Вы принимаете ответ о сбросе Валидатора (06H или 09H)

Естественно, Вы, надеюсь правильно формируете и контролируете байт

контрольной суммы и 9 Бит.

Ваш VMC ОБЯЗАТЕЛЬНО должен соблюдать тайминг опроса.

 

прошу помочь разобраться с купюроприемником DBV-301-SU.

Модель купюрника не имеет значения.

a> Управление от микроконтроллера, все тайминги выдерживаются по

a> Вашим рекомендациям. 9-й бит формирую маркем и контролирую так же.

a> Инициализация в рекомендованном Вами порядке.

a> На POLL получаю 0x06 0x09.

Здесь уже что-то не так. После RESET Вы действительно получите Just

RESET (09H) и сразу должны перейти на инициализационную

последовательность. В последующем цикле опросов POLL Вы должны

получать либо код 1yyyxxxxB либо ACK либо 0xxxxxxxB (но не 06h и 09h)

в случае неисправности. Если неисправностей нет, Вы будете получать

только ACK либо 1yyyxxxxB.

a> В SETUP scalling factor равен 1000, непонятно как можно 10 р.

a> нацело поделить на 1000. Это правильно?

scaling factor - это стоимость наменьшей денежной единицы.

Credit = N * Scalling / Decimal, где N - цена купюры (сумма их)

a> EXPANSION IDENTIFICATION (Level 01+) не использую.

Полезная информация. Узнаете об Level MDB

 

a> STACKER считывает общее количество купюр.

a> Зачем 2 раза подряд давать команду BILL TYPE?

Не два раза. Первый и единственный раз при инициализации, а потом в

цикле. После нарушения тайминга инициализация повторяется.

 

 

a> После инициализации Вы рекомендуете порядок:

a> BILL TYPE

a> BILL STACKER

a> POLL и в зависимости от режима ESCROW выполнять, если нужно, укладку купюры.

a> Вот это не понятно. В TYPE я всегда указываю типы 1 и 2, т.е.

a> 10 и 50 р. Если какой-то тип не указать, то его сразу выбросит.

BILL TYPE нужно выполнять в цикле для того, чтобы запретить или

разрешить прием банкнот в зависимости от заполненности кешбокса или

запрета VMC.

a> STACKER опять покажет общее количество.

a> На все команды POLL получается неизменный ответ 0x06 0x09 без

a> ESCROW или 0х06 0х0A c ESCROW. Т.е. никой полезной информации.

a> Понимаю, что что-то не так. Но что?

Команду ESCROW нужно давать только в случае нахождения купюры в

кешбоксе. Ответ OAh как раз и говорит, что вы дали команду ESCROW в

момент, кода купюры в ESCROW нет.

 

a> Непонятно как определить номинал купюры находящейся в аппарате

a> и еще не помещенной в stacker???

Только по ответам 1yyyxxxxB на POLL

 

a> Пробую в команде BILL TYPE 0x00 0x03 0x00 0x01, т.е. маскирую

a> для команды ESCROW 1 тип купюр. Потом даю ESCROW 0x00. Вставляю 10

Неверно. Команда ESCROW не может идти сразу после BILL TYPE. Я

указывал ранее последовательность циклов опроса.

 

a> р., они фиксируются(удерживаются) в устройстве. Если вставить 50 р.

a> - принимаются устройством. Далее командой STACKER проверяю общее

a> количество купюр. При использовании комбинаций этих команд, к

a> сожалению, не получается добиться правильной фильтрации по

a> номиналам.

 

Сделал по вашим рекомендациям, купюры определяются.

Но непонятно зачем другие команды. Для чего и как используется команда ESCROW?

Для чего и как используется команда SECURITY?

 

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

Команда SECURITY указывает купюрнику необходимость использовать уровень секретности "high" для распознавания банкноты, если соответствующий бит установлен в "1".

Способен ли купюрник поддерживать два уровня секретности определяется из ответа на команду STATUS.

 

Почему на купюры одного достоинства купюроприемник отвечает разными кодами? Но я заметил, что на каждую купюру всего по два кода. Например:   50 рублей - 0x81 и 0x8A.

Первый код - понятно, т.к. в описании протокола написано, что код ответа имеет формат: 1yyyxxxx, где xxxx - код купюры. 0x0 - для 10 рублей, 0x1 - для 50. А вот 0x9 и 0xA?

Это может быть в случае настройки разных каналов на купюры одинакового достоинства, но разных годов выпуска. соответствие номеров каналов типу купюры определяет купюрник. Например, разные купюры одного номинала настроены на один канал… Тогда будет именно ситуация, когда одному номиналу будут соответствовать два канала и два кода POLL.

 

 

Есть монетоприемник. Проинициализрован по рекомендациям стандарта MDB/ICP ver 3.0 (аналогично купюроприемнику).

Цикл опроса:

пауза 200 ms

COIN TYPE

TUBE STATUS

пауза 100 ms

POLL

пауза 100 ms

 

Он правильно выдает код для первой монеты. А если кидать потом вторую монету такого же достоинства - он прибавляет 1 к коду и выдает эту сумму. Допустим кидаю 1 руб. Выдает 0x51. Кидаю 1 руб - выдает 0х52. Кидаю 1 руб - выдает 0х53. Кидаю 1 руб - выдает 0х54. Кидаю 5 руб - выдает 0х53. Кидаю 5 руб - выдает 0х54. Кидаю 1 руб - выдает 0х55.

 

Ответ на POLL в монетоприемние состоит из двух байт. Второй байт - это число мнет в тубе. Если Вы не выделяете первый и второй байт или неправильно их воспринимаете, то видите число, увеличивающееся каждый раз на 1. Ищите ошибку в этом направлении.

 

 

С какой целью устанавливается Mode-бит в последнем байте данных от Slave?

Чтобы master понял, что это последний байт пакета.

 

Каков смысл наличия двух вариантов сброса Slave:

сигнала Bus Reset и команды Reset?

Reset - это программный адресный сброс

Bus Reset - это аппаратный сброс всех slave устройств.

 

>При получении VMC пакета с неверным байтом CHK, VMC может ответить или NAK или RET.

Любым из этих сигналов.

>В чём разница между этими ответами?

После ответа RET slave обязан повторить последний пакет ответа. После NACK - slave ожидает любую адресную команду.

 

 

 

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Далее

EXPANSION COMMAND передаю 1 байт 0x00, ответ  29 байт

STACKER, ответ 3 байта (0x00, 0x00, 0x00) кэшбокс пустой.

BILL TYPE передаю 4 байта (0x00, 0x1F, 0x00, 0x1F), ответ ACK

Светодиоды на купюрнике перестают моргать, горят постоянно.

 

Далее в цикле POLL, ответ 2 байта 0x06, 0x06

 

При захвате купюры на запрос POLL, ответ 3 байта 0x06, 0x03, CHK(0x09)

После захвата купюры на запрос POLL, ответ 3 байта 0x06, 0x09, CHK(0x0F)

Все, больше данных нет.

Светодиоды на купюрнике гаснут.

После ввода команды ESCROW передаю 1 байт данных (0x01)

купюрник укладывает купюру в кэшбокс.

Светодиоды на купюрнике горят постоянно.

Далее на запрос POLL, ответ 2 байта 0x06, 0x06

 

Купюрник в ожидании.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

уже это "POLL, ответ 2 байта 0x06, 0x06" показывает что купюрник не готов.

неверная инициализация.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за ответ и инфу, буду разбираться.

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сперва Сброс шины (аппаратно, у меня импульс 150mS)

потом программный сброс каждого устройства (купюрник, монетник)

купюрник:
H30, H30

пауза больше 1500ms (у меня 2000mS)

 

 

цикл: (лимит 20 секунд, этого точно для всех типов купюрноков хватает)
шлём POLL
ждём H06, выходим из цикла

 

потом пошел сам процесс настройки:

Poll
Setup

Stacker

Type

 

 

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посылать команду RESET (30H) не обязательно, т.к. после подачи питания платежки сами аппаратно сбрасываются.

Достаточно командой POLL(33H) опрашивать состояние с интервалом 25~200мсек. После выхода в рабочий режим купюрник должен 1 раз ответить 06H - Was Reset, а затем возвращать ACK на каждый POLL, если нет ошибок и других событий.

После этого достаточно дать команду BILL TYPE(34H) с необходимыми типами принимаемых купюр, например: 34H 00H 07H 00H 00H (CHK) и опрашивать состояние командой POLL(33H) с интервалом 25~200мсек. Если нет ошибок купюрник должен перейти в режим приема.

После укладки купюры (режим  ESCROW не установлен) должен прийти ответ 1000xxxxB, где xxxx-тип купюры.

Не забывайте вовремя давать ACK (в пределах 5мсек.)

1 час назад, Rolf сказал:

Далее в цикле POLL, ответ 2 байта 0x06, 0x06

 

Второй байт это CHK.

1 час назад, Rolf сказал:

Далее

EXPANSION COMMAND передаю 1 байт 0x00, ответ  29 байт

STACKER, ответ 3 байта (0x00, 0x00, 0x00) кэшбокс пустой.

BILL TYPE передаю 4 байта (0x00, 0x1F, 0x00, 0x1F), ответ ACK

Светодиоды на купюрнике перестают моргать, горят постоянно.

 

Далее в цикле POLL, ответ 2 байта 0x06, 0x06

 

При захвате купюры на запрос POLL, ответ 3 байта 0x06, 0x03, CHK(0x09)

После захвата купюры на запрос POLL, ответ 3 байта 0x06, 0x09, CHK(0x0F)

Все, больше данных нет.

Светодиоды на купюрнике гаснут.

После ввода команды ESCROW передаю 1 байт данных (0x01)

купюрник укладывает купюру в кэшбокс.

Светодиоды на купюрнике горят постоянно.

Далее на запрос POLL, ответ 2 байта 0x06, 0x06

 

Купюрник в ожидании.

Судя по поведению купюрник действительно сбрасывается, потому как в данном случае должен был ответить 1001xxxxB (Bill Escrow Position), где xxxx-тип купюры. И ждать команду принять (35H 01H) или вернуть (35H 00H) купюру.

Поэтому проверьте сам купюрник и стабильность питания.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посылать команду RESET (30H) не обязательно, т.к. после подачи питания платежки сами аппаратно сбрасываются.

В теории - да. А на практике, есть модели (как старые, так и новые), которые требуют полное соблюдение Протокола.
при чем даже бывает и так: кто-то требует задавать EXPANSION COMMAND, а некоторые модели начинают работать уже после BILL TYPE.
Я уже дважды помучился подгонять своё ПО под конкретные модели купюрников (а про монетники вообще молчу!). Потому принял решение о полном соблюдении Протокола.


Кстати, если до версии 3 купюрники были "терпимее", то от 4 и выше - нет: пока не задашь все уровни и параметры - нет инициализации и готовности

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Согласен, что лучше давать команду RESET и соблюдать протокол (без STATUS (31H) и номинал не определить) . Для Rolfa я привел минимальный набор команд, чтобы он смог сдвинуть свою проблему.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

После RESET не могу получить 0x09

 

Отправляю RESET (ADD* CHK), жду 5мс, получаю ответ ACK

Далее пауза 2000мс,

Далее циклический запрос с паузой 150мс POLL,

Получаю циклический ответ с паузой 5мс 0x06, 0x09.

 

Что не так?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Купюрник на 200% рабочий, цеплял к автомату все принимает, определяет.

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

чем вы управляете купюрником? самодельная плата или какой-то конвертер?
 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Свою плату разрабатываем на Atmege

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

9й бит нормально отправляете и принимаете? всё точно? смотрели логгером или осциллографом?
по питанию не проседает в момент выключения двигателей?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Осциллографом смотрел фрейм при передаче 11 бит (9 бит присутствует),

иначе если отправить без 9 бита КП возвращает NAK

Плата работает без нагрузки, только КП подключен.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Наши партнеры

    Rhea_210x300
    Ослик ВендиИнгрединеты для вендинга  от АлмафудПокупай Vendpresso в Vendex Shop