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

V7, зависания при работе по MDB


syura

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

Добрый день!
Возможно, есть люди, которые разбираются в протоколе MDB?

Был приобретен купюроприемник для работы по MDB. Из магазина приехал V7-24A0P-RUR5 , DC 12 Volts, Pulse.

Подключили кабелем WEL-RM006 на DC24 В.

Продавец уверяет, что он работает с нужным протоколом. После выставления DIP'ов, он действительно стал отвечать на команды.

 

Аппарат не типовой, добавляем функционал в собственную программу, поэтому реализовываем MDB сами.

 

Устройство успешно инициализируется командами POLL (33h), SECURITY (32h), IDENTIFICATION (37h 00h),  STACKER (36h),  BILL TYPE (34h FFFFFFFFh, с функцией escrow).
После этого загорается зеленый индикатор на задней стенке (LED ON = OK), устройство ожидает купюры.

 

При внесении купюры, она затягивается и приходит ответ, что появилась купюра в escrow position, купюроприемник отключен - status 9.На команду ESCROW ( 35h 01h) отвечает ACK.

После этого на команды POLL отвечает раз в 30 секунд с одним и тем же содержанием: купюра в escrow position, status 9.  На все остальные команды отвечает ( SETUP, STACKER, BILL TYPE) должны образом.Купюра так и зависает в устройстве, пока не прервешь обмен командами, после этого она возвращается.
Лог обмена следующий:

Цитата

 

S - отправка команды, R - получение.

S     "3333"
R     "00"
S     "3131" // SETUP
R     "011810000a0000c8001fff01050a32640000000000000000000000bf" 
S     "32ffff30" // SECURITY
R     "00" // ACK
S     "370037" // IDENTIFICATION
R     "49435430303030303030303030303056372d52555235303030303001241d"
S     "3636" // STACKER
R     "000000"
S     "34ffffffff30" // BILL TYPE
R     "00"

S     "3333" // POLL
R     "00" // ACK - ничего нового

S     "3333" // POLL
R     "0909" // вставлена купюра - идет ее обработка. 09h на конце - контрольная сумма
S     "3333"
R     "92099b"  //  1й бат: bill routing - escrow position, bill type 2 (100 рублей). 2й байт: статус 9 - disabled. 3й: контрольная сумма
S     "350135" // ESCROW, после этого купюра должна быть перемещена в ящик, а на команду POLL получить подтверждение
R     "00" // ACK

// с этого момента нет ответа на команду POLL

S     "3333"
// превышен тайм-аут ожидания 250мс
S     "3636" // STACKER
R     "000000" // успешно отвечает

 

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

Девятый бит эмулируется с помощью бита четности. Работа ведется под Ubuntu на ПК.
Руководство к протоколу - MDB/ICP 4.2

Может ли устройство из-за неверной прошивки (под Pulse) отвечать на команды MDB, но виснуть в некоторые моменты?

 

P.S. ICT CC6100 успешно работает :/

Изменено пользователем syura
Ссылка на комментарий
6 часов назад, syura сказал:

Может ли устройство из-за неверной прошивки (под Pulse) отвечать на команды MDB, но виснуть в некоторые моменты?

Pulse это базовая функция и присутствует практически во всех прошивках.

7 часов назад, syura сказал:

стройство успешно инициализируется командами POLL (33h), SECURITY (32h), IDENTIFICATION (37h 00h),  STACKER (36h),  BILL TYPE (34h FFFFFFFFh, с функцией escrow)

Я делал так:

POLL  (33h)

SETUP      (31)
EXPANSION  (37)
SECURITY   (32)
BILL TYPE  (34), а уже потом POLL (33h).

 

Функцию Escrow не использовал.

Постараюсь завтра посмотреть в программе.

  • Нравится 1
Ссылка на комментарий
14 часов назад, LIC сказал:

Я делал так
....
Функцию Escrow не использовал.

Цитата

S     "3333"
R     "00"
S     "3131" // SETUP
R     "011810000a0000c8001fff01050a32640000000000000000000000bf"

S     "00" // ACK
S     "370037" // EXPANSION INDENTIFICATION
R     "49435430303030303030303030303056372d52555235303030303001241d"

S     "00"
S     "32ffff30" // SECURITY
R     "00"
S     "34ffff000032" // BILL TYPE без ESCROW

R     "00"

S     "3333" // POLL
R     "00"

S     "3333" // POLL
R     "82098b" // 82 - принята купюра, 09 - status disabled

S     "00"

S     "3333"
нет ответа в течениe 250мс

S     "3333"

нет ответа в течениe 250мс

S     "3131" // SETUP
R     "011810000a0000c8001fff01050a32640000000000000000000000bf" // на SETUP отвечает

S     "00"

S     "3333"

нет ответа в течениe 250мс

Попробовал такой последовательностью, без режима escrow. В таком случае купюра попадает сразу в ящик,  но на POLL перестает отвечать. Помогает только перезагрузка.
 

14 часов назад, LIC сказал:

Постараюсь завтра посмотреть в программе.

Буду признателен.

 

Добавил отображение отправки ACK в ответ на данные от купюрника. Отправлялись и раньше, но не отображались в логе.

Изменено пользователем syura
Ссылка на комментарий

syura  в прикрепленном файле последовательность команд при работе КП NV-9 (ICT A7 просто нет под рукой). Надо заметить, в зависимости от уровня (Level команда Status) зависит требование по списку команд.

После инициализации РС через каждые 50, 100 или 200 мСек посылает запрос POLLING и уже в зависимости от ответа строит алгоритм дальнейшего действия. Когда КП отвечает 00, то продолжаем запрос, когда в ответ на Polling приходит пакет о принятии купюры, то посылаем POLLING для приема или ESCROW для возврата купюры.

 

NV9_MDB.doc

Ссылка на комментарий
В 18.09.2018 в 19:11, LIC сказал:

syura  в прикрепленном файле последовательность команд при работе КП NV-9 (ICT A7 просто нет под рукой). Надо заметить, в зависимости от уровня (Level команда Status) зависит требование по списку команд.

После инициализации РС через каждые 50, 100 или 200 мСек посылает запрос POLLING и уже в зависимости от ответа строит алгоритм дальнейшего действия. Когда КП отвечает 00, то продолжаем запрос, когда в ответ на Polling приходит пакет о принятии купюры, то посылаем POLLING для приема или ESCROW для возврата купюры.

 

NV9_MDB.doc

Спасибо за ваш алгоритм!

 

На самом деле все оказалось несколько иначе.

 

Разработка велась с ПК под Ubuntu с адаптером на базе CH304g. Логическим анализатором снял лог и увидел, что этот чип не отсылает бит четности. Пробовал из приложения на Qt и с помощью minicom.

Собрал приложение на целевом устройстве со встроенным в чип uart - бит четности отправляется, купюра успешно зачисляется.

Вероятно, из-за неверной работы с девятым битом, купюроприемник не получал верно команду ACK и замолкал, чтобы не "двоить" купюры. Хотя при этом на другие команды отвечал, хотя там тоже все отправлялось неверно.

Изменено пользователем syura
Ссылка на комментарий
  • 3 месяца спустя...

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

я хз зачем мне это сейчас, но хочется, блин.

 

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

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

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

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

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