Как стать автором
Обновить
1720.12
Timeweb Cloud
То самое облако

Запускаем раритетные платы фискальной памяти

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.8K
Приветствую всех!
Давным-давно, во второй половине девяностых, с появлением больших супермаркетов начали получать распространение различные системы по автоматизации торговли, в числе которых были кассы на базе обычных компьютеров. Примерно в то же время появилось требование оснащать кассовые аппараты фискальной памятью, что в сочетании с подобными системами породило немало кажущихся сейчас забавными или просто нелогичными конструктивных решений.



Что же это были за девайсы и чем такие кассовые аппараты отличались от обычных ПК? Сейчас и узнаем: взглянем на железо пары таких компьютеров и фискальный регистратор тех же годов. И, конечно же, попробуем увидеть всё это в работе.

Суть такова




Давным-давно я уже как-то рассказывал про кассы с фискальной памятью. Но в той статье речь шла об автономных устройствах (привычных нам кассовых аппаратах с клавиатурой и индикатором), тогда как был ещё один довольно интересный класс — POS-терминалы (не путать с банковскими, сегодня речь пойдёт не о них), в простонародье — кассовые компьютеры.



Типичный такой девайс представлял собой системный блок в компактном корпусе с простеньким энергоэффективным железом (в те годы им были в основном i486SX и первые «пеньки»), всей необходимой периферией и кассовым софтом (обычно под DOS).


Некоторые такие девайсы выглядели очень аутентично…


Конкретно этот экземпляр — Fujitsu ICL TeamPOS 4000, в России устанавливавшийся компанией «Пилот» в крупные магазины вроде «Иль де ботэ», «Л'этуаль», «Детского мира» и многих других.



Так вот. Чтобы иметь возможность выбивать чеки на такой машине, она должна была соответствовать всем требованиям, предъявляемым к ККМ. Казалось бы, ничего сложного — подключаем к COM-порту обычный кассовый аппарат (на тот момент немалая их часть была оборудована интерфейсом для связи с ПК) или фискальный регистратор, и проблема исчерпана. Но, как выяснилось, у некоторых производителей был свой путь…

Обзор оборудования


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



Первой на очереди идёт плата FIS520SPF от компании «Сервис-Плюс». Такие устанавливались в ККМ «SIEMENS NIXDORF BEETLE 20 MF», сделанные, как нетрудно догадаться, на базе POS-компьютера Beetle от Siemens Nixdorf (или такого же от Wincor Nixdorf). Когда-то давно она была закрыта опломбированной крышкой, но сейчас она утеряна.



Следующая плата — FIS221, предназначавшаяся для ККМ АСТ-ЭЛИТ-Ф на базе Fujitsu TeamPOS.



Про неё не удаётся найти решительно ничего, если бы не подсказка того, кто их обслуживал, я бы в жизни не догадался, для чего эта штука.



Также был добыт фискальный регистратор «Феликс-Р Ф», одна из первых моделей ФР в России наравне с Штрих ФР-Ф. Он уже из более позднего времени, такие девайсы появились лет на пять позже первых фискальных плат на шину ISA.

FIS221


Начнём с более простой платы.



Она довольно простая: два чипа Flash, EEPROM и немного дискретной логики.



Заинтересовавшись побольше, отреверсил и её схему. По сути эта плата — этакий твердотельный диск на шину ISA с небольшими модификациями в виде добавления EEPROM с интерфейсом Microwire. Если записать в эти чипы какое-нибудь расширение BIOS и несколько модифицировать адресный дешифратор, то карту можно будет использовать и в других, более интересных целях.



Тестировать всё это решил на плате Asus P2B. Она довольно новая для таких железок, но с DOS и ISA-платами проблем с ней не возникало ни разу. Кассового софта для этих плат у меня нет, а вот сервисный — пожалуйста.



Загружаем драйвер платы.



А вот и утилита для тестирования. Она позволяет выгрузить дамп памяти платы, провести пробную продажу и тому подобные операции.



Но, увы, с ней мне не повезло. Несмотря на все попытки, плата упорно прикидывалась кирпичом и нигде не определялась.



Я пробовал разные версии DOS, разные материнские платы (M396F, LS-486E, SP97-V), однако на результат это не повлияло никак. То ли фискальная плата была дохлая, то ли для неё был нужен какой-то другой софт.



Даже утилита перезаписи BIOS её не видела.

FIS520SPF


Вторая плата оказалась поинтереснее.



Компонентов здесь заметно больше. Помимо двух флешек здесь есть микроконтроллер, а также драйвер RS-232 и буфер для LPT-порта. Это позволяло подключать чековый принтер напрямую к плате, получая тем самым этакий фискальный регистратор на шину ISA, где надо было только отправлять команды на продажи, снятие отчётов, открытие и закрытие чеков, а всё остальное совершалось средствами самой платы. В NVRAM хранится заводской номер, информация о фискализациях и перерегистрациях, заголовки чеков и тому подобные данные.



Помимо нашего экземпляра всё той же компанией выпускалась плата FIS520SPF на шину PCI (с драйвером под Windows 2000), а также FIS420SPF для работы в некоем IPC POS-IIS СПF, для которого сейчас не найти даже фотографий.



При запуске компьютера загружается расширение BIOS, записанное в ПЗУ платы. Если тестирование проходит успешно, ПК продолжает работу, иначе — блокируется до перезапуска.



Запускаем сервисный софт и выясняем, что память таки побилась, вероятно, из-за разряда батарейки, поддерживавшей NVRAM.



Не сумев решить этот косяк имевшимися средствами, блок памяти я стёр. Вообще, официально делать так было запрещено. Ремонт фискальной памяти не допускался ни при каких условиях, а при выходе из строя требовалось скопировать её дамп (если это было возможно), а умерший модуль — заменить. Но практически у всех производителей были утилиты, позволявшие вернуть блок в исходное состояние.



Вот и всё — теперь плата как будто никогда и не устанавливалась.



Перезагружаем компьютер и вводим данные.

Ещё скриншоты






После этого плата загружается в нефискальном режиме, и её можно активировать.



Одна лишь проблема: кассового софта, чтобы выбивать чеки с использованием этой штуки, у меня нет. Те дистрибутивы, которые распространялись «Сервис-плюсом», привязывались к номеру платы, поэтому толку от имеющихся у меня весьма немного.

Фискальная плата для программиста


Поскольку всё это создавалось в девяностые, в эпоху господства DOS, каких-то специальных библиотек у таких плат не было. Все операции производились путём ручной записи соответствующих данных при помощи ассемблерных вставок. С предыдущей картой всё было чуть проще: в DOS загружалась управлявшая платой резидентная программа (та самая ICL service, которую можно было видеть на скриншотах), а кассовый софт взаимодействовал уже с ней.

Пример работы с платой из исходника, шедшего в комплекте с документацией
typedef struct {
  unsigned date, value, decpoint, lastday;
} TDenomination;

typedef struct {
  unsigned long  lo;
  unsigned short hi;
} verylong; // :)

typedef struct {
  unsigned char  Type;
  unsigned char  ItemAmount;
  verylong       TotalAmount;
  unsigned short TicketNumber;
  unsigned short AssociatedTicket;
  unsigned short Section;
  unsigned short Cashier;
  unsigned short Date;
  unsigned short Time;
  unsigned long  FiscDocNum;
} TReceiptData;

typedef struct {
	   char  Name[26];
  verylong       ItemAmount;
} TItemData;

int PrintJournal()
{
  unsigned Code;

  asm {
    mov	ah, 11
    mov al, 2
    int 18h
    jc  Err
    mov Code, 0
    jmp Done
  } // asm
  Err:
  asm {
    mov Code, ax
  } // asm
  Done:

  return Code;
} // PrintJournal

int ReceiptOperation(TReceiptData far const * const receipt, TItemData far const * const items, char count) {
  unsigned Code;

  char far * buffer = new char[sizeof(TReceiptData) + count * sizeof(TItemData) + 2];
  _fmemcpy(buffer, receipt, sizeof(TReceiptData));
  _fmemcpy(buffer + sizeof(TReceiptData), items, count * sizeof(TItemData));

  asm {
    mov	ah, 7
    les di, buffer
    int 18h
    jc  Err
    mov Code, 0
    jmp Done
  } // asm
  Err:
  asm {
    mov Code, ax
  } // asm
  Done:

  delete buffer;

  return Code;
} // ReceiptOperation


В более поздних версиях появились привычные библиотеки. Впрочем, какой софт был написан с их использованием и где его сейчас раздобыть — очень хороший вопрос.

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


Но как же можно рассказывать про такие штуки и не выбить ни одного чека? Исправим это положение.



Несколькими годами спустя на рынке кассовых аппаратов появились ранее невиданные приборы — фискальные регистраторы (ФР). Одним из самых первых получивших распространение экземпляров стал вот такой Штрих-ФР-Ф. Спустя годы он переживёт несколько модификаций (сначала под ЭКЛЗ, потом под фискальные накопители), даже сейчас практически такие же внешне, но полностью другие внутри аппараты выпускаются и продаются.

image

Перейдём к нашему «Феликсу». По виду он, за исключением названия, ничем не отличается от ФР «Феликс-02К». По сути это тот же самый аппарат, но без возможности установки ЭКЛЗ.



Под крышкой два принтера — чековый и контрольный. Контрольную ленту по окончании рулона требовалось сматывать, подписывать и хранить пять лет. Требование это во многом было абсурдным, так как зачастую некачественная термобумага за год-другой хранения полностью выцветала, отчего в кладовках больших магазинов стояли целые коробки, набитые просто белой бумажной лентой. Толку от них не было уже никакого, однако хранить их всё равно было необходимо.



Внутри него даже осталась оригинальная контрольная лента, откуда мы узнаём, что последняя смена была закрыта в далёком 2012 году. Всего на этой кассе выбили чеков на 6934053,06 рубля.



С обратной стороны разъёмы питания, денежных ящиков (для возможности подключения таковых с электромагнитами на разное напряжение), дисплея покупателя и нуль-модемного кабеля для подключения к компьютеру.



Какой же кассовый аппарат без голограмм (средств визуального контроля, как они назывались официально)? Наклейки эти должны были демонстрировать, что ККМ внесена в госреестр и стоит на учёте в центре технического обслуживания. В случае с ранее показанными фискальными платами голограммы лепили на корпус системного блока.



Мой экземпляр довольно поздний, 2003 года, тогда как выпускаться они начали ещё в конце девяностых.



Не имеющая почему-то никакого штампа пломба, которую мы, конечно же, отковыряем.



Оригинальный нуль-модемный кабель.



Блок питания таких внушительных размеров, что иной адаптер от топового игрового ноутбука окажется меньше.



Выдаёт он скромные 12 В, 3 А. Напряжение нестандартное для торгового оборудования, отчего при втыкании блока от любого другого фискального регистратора или термопринтера из аппарата выходит белый дым.



В плане схемы это простенький импульсный БП, ничего примечательного в его устройстве нет.

Разбираем ФР


Разумеется, мне стало интересно узнать, что там внутри.



А вот и начинка. Слева плата фискальной памяти. Болтаться так она не должна, вместо этого ей требовалось находиться в специальном опломбированном корпусе, который задолго до меня кто-то потерял. Будем надеяться, что до меня девайс не включали и плата ни на что не закоротила. Несмотря на то, что этот аппарат не оборудован ЭКЛЗ, задел в виде разъёма под неё присутствует. Интересно, это просто предусмотрительность, или мне попалась уже поздняя версия, когда скорое введение ЭКЛЗ было очевидным?



А вот для сравнения «Феликс-02К». Как видно, отличия минимальны…



Схема платы.



Фискальная память.



Такой модуль использовался во всех «Феликсах» вплоть до ухода в историю ФП как таковой.



Разумеется, чип памяти я отпаял и прочитал программатором. Разметка памяти оказалась такой же, как у «Феликса-02К», за исключением того, что записей об активизациях ЭКЛЗ она не содержит.

Печатаем чеки


Ну что же, время запускать!



Промотал контрольную ленту на участок без замятий, загрязнений и заломов. Оба рулона оставил оригинальные, 2012 года.



Подаём питание. ФР пискнул, скрипнул мотором чекового принтера и зажёг зелёный светодиод. Отлично.



Для того, чтобы распечатать чек, воспользуемся всё тем же драйвером ККМ, где этот девайс также поддерживается.


Создаём новое устройство, указываем параметры обмена и пробуем установить связь.


Судя по заголовку чека, ФР стоял в какой-то аптеке.



Поискав по ИНН, выяснил, что компания жива и поныне.


Дата и время ушли всего на двадцать минут. Хорошая точность за десять с лишним лет простоя для такого древнего чипа RTC как DS1307.



Пробуем напечатать чек. И… термоголовка оказалась порядком уставшей. Извечная проблема для отечественных ТПГ ТД4032А, порой оказывавшихся дохлыми прямо с завода.



Какие-то группы пикселей не печатают вообще, какие-то недогревают термоленту.



На контрольной ленте дублируются все операции.



Но в целом, несмотря на косяк с принтером, всё отлично работает.



Наигравшись, снимаем Z-отчёт. ФР предупреждает, что в фискальной памяти осталось мало свободных полей, но это не страшно, её всегда можно сбросить программатором.

Что же в итоге?


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

Такие дела.



Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале



Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

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

Теги:
Хабы:
+29
Комментарии9

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud