В данном разделе описаны форматы стандартных функций. Описываются только тело функции, без фрейма. В зависимости от модели конечного устройства некоторые из стандартных функций могут не поддерживаться.
Структура даты/времени
Имя структуры: DATETIME
Поле | YEAR | MONTH | DAY | HOUR | MINUTE | SECOND |
Формат | UINT8 | UINT8 | UINT8 | UINT8 | UINT8 | UINT8 |
Размер | 1 | 1 | 1 | 1 | 1 | 1 |
Описание полей:
- YEAR – год. Значение отсчитывается от 2000, допустимые значения от 0 до 99.
- MONTH – месяц. Допустимые значения от 1 до 12.
- DAY – день месяца. Допустимые значения от 1 до 31.
- HOUR – час. Допустимые значения от 0 до 23.
- MINUTE – минута. Допустимые значения от 0 до 59.
- SECOND – секунда. Допустимые значения от 0 до 59.
Примечание
Если все байты равны 0xFF – считать, что дата/время отсутствует.
Структура маски каналов
Имя структуры: CHMASK.
Поле | MASK |
Формат | UINT32 |
Размер | 4 |
Описание полей:
- Mask – битовая маска каналов. Например, если установлен младший бит, значит используется канал №1. Нумерация каналов начинается с единицы.
Чтение текущей даты/времени
Функция:
0x04.
Запрос:
данные отсутствуют.
Ответ:
Поле | DATETIME |
Формат | DATETIME |
Размер | 6 |
Запись текущей даты/времени
Функция:
0x05.
Запрос:
Поле | DATETIME |
Формат | DATETIME |
Размер | 6 |
Ответ:
Поле | STATUS | Z1 | Z2 | Z3 |
Формат | UINT8 | UINT8 | UINT8 | UINT8 |
Размер | 1 | 1 | 1 | 1 |
Описание полей:
- STATUS – результат записи. 0x00 - ошибка, 0x01 - успешно.
- Z1, Z2, Z3 – пады (всегда нули).
Чтение каналов
Функция:
0x01.
Запрос:
Поле | MASK |
Формат | CHMASK |
Размер | 4 |
Описание полей:
- Mask – битовая маска считываемых каналов.
Ответ:
Поле | CHANNEL1 | CHANNEL2 | ... | CHANNELN |
Формат | BLOB | BLOB | BLOB | |
Размер | ? | ? | ? |
Описание полей:
- CHANNEL1, CHANNEL2, CHANNELN – показания по каналам, отсортированные по возрастанию номера канала. Формат данных варьируется и описан в таблице каналов модели конечного устройства.
Размер показаний по каналам является одинаковым, поэтому можно определить размер показания разделив полученное количество байт полезных данных на количество запрашиваемых каналов.
Запись каналов
Функция:
0x02.
Запрос:
Поле | MASK | CHANNEL1 | CHANNEL2 | ... | CHANNELN |
Формат | CHMASK | BLOB | BLOB | BLOB | |
Размер | 4 | ? | ? | ? |
Описание полей:
- MASK – битовая маска записываемых каналов.
- CHANNEL1, CHANNEL2, CHANNELN – показания по каналам, отсортированные по возрастанию номера канала. Формат данных варьируется и описан в таблице каналов модели конечного устройства.
Ответ:
Поле | MASK |
Формат | CHMASK |
Размер | 4 |
Описание полей:
- Mask – битовая маска считываемых каналов.
Чтение архива по каналам
Функция:
0x06.
Запрос:
Поле | MASK | TYPE | DATE_START | DATE_END |
Формат | CHMASK | UINT16 | DATETIME | DATETIME |
Размер | 4 | 2 | 6 | 6 |
Описание полей:
- MASK – битовая маска считываемого канала.
Важно
За один запрос можно получить архив только по одному каналу, поэтому допускается устанавливать только один бит маски. - TYPE – тип архива, где: 0x0001 - часовой, 0x0002 - суточный, 0x0003 - месячный и 0x0004 - получасовой (поддерживается не всеми моделями устройств).
- DATE_START, DATE_END – начальные и конечная даты выборки архивных показаний. Если конечная дата указана позже даты последней записи архива, то устройство вправе передать меньше показаний.
Ответ:
Поле | MASK | DATE_START | VALUE1 | VALUE2 | ... | VALUEN |
Формат | CHMASK | DATETIME | BLOB | BLOB | BLOB | |
Размер | 4 | 6 | ? | ? | ? |
Описание полей:
- MASK – битовая маска зачитываемого канала.
- DATE_START – начальная дата архивных показаний (такая же, как и в запросе).
- VALUE1, VALUE2, VALUEN - значения архивных показаний по зачитываемому каналу. Формат данных варьируется и описан в таблице каналов модели конечного устройства.
В случае, если у полученного архивного показания все биты установлены – это является признаком отсутствия данных.
Чтение параметра
Функция:
0x0A.
Запрос:
Поле | INDEX |
Формат | UINT16 |
Размер | 2 |
Описание полей:
- INDEX – индекс (адрес) считываемого параметра.
Ответ:
Поле | VALUE |
Формат | BLOB |
Размер | 8 |
Описание полей:
- VALUE – значение считываемого параметра. Размер поля фиксирован и ограничен 8 байтами. Формат и реальный размер параметра варьируется и описан в таблице параметров модели конечного устройства.
Запись параметра
Функция:
0x0B.
Запрос:
Поле | INDEX | VALUE |
Формат | UINT16 | BLOB |
Размер | 2 | 8 |
Описание полей:
- INDEX – индекс (адрес) записываемого параметра.
- VALUE – записываемое значение. Размер поля фиксирован и ограничен 8 байтами. Формат и реальный размер параметра варьируется и описан в таблице параметров модели конечного устройства. В случае, если реальный размер значения параметра менее 8 байт, оставшиеся байты должны быть заполнены 0x00.
Ответ:
Поле | STATUS |
Формат | UINT16 |
Размер | 2 |
Описание полей:
- STATUS – результат записи параметра, всегда 0x0000 (успешно).
Ответ с ошибкой
Функция:
0x00.
Ответ:
Поле | CODE |
Формат | UINT8 |
Размер | 1 |
Описание полей:
- CODE – код ошибки
Стандартные коды ошибок:
- 0x01 – Указан недопустимый код функции.
- 0x02 – Ошибка в битовой маске запроса.
- 0x03 – Длина запроса не соответствует указанной.
- 0x04 – Указан недопустимый индекс (адрес) параметра.
- 0x05 – Отказ в доступе. Требуется авторизация.
- 0x06 – Записываемое значение параметра находится вне допустимого диапазона.
- 0x07 – Указан неверный тип архива или он не поддерживается конечным устройством.
- 0x08 – Превышено максимальное количество архивных значений за один пакет.
На любой из запросов может быть получен ответ с ошибкой. Таким образом, при получении ответа от конечного устройства всегда необходимо проверять функцию в ответе.