Автомат билетопечатающий (АБП). Некоторые особенности

от автора

На хабре полгода назад вышла статья о некоторых особенностях банкоматов, которая стала весьма популярной. Однако, кроме банкоматов есть и другие известные в народе терминалы.
Речь пойдёт об автоматах билетопечатающих (АБП). Если сказать конкретнее, то речь пойдёт именно об автоматах, которые оформляют проездные документы (ПД, как на бумажный носитель, так и на карты) на поезда пригородного сообщения, попросту говоря, на электрички, или как говорят в народе – «собаки».
Миллионы пассажиров ежедневно пользуются этими устройствами и даже люди старшего поколения привыкли к этим устройствам и вовсю оформляют себе проезд — никто не любит общаться с угрюмыми и недружелюбными кассирами.
Однако кроме всего прочего — АБП – это крайне занятная штука с технической и организационной точки зрения (привет, UserSide). Даже обслуживающий персонал чаще всего не представляет себе тонкости его работы, а их огромное количество. С точки зрения бизнес-логики, АБП обладает гораздо более широким функционалом, чем банкомат.
Уже почти четыре года я работаю программистом в составе команды, занимающейся разработкой ПО для АБП. За время моей работы происходили различные случаи с эксплуатацией АБП, для анализа которых приходилось и на места выезжать и подолгу читать логи. И взломать алгоритм формирования штрих-кодов злоумышленники пытались и в прокуратуру заявления писались, но обо всём сразу рассказывать не буду. В этой статье мы только ознакомимся с самим устройством АБП и его некоторыми особенностями.

Модели АБП

АБП бывают разные: чёрные, белые, красные. Шутка, но в каждой шутке есть доля шутки. Модели действительно зачастую отличаются цветом: у нас на работе для тестов стоят синий, зелёные и жёлтый автоматы. Были у нас ещё красный и серый.

Поприветствуем SFour-синий:

Поприветствуем М3, зелёный:

Наша компания, Микротех, работает в основном с двумя перевозчиками: ЦППК (Центральная пригородная пассажирская компания) и МТППК (Московско-Тверская пригородная пассажирская компания). Самый большой полигон АБП у ЦППК. Я не знаю точную цифру, но примерно от 700 до 1000 в данный момент. Большую часть из них составляет модель М2 на смену которой приходит модель М3.
Модели М2 и М3 мы на работе иногда называем «гробами», чем-то они их напоминают.
М2 обладает древним процессором Celeron 1.7 Ghz (1 ядро, естественно), встроенной видеокартой без поддержки аппаратного ускорения и 512 мегабайтами оперативной памяти DDR1.
М3 оборудован двухъядерным процессором, 1ГБ оперативной памяти DDR2 и встроенной видеокартой с поддержкой аппаратного ускорения.
На большей части АБП установлена Windows PosReady 2009 и Windows XP. Они частенько бывают заражены разными вирусами, которые кроме самого свежего хорошего антивируса никто убить не в состоянии (бесплатные антивирусы, например, не справляются).
Что касается оборудования, то модели М2 и М3 снабжены следующими устройствами:
1. Приёмник купюр, канадский CashCode SM.
2. Приёмник монет, немецкий NRI-G13.
3. Диспенсер монет (он же хоппер) – призван выдавать сдачу монетами. В моделях М2 и М3 используется Cube Hopper MKII.
4. Диспенсер купюр. В моделях М2 и М3 используется корейский LCDM с двумя кассетами.
5. Диспенсер карт CRT570\CRT530, китайский. Может принимать и продавать карты.
6. Фискальный регистратор – Ярус 01К с принтером VKP-80II.
7. Банковский POS-терминал Ярус.
8. Источник бесперебойного питания. Тут сказать нечего.
9. Датчик сигнализации. Про него тоже особенно нечего сказать, срабатывает при открытии дверей, что тут ещё скажешь.
10. Устройство, формирующее образ билета для записи на карту, или штрих-код для печати на билете.
Есть также модель АБП — SFour (его вы видели выше на картинке), по крайней мере, мы её так называем. Название происходит от названия компании SFour, специализирующейся на производстве POS-терминалов (POS – Point of Service, или точка оказания услуг). У этой модели другой диспенсер монет и диспенсер купюр.
В кассету диспенсера купюр помещается до одной тысячи купюр. Диспенсеры монет вмещают до 450 монет, однако у нас на полигонах они имеют расширенные чашки и туда можно загрузить гораздо больше, думаю до двух тысяч, примерно. Выдаёт со скоростью 400 монет в минуту.

Рассмотрим некоторые устройства немного более подробно.

Начинка АБП модели М2

Железные особенности

При прочтении данного раздела нужно иметь ввиду, что условия эксплуатации АБП очень тяжёлые. На них идёт снег, на них льёт дождь, их морозит мороз, их бьют камнями, ломами, ногами, руками, иногда головами.

Приёмник купюр CashCode SM

Используемый CashCode SM – отличное, почти безотказное устройство. Надо только правильно установить, чтобы он не рвал и не «гофрировал» купюры. Иногда кассиры вставляют его криво, или не до щелчка, который является характерной звуковой особенностью корректной установки устройства. Установить купюроприёмник некорректно довольно трудно, но иногда всё же может повезти и тогда купюры в лучшем случае вам будут просто выезжать обратно. В худшем, устройство их будет рвать, не в клочья, конечно, но неприятно. В не худшем, но и не лучшем случае, купюру вы вставите нормальную, а выйдет вам «гофрированная».

Приёмник монет NRI-G13

С ним связано множество проблем эксплуатации. Не знаю, есть ли на рынке устройства, которые устраняют проблемы, испытываемые при работе с этой моделью.
Например, зимой, внутрь устройства попадает вода и замерзает – в результате устройство не работает. Его легко «забить». Монеты набиваются и всё, что кидают после «забития» в него проваливается на некоторую глубину, но ПО их не засчитывает (поскольку датчик не сообщает о поступлении новой монеты) и вытащить их обычному пассажиру не представляется возможности.
Это устройство очень любят мошенники, чаще всего, обитающие на вокзалах. Они придумывают разные способы искусственного «забития» этого устройства, например, куском бумаги. После того, как пассажиры накидают туда монет, мошенник с помощью нехитрых приспособлений, типа изогнутой проволоки вытаскивает добычу. Так получается потому что далеко не каждый пассажир будет жаловаться на потерю монеты, ибо он торопится на электричку, или ему попросту не хочется ждать кассира и париться из-за одного или пяти рублей. Мошенников гоняют местные охранники. Про привлечение к ответственности, кстати, ни разу не слышал. Кстати, защита от опускания монеты на ниточке предоставляется самим устройством – оно определяет такую ситуацию (обратный ход монеты) и возвращает наверх соответствующий код.

Диспенсер монет Cube Hopper MKII

В моделях М2 и М3 он имеет три канала, по одному номиналу на канал. В данной модели канал не привязан к диаметру монеты, так что можно засыпать в любой канал любой номинал. Отличное, надёжное устройство. Некорректно работает обычно только когда совсем всё плохо: проблемы с питанием, сдохли датчики. Самая страшная ситуация – если сдох датчик при выдаче сдачи, тогда пассажир может получить джек-пот на сумму равную количеству монет, выдаваемому в секунду, умноженному на время, затрачиваемое на несколько попыток выдачи сдачи. Периодически кассиры путают номер канала и настроенный номинал, закладывая, например, пять рублей в канал, по которому, как полагает ПО, должны лежать рублёвые монеты. Результат очевиден. Кассира, кстати, за такое бьют по голове и зарплате.

Диспенсер купюр LCDM

Устройство достаточно надёжное. Однако, иногда, выдаваемые купюры не вылетают в лоток, а застревают между диспенсером и внешней стенкой АБП. Результат: ПО весело показывает пассажиру, что сдача выдана, пассажир в бешенстве мечется и что-либо начинает предпринимать: крушить, кричать, звать кассиров.

Диспенсер карт CRT570\CRT530

Модели М2 и М3 оборудуются двумя такими устройствами – один настраивается на приём карт, другой на продажу. Они могут продавать как ультралайты, так и обычные транспортные карты. Как известно, толщина у карт бывает разная, поэтому у этих устройств специальным колёсиком настраивается толщина карт, закладываемых в стекер. При неправильной настройке, карта никогда не будет выдвинута, или будет выдвинуто сразу две, вместо одной. Это устройство приносит много головной боли. Из стекера карта подаётся роликом, так вот, когда карт остаётся мало, то ролик, начиная крутится, просто приподнимает карты и прокручивается, пока ПО не исчерпает таймаут и не выдаст пассажиру сообщение о том, что карта продана быть не может. Для решения проблемы сверху нужен небольшой груз, однако никто нигде не озабочивается этими проблемами – пусть пассажиры мучаются. Дело этим не ограничивается.
Я программировал «драйвер» для работы с этим чудом техники. Помню, как в один прекрасный момент китайцы их начали поставлять просто с неисправной прошивкой. У устройства есть логическое состояние из трёх возможных значений: принимать карту, запретить приём, при приёме сразу складывать в отсек бракованных карт. Так вот в этой прошивке первая же команда по изменению этого состояния вводила устройство в ступор и на последующие команды устройство просто переставало отвечать. Нам долго заказчик не верил и считал, что наше ПО работает некорректно, однако всё же мы пришли к консенсусу, и заказчик справился с китайцами. Как точно — я не знаю.
В подзаголовке указано две модели. Диспенсеров модели CRT530, слава богу, имеется небольшое количество.
Протокол коммуникации один и тот же, но китайцы в своём репертуаре. В CRT530 команда изменения вышеупомянутого состояния занимает аж целых 2 секунды! Кроме того, для одного и того же положения карты в тракте, данные модели возвращают разный статус по одним и тем же датчикам.

Фискальный регистратор

Это устройство является источником небольших неприятностей. Он частенько бумагу заедает, наматывает на барабан и всякое такое. Хотя, при правильной эксплуатации, всё это случается довольно редко. Но стоит забыть вытаскивать бумагу по мере печати длинного отчёта и его обязательно намотает на барабан. Это устройство и печатает билеты, кстати. Без фискального регистратора АБП работать не может.
Совсем недавно наш ЦТО (центр технического обслуживания) рассказал великолепную историю (привет, парни!). На одной из станций утром часть АБП «падают» в режим блокировки (у автомата есть режим продаж, блокировки и сервисный режим). Причём в одно и тоже время с небольшой разницей. Выяснилось, что в это время встаёт солнце и его лучи попадают чётко в щёлку регистратора так, что засвечивается датчик, определяющий наличие бумаги. ПО опрашивает датчик, понимает, что бумаги нет и переходит в режим блокировки.

Заключение

Всё вышеописанное предъявляет жёсткие требования к разработке ПО. ПО должно быть очень надёжно, работать, по сути, 24 на 7. Нельзя допускать утечек памяти, даже минимальных, нужно обрабатывать огромное количество сбойных ситуаций. И к сожалению, не все ситуации можно разрешить в автоматическом режиме. Иногда вмешательство человека просто необходимо, это без учёта необходимости замены бумаги и внесения разменного фонда.

Спасибо за внимание.

ссылка на оригинал статьи http://habrahabr.ru/post/241535/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *