wiki:box

BOX-контроллер автомата выдачи коробок

BOX-контроллер осуществляет контроль выдачу коробок в вендинговом автомате.

Особенности подключения и комплектации

Особенности:

  • Крайне важно!! Управляющий симистор non-insulated, радиатор "под током". Т.е. контроллер нужно запаковать или закрыть крышкой чтобы избежать случайного касания.
  • Шунтирующее реле мы ставим как резервное, не используется.
  • ВАЖНО! Подключение строго RS232, не путать с uart!

Коммутация через контроллер rvm

Алгоритм управления

Контроллер оперирует следующими состояниями:

  • IDLE - в ожидании команды, готов выполнять выдачу.
  • DISPENSE - идет выдача коробки.
  • ESCROW - коробка в положении выдачи, ожидает забора из лотка.
  • ERROR - защелкнутое состояние ошибки.

Для выдачи коробки хост осуществляет следующие операции:

  • Проверяет текущий статус-готовность к выдаче (IDLE)
  • Выполняет команду DISPENSE. В случае неудачи отменяет операцию.
  • Ожидает смены статуса.
  • Если статус сменился на ERROR хост отменяет транзакцию, терминал останавливает работу до выезда сервисного инженера.
  • Если статус сменился на ESCROW хост рекомендует клиента забрать коробку.
  • Если/когда статус сменился на IDLE хост может завершить обслуживание.

Возможные ошибки:

  • empty - ошибка фиксируется, если во время операции выдачи (DISPENSE) не зафиксировано движение коробки по концевику.
  • jam - ошибка фиксируется, если во время операции выдачи (DISPENSE) не зафиксировано освобождение датчика движения.

Важно! Контроллер не имеет возможности контролировать отсутствие коробок в стеке, поэтому ПО терминала должно осуществлять контроль загрузки и остатков коробок.

Протокол управления

При разработке протокола следует ориентироваться на исходный код утилиты protodemo_box. Команды и результаты выполнения описаны как с точки зрения заголовочного файла box.h и аргументов командной строки protodemo_box.

Управление контроллером с хоста осуществляется через порт RS232

Параметры последовательного порта:

  • Baudrate: 115200
  • Parity: none
  • 8 bits
  • 1 STOP

контроллер и хост обмениваются командами и данными, инкапсулированными в пакеты следующего формата:

  • (1 байт) sync - байт синхронизации, 0x55
  • (1 байт) size - размер пакета (включая sync и crc)
  • (2 байта) адрес устройства, иные параметры - не используются, передавать 0x00 0x00
  • (1 байт) cmd/response - код команды
  • (N байт) data - блок данных команды (может быть пустым)
  • (2 байта) crc - контрольная сумма CRC16-CCIT

PING (0x01): проверка связи с устройством

Без данных. Успешный ответ на команду (response = 0x01) поступает без данных.

С командной строки:

protodemo_box COM1 ping

Ответ:

PING OK

ID: идентификация устройства/прошивки

С командной строки:

protodemo_box COM1 id

Ответ:

ID: device 4 version 1.0

ESTATUS (0x03): текущий статус устройства

Без данных. Успешный ответ включает в себя TLV-блоки, описывающие статус устройства, в формате:

  • (1 байт) тип TLV-блока
  • (1 байт) размер блока данных
  • (X байта) значение блока данных

Варианты типа блока:

  • BOX_HPROTO_ESTATUS_STATE = 1 - статус (см box.h)
  • BOX_HPROTO_ESTATUS_ERROR = 2 - битовая маска ошибки (см. box.h)

Блоки TLV с неизвестные типами данных необходимо корректно пропускать

С командной строки:

protodemo_box COM1 estatus

Ответ:

Status:[2] idle

DISPENSE (0x04): проверка связи с устройством

Без данных. Успешный ответ на команду (response = 0x04) поступает без данных.

С командной строки:

protodemo_box COM1 dispense

RECOVER (0x06): восстановление после перехода в ошибку

С командной строки:

protodemo_box COM1 recover

Без данных, Успешный ответ на команду (response = 0x04) поступает без данных.

Last modified 17 months ago Last modified on Dec 8, 2022, 12:59:50 PM

Attachments (5)

Download all attachments as: .zip