На главную страницу Версия-Т
VTSoft.ru

OLS 2.1


RSS
OLS 2.1
 
Произошла интересная ошибка в кассовом сервере пропал список ККМ, при попытке добавить новую ККМ выводится сообшение "ККМ с таким сетевым номером существует в базе данных, в АРМ ККМ список виден. Пришлось создать новую базу и вносить все данные заново.
Тогда возникла другая проблема. Возможно ли добавить функцию выгрузки-загрузки списка дисконтных карт? Или в вашем мастере переноса данных производить перенос данных в БД одинаковой версии.
 
Хочу присоединиться к вопросу переноса данных из например 1 базы версии 3 в новую версии 3 с полным переносом данных. Такое надо тогда когда файл базы OnlineServer.gdb за месяц разрастается до 14-16 мб. Не знаю как у других, у нас увеличиваюся подвисания касс (типичный пример: после того как касса отпечатала чек, на индикаторе у нее выскакивают разные символы, в ОЛС2 чек висит не закрытым.).
После удаления чеков за предыдущий период приходится делать Backup/restore, и размер файла базы становится 2-3Мб. А в идеале надо чтобы ночью сервер сам делал бекапы и сжатие базы.
 
2Andre:
Это не совсем ошибка. Дело в том, что ККМ "приписываются" к кассовым серверам по IP адресу машин, на которые кассовые сервера установлены. Кассовый сервер отображает только те ККМ, которые он обслуживает. При смене у машины IP адреса возникнет ситуация, которую Вы описываете. В версии 2.2 идентификация кассовых серверов будет производиться не по IP адресу ПК, а по его имени (host name). Это позволит использовать OLS Pro в сетях с динамически выделяемыми IP адресами. Также планируется сделать импорт/экспорт списка дисконтных карт.

2ping:
Если необходимо уменьшить размер БД после удаления записей, то резервирование с последующим восстановлением является лучшим (и единственным) решением. Помимо удаления пустых страниц из БД, при восстановлении происходит также перестройка всех индексов в базе данных, что благотворно сказывается на скорости выполнения запросов.
Автоматическое резервирование с последующим восстановлением может быть будет добавлено немного позже.
 
Цитата
ping писал(а):
Такое надо тогда когда файл базы OnlineServer.gdb за месяц разрастается до 14-16 мб. Не знаю как у других, у нас увеличиваюся подвисания касс (типичный пример: после того как касса отпечатала чек, на индикаторе у нее выскакивают разные символы, в ОЛС2 чек висит не закрытым.).

Выскакивание разных нештатных символов на индикаторе ККМ говорит только о нестабильной работе самой ККМ и никак не связано с используемым программным обеспечением, установленном на ПК.
 
Ничего точно не утверждаю, но статистика именно такова, после удаления мусора и уменьшения размера *.gdb неделю-две чеков со свободными суммами (следствие зависания кассы после печати чека) нет вообще, к концу месяца (именно у нас с нашими объемами операций и количеством чеков) число зависаний увеличивается до 2-3 в день на 3кассы. Хотелось бы узнать как у других обстоят дела в этом отношении...
А что касается железа, то в ЦТО с такой-же категоричностью говорят о программном обеспечении, протоколах и т.д. и божатся что кассы полностью соответствуют всем требованиям... В общем реального решения нет.
 
Хорошо. Давайте разбираться. Для начала разделим два понятия - зависание кассового сервера и аппаратный сбой ККМ. Именно сбой, т.к. неадекватное поведение ККМ (зажигание на индикаторе мусора, самопроизвольный сброс и т.п.) корректнее называть сбоем.
Что происходит при зависании кассового сервера и отчего это зависание может произойти?
Зависание сервера, это остановка цикла опроса состояния ККМ. Т.к. кассы серии АМС являются системными пассивными машинами, они не инициируют процесс обмена данными с ПК (как это делают активные). Ведущим устройством в ККС (компьютерно-кассовой сети) является ПК, точнее работающий на нем кассовый сервер. Для этого сервер организует цикл опроса и постоянно спрашивает у машин, что у них произошло (запрос, закрытие чека и т.д.). При остановке этого опроса кассы в сети просто перестанут получать ответы на запросы и все. АМС-200 войдет в состояние "Обработка Online режим" по нажатию любой кнопки на ее клавиатуре. АМС-100Ф перестанет получать ответы на запросы, что будет выражаться в длительном сигнале через 5 сек. после считывания ШК. На кассе после этого можно продолжать работать дальше в автономе, т.е. бить свободные суммы по отделам.

Причинами зависания сервера может быть следующее:

1. Остановка цикла опроса касс внутри сервера, что не приводит к зависанию Windows приложения “Кассовый сервер”. Происходит только остановка работы ККМ. Такое зависание может произойти из-за ошибки в логике этого цикла, из-за неправильной обработки некорректных значений, которые могут придти либо из кассы, либо из БД. В следствие чего внутри цикла возникает ошибка (исключительная ситуация) и этот цикл просто останавливается средствами ОС.
2. Зависание Windows приложения “Кассовый сервер” со всеми вытекающими последствиями. В этом случае ОС говорит “Приложение не отвечает”. Причиной может быть сбой операционной системы.
3. Зависание SQL-сервера Firebird (встречается крайне редко). В этом случае “Кассовый сервер” корректно отловит ситуацию “Потеря соединения с базой данных’ и цикл опроса ККМ остановится по его команде.
4. Ошибка в логике работы с БД. Все ошибки такого характера корректно обрабатываются и протоколируются (CashServer.log). Возникновение такой ошибки не может привести к аварийному завершению сервера. Выразится такая ошибка может либо в том, что касса единично не получит ответ на один из своих запросов, при закрытии чека запись не добавится в БД и т.п., но это все протоколируется.

Что происходит при сбое ККМ и каковы его причины?

Рассмотрим сбой, который постоянно происходит в нашем конкретном случае – вывод на индикатор ККМ “мусора” и самопроизвольный рестарт ККМ.

При сбое кассы, в зависимости от результатов сбоя, кассовый сервер:
1. Теряет с ней связь до тех пор пока ее не приведут в рабочее состояние – это в случае “мусора на индикаторе”, т.к. в этом состоянии касса просто не работает. Это возможно при переходе процессора при выполнении программы на случайный адрес ПЗУ или сбое синхронизации процессора.
2. Сервер кратковременно теряет связь с ККМ на период прохождения рестарта. После того как касса после сброса выходит в режим “Запрос” сервер связь с ней восстанавливает.

Для сбоев такого характера могут быть следующие причины:

1. Переход процессора на случайный адрес ПЗУ.

Причины:

a). Сильный уровень шума на шинах адреса и данных, в результате чего данные на этих шинах просто искажаются и процессор улетает на случайный адрес. Наилучший вариант – это замена блока управления.
б). Сильный уровень шума на возвратных линиях клавиатуры, которые заведены напрямую на процессор, работающий с периферией. Из-за шума сбивается периферийный, и сбивает синхронизацию основного. Решение проблемы – это резисторы на возвратных линиях клавиатуры (все это кстати написано в методиках по доработке ККМ, которые мы высылаем всем желающим).
в). Шнур RS-232 является источником шума по GND (общей линии). Шнур подключенный к разъему “ЭВМ” кассы и “висящий в воздухе” однозначно является источником помех по общей линии. Шнур между “ЭВМ” ККМ и COM-портом ПК с незаземленной ККМ и ПК однозначно является источником помех. Шнур, у которого распаяны линии кроме 2-2, 3-3, 5-5 однозначно является источником помех, особенно влияет 6 контакт.
с). Недостаточный запас по току блока питания кассы. В результате в процессе печати чека, когда идет повышенное потребление питания, снижается уровень питающего напряжения и уровень сигналов, плюс уровень шума по питанию и по GND, вызывает тоже самое искажение на шине адреса и переход процессора по случайному адресу. Соответствующие доработки БП - в методике по доработке.


2. Сбой синхронизации процессора, который приводит либо к его рестарту, т.е. процессор начинает работать с адреса 0, либо приводит к пункту №1.

Причиной такого сбоя является работа процессора на частоте, превышающей ее допустимое значение. На определенных партиях ККМ АМС-100Ф (речь идет о модификациях блока управления, которые выпускались в 2000 и 2001 г. - 009 и 011) и АМС-200Ф могут быть установлены процессора рассчитанные на работу на частоте 20 мГц (распознать можно по 20PI на корпусе процессора), а применяемый в кассе кварц для тактирования процессора устанавливается на 24мГц(АМС-100) и 22,118 мГц (АМС-200). Методы борьбы – установка процессора, рассчитанного на 24 мГц (24PI).


Может ли работа кассового сервера привести к аппаратному сбою ККМ?

Давайте рассмотрим алгоритм взаимодействия сервера с ККМ. ПК хочет получить, либо сообщить ККМ какие то команды/данные, например, запросить ее состояние. Для этого формируется пакет данных, который включает в себя сетевой номер ККМ, код команды, необходимые данные и контрольную сумму. Этот пакет посылается в ККМ по RS-232. В кассе он попадает в соответствующий буфер и лежит там до обработки. Некий диспетчер этого буфера получив уведомление о приеме, во первых, проверяет пакет на корректность, т.е. сравнивает контрольные суммы. Пакет с неправильной КС отвергается сразу же. Далее извлекается сетевой номер. Если этот номер не своей кассы, пакет отвергается. Далее извлекается код команды и диспетчер передает управление соответствующей процедуре обработки. По моему ничего криминального нет. Взаимодействие сервера и кассы ограничивается только этим алгоритмом.

Таким образом, исходя из всего вышесказанного, возникает вопрос: как приведенный выше алгоритм может привести к перечисленным условиям возникновения аппаратного сбоя, при условии, что:
1. В протоколе нет команды перехода на указанный из вне адрес ПЗУ.
2. Закрыты от доступа из вне все критичные ресурсы ККМ.
3. Нет команды “Произвести аппаратный сбой ККМ”.
4. Та часть кассовой программы, которая отвечает за работу по RS, не претерпевала существенных изменений уже много лет.


P.S. Методики доработок ККМ АМС-100Ф, АМС-200Ф высылаются по запросу на kkm@kaluga.ru
 
Ок - Более подробного описания я еще не встечал.
Что касается зависания кассового сервера, проблема скорее программно-аппаратная в пределах Операционки и железа компьютера - то есть решается более-менее самостоятельно. С ККМ сложнее...

Из вышеизложенного алгоритма давайте представим ситуацию: Пакет для ККМ подготовлен, передан в буфер ккм корректно, т.е. пакет физически нормальный , контрольные суммы совпадают и т.д.
Возможна ситуация когда пакет несет в себе логически неправильную информацию (например номер отдела 85, цену товара '-85,36р.', и много чего еще может быть, такие тонкости Вам более доступны). и вот алгоритм кассы большую часть некорректных данных естественно отсекает, НО разработчик никогда не сможет обработать абсолютно все мыслимые и немыслимые систуации. Значит все-таки возможен случай, когда логически неправильный пакет будет обработан алгоритмом кассы так, что приведет к "зависанию" ККМ. :?: