Навигация по разделу "Инструкции, софт и прошивки": Zipstore.ru > Инструкции, софт и прошивки > CAS

Протокол обмена данными (передачи данных) для весов CAS LP

Подключение весов к внешним устройствам


1. Общие указания


Весы типа LP позволяют подключить внешнее устройство к разъёму интерфейса весов и обмениваться данными с внешним устройством. В стандартной поставке весы оснащаются интерфейсом RS232C. В данном Руководстве описывается протокол работы именно этого типа интерфейса. По заказу клиента (с дополнительной оплатой) весы могут быть оснащены интерфейсом другого типа. По поводу особенностей работы другого интерфейса обращайтесь при его заказе к поставщику. Соблюдайте меры предосторожности: в момент соединения или рассоединения кабеля устройства с разъёмом интерфейса весов, весы должны быть выключены. Для успешного обмена данными с внешним устройством питание весов должно быть включено, и весы не должны находиться в режиме программирования или в режиме отчёта.

2. Протокол обмена данными


        1) ОПИСАНИЕ ДАННЫХ
а) PLU - данные:
ЗОНА ИНФОРМАЦИИ, ДОСТУПНОЙ ПО ЧТЕНИЮ/ЗАПИСИ:
;**********************************************************
0000H: номер PLU, нулевой (младший) байт, двоичное.
0001H: номер PLU, байт 1, двоичное.
0002H: номер PLU, байт 2, двоичное.
0003H: номер PLU, байт 3 (старший), двоичное.
Диапазон значений - 0..4000. (PLU 0 – незапрограммированные товары)


0004H: код товара, байт 0, двоично-десятичное (0...9).
0005H: код товара, байт 1, двоично-десятичное (0...9).
0006H: код товара, байт 2, двоично-десятичное (0...9).
0007H: код товара, байт 3, двоично-десятичное (0...9).
0008H: код товара, байт 4, двоично-десятичное (0...9).
0009H: код товара, байт 5, двоично-десятичное (0...9).


000AH-0025H: (28 байтов) название товара, 1-я строка, представляется в кодах ASCII.
0026H-0041H: (28 байтов) название товара, 2-я строка, представляется в кодах ASCII.


Если требуется вывести на печать менее 28 символов в строке (включая пробелы), то оставшиеся до конца строки позиции следует заполнить значением 00H (нулями).


Особый случай: печать логотипа. Логотип печатается в поле названия товара, справа, и занимает место 4-х крайних правых символов обеих строк. В этом случае для названия товара используются только первые 24 байта каждой строки (с нулевого по 23-й), а оставшиеся 4 байта в каждой строке кодируют логотип следующим образом: байт 24 каждой из строк =0, байт 25 каждой из строк - номер логотипа (РОСТЕСТ=01H, другой логотип -=02H). Под изображением логотипа РОСТЕСТ печатается буквенно-цифровой код сертифицирующего органа. Этот код (символы ASCII) вводится в 26 и 27 байты строк 1 и 2, причём байт 26 строки 2 содержит 1-й символ, байт 26 строки 1 - 2-й символ, байт 27 строки 2 - 3-й символ, байт 27 строки 1 - 4-й символ.

0042H: цена, байт 0 (младший), двоичное
0043H: цена, байт 1, двоичное
0044H: цена, байт 2, двоичное
0045H: цена, байт 3 (старший), двоичное
Значение "цены" (32 бита) не должно превышать 999999 (00 0F 42 3F)


Срок годности: 3 байта в упакованном двоично-десятичный формате 4 младших бита - число единиц, 4 старших - число десятков.
Существует 2 способа кодирования срока годности:
1. - С фиксированной датой годности;
2. - С числом дней с момента печати этикетки (не более 999).


Способ 1:
0046H: срок годности: день (01..31);
0047H: срок годности: месяц (01..12);
0048H: срок годности: год (00..99).


Способ 2:
0046H: всегда 00;
0047H: сотни дней (00..09)
0048H: десятки и единицы дней (00..99).


0049H: тара, грамм, младший байт, двоичный формат.
004AH: тара, грамм, старший байт, двоичный формат.
Диапазон и округление вводимого значения должны соответствовать настройкам весов.


004BH - 0050H: групповой код, 6 байт, аналогично коду товара.


0051H: номер сообщения, младший байт, двоичный формат.
0052H: номер сообщения, старший байт, двоичный формат.
Диапазон значений - 0..1000.
;**********************************************************
КОНЕЦ ЗОНЫ ИНФОРМАЦИИ, ДОСТУПНОЙ ПО ЧТЕНИЮ/ЗАПИСИ (83 БАЙТА).


ЗОНА ИНФОРМАЦИИ, ДОСТУПНОЙ ТОЛЬКО ПО ЧТЕНИЮ.
ДАННЫЕ В ЭТОЙ ЗОНЕ ИНИЦИАЛИЗИРУЮТСЯ АВТОМАТИЧЕСКИ ПРИ ЗАПИСИ PLU.
;**********************************************************
Дата и время последнего стирания итогов продаж по данному товару: 6 байт в упакованном двоично-десятичный формате: 4 младших бита - число единиц, 4 старших - число десятков.
0053H: секунды (00..60).
0054H: минуты (00..60).
0055H: часы (00..24).
0056H: день (01..31).
0057H: месяц (01..12).
0058H: год (00..99).

0059H - 005CH: общая сумма, 4 байта в двоичном формате.
005DH - 0060H: общий вес, 4 байта в двоичном формате.
0061H - 0063H: кол-во продаж, 3 байта в двоичном формате.
;**********************************************************
КОНЕЦ ЗОНЫ ИНФОРМАЦИИ, ДОСТУПНОЙ ТОЛЬКО ПО ЧТЕНИЮ (17 байт).
ИТОГО: 100 байт на каждый товар.

б) Сообщения:
Каждое сообщение состоит из 400 байт кодов ASCII (8 строк по 50 символов).
Если требуется вывести на печать менее 50 символов в строке (включая пробелы), то оставшиеся до конца строки позиции следует заполнить значением 00H (нулями) или символами "пробел" (20H).

в) Общий итог продаж по всем товарам:
0000H - 0003H: счётчик пробега, мм, 4 байта в двоичном формате.
0004H - 0007H: счётчик этикеток, 4 байта в двоичном формате.
0008H - 000BH: общая сумма, 4 байта в двоичном формате.
000CH - 000EH: кол-во продаж, 3 байта в двоичном формате.
000FH - 0012H: общий вес, 4 байта в двоичном формате.
0013H - 0016H: сумма по всем PLU, 4 байта в двоичном формате.
0017H - 0019H: кол-во продаж по всем PLU, 3 байта в двоичном формате.
001AH - 001DH: общий вес по всем PLU, 4 байта в двоичном формате.
001EH - 0023H: Дата и время последнего стирания общего итога - 6 байт в упакованном двоично-десятичный формате: 4 младших бита - число единиц, 4 старших - число десятков.


001EH: секунды (00..60).
001FH: минуты (00..60).
0020H: часы (00..24).
0021H: день (01..31).
0022H: месяц (01..12).
0023H: год (00..99).

0024H: кол-во свободных PLU, младший байт, двоичный формат.
0025H: кол-во свободных PLU, старший байт, двоичный формат.

0026H: кол-во свободных сообщений, младший байт, двоичный формат.
0027H: кол-во свободных сообщений, старший байт, двоичный формат.


ИТОГО: 40 байт.

г) Текущее состояние весов:
0000H: Байт состояния (биты 0..7).
                    Бит 0 - перегрузка, =1:истинно, =0:ложно.
                    Бит 1 - не используется, всегда равен 0.
                    Бит 2 - режим выборки тары, =1:включён, =0:выключен.
                    Бит 3 - нулевой вес, =1:истинно, =0:ложно.
                    Бит 4 - не используется, всегда равен 0.
                    Бит 5 - двухдиапазонный режим, =1:включён, =0:выключен.
                    Бит 6 - вес стабильный, =1:истинно, =0:ложно.
                    Бит 7 - знак величины веса, =1:минус, =0:плюс.

0001H: абсолютное значение веса, младший байт, двоичный формат.
0002H: абсолютное значение веса, старший байт, двоичный формат.

0003H - 0006H: цена товара (коп/кг), 4 байта в двоичном формате.


0007H - 000AH: стоимость товара (копеек), 4 байта в двоичном формате.


000BH - 000EH: номер выбранного товара (номер PLU), 4 байта в двоичном формате.


ИТОГО: 15 байт.

д) Заводские установки весов:
Наибольший предел взвешивания, граммов, двоичный формат:
0000H: младший байт.
0001H: старший байт.

Положение десятичной точки:
0002H: в показаниях веса (с младшего знака).
0003H: в показаниях цены (с младшего знака).
0004H: в показаниях стоимости (с младшего знака).

0005H: Двухдиапазонный режим взвешивания:
              =0:выключен; не равно 0:включён.

0006H: Дискретность индикации веса во всём диапазоне или в верхнем диапазоне при включённом двухдиапазонном режиме.

0007H: Дискретность индикации веса в нижнем диапазоне при включённом двухдиапазонном режиме.

Вес в граммах, для которого определяется цена, двоичный формат:
0008H: младший байт.
0009H: старший байт.

000AH: Величина, до которой округляется стоимость.

Предел выборки тары, граммов, двоичный формат:
000BH: младший байт.
000CH: старший байт.
Дискретность значения тары определяется дискретностью индикации веса во всём диапазоне при работе в однодиапазонном режиме, или в нижнем диапазоне при работе в двухдиапазонном режиме.


Итого: 13 байт.

е) Логотип:
Логотип (LOGO 2) - это графическое изображение размером 64 * 64 точки с двумя градациями яркости: чёрное и белое. Каждая точка кодируется битом данных изображения: 0 - белое, 1 - чёрное. Данные изображения сгруппированы в байты, всего 512 байт. Точке с координатами (X,Y)=(0,0) соответствует левый верхний угол изображения и старший (бит 7) бит нулевого байта данных. Младший (бит 0) бит нулевого байта данных кодирует точку с координатами (7,0). Старший (бит 7) бит байта 01 кодирует точку (8,0). Точку (0,1) кодирует старший бит байта 08, и так далее.

ж) Настройки пользователя:
0000H - 0002H: номер отдела, 3 байта в двоично-десятичном формате. Кодирует значения от 000 до 999.

0003H: номер формата этикетки, 1 байт в двоичном формате.
Может принимать значения от 1 до 99, однако если формат с таким номером не запрограммирован, будет выдан байт ошибки обмена.

0004H: номер формата штрих-кода, от 0 до 8.

0005H: сдвиг печати, 1 байт в двоичном формате. Может принимать значения от 1 до 99.

0006H: особенности печати (биты 0..7).
               Бит 0 - изменение цены разрешено, =1:истинно, =0:ложно.
               Бит 1 - изменения цены с сохранением изменения, =1:разрешено, =0:запрещено.
               Бит 2 - печать номера PLU, =1:включено, =0:выключено.
               Бит 3 - печать группового кода, =1:включено, =0:выключено.
               Бит 4 - печать даты упаковки, =1:включено, =0:выключено.
               Бит 5 - печать срока годности, =1:включено, =0:выключено.
               Бит 6 - печать номера этикетки, =1:включено, =0:выключено.
               Бит 7 - печать времени упаковки, =1:включено, =0:выключено.

Величина изменения веса для автоматической печати, граммов, двоичный формат:
0007H: младший байт.
0008H: старший байт.


Итого: 9 байт.

               2) АДРЕСАЦИЯ
Адрес весов есть байт с двоичным значением в диапазоне 1..99. Каждые весы, работающие в одной сети, должны иметь уникальный адрес. Значение адреса каждых весов в сети устанавливается до включения весов в сеть с помощью клавиатуры весов. В каждый момент времени в сети может происходить сеанс обмена данными между компьютером и единственными весами. Инициатором сеанса обмена в сети всегда является компьютер. Для инициализации сеанса обмена, а также для определения весов, подключённых к сети, компьютер посылает в сеть байт адреса
запрашиваемых весов. Все весы, работающие в сети, принимают данные, передаваемые компьютером, но распознавание адреса
происходит только тогда, когда интервал времени между передачей компьютером байта адреса и байта, предшествовавшего байту
адреса, превышает 200 мс. В этом случае каждые весы, работающие в сети, сравнивают полученный байт со своим адресом, и весы,
обнаружившие совпадение, немедленно (менее чем через 2 мс) возвращают принятый байт в сеть. Таким образом весы подтверждают
своё присутствие в сети. Далее может произойти или не произойти сеанс обмена данными между компьютером и выбранными весами.

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

       3) ПРОТОКОЛ ОБМЕНА ДАННЫМИ


а) Формат данных
Для обмена используется 8 бит данных, 1 стоп-бит, без контроля чётности. Скорость обмена выбирается из ряда: 2400, 4800, 9600, 19200 бод. Все весы и компьютер, работающие в одной сети, должны быть настроены на одинаковую скорость обмена до подключения к сети.


б) Данные о состоянии обмена от весов
Байт данных о состоянии обмена весы посылают в сеть во время сеанса обмена данными с компьютером.

<80h>: Готовность к получению команды обмена от компьютера.
Посылается весами не позже чем через 100 мс после распознавания адреса, если весы готовы принять команду обмена.

: Ошибка обмена. Посылается весами во время сеанса обмена немедленно при обнаружении ошибок:
- при передаче данных по линии;
- в коде команды обмена;
- при запросе отсутствующих данных;
- при передаче ошибочных значений данных;
- при превышении допустимого интервала времени (200 мс) между передачей байтов в сеть компьютером во время сеанса обмена.*)
(*Следствие: между посылкой компьютером байта адреса и байта команды обмена должно пройти менее 200 мс).

<байт0><байт1><байт2><байт3>: Запрос на срочное получение PLU - данных по товару с номером, двоичное значение которого содержится в байтах 0..3. Передаётся весами вместо готовности к получению команды обмена при необходимости срочно обновить PLU - данные. Запись запрошенных PLU - данных после получения такого запроса компьютер выполняет так же, как и после получения байта готовности к получению команды обмена.

в) Команды обмена:
Команду обмена компьютер посылает при следующих условиях: был послан байт адреса и пришло подтверждение и готовность к приёму или запрос на срочное получение данных от весов и с момента передачи адреса прошло менее 200 мс. В противном случае сеанс обмена не состоится и через 200 мс после передачи байта адреса компьютером все весы в сети будут пытаться следующий переданный компьютером байт интерпретировать как адрес.

<81h><байт0><байт1><байт2><байт3>: Чтение из весов PLU - данных по товару с номером, двоичное значение которого содержится в байтах 0..3. В ответ весы посылают 100 байт (см. формат PLU - данных).


<82h><байт0><байт1> ... <байт82>: Запись в весы PLU - данных по товару с номером, двоичное значение которого содержится в PLU - данных (83 байта).


<83h><байт0><байт1>: Чтение из весов сообщения с номером, двоичное значение которого содержится в байтах 0 и 1. В ответ весы посылают 400 байт (см. формат сообщений).


<84h><байт0><байт1><байт2><байт3> ... <байт402>: Запись в весы сообщения с номером, двоичное значение которого
содержится в байтах 0 и 1. Текст сообщения находится в байтах 2..402.


<85h>: Чтение общего итога продаж по всем товарам. В ответ весы посылают 40 байт (см. формат общего итога продаж по всем товарам).
Примечание: Запись в весы сообщения или PLU - данных из компьютера не приводит к обновлению значения количества свободных PLU или сообщений. Обновление происходит при каждом новом включении питания весов или при ручном программировании PLU и сообщений.

<86h>: Стирание суммарного итога продаж по всем товарам. Не приводит к стиранию итогов по каждому товару отдельно.


<87h><байт0><байт1><байт2><байт3> ... <байт7>: Запись границ единственного непрерывного диапазона номеров товаров, для которых планируется обновление информации. Используется для виртуальной синхронизации обновления данных во всех весах сети с моментом изменения данных, например, цен или сроков годности товаров и т.д. С момента записи такого диапазона вызов оператором весов товара с номером из
записанного диапазона переводит весы в состояние ожидания обмена с компьютером и, при обращении компьютера к весам, весы выдают запрос на срочное получение PLU - данных для вызванного товара. Ожидание обмена длится до 20 секунд. Если за это время обмен с компьютером не состоялся, весы извлекают из памяти "старые" данные. То же происходит, если при обмене запрашиваемые данные не были записаны в память
весов. Границы диапазона номеров товаров содержатся в байтах 0..7. Запись новых границ диапазона приводит к отмене старых. Начало диапазона - это номер товара, двоичное значение которого содержится в байтах 0..3. Конец диапазона - это номер товара, двоичное значение которого содержится в байтах 4..7. Номера товаров, равные границам диапазона, входят в диапазон. Таким образом, диапазоном может являться единственный номер товара, при этом границы диапазона совпадают и равны этому номеру товара. При записи в весы PLU - данных для товара,
номер которого равен границе диапазона, эта граница сдвигается в сторону противоположной границы. Если номер записываемого товара равен обеим границам, обе границы диапазона отменяются.

<88h>: Отмена границ диапазона номеров товаров, для которых планируется обновление информации.

<89h>: Чтение текущего состояния весов. В ответ весы посылают 15 байт (см. формат текущего состояния весов).


<8ah><байт0><байт1><байт2><байт3> ... <байт8>: Запись в весы настроек пользователя, 9 байт (см. формат настроек пользователя).


<8bh><байт0><байт1><байт2><байт3><байт4>: Программирование клавиш цен. Номер товара, двоичное значение которого содержится в байтах 0..3, связывается с клавишей цены, номер которой содержится в байте 4 (двоичное значение в диапазоне 1..54).


<8ch><байт0><байт1><байт2><байт3> ... <байт511>: Запись логотипа (LOGO 2), см. формат данных логотипа.


<8dh><байт0><байт1><байт2><байт3>: Стирание из памяти весов PLU - данных по товару с номером, двоичное значение которого содержится в байтах 0..3.


<8eh><байт0><байт1>: Стирание из памяти весов сообщения с номером, двоичное значение которого содержится в байтах 0 и 1.

<8fh>: Зарезервировано.
<90h>: Зарезервировано.
<91h>: Зарезервировано.

<92h><байт0><байт1><байт2><байт3>: Обнуление в памяти весов итоговых данных по товару с номером, двоичное значение которого содержится в байтах 0..3.


<93h>: Зарезервировано.


<94h><байт0><байт1><байт2><байт3> ... <байт55>: Запись строк рекламной информации (например, названия магазина). Байты 0..27: 1-я строка, 28 байтов, представляется в кодах ASCII. Байты 28..55: 2-я строка, 28 байтов, представляется в кодах ASCII. Если требуется вывести на печать менее 28 символов в строке (включая пробелы), то оставшиеся до конца строки позиции следует заполнить значением 00H (нулями).

<95h>: Чтение из весов настроек пользователя. В ответ весы посылают 9 байт (см. формат настроек пользователя).


<96h><байт0>: Чтение из весов номера товара, назначенного на клавишу цены, номер которой содержится в байте 0 (двоичное
значение в диапазоне 1..54). В ответ весы посылают 4 байта - двоичное значение номера товара.


<97h>: Чтение из весов логотипа (LOGO 2). В ответ весы возвращают 512 байт, см. формат данных логотипа.


<98h>: Чтение из весов строк рекламной информации (например, названия магазина). В ответ весы возвращают 56 байт (текст в кодах ASCII, 2 строки по 28 символов).


<99h><байт0><байт1><байт2><байт3><байт4><байт5>: Запись в часы/календарь реального времени весов значения даты. Дата передаётся в формате <д><д><м><м><г><г>, где каждая цифра представлена байтом.


<9ah><байт0><байт1><байт2><байт3><байт4><байт5>: Запись в часы/календарь реального времени весов значения времени. Время передаётся в формате <ч><ч><м><м><с><с>, где каждая цифра представлена байтом.


<9bh>: Чтение из весов заводских установок весов. В ответ весы возвращают 13 байт (см. формат заводских установок).