В процессе эксплуатации контрольно-кассовой техники (ККТ) Атол 55Ф системные администраторы и технические специалисты часто сталкиваются со специфической проблемой: касса успешно печатает отчеты без гашения (X-отчеты), но при попытке пробития фискального чека связь с устройством обрывается, и программа выдает ошибку. В этой статье мы подробно проанализируем причины такого поведения, разберем логи драйвера и рассмотрим пути решения — от программных методов до аппаратного ремонта.
Рассмотрим типичную ситуацию. Пользователь сообщает, что ККТ «входит в ступор» при печати чека. При этом связь может быть организована как по USB, так и по TCP/IP. Важным диагностическим признаком здесь является то, что сервисные отчеты (например, X-отчет) печатаются корректно. Это говорит о том, что интерфейс связи в принципе работоспособен, а проблема проявляется только при выполнении цепочки фискальных команд.
Для начала выясним, где искать причину. Первым делом необходимо изучить логи драйвера Атол. По умолчанию они располагаются в директории C:\ProgramData\Atol\drivers9\logs\ (для 9-й версии драйвера) или C:\ProgramData\Atol\drivers10\logs\ (для 10-й версии). Самый важный файл для нас — fptr_log.txt. Для удобного анализа этих файлов можно использовать утилиту для наглядного чтения логов ККМ АТОЛ.
Проанализируем фрагмент лога, предоставленный в описании проблемы. В нем мы видим критические сообщения, которые проливают свет на происходящее внутри системы:
1. Ошибка -16 (Не поддерживается в данном режиме устройства). Она возникает при попытке выполнить команду CancelCheck(). Это происходит из-за того, что касса уже начала операцию открытия чека, но из-за внутреннего сбоя не смогла ее завершить, и теперь находится в промежуточном состоянии, в котором отмена чека не предусмотрена протоколом.
2. Ошибка 10060 (Connection timeout) и 10054 (Connection reset by peer). Это классические сетевые ошибки сокетов Windows. 10060 означает, что драйвер отправил запрос, но не получил ответа в течение заданного таймаута. 10054 указывает на то, что сама касса «сбросила» соединение. При работе через Ethernet это часто свидетельствует о зависании сетевого стека на плате ККТ.
3. Ошибка -1.0 (Нет связи). Это финальный результат, который видит пользователь в 1С. К этому моменту драйвер уже несколько раз безуспешно попытался переподключиться к адресу 192.168.1.155:5555.
Ниже приведен пример того, как в логе выглядит момент критического сбоя связи:
[2020.08.06 13:31:20+364 P T:0000003600:00001C24] send transport (73) FE 02 00 73 C3 38 55 (7 bytes total)
[2020.08.06 13:31:39+271 D T:0000003600:00001C24] tcpip write error - 10060
[2020.08.06 13:31:39+271 D T:0000003600:00000D7C] tcp read error - -1 10054
[2020.08.06 13:31:40+323 D T:0000003600:00001C24] try 192.168.1.155:5555...
Как показала практика и решение автора темы, основной причиной «ступора» Атол 55Ф часто является ошибка во внутреннем программном обеспечении (прошивке) кассы. Старые версии прошивок могли некорректно обрабатывать последовательность команд OpenCheck и WriteFiscalProperty, что приводило к переполнению буфера или зависанию микроконтроллера при попытке записи данных в фискальный накопитель (ФН).
Что нужно сделать:
Если прошивка не помогла, следует обратить внимание на «железо». Печать полноценного чека — это самый энергозатратный процесс для кассы. В этот момент одновременно работают:
Разберем ситуацию: X-отчет короткий, нагрузка на блок питания (БП) минимальна. Фискальный чек обычно длиннее, содержит больше реквизитов и QR-код. Если конденсаторы в БП «подсохли» или используется неоригинальный блок меньшей мощности, в момент интенсивной печати напряжение проседает. Процессор кассы может не перезагрузиться, но интерфейсная часть (чип связи) отключается, что приводит к разрыву сессии с ПК.
Рекомендация: Попробуйте заменить блок питания на заведомо исправный от модели Атол 22Ф или 25Ф. Они обладают большим запасом по току и часто решают проблему «необъяснимых» обрывов связи.
Использование 9-й версии драйверов (ДТО 9) на сегодняшний день не рекомендуется. Рассмотрим, почему переход на 10-ю версию важен для стабильности:
В ДТО 10 полностью изменен механизм взаимодействия с сокетами и USB-портами. Если вы все же вынуждены использовать старые драйверы, проанализируйте параметр TimeoutENQ. В логах мы видим значение 1000 мс. При работе по сети этого может быть недостаточно, если сеть нагружена или касса долго отвечает на команду записи в ФН. Увеличьте таймаут в настройках драйвера до 5000–10000 мс. Для организации обмена с актуальной версией драйвера в среде 1С можно использовать внешнюю компоненту для работы с драйвером «Атол v.10».
Проанализируем код инициализации объекта драйвера (пример логики работы):
// Установка параметров связи в ДТО
Драйвер.put_DeviceEnabled(1);
Драйвер.put_TimeoutENQ(5000); // Увеличиваем время ожидания ответа
Драйвер.put_Mode(1); // Режим регистрации
Драйвер.SetMode();
Атол 55Ф, как и многие другие чековые принтеры, подвержен влиянию статики. При быстром прохождении сухой термоленты через механизм накапливается заряд. Если касса не заземлена, статический разряд может «пробить» на центральную плату, вызывая кратковременный сбой интерфейса связи. Именно поэтому в АСЦ при перепрошивке часто проверяют состояние антистатических щеток и заземляющих контактов внутри корпуса.
Подведем итог и составим пошаговый план действий для устранения «ступора» при печати:
TCP/IP, попробуйте временно переключиться на USB (через службу EthOverUsb). Если проблема исчезла — дело в сетевой инфраструктуре или настройках порта 5555.Важный момент: Ошибка -16 часто является следствием, а не причиной. Не пытайтесь просто «подавить» её программно в коде 1С через CancelCheck(). Нужно устранить первопричину разрыва связи, чтобы касса могла корректно завершать операции.