В рамках данной статьи мы рассмотрим проблемы автоматизированного съема статистической информации из торговых автоматов. При ручном съеме данных по продажам вы не застрахованы от ошибок, поскольку человек, переписывающий информацию в виде 4-, 5- или 6-значных цифр с дисплея автомата, рано или поздно допустит ошибку. Как-то раз довелось наблюдать, как один "продвинутый" оператор переписывал данные с дисплея автомата на Palm, и мне показалось, что если бы он записывал данные на бумагу, то у него это получилось бы гораздо быстрее.

 

Снятие данных статистики вызывает у пользователей автоматных торговых сетей ряд проблем. Во-первых, это - несогласованность различных типов оборудования между собой. Во вторых, производители автоматов относительно недавно стандартизировали протоколы обмена данными между автоматом и центром обработки информации: EVA-DTS для европейских производителей и DEX/UCS для американских (не следует путать с протоколами MDB/ICP, EXECUTIVE и др.).

У многих пользователей вендингового оборудования возникает путаница с протоколами обмена данными. Чтобы внести ясность, проведу краткий экскурс по различным протоколам.

 

Протоколы обмена данными

Executive - Protocol A (MEI Protocol A specification Executive). Был разработан Mars Electronics International (MEI) в начале 1980 года для взаимодействия электронных компонентов торговых автоматов. Управление процессами продаж производилось через монетоприемники, и цены могли храниться в монетоприемнике или в машине. Через год протокол распространил и на устройства безденежных продаж.

Спецификация определяет соединительные разъемы между компонентами, электропитание - 24 В. На основе Executive в Германии был разработан протокол BDV.

BDV (для немецкоговорящих стран). Протокол Executive был дополнен спецификацией, предусматривающей единый разъем для электропитания и коммуникаций, и получил название BDV001.

MDB/ICP (Multi-Drop Bus/Internal Communication Protocol). Разработан компанией CoinCo в начале 1990 года для Coca-Cola с целью удешевить монетоприемник с выдачей сдачи и перенести управляющие функции из монетоприемника в контроллер автомата. Доработан NAMA в 1994 г. с целью поддержки использования подобным образом банкнотоприемников и систем безденежной оплаты. Европейская ассоциация EVMMA (European Vending Machine Manufacturers Association) одобрила и расширила проект, назвав его ICP (Internal Communications Protocol). ICP в основном идентичен MDB; некоторые отличия касаются систем безденежной оплаты. В 1998 году MDB и ICP были совмещены и реализованы как MDB/ICP версия 1. Протокол поддержан NAM A, EVMMA и EVA и используется большинством производителей торговых автоматов.

MEI Micromech Specification Первоначально определял связь между монетоприемной частью автомата и системой выдачи сдачи, но потом был расширен для управления различными частями автомата. Определяет процесс обмена через последовательный интерфейс информацией платежной системы и автомата, а через через параллельный интерфейс - автомата и системы выдачи сдачи. Разработан для системы с 3 тубами монет, но может быть расширен производителем и для 4 туб. NAMA опубликовала спецификацию протокола с дополнениями для систем безденежных оплат. Спецификация предусматривает 12-контактный разъем и 110 В электропитания или 15-контактный разъем и 24 В для поддержки 4 туб для выдачи сдачи.

CCTALK. Еще один протокол обмена информацией между периферийными устройствами торгового автомата. Предусматривает обмен по трем физическим линиям - питание, данные и земля - со скоростью 9600 бит. Устройства обмениваются между собой в адресном пространстве, используя общую информационную шину. Протокол является байт-ориентированным и предполагает подключение до 254 ведомых устройств. Относится к совокупности "открытых" стандартов и не требует никаких оплат или регистраций для использования.

EVA-DTS (European Vending Association Data Transfer Standard). Стандарт определяет поля контрольных данных и данных управления, а также формат передачи данных от автомата или отдельных его компонент к центру обработки и контроля информации и обратно.

EVA-EMP (Energy Measurement Protocol). Определяет форму и метод измерения потребления электроэнергии торговыми автоматами.

EVA-CVS (Cashless Vending Specification). Протокол регламентирует все процессы, связанные с использованием систем безденежных оплат.

Чтобы снять статистическую информацию из торгового автомата, поддерживающего протокол EVA-DTS и имеющего соответствующий коммуникационный портал (физический порт, обеспечивающий обмен данными в протоколе EVA- DTS), достаточно установить на автомате считыватель флэш-карт или флэш-ключей (например, GENIUS System FS - производитель OTR, или OSCAR - производитель FAGE, или J100 - производитель Jofemar или др.); вставив в считыватель специальный флэш-ключ, можно производить перекачку данных статистики из памяти контроллера автомата (для MDB протокола, а для EXECUTIVE - из памяти монетоприемника) во флэш-память ключа. Считыватели флэш-карт могут реализовывать несколько функций:

- обеспечение безденежных продаж,

- считывание статистических данных,

-перепрограммирование внутренних настроек автомата.

Стоимость считывателя колеблется в пределах 120-180 евро, стоимость флэш-ключа для накопления данных статистики - 60-70 евро. Если вы решили выстроить сбор информации по вышеописанной схеме, нужно приобрести интерфейс для считывания информации из памяти флэш-карты в память компьютера и программу по интерпретации считанных данных (450 - 500 евро).

Для торговых автоматов, не поддерживающих протокол EVA-DTS, автоматизированное снятие статистической информации имеет ряд проблем. В этом случае производители автоматов используют собственные протоколы обмена данными и, соответственно, предлагают (а часто ничего не предлагают) собственное оборудование для считывания и хранения данных статистики, которое согласуется только с автоматами от данного производителя.

Однако на большинстве автоматов имеется порт RS-232 для программирования автомата и вывода статистических данных на принтер с последовательным интерфейсом. Данные, выводимые автоматом для печати, представляют собой последовательность ASCII-символов, разделенных на строки символами 10 <CR> и 15 <LF>. Поток информации передается по стандартному протоколу ASCII - это протокол симплексной передачи непакетированной ASCII- информации посредством 8-бит- ных данных, 1 с топовый бит, без проверки четности, на скорости 9600 бит/сек. Задача приема такого вида информации на компьютер решается очень просто - достаточно скачать или написать терминальную программу, которая считает информацию из автомата и запишет текстовый файл со статистическими данными. С файлами такого вида легко работать, можно просмотреть файл в "редакторе", можно его распечатать на принтере, либо использовать как файл исходных данных для бухгалтерских программ типа 1С и т.п. Единственное неудобство - необходимость возить с собой относительно громоздкий ноутбук, который можно повредить в полевых условиях, плюс долгая загрузка системы, батареи могут сесть в самый неподходящий момент. Наш опыт показывает, что эту проблему можно решить с помощью недорогого (розничная цена $160 - $190 в Интернете) инженерного калькулятора HP-49G. Предвижу читательский скепсис. Почему калькулятор, а не Palm или Pocket PC? На что можно ответить вопросом на вопрос: А вы сможете запрограммировать Palm? Тем более, я не встречал "наладонника" с полноценным портом RS-232.

Технические характеристики HP-49G

Оперативная память -1.5 Мб Флэш-память - 1.5 Мб

Дисплей - ЖК, монохром, 8 строк х 22 символа СОМ-порт - RS-232 (кабель прилагается)

Количество встроенных функций -2300

Количество клавиш - 51 Питание - 3 батареи AAA (служба - до года)

HP-49G является мощным вычислительным прибором, позволяющим производить вычисления различной сложности, в том числе работать с матрицами, полиномами, математическими функциями, производить алгебраические, векторные вычисления; наличие графического дисплея позволяет рисовать графики различных функций, гистограммы процессов или статистические диаграммы. Имеет несколько режимов работы - алгебраический, графический, редактор построения математических функций, текстовый редактор. Встроенный таймер позволяет отслеживать текущую дату и время и использовать временные функции в вычислениях. Программировать калькулятор можно на языке RPL (LISP), либо на языках низкого уровня (SysRPL), либо на ассемблере MASD. Текст программы можно вводить непосредственно с клавиатуры и затем сохранять в файл флэш-памяти калькулятора. Встроенный файловый менеджер позволяет записывать, удалять, переименовывать, редактировать файлы, а также создавать и удалять новые файловые директории.

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

Для синхронизации калькулятора с компьютером нужно подсоединить кабель из комплекта поставки, на калькуляторе вызвать программу "Server" и на компьютере запустить программу коммуникации "PC Connectivity Kit", которая в комплект не входит, но ее можно скачать из www.hp.com. Пользовательский интерфейс программы синхронизации достаточно прост - окно программы разбито на две части, в верхней части отображаются файлы компьютера, в нижней - файлы, записанные в калькуляторе. Программа поддерживает технологию OLE, поэтому достаточно выделить нужные файлы в окне калькулятора и перетащить их в окно компьютера и наоборот.

RPL - программирование

Внутри калькулятора встроен интерпретатор языка RPL, поэтому вы можете непосредственно с клавиатуры вводить текст программы и производить ее выполнение без дополнительной компиляции. Если программа объемная, то из-за мелкого размера дисплея текст программы воспринимается ущербно; поэтому удобнее написать текст программы на компьютере (например, в редакторе WordPad), а затем, синхронизовав компьютер и калькулятор, скачать на последний файл с вашей программой, а встроенный редактор калькулятора использовать для внесения мелких изменений в программу. Язык программирования RPL достаточно прост, все его команды перечислены в "Pocket Guide" - маленькая книжка из комплекта поставки. Единственный недостаток - нет полноценного описания синтаксиса языка. Пробел можно восполнить, воспользовавшись сайтом "любителей калькуляторов" www.hpcalc.org, откуда можно скачать много описаний и исходников текстов программ.

Рассмотрим несколько примеров использования RPL - команд.

"MENU" { { RECEIVE 1 } { EXIT 2 } } 1 CLLCD CHOOSE DROP 'SEL' STO

Данная команда вызывает на экран меню с 2-мя строками выбора

=======

MENU

--------------

RECEIVE

EXIT

=======

и формирует запоминание выбранной строки в переменной SEL. Рассмотрим разные пути выполнения программы в зависимости от значения переменной SEL: при выборе строки "RECEIVE" SEL=1 и выполняется блок операторов - BLOCK!, а при выборе стоки "EXIT" SEL=2 и выполняется блок операторов - BLOCK2:

CASE

        SEL 1 =

                    THEN
                    BLOCK1
                    END

        SEL 2 =

                   THEN
                   BLOCK2
                   END

        END

Инициализация COM-пopтa производится командой :

9600 BAUD 0 PARITY OPENIO

Установим переменную Rstr как пустую строку и добавим к ней строку из буфера ввода (размер буфера 255 байт):

"" 'Rstr' STO

Rstr BUFLEN DROP SRECV DROP + 'Rstr' STOP

Если вы хотите вывести на экран значение стринговой переменной Rstr, например, на 2-ой строке дисплея, то наберите команду:

Rstr 2 DISP

При выводе численной переменной на экран ее нужно преобразовать к стринговому типу, например переменную Numb отобразить на 3-ей строке дисплея :

Numb \->STR 3 DISP

И последний пример - для отправки из СОМ-порта стринговой переменной Rstr, так, чтобы она заканчивалась символами <CR> и <LF>, нужно использовать команду

Rstr 13 CHR + 10 CHR + XMIT DROP

Как видно из примеров, можно легко составить текст программы по считыванию статистических данных из автомата. При написании программы советую сделать автоматическое присвоение имени файла со статистикой, например, присвоить имя файлу А001, затем проверить директорию НОМЕ на предмет нахождения в ней файла с таким же именем; если файл с таким именем обнаружен, то присвоить другое имя, например, А002 и выполнить проверку директории НОМЕ снова и т.д. Удобно начинать имя файла с буквы "А"; поскольку при синхронизации калькулятора с компьютером все файлы в окне программы синхронизации упорядочиваются по алфавиту, то все файлы с именами "А..." окажутся наверху каталога, и Вам меньше придется прибегать к скроллингу каталога.

Приведу пример файла снятой статистики из одного кофейного автомата при помощи калькулятора HP-49G :

%%НР: T(1)A(R)F(.);

"3.022 1.112005

===================

AZKOYEN VENETO

-------------------------------------------

NUMBER MACHINE 00013010

 

2005/11/01 15:01:33

 

SELECTIONS

TOTAL OF SOLD UNITS: 1564

TOTAL OF SOLD MONEY: 23826.00

TOTAL MONEY IN CASH: 19670.00

TOTAL MONEY IN GIVERS: 456.00

MONEY TO GTVF.RS: 4612.00

MONEY GIVEN AS CHANGE: 0.00

CHANGES NOT GIVEN: 0.00

EXTRACTED MONEY MANUALLY: 0.00

 

SELECTIONS

 ID Price Qty Money

ESPRESSO 15.00 178 2430.00

B.ESPRESSO 15.00 105 1470.00

KOFE+MILK 15.00 74 1065.00

B.KOFE+MILK 20.00 137 2055.00

CAPUCHINO 25.00 258 6150.00

CHOKCHMILK 20.00 49 980.00

TEA+MILK 10.00 3 30.00

TEA 05.00 237 1140.00

MILK 10.00 49 490.00

AMERIKANO 18.00 165 2970.00

B.AMERIKANO 20.00 54 1080.00

KOFELATTE 15.00 76 1140.00

B.KOFE LATT 18.00 57 1026.00

SPARE 05.00 0 0000.00

SPARE 05.00 0 0000.00

SPARE 05.00 0 0000.00

SPARE 05.00 0 0000.00

 

PRESELECTIONS

ID Price Qty Money

NO SUGAR 00.00 48 0000.00

MORE SUGAR 00.00 356 0000.00

LESS SUGAR 00.00 87 0000.00

 

Первые две строки файла сгенерированы калькулятором. Первая - технологическая для калькулятора. Во второй строке программа записывает текущее время и дату. Это сделано из-за того, что многие операторы ленятся устанавливать дату и время на торговом автомате, либо автоматы не имеют встроенных таймеров; поэтому, записывая в файл дату и время из таймера калькулятора, мы можем быть уверены в корректности даты и времени снятия статистической информации.

Из вышесказанного можно сделать вывод о многогранности применения графического калькулятора HP-49G. Многие технологические устройства и агрегаты имеют порт RS-232 для общения с внешним миром. Для связи с такими устройствами нужна небольшая по размерам коробочка, включающая в себя:

- Последовательный порт RS-232

- Флэш-память (желательно большого объема)

- Внутреннюю программу приема данных и их первичной обработки

- Программу и кабель синхронизации с компьютером

- Простой пользовательский интерфейс, позволяющий работать неквалифицированному персоналу.

Всем вышеперечисленным требованиям всецело удовлетворяет инженерный калькулятор HP-49G. Предвижу вопрос по поводу последнего пункта: Как можно достичь простого пользовательского интерфейса, когда на корпусе калькулятора 51 клавиша? Мы написали программу по снятию статистики из торговых автоматов, пользовательский интерфейс которой состоит из трех клавиш (вкл. калькулятор, выкл. калькулятор, снять статистику) и меню на экране дисплея. Поскольку калькулятор имеет прозрачную защитную пластиковую крышку, то в ней можно просверлить отверстия, чтобы они совпадали с нужными клавишами, и тогда ваш персонал получит доступ только к интерфейсу программы, а не ко всем функциям управления калькулятором.

Ваши вопросы, рекомендации и дополнения по данному материалу присылайте на tech@vendorus.ru


ОТПРАВИТЬ:



Читайте также:


* Для комментирования, пожалуйста, авторизуйтесь