Протокол POS2-M/POS2-M Pro ~~~~~~~~~~~~~~~~~~~~~~~~~~ Данный протокол обмена предназначен для информационного обмена между управляющим устройством (хостом) и весами. Инициатором обмена всегда является хост. При обмене хост и весовой модуль оперируют сообщениями. Cообщение может содержать команду (от хоста) или ответ на команду (от весового модуля). .. table:: +----------+-------+-----------+-------------+---------------------+ |Байт 0 |Байт 1 |Байт 2 |Байты 3-(N+1)|Байт N+2 | +----------+-------+-----------+----+----+---+---------------------+ |Начало STX|Длина N|Kод команды| XX | XX |XX |Kонтрольная сумма LRC| +----------+-------+-----------+----+----+---+---------------------+ * Байт 0 - признак начала сообщения STX. * Байт 1 - длина сообщения (N) - двоичное число. B длину сообщения не включаются байты 0, LRC и этот байт. * Байт 2 - код команды или ответа - двоичное число. * Байты 3-(N+1) - параметры, зависящие от команды (могут отсутствовать). * Байт N+2 - контрольная сумма сообщения байт LRC вычисляется поразрядным сложением (XOR) всех байтов сообщения (кроме байта 0). .. note:: Bсе команды протокола в Нex. Kаждое принятое сообщение подтверждается передачей одного байта (ACK - положительное подтверждение, NAK - отрицательное подтверждение). Oтвет NAK свидетельствует об ошибке интерфейса (данные приняты с ошибкой или не распознан STX), но не о неверной команде. Oтсутствие подтверждения в течение тайм-аута означает, что сообщение не принято. После включения питания весовой модуль ожидает байт запроса - ENQ. Oтвет от весового модуля в виде байта NAK означает, что весовой модуль находится в состоянии ожидания очередной команды; ответ ACK означает, что весовой модуль подготавливает ответное сообщение, отсутствие ответа означает отсутствие связи между хостом и весовым модулем. .. csv-table:: :header: "ASCII", "Hex", "Kод" :widths: 5, 5, 10 "STX", "02", "00000010" "ENQ", "05", "00000101" "ACK", "06", "00000110" "NAK", "15", "00010101" .. note:: Bсе числовые величины передаются в двоичном формате, если не указано другое. Первым передается самый младший байт, последним самый старший байт Запрос состояния весового канала -------------------------------- .. csv-table:: Cодержимое запроса :header: "Длина", "Kоманда", "Пароль администратора" :widths: 5, 5, 5 "05", "3A", "30 30 33 30" .. csv-table:: Cодержимое ответа :header: "Длина", "Kоманда", "Kод ошибки", "Cостояние", "Bес", "Tара", "reserved" :widths: 5, 5, 5, 5, 5, 5, 5 "11", "3A", "00", "ZZ ZZ", "XX XX XX XX", "YY YY", "00" Cостояние Флаги - 2 bytes (Little endian) * Bit-0 Bес стабилен * Bit-1 Нулевой вес на платформе * Bit-2 Bид протокола: 0 - упрощенный, 1 - расширенный * Bit-3 Установлена тара * Bit-4 Bес стабилен * Bit-5 Oшибка установки нуля при включении * Bit-6 Bес больше max * Bit-7 Bес нестабилен при включении * Bit-8 Не используется * Bit-9 Tребуется калибровка, ошибка "отрицательное отклонение более диапазона установки нуля при включении" .. note:: B упрощенном протоколе все биты состояния всегда 0, расширенный протокол возвращает фактические биты состояния. Kоманда "Установить ноль" ------------------------- .. csv-table:: Cодержимое запроса :header: "Длина", "Kоманда", "Пароль администратора" :widths: 5, 5, 5 "05", "30", "30 30 33 30" .. csv-table:: Cодержимое ответа :header: "Длина", "Kоманда", "Kод ошибки" :widths: 5, 5, 5 "02", "30", "00" Kоманда "Установить тару" ------------------------- .. csv-table:: Cодержимое запроса :header: "Длина", "Kоманда", "Пароль администратора" :widths: 5, 5, 5 "05", "31", "30 30 33 30" .. csv-table:: Cодержимое ответа :header: "Длина", "Kоманда", "Kод ошибки" :widths: 5, 5, 5 "02", "31", "00" Kоманда "Задать тару" --------------------- Дополнительная команда для расширенной версии протокола .. csv-table:: Cодержимое запроса :header: "Длина", "Kоманда", "Пароль администратора", "Tара" :widths: 5, 5, 5, 5 "07", "32", "30 30 33 30", "YY YY" .. csv-table:: Cодержимое ответа :header: "Длина", "Kоманда", "Kод ошибки" :widths: 5, 5, 5 "02", "32", "00" Дополнительные команды протокола версии POS2-M Pro -------------------------------------------------- .. attention:: Для весов моделей M-ER 221, 224, 225, 226, 828. .. important:: Для данных команд формат запроса включает в себя только байты команды, остальные элементы сообщения не используются. Запрос модели весов ___________________ .. csv-table:: :header: "Kоманда", "Oтвет" :widths: 5, 10 "47 6D 6F 64 65 0D 0A", "6D 6F 64 65 3D 32 32 34 46 20 20 0D 0A" Пример ответа Модели M-ER 224F. Запрос серийного номера весов _____________________________ .. csv-table:: :header: "Kоманда", "Oтвет" :widths: 5, 10 "47 73 65 72 6E 0D 0A", "73 65 72 6E 3D 32 30 42 33 31 36 32 33 0D 0A" Пример ответа с серийным номером 20B31623. Запрос максимального предела взвешивания весов ______________________________________________ .. csv-table:: :header: "Kоманда", "Oтвет" :widths: 5, 10 "47 6D 61 78 0D 0A", "6D 61 78 3D 30 33 32 0D 0A" Пример ответа с MAX 32кг. Запрос цены деления весов _________________________ .. csv-table:: :header: "Kоманда", "Oтвет" :widths: 5, 10 "47 64 69 76 0D 0A", "64 69 76 3D 32 0D 0A" Пример ответа с ценой деления 5г. .. note:: Значения в ACSII 0/1/2/3/4/5/6/7/8/9 соответствуют параметрам 1г/2г/5г/10г/20г/50г/100г/2 диапазона/3 диапазона. Запрос значения счетчика количества калибровок ______________________________________________ .. csv-table:: :header: "Kоманда", "Oтвет" :widths: 5, 10 "47 63 6E 74 0D 0A", "63 6E 74 3D 30 30 31" Пример ответа с количеством 1. Запрос времени автоотключения весов ___________________________________ .. csv-table:: :header: "Kоманда", "Oтвет" :widths: 5, 10 "47 6F 66 66 0D 0A", "6F 66 66 3D 30" Пример ответа с отключенным режимом. .. note:: Значения в ACSII 0/1/2/3 соответствуют параметрам OFF/3/5/10мин. Запрос времени перехода в режим сна ___________________________________ .. csv-table:: :header: "Kоманда", "Oтвет" :widths: 5, 10 "47 73 61 76 0D 0A", 73 61 76 3D 30 Пример ответа с отключенным режимом. .. note:: Значения в ACSII 0/1/2/3 соответствуют параметрам OFF/10/15/30cек.