Приветствую всех!
Обычно, когда речь заходит о старых кассовых аппаратах, вспоминаются девайсы ещё советских времён, тогда как устройства девяностых и двухтысячных оказываются незаслуженно забыты. Тем не менее, среди них тоже были по-своему интересные экземпляры, о которых я и хочу рассказать.
Итак, в сегодняшней статье поговорим о кассовых аппаратах эпохи фискальной памяти. Узнаем, как они устроены, посмотрим на них в работе и разберёмся, какие интересные (и по нынешним временам порой нелогичные) решения в них применены.
❯ Суть такова
Многие, кто общался со мной, знают про моё увлечение торговым оборудованием. Чего стоят, например, посты про разработку софта под древние платёжные терминалы. Но сейчас не о них.
В первой половине девяностых кассовые аппараты в нашей стране стали оснащаться фискальной памятью. До этого запись данных производилась исключительно на контрольную ленту, которую предприниматель обязан был хранить пять лет. Необходимость в ней после этого не отпала, но для подстраховки кассовые аппараты обзавелись защищённым хранилищем, изменить данные в котором без вскрытия опломбированного корпуса было уже непросто. Старые электромеханические кассы, а также реликты типа «Искр» с ферритовой памятью или не менее эпичной «Оки-400» были выкинуты из госреестра и окончательно ушли в историю.
А вот для примера другая касса тех времён — ЭКР 3101 («ЭКР» означало «Машина электронная контрольно-регистрирующая»). Несмотря на то, что собрана она уже на микроконтроллере, а не на дискретной логике, фискальной памятью она всё ещё не оснащена. Впечатляет и местный принтер: девятиигольчатый матричник с полноценной головкой как в «большом» собрате, перекрывающий две протянутые параллельно ленты сразу.
«Электроника 92-06 РФ». «Ф» в названии модели недвусмысленно намекает на наличие блока фискальной памяти.
Ока-102Ф. Одна из самых неубиваемых моделей касс тех лет. Пластмассовая крышка, действительно защищающая от всяких жизненных ударов, очень хорошая конструкция корпуса (случайно что-то отломать в принципе невозможно), небольшие размеры, принтер на «узкой» (44 мм) ленте (некоторые предприниматели реально брали данный аппарат ради копеечной экономии), совершенно дубовая схема питания (без каких бы то ни было последствий выдерживающая даже двойное превышение входного напряжения).
И вот я подумал: а почему бы не взглянуть на парочку представителей такой техники и не попробовать заставить её работать? Тем более, что на некоторые из них не найти даже инструкции.
❯ Про фискальную память
Немного упомянем то, как вообще работала такая память. Сейчас, в эпоху онлайн-касс, про это мало кто вспоминает, так что стоит рассказать. Само по себе это устройство обычно представляло собой микросхему ПЗУ (чаще всего параллельную EPROM, в поздних моделях — NOR Flash), опломбированную или помещённую в коробочку со шлейфом и залитую эпоксидкой. В ней были записаны регистрационные данные (ИНН, номер кассового аппарата), туда же писались итоги смен после каждого снятия отчёта с гашением (Z-отчёта, которым закрывали смену). Какого-то особого стандарта на защиту этого модуля не было, единственным требованием была невозможность незаметно получить к ней доступ на запись. Формат данных также был своим у каждой кассы, налоговый инспектор в ходе проверки не подключал блок к какому-то своему оборудованию, а запрашивал отчёты из самой кассы.
По исчерпании ресурса касса блокировалась и память (или блок памяти) требовала замены. Во всех сервисных инструкциях напоминалось о запрете ремонта этих блоков, однако, судя по сообщениям на форумах начала нулевых (в духе «расковырять заливку, подпаяться к ПЗУ») выполнялись эти требования далеко не всегда. Также для некоторых моделей существовал сервисный софт, позволявший редактировать дамп этой памяти. Отдельным пунктом тут стоит «народный» кассовый аппарат АМС-100Ф с его гениальной фичей в виде возможности без разборки корпуса через COM-порт сбрасывать ФП.
❯ Обзор оборудования
Первым на очереди идёт самый, как по мне, интересный экземпляр: «Микро-101Ф». В отличие от ранее упомянутого АМСа он мне показался чуть более примечательным, так что решил продемонстрировать именно его. Вообще, существовала также версия «Микро-101», фискальной памятью не оснащённая, но внутреннее отличие минимально, разница только в прошивке и наличии или отсутствии блока ФП. Девайс довольно внушительных по нынешним меркам размеров (хотя, разумеется, бывали и больше). Индикатор вакуумно-люминесцентный, кнопки даже спустя столько лет приятно нажимаются и не западают. Крышка переключателя режимов отломана: в ранних версиях принтерный отсек закрывался на ключ, а небольшой выступ не давал кассиру произвольно перевести кассу в другой режим, отличный от рабочего. Но такое конструктивное решение многим скорее мешало, поэтому этот язычок отламывали.
Под крышкой два принтера: для чековой и контрольной ленты. Это те самые барабанные принтеры, обычно устанавливавшиеся в калькуляторы. Про то, как устроен такой механизм, у меня есть
отдельный пост.
С обратной стороны отсек для батареек, служащих резервным питанием для часов.
Судя по табличке, эта касса на тот момент считалась портативной. Никакой работы от аккумулятора здесь не предусмотрено, портативность заключалась в возможности без проблем перетащить её на другое место.
Блок питания, ещё более суровый, чем сам аппарат. Сейчас иной компьютерный БП весит меньше, чем этот, выдающие скромные 12 В, 2 А.
Внутри у него много пыли, ржавчины и паутины, а также соответствующая внешнему облику начинка: тороидальный трансформатор в лакоткани, дроссель фильтра на броневом сердечнике. Светодиод, если не приглядываться, за светофильтром в крышке можно даже спутать с неонкой.
Разъём подключения, обычный СГ-5.
Заводская табличка.
Блок питания до меня уже разбирался. Также кто-то зачем-то заменил сетевую вилку.
Один из самых поздних аппаратов, «Миника 1101Ф» производства курского ПО «Счётмаш». Впрочем, присущая таким изделиям суровость (особенно по части массы — аппарат весит как пара-тройка обычных POS-терминалов) заметна и тут. Девайс довольно необычного вида и больше смахивает на платёжный терминал или реликтовый ТСД.
С обратной стороны мало интересного.
Так называемые средства визуального контроля, они же голограммы. «Государственный реестр» имелась с завода и показывала наличие кассы в реестре, «Сервисное обслуживание» надо было покупать и клеить на корпус каждый год. «Традиция» эта существовала вплоть до самого прихода онлайн-касс.
Зарядное устройство для аккумулятора.
А вот ещё один аппарат: Миника 1102Ф.
Термопринтер. Печатает он всё ещё на узкой ленте, а вот головка уже импортная.
Впрочем, версии с матричным принтером также существовали.
А вот и его БП, опять таки с разъёмом СГ-5.
❯ Микро-101Ф
Начнём опять таки с первого экземпляра.
Сама касса была под пломбой, но я её всё равно отковырял: количество пыли внутри превышало все мыслимые и немыслимые пределы. Убедившись, что внутри ничего подозрительного (типа настоящих багов, бывших когда-то живыми) нет, пробуем включать.
Ну что же, подключаем блок питания и пробуем запустить. Мигнули все сегменты, прогремели оба принтера, на дисплее что-то загорелось. Хорошее начало.
Рабочий режим. В простое отображаются дата и время.
❯ Итак, оно не работает
После попытки что-то распечатать с кассой произошло нечто странное: она перестала реагировать на нажатия кнопок и долго-долго жужжала принтерами, пока я не выдернул её из розетки. Что-то явно было неисправно.
Первым делом было решено разобраться, почему не протягивается лента, для чего я вытянул её из принтеров.
На ленте даже сохранились какие-то чеки тех времён. Принтер вообще не умеет печатать что-либо кроме цифр и ограниченного количества спецсимволов. Тогда для попадания в государственный реестр касса должна была печатать и текстовую информацию, но для этого аппарата сделали исключение.
Снимем крышку. Видны установленный картридж и барабан с литерами.
Оказалось, что оба принтера неисправны: диверсию устроил резиновый валик, который за прошедшие годы развулканизировался и превратился в мерзкую чёрную дрянь.
Ей была измазана обратная сторона ленты, досталось и самому механизму принтера. Та же участь ожидала и второй экземпляр.
Убрав остатки валика и намотавшиеся на него обрывки ленты, после чего тщательно промыв спиртом принтеры от грязи и ошмётков, я столкнулся с проблемой: они больше не протягивали бумагу. Оно и неудивительно: валиков в них больше не наличествовало, а новые взять было негде. Сами механизмы на замену найти также не удалось. Так что напечатать что-то на этом девайсе, увы, пока не получится…
❯ Внутренности
Остановимся поподробнее на начинке кассы. Разбирается она элементарно — откручиваем винты в нижней части аппарата и разделяем корпус на две половинки.
Нижняя часть практически пустая.
Здесь только плата питания и печатающее устройство, выполненное единым блоком.
Двигатель подмотки контрольной ленты.
А вот эта рамка — датчик наличия бумаги.
Если лента рвётся или заканчивается, медная пластинка на крышке прижмётся к двум штырькам и замкнёт их. Так как в моём экземпляре принтеры неисправны, на время опытов я не стал насаживать эту крышку, отчего девайсу стало казаться, что «бумага» есть всегда.
Верхняя часть куда интереснее: тут материнская плата, блок индикации и фискальная память.
Фискальная память снята.
Вообще, такие кассы интересны тем, что многие из них по сути полноценные ЭВМ с шиной данных, внешним ПЗУ и всеми подобными атрибутами. Практически идеальный тестовый стенд для любителей ретро-электроники. Более поздние обычно собраны на однокристальном МК и такой ценности не представляют.
Здесь плата собрана на МК Intel 80C31. Над ним чип 8279 — контроллер дисплея и матричной клавиатуры, изначально разработанный для использования совместно с процессорами 8086 и 8088. Интересен и чип таймера КР512ВИ1 — разработан он был для применения в электромеханических часах.
УФ-ПЗУшка, для верности прижатая проволочками. Из забавного — раньше, до появления фискальной памяти, в каждой кассе стояло уникальное ПЗУ, так как больше прописывать заводской номер было некуда.
А вот этими перемычками задавались технологические режимы: тестирование, сброс настроек и тому подобное.
Теперь очередь блока фискальной памяти.
В отличие от более поздних версий, здесь он не залит смолой — разбирай не хочу. Пломба когда-то имелась, но была кем-то сорвана ещё до меня.
А вот и плата. Здесь стоят две параллельные УФ-ПЗУшки. Таким решением конструкторы, во-первых, обеспечили долговременное хранение информации (не нужно никаких батареек, имеющих свойство сдыхать), во-вторых, сделали эту память однократно программируемой.
В самом деле, если в этот чип что-то было записано, то стереть это уже не удастся, так как микросхема надёжно защищена от лучей добра слоем металла и электрокартона. Электрического стирания в этих чипах, очевидно, не было.
Индикатор ИВЛ1-8/13. Точно такой же использовался и в некоторых калькуляторах.
Ещё один курьёзный момент — вот этот шлейф. Изначально наверняка предполагалось, что кассу для ремонта и тестирования можно разобрать, а половинки разложить на столе. Однако сделать этого не даёт данный шлейфик, который почему-то примерно на сантиметр короче, чем нужно. Это косяк всех аппаратов «Микро-101» и «Микро-101Ф» в принципе. Судя по всему, это не производственный брак, а ошибка на уровне конструкторской документации, или же просто банальный просчёт разработчиков.
❯ Запускаем
Хоть принтеры и не работают, увидеть аппарат в работе всё равно удастся. Инструкции на него у меня нет, но кое-что найти всё же удалось.
После долгого простоя аппарат не готов к работе. Сначала надо установить текущие дату и время.
Теперь откроем смену, распечатав отчёт без гашения. Переключатель переводим в положение 4, затем жмякаем 1 и Enter. В былые времена его (как и Z-отчёт с гашением) надо было подписать и подшить к кассовому отчёту.
Всё, можно выбивать чеки. Переводим аппарат в рабочий режим, вводим цену, нажимаем ПИ (подитог), И (итог) и Enter. После этого на контрольной и чековой ленте распечатается чек.
❯ ПЗУ
Теперь очередь маленькой кассы. Вообще, забегая вперёд, скажу, что больше всего сложностей вызвала именно она.
Самая интересная, на мой взгляд, часть аппарата — матричный принтер. Он здесь абсолютно такой же, что стоит в платёжных терминалах
VeriFone Tranz 460 и Hypercom T7P. В принтере сохранилась довольно таки специфическая двухслойная термобумага. Верхний слой впитывал краску с пачкающей ленты, а вот нижний был чувствителен к ударам и использовался для создания копии чека.
Прошло уже много лет, а картридж до сих пор печатает практически как новенький. Не удивлюсь, если его меняли всего пару раз за время эксплуатации.
Включение показало, что аппарат ещё бодр и, возможно, весел.
Однако при какой-то нагрузке типа включения принтера начинаются странности.
Разбираем. Сразу становится ясна причина столь большой массы — внутри стоит свинцово-кислотный аккумулятор. Звук, который он издавал при встряхивании, намекал на то, что место ему
в костре на свалке.
Под опломбированной крышечкой блок фискальной памяти.
Здесь используется довольно дурацкая система питания, где касса работает от аккумулятора, а БП только служит только для его зарядки. То есть если аккумулятор сдох или высажен в ноль, то работать девайс не будет даже от сети.
Никаких цепей заряда батареи внутри девайса нет. Контакты АКБ подключены через предохранитель сразу к разъёму питания. Есть только стандартная схема защиты от переполюсовки в виде диода и предохранителя.
Однако дело оказалось не в питании (я подключил нормальный БП от платёжного терминала Hypercom, выдающий аккурат те самые 7,5 В, однако девайс не ожил, продолжая тупить). Проблема была совсем не в выбросах питающего напряжения: если нажать кнопку перемотки ленты, то принтер вполне себе будет её проматывать, при этом касса виснуть не будет. Глюки же начинались при входе в некоторые режимы, в частности, регистрации, программирования и отчётов.
Поскольку разобраться так и не вышло, продолжаем разборку.
На верхней плате пищалка, цепи питания и управления принтером, а также никель-кадмиевый «бочонок смерти», поддерживающий ОЗУ. Для проверки попробовал отключить жгуты, идущие к принтеру. После этого касса перестала виснуть, но стала выдавать ошибку печати.
Фискальная память — просто плата с Flash 49 серии и одиноким конденсатором с обратной стороны.
Основная плата. На ней индикатор (ИЖЦ13-8/7), ПЗУ с прошивкой, статическое ОЗУ (выполняющее роль NVRAM, где находятся различные параметры типа налоговой ставки, кодов товаров, заголовка чека (в отсутствие COM-порта вбивается он с клавиатуры путём ввода кодов символов из таблицы), а также счётчики суточной смены, которые при проведении гашения записываются в фискальную память. Микроконтроллер всё тот же — 80C31. Внизу платы резисторная сборка для матрицы клавиатуры и незабвенный чип 8255, он же КР580ВВ55А.
Первым делом попробовал запустить аппарат без фискальной памяти, однако единственное, что это дало, так это надпись «НП НЕНОРМ» на дисплее при запуске, зависания никуда не делись. Тест дисплея ожидаемо показал, что никаких фантомных глюков типа пропадания контакта тоже нет. Питающее напряжение даже при непрерывно молотящем двигателе принтера так же держалось в пределах нормы (безусловно, работа игл также вносит свой вклад в импульсные помехи, но, уверен, в данном случае дело не в этом). Пропайка всех подозрительно выглядевших контактов и перетыкание разъёмов также не помогли. Оставался последний вариант: вылетела ПЗУшка. Печально: прошивку её уже нигде не найти. Давным-давно они были на каком-то сайте, однако он давно умер, а в архивной копии файлов не сохранилось. Вариант оставался один-единственный: надо намутить ещё один такой аппарат, разобрать его и прочитать ПЗУ. Вообще, у кассовых механиков в те годы были так называемые технологические ПЗУ, позволявшие проводить разные низкоуровневые тесты. Однако у меня такого нет.
Вскоре я достал новый экземпляр. Внешне они вообще ничем не отличаются, даже надписи на задней крышке ровно те же самые.
Открываем крышку, и… принтер тут не матричный. Печально, что тут скажешь. Что забавно, в отсеке лежал почти полный моток бумаги для матричного принтера, причём не того размера, что нужен тут.
На этот раз аппарат был живой и даже позволил напечатать чек.
Разбираем. Начинка ожидаемо отличается.
А вот и материнская плата. Она тут практически та же самая, что и в прошлой версии, так что была некая надежда на то, что прошивки у них схожие. Народная мудрость гласит: нельзя лезть в исправный прибор ради починки неисправного, слишком велик риск в итоге получить два кирпича. Но идея переставить ПЗУ от одной железки в другую появилась практически сразу. Конечно, печать не заработает, но дисплей и клавиатура висят на одних и тех же портах контроллера, так что хотя бы можно посмотреть на то, запустится ли железка и даст ли зайти в меню (ведь могло бы оказаться, что дело не в памяти, а в каком-то дефекте МК). Именно это и было сделано после дампа ПЗУшек при помощи программатора. «Сектор „приз“ на барабане» — подумал я, однако опыт не удался: единственное, что я получил, так это хрип пищалки и хаотичное мигание сегментов (причём в обоих девайсах).
С прошивками на эту модель в сети какая-то беда. Если на такие аппараты как АМС-100Ф, Касби-02Ф, ЭКР 2102Ф они ищутся без труда, то на этот экземпляр их нет вообще. Отдельного упоминания также заслуживает количество модификаций: в абсолютно одинаковых корпусах с никак не отличающейся маркировкой выпускается минимум три вариации данной ККМ (с термопринтером или с матричным Epson M-190 (как у меня) или Citizen MD910 (как в
посте BaurzhanD). По схемотехнике и прошивке они, нетрудно догадаться, разные.
❯ ПЗУ
Несмотря на то, что оригинальный дамп найти не удалось, было решено попытать счастья с таковым от «матричной» версии «Миники 1102Ф». К моему удивлению, касса при запуске выдала ровно ту же ошибку, отчего появилось предположение, что вылетела не микруха памяти, а что-то иное. Поскольку ПЗУшка подключена напрямую к системной шине, главным кандидатом на замену стал сам микроконтроллер.
Меняем его, запускаем… Работает!
Изначально картридж печатал бледно, но после полуметра чеков «распечатался», и текст стал нормальным.
❯ Миника 1102Ф
Теперь очередь последнего аппарата. Всё выглядит довольно таки целым, так что пробуем включать. Щёлкаем тумблером — ничего не происходит. Хмм, забавно. Один нерабочий аппарат — случайность, два — просто совпадение, но вот три подряд — это уже закономерность…
Поскольку светодиод на блоке питания не горел, было решено первым делом разобраться с ним. На этот раз блок питания здесь нормальный: он может работать как зарядным устройством для аккумулятора, так и обычным БП.
На случай использования кассы без аккумулятора в соответствующем отсеке предусмотрена перемычка в виде резистора. Проверка БП показала, что он исправен, так что время разбирать аппарат.
На верхней части дисплей (на
небезызвестном чипе от Holtek) и клавиатура.
Материнская плата (принтер снят). Микроконтроллер чуть поновее (80C32), элементная база чуть современнее. Под металлической крышкой с пломбами ПЗУшка фискальной памяти. По сути именно этими двумя штампиками из пластилина и обеспечивается вся защита, никакого шифрования данных там внутри нет. Ещё примечательно, что все данные также хранятся в ОЗУ, причём с завода касса поставлялась без батарейки. Перед вводом в эксплуатацию аппарат необходимо было разобрать (в условиях центра технического обслуживания), поставить батарейку, сбросить перемычкой память, собрать всё обратно, заново опломбировать и потом установить все параметры.
А вот для сравнения начинка экземпляра с матричным принтером. По схемотехнике он практически полностью повторяет «Минику 1101Ф».
С обратной стороны ФП тоже закрыта металлической пластиной. Впрочем, подпаяться к дорожкам на плате, очевидно, никто не мешает…
Принтер, снятый с платы. Такой я встречал в целом модельном ряде кассовых аппаратов производства «Счётмаша».
Но заканчиваем изучение платы и переходим к поиску неисправности. Напряжение от блока питания на плату приходит, а вот пяти вольт не наблюдается. Стабилизатор напряжения здесь простенький, линейный. При подаче напряжения КРЕНка начинала греться градусов до ста. Причину нашёл быстро — потёк большой выходной конденсатор слева от неё. Выпаял его, и замыкание пропало. Можно впаивать новый, собирать всё обратно и пробовать.
Снимаем X-отчёт (он же отчёт без гашения). Далее пробуем напечатать чек, однако делать этого касса не хочет: на чеке печатается «Проведите гашение».
Поэтому снимаем Z-отчёт, он же отчёт с гашением. Вначале печатается контрольная лента, а потом и сам отчёт. Отсюда видно, что последний раз девайс использовался в 2011 году, с тех пор смена так и не была закрыта. Батарейка, подпитывавшая память и часы, за столько лет не сдохла и продолжает хранить в себе эти данные.
Вот и всё. Можно выбивать чеки.
И я даже снял, как это работает. Всё довольно таки просто: вводим сумму, указываем номер отдела, и можно печатать чек. Единственное, перед началом опытов я всё же рекомендую снять программатором дамп ПЗУ ФП, чтобы можно было восстановить её в дальнейшем, так как постоянные гашения забьют всю память и касса после этого перестанет работать.
❯ Вот как-то так
Как нетрудно догадаться, таких мер защиты порой оказывалось недостаточно: данные всё равно умудрялись подкручивать. Порой доходило до того, что на кассе отбивался «завышенный» чек, за который потом получали деньги в организации, а после этого сумма в ФП доводилась до нужного значения. Поэтому в начале двухтысячных был придуман более продвинутый метод защиты в паре с фискальной памятью — криптографический. Но о нём уже как-нибудь в другой раз.
Такие дела.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
Ссылки