Универсальный протокол КУ ТРК


Главная / Оборудование для АЗС / Техническая информация

Универсальный протокол обмена данными предложен СКБ ВТ "Искра" (г. Санкт-Петербург) в 1999 году. Действующая версия протокола - 1.72. Данная версия протокола реализована в контроллерах управления ТРК серии ПИЛОТ.

Полное официальное наименование документа: "Универсальный протокол обмена данными по интерфейсу RS232 контрольно-кассовых машин моделей "Samsung ER-250RF" и "Samsung ER-4615RF" с установленным комплексом программно-технических средств ПТС-250 и ПТС-4615 и контроллера топливно-раздаточных колонок. Техническое описание. Версия 1.72".

Этот протокол реализован и в большинстве других ККМ, разрешенных к применению на АЗС. По этой причине и для большей краткости данный документ в контексте обычно называют "Универсальный протокол..."

Приводимый текст протокола следует рассматривать только как справочную информацию. В нем исправлены некоторые явные ошибки и даны примечания. Подробно особенности использования "Универсального протокола..." рассмотрены на других страницах сайта.

Оригинальный текст в формате Microsoft Word (DOC) есть в файле: trk172.zip. Копия данного текста формате Adobe Acrobat 4.0 (PDF) - в файле: trk172.pdf.

В контроллерах управления ТРК серии ПИЛОТ реализованы некоторые дополнительные команды, предназначенные для автоматизированных систем управления АЗС и не влияющие на работу в соответствии с данным протоколом.





1. Введение

В настоящем документе описан универсальный протокол обмена данными по интерфейсу RS232 управляющих контрольно-кассовых машин моделей "Samsung ER-250RF" и "Samsung ER-4615RF" с установленным комплексом программно-технических средств ПТС - 250 и ПТС - 4615 (в дальнейшем - ККМ) и контроллера топливно-раздаточных колонок (в дальнейшем - контроллер ТРК).



2. Основные физические параметры протокола обмена данными

Протокол используется для организации полудуплексной двунаправленной асинхронной связи по интерфейсу RS232 с физическими параметрами:

  • скорость передачи - 2400, 4800, 9600 бит/с;
  • 1 стартовый бит;
  • 8 битов данных;
  • 1 стоповый бит;
  • без контроля четности;
  • 3 линии (TxD, RxD, GND).



3. Формат сообщений протокола обмена данными


3.1. Формат сообщений, передаваемых от ККМ в контроллер ТРК

Формат сообщений, передаваемых от ККМ в контроллер ТРК:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code

где:

Поле данных Размер, байт Тип Значение Содержание
SOH 1 HEX 01 Маркер начала сообщения
TRK_No 2 ASCII '00'*, '01'...'7Fh' Номер ТРК. *Только для команды "Общий останов"
Command 1 ASCII '0'...'F' Код команды управления
STX 1 HEX 02 Маркер начала поля данных
Price 6 ASCII '000000'...'999999' Цена топлива, коп.
Volume 6 ASCII '000000'...'999999' Доза налива, мл.
Status 4 ASCII '0000'...'FFFF' Код состояния/ошибки и параметры ТРК
Error 2 ASCII '00'...'FF' Код ошибки протокола
Code 2 ASCII '00'...'FF' Код состояния ТРК
ETX 1 HEX 03 Маркер окончания поля данных
CRC 1 HEX 00...FF Контрольная сумма

3.1.1. Перечень команд управления


Название команды Код команды Описание команды
HEX ASCII
"Доза" 31 '1' Задание дозы налива для ТРК и установка готовности ТРК к пуску
"Установка" 33 '3' Установка параметров ТРК
"Тест" 34 '4' Опрос состояния ТРК
"Пуск" 35 '5' Запуск ТРК
"Останов" 36 '6' Останов ТРК
"Сброс" 37 '7' Сброс состояния ТРК
"До полного бака" 39 '9' Заправка до полного бака

3.2. Формат сообщений, передаваемых от контроллера ТРК в ККМ

Формат сообщений, передаваемых от контроллера ТРК в ККМ:

SOH TRK_No ReplyOn STX Price Volume Status ETX CRC
Error Code

где:

Поле данных Размер, байт Тип Значение Содержание
SOH 1 HEX 01 Маркер начала сообщения
TRK_No 2 ASCII '01'...'7Fh' Номер ТРК
ReplyOn 1 ASCII '0'...'F' Код команды управления, на которую следует ответ
(Примечание: Далее при описании команд вместо данного поля используется "Command")
STX 1 HEX 02 Маркер начала поля данных
Price 6 ASCII '000000'...'999999' Цена топлива, коп.
Volume 6 ASCII '000000'...'999999' Доза налива, мл.
Status 4 ASCII '0000'...'FFFF' Код состояния/ошибки и параметры ТРК
Error 2 ASCII '00'...'FF' Код ошибки протокола
Code 2 ASCII '00'...'FF' Код состояния ТРК
ETX 1 HEX 03 Маркер окончания поля данных
CRC 1 HEX 00...FF Контрольная сумма

3.2.1. Перечень кодов ошибок протокола (поле Error)


Код состояния (ASCII) Описание состояния
'00' Нет ошибок
'01' Недопустимый номер ТРК
(Примечание: Реально в версии 1.72 данный код не используется)
'02' Недопустимая команда ТРК при данном состоянии ТРК
'03' Неправильная контрольная сумма

3.2.2. Перечень кодов состояния ТРК (поле Code)


Код состояния (ASCII) Описание состояния
'01' Готовность к пуску
'02' Остаток дозы
'03' Пуск
'04' Останов
'05' Сброс (Дозы нет)
'06' Авария
'07' До полного бака останов

3.3. Подсчет байта контрольной суммы сообщения


Подсчет байта контрольной суммы сообщения (поле CRC) производится путем выполнения операции XOR (исключающее или) всех байтов сообщения, включая ETX, не включая SOH.



4. Основные операции в системе "ККМ - контроллер ТРК" и соответствующие им последовательности обмена сообщениями

Основные операции в системе "ККМ - контроллер ТРК" связаны с возможными состояниями контроллера ТРК и предназначены для организации переходов между этими состояниями.

Схема состояний контроллера ТРК и операции переходов между ними представлены на рис. 1:


Примечание: Состояние "Остаток дозы" является вышедшим из употребления и поддерживается для совместимости с предыдущими версиями контроллера "Доза - У". В новых версиях ПО рекомендуется использовать аналогичное по смыслу состояние "Останов".

4.1. Опрос состояния ТРК


1. ККМ передает команду "Тест" c номером опрашиваемой ТРК в поле TRK_No:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 34H 02H xxxxxx vvvvvv '00' '00' 03H z


2. Контроллер ТРК возвращает ответ "Тест" с номером ТРК в поле TRK_No, остатком дозы в поле Volume и кодами ошибки/состояния ТРК в поле Status:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 34H 02H xxxxxx vvvvvv 'yy' 'yy' 03H z


3. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".


Примечание: Здесь и далее полужирным шрифтом с подчеркиванием выделены ключевые параметры команд и ответов.

4.2. Загрузка дозы в ТРК


1. ККМ выполняет операцию "Опрос состояния ТРК" (п.4.1.).


2. В случае, если код состояния ТРК (поле Code) не равен '05' ("Сброс (Дозы нет)"), ККМ генерирует ошибку "Недопустимый статус ТРК". Для возможности выполнения загрузки дозы в этом случае необходимо выполнить операцию "Возврат дозы из ТРК" или "Сброс ТРК" (см. п. 4.3., 4.6.).


3. В случае, если код состояния ТРК (поле Code) равен '05' ("Сброс (Дозы нет)"), ККМ оформляет чек на продажу установленной дозы нефтепродуктов.


4. По окончании оформления чека ККМ выдает команду "Доза" с номером загружаемой ТРК в поле TRK_No, ценой в поле Price и загружаемой дозой в поле Volume:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 31H 02H xxxxxx vvvvvv '00' '00' 03H z


5. Контроллер ТРК переводит ТРК в состояние "Готовность к пуску" ('01') с заданной дозой и возвращает ответ "Доза" с номером загруженной ТРК в поле TRK_No, загруженной ценой в поле Price, кодами ошибки/состояния в поле Status и загруженной дозой в поле Volume:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 31H 02H xxxxxx vvvvvv 'yy' 'yy' 03H z


6. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".

4.3. Возврат дозы из ТРК


1. ККМ выполняет операцию "Опрос состояния ТРК" (п.4.1.).


2. В случае, если остаток дозы в ТРК нулевой или код состояния ТРК (поле Code) не равен "Готовность к пуску" ('01'), "Остаток дозы" ('02'), "До полного бака останов" ('07') или "Останов" ('04'), ККМ генерирует ошибку "Ошибка возврата 0 литров" или "Недопустимый статус ТРК".


3. В случае если код состояния равен "До полного бака останов" ('07'), печатается чек оплаты для дозы загруженной в результате операции "До полного бака", в противном случае печатается чек возврата.


4. ККМ передает команду "Сброс".


5. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".

4.4. Пуск ТРК


1. ККМ выполняет операцию "Опрос состояния ТРК" (п.4.1.).


2. В случае, если код состояния ТРК (поле Code) не равен "Готовность к пуску" ('01') или "Останов" ('04'), ККМ генерирует ошибку "Недопустимый статус ТРК".


3. В случае, если код состояния ТРК (поле Code) равен "Готовность к пуску" ('01') или "Останов" ('04'), ККМ передает команду "Пуск" с номером ТРК в поле TRK_No:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 35H 02H xxxxxx vvvvvv '00' '00' 03H z


4. Если ТРК находилась в состоянии "Готовность к пуску" ('01') или "Останов" ('04'), контроллер ТРК переводит ТРК в состояние "Пуск" ('03') и возвращает ответ "Пуск" с номером ТРК в поле TRK_No, кодами ошибки/состояния ТРК в поле Status и остатком дозы в поле Volume:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 35H 02H xxxxxx vvvvvv 'yy' 'yy' 03H z


5. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".

4.5. Останов ТРК


1. ККМ выполняет операцию "Опрос состояния ТРК" (п.4.1.).


2. В случае, если код состояния ТРК (поле Code) не равен "Пуск" ('03'), ККМ генерирует ошибку "Недопустимый статус ТРК".


3. В случае, если код состояния ТРК (поле Code) равен "Пуск" ('03'), ККМ передает команду "Останов" с номером ТРК в поле TRK_No:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 36H 02H xxxxxx vvvvvv '00' '00' 03H z


4. Если ТРК находилась в состоянии "Пуск", контроллер ТРК переводит ТРК в состояние "Останов" ('04') или "До полного бака останов" ('07') (в случае проведения операции "До полного бака") и возвращает ответ "Останов" c номером ТРК в поле TRK_No, кодами ошибки/состояния ТРК в поле Status и остатком дозы в поле Volume:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 36H 02H xxxxxx vvvvvv 'yy' 'yy' 03H z


5. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".

4.6. Сброс ТРК


1. ККМ передает команду "Сброс" с номером ТРК в поле TRK_No:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 37H 02H xxxxxx vvvvvv '00' '00' 03H z


2. Контроллер ТРК переводит ТРК в состояние "Сброс (Дозы нет)" ('05'), и возвращает ответ "Сброс" с номером ТРК в поле TRK_No, кодом состояния ТРК в поле Status и остатком дозы в поле Volume:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 37H 02H xxxxxx vvvvvv 'yy' 'yy' 03H z


3. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".

4.7. Общий останов


Общий останов - останов всех ТРК управляемых контроллером и находящихся в состоянии "Пуск". Команда полностью аналогична команде "Сброс", (включая и поле Command ) только в поле TRK_No всегда передаются нули ('00').


Контроллер ТРК переводит все ТРК с состоянием "Пуск", находящиеся под его управлением, в состояние "Останов" ('04') или "До полного бака останов" ('07') (в случае проведения операции "До полного бака"), и ничего не возвращает в ответ.



5. Дополнительные операции в системе "ККМ - контроллер ТРК" и соответствующие им последовательности обмена сообщениями

5.1. Загрузка параметров в ТРК


1. ККМ выполняет операцию "Опрос состояния ТРК" (п.4.1.).


2. В случае, если код состояния ТРК (поле Code) не равен "Сброс (Дозы нет)" ('05'), ККМ генерирует ошибку "Недопустимый статус ТРК".


3. В случае, если код состояния ТРК равен "Сброс (Дозы нет)" ('05'), ККМ передает команду "Установка" с номером ТРК в поле TRK_No и параметрами ТРК в поле Status:

SOH TRK_No Command STX Price Volume Status ETX CRC
01H nn 33H 02H xxxxxx vvvvvv yyyy '00' 03H z


4. Если ТРК находилась в состоянии "Сброс (Дозы нет)" ('05'), контроллер ТРК проводит загрузку параметров в ТРК и возвращает ответ "Установка" с номером ТРК в поле TRK_No, и кодами ошибки/состояния ТРК в поле Status:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 33H 02H xxxxxx vvvvvv 'yy' 'yy' 03H z


5. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".

5.2. До полного бака


1. ККМ выполняет операцию "Опрос состояния ТРК" (п.4.1.).


2. В случае, если код состояния ТРК (поле Code) не равен '05' ("Сброс (Дозы нет)"), ККМ генерирует ошибку "Недопустимый статус ТРК". Для возможности выполнения команды в этом случае необходимо выполнить операцию "Возврат дозы из ТРК" или "Сброс ТРК" (см. п. 4.3., 4.6.).


3. В случае, если код состояния ТРК (поле Code) равен '05' ("Сброс (Дозы нет)"), ККМ выдает команду "До полного бака" с номером загружаемой ТРК в поле TRK_No, ценой в поле Price и загружаемой дозой '000000' в поле Volume:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 39H 02H xxxxxx '000000' '00' '00' 03H z


4. Контроллер ТРК переводит ТРК в состояние "Готовность к пуску" ('01') и возвращает ответ "До полного бака" с номером загруженной ТРК в поле TRK_No, загруженной ценой в поле Price, кодами ошибки/состояния в поле Status и загруженной дозой в поле Volume:

SOH TRK_No Command STX Price Volume Status ETX CRC
Error Code
01H nn 39H 02H xxxxxx vvvvvv 'yy' 'yy' 03H z


5. Производится заправка до полного бака. При этом в качестве значения остатка дозы в контроллере ТРК должно быть установлено значение отпущенной дозы..


6. По окончании заправки ККМ выполняет действия 1. - 4. операции "Возврат дозы из ТРК" (см. п. 4.3.) и использует полученное значение поля Volume для оформления чека на продажу нефтепродуктов..


7. Обработка ошибок протокола (поле Error не равно '00') на всех стадиях обмена информацией осуществляется в соответствии с разделом 6 "Обработка ошибок протокола".



6. Обработка ошибок протокола


1. Обработка ошибок протокола (поле Error не равно '00') со стороны ККМ осуществляется путем вывода на индикатор ККМ кодов ошибок для сигнализации оператору:
а) Error = '01' ("Недопустимый номер ТРК") - генерация ошибки 'E225' на ККМ;

б) Error = '02' ("Недопустимая команда ТРК при данном состоянии ТРК") - генерация ошибки 'E226' на ККМ;

в) Error = '03' ("Неправильная контрольная сумма") - генерация ошибки 'E227' на ККМ.

Примечание: Коды E225, E226, E227 используются только ККМ SAMSUNG


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



Приложение 1.

Перечень кодов ошибок, индицируемых на индикаторе ККМ при обмене информацией с контроллером ТРК


Ошибка, индицируемая на индикаторе ККМ Описание ошибки
E217 Недопустимый статус ТРК
E218 Недопустимая команда ТРК в ККМ
E219 Ошибка возврата 0 литров
E220 При ручном возврате из ТРК не совпал остаток
E221 Авария
E225 Недопустимый номер ТРК
E226 Недопустимая команда ТРК при данном состоянии ТРК
E227 Ошибка при обмене с ТРК


Примечание: Перечисленные коды ошибок используются только ККМ SAMSUNG


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)