Перейти к содержанию

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


Рекомендуемые сообщения

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

 

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

 

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

Ссылка на комментарий
  • Ответов 48
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

  • 2 недели спустя...

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

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

 

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
Ссылка на комментарий
  • 3 месяца спустя...

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

 

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

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

Ссылка на комментарий
  • 1 год спустя...

Добрый день.

 

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

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

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

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

Ссылка на комментарий

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

RESET, ответ ACK

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

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

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

 

Ссылка на комментарий

с какой частотой отправляете ему 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 ожидает любую адресную команду.

 

 

 

 

Ссылка на комментарий

Далее

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

 

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

Ссылка на комментарий

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

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

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

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

 

 

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

 

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

Poll
Setup

Stacker

Type

 

 

 

Ссылка на комментарий

Посылать команду 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) купюру.

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

Ссылка на комментарий

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

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


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

Ссылка на комментарий

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

Ссылка на комментарий

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

 

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

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

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

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

 

Что не так?

Ссылка на комментарий

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

Ссылка на комментарий

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

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

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

Ссылка на комментарий

×
×
  • Создать...

Важная информация

Используя этот сайт, Вы соглашаетесь с Условия использования. ВАЖНО!!!!!!!!! Перейдите по этой ссылке для ознакомления Для тех кому совсем лень читать то зайдите по этой ссылке: https://infovend.ru/forum/faq/

Яндекс.Метрика