Диспенсер выдачи магнитов
Схема подключения
Описание
Управляющий контроллер позволяет управлять выдачей магнитов с управляющего компьютера (хоста) через интерфейс USB. Хост отслеживает состояние диспенсера (команда STATUS) на предмет наличия фатальных ошибок (JAMMED) и состояния стекера магнитов.
Диспенсер может находится в одном из четырех статусов
- 0x00 — инициализация. Производится при старте устройства.
- 0x01 — готов к работе. Штатное состояние устройства при ожидании команды на выдачу магнитов.
- 0x02 — в процессе выдачи. Диспенсер осуществляет выдачу магнитов.
- 0x03 - фатальная ошибка JAMMED. В данное состояние диспенсер переходит в случае если зафиксирован сбой работы.
Выход из состояния JAMMED может быть осуществлен двумя способами:
- Перезагрузкой устройства
- Длительным (2-3 сек) нажатием кнопки на устройстве.
Хост выдает команды (DISPENSE) на выдачу нужного количества магнитов. Команда обрабатывается во всех состояниях кроме состояния JAMMED.
Демонстрационная утилита
Демонстрационная утилита позволяет управлять диспенсером с командной строки.
Варианты запуска:
Проверка доступности устройства:
protodemo.exe COM1 ping
Проверка статуса:
protodemo.exe COM1 status
Выдача 3-х магнитов
priotodemo.exe COM1 dispense 3
API
Управление БУ с хоста осуществляется через порт USB, который эмулирует работу последовательного порта (COM-порта). Для корректной работы необходимо установить драйвер (FTDI):
http://www.ftdichip.com/Drivers/VCP.htm
Параметры последовательного порта:
- 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) поступает без данных.
DISPENSE (0x02): команда выдачи магнитов
Данные:
- 1 байт - количество магнитов к выдаче.
Успешный ответ на команду (response = 0x02) поступает без данных, ошибка (response = 0x00) поступает с кодом ошибки размером 1 байт в блоке данных.
STATUS (0x03): текущее состояние устройства
Без данных, запрашивает текущее состояние устройства.
В ответе (response = 0x01) в блоке данных последовательно возвращаются:
- 1 байт: статус устройства (0x00 — инициализация, 0x01 — готов к работе, 0x02 — в процессе выдачи, 0x03 - фатальная ошибка JAMMED)
- 1 байт: количество магнитов, ожидающих выдачи
- 1 байт: состояние датчика нижнего уровня стека магнитов (0x00 - магнитов достаточно, 0x01 - уровень низкий)
Attachments (3)
-
magnetdispenser-protodemo.zip (83.6 KB) - added by 9 years ago.
Утилита управления диспенсером
- motorcontroller-scheme.png (42.6 KB) - added by 7 years ago.
- motorcontroller-scheme.pdf (52.7 KB) - added by 7 years ago.
Download all attachments as: .zip