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

Структура даты/времени

Имя структуры: DATETIME

ПолеYEARMONTHDAYHOURMINUTESECOND
ФорматUINT8UINT8UINT8UINT8UINT8UINT8
Размер111111

Описание полей:

  • 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

Ответ:

ПолеSTATUSZ1Z2Z3
ФорматUINT8UINT8UINT8UINT8
Размер1111

Описание полей:

  • STATUS – результат записи. 0x00 - ошибка, 0x01 - успешно.
  • Z1, Z2, Z3 – пады (всегда нули).

Чтение каналов

Функция:

0x01.

Запрос:

ПолеMASK
ФорматCHMASK
Размер4

Описание полей:

  • Mask – битовая маска считываемых каналов.

Ответ:

ПолеCHANNEL1CHANNEL2...CHANNELN
ФорматBLOBBLOBBLOB
Размер???

Описание полей:

  • CHANNEL1, CHANNEL2, CHANNELN – показания по каналам, отсортированные по возрастанию номера канала. Формат данных варьируется и описан в таблице каналов модели конечного устройства.

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

Запись каналов

Функция:

0x02.

Запрос:

ПолеMASKCHANNEL1CHANNEL2...CHANNELN
ФорматCHMASKBLOBBLOBBLOB
Размер4???

Описание полей:

  • MASK – битовая маска записываемых каналов.
  • CHANNEL1, CHANNEL2, CHANNELN – показания по каналам, отсортированные по возрастанию номера канала. Формат данных варьируется и описан в таблице каналов модели конечного устройства.

Ответ:

ПолеMASK
ФорматCHMASK
Размер4

Описание полей:

  • Mask – битовая маска считываемых каналов.

Чтение архива по каналам

Функция:

0x06.

Запрос:

ПолеMASKTYPEDATE_STARTDATE_END
ФорматCHMASKUINT16DATETIMEDATETIME
Размер4266

Описание полей:

  • MASK – битовая маска считываемого канала. 

    Важно

    За один запрос можно получить архив только по одному каналу, поэтому допускается устанавливать только один бит маски.
  • TYPE – тип архива, где: 0x0001 - часовой, 0x0002 - суточный, 0x0003 - месячный и 0x0004 - получасовой (поддерживается не всеми моделями устройств).
  • DATE_START, DATE_END – начальные и конечная даты выборки архивных показаний. Если конечная дата указана позже даты последней записи архива, то устройство вправе передать меньше показаний.

Ответ:

ПолеMASKDATE_STARTVALUE1VALUE2...VALUEN
ФорматCHMASKDATETIMEBLOBBLOBBLOB
Размер46???

Описание полей:

  • MASK – битовая маска зачитываемого канала.
  • DATE_START – начальная дата архивных показаний (такая же, как и в запросе).
  • VALUE1, VALUE2, VALUEN - значения архивных показаний по зачитываемому каналу. Формат данных варьируется и описан в таблице каналов модели конечного устройства.

В случае, если у полученного архивного показания все биты установлены – это является признаком отсутствия данных.

Чтение параметра

Функция:

0x0A.

Запрос:

ПолеINDEX
ФорматUINT16
Размер2

Описание полей:

  • INDEX – индекс (адрес) считываемого параметра.

Ответ:

ПолеVALUE
ФорматBLOB
Размер8

Описание полей:

  • VALUE – значение считываемого параметра. Размер поля фиксирован и ограничен 8 байтами. Формат и реальный размер параметра варьируется и описан в таблице параметров модели конечного устройства.

Запись параметра

Функция:

0x0B.

Запрос:

ПолеINDEXVALUE
ФорматUINT16BLOB
Размер28

Описание полей:

  • INDEX – индекс (адрес) записываемого параметра.
  • VALUE – записываемое значение. Размер поля фиксирован и ограничен 8 байтами. Формат и реальный размер параметра варьируется и описан в таблице параметров модели конечного устройства. В случае, если реальный размер значения параметра менее 8 байт, оставшиеся байты должны быть заполнены 0x00.

Ответ:

ПолеSTATUS
ФорматUINT16
Размер2

Описание полей:

  • STATUS – результат записи параметра, всегда 0x0000 (успешно).

Ответ с ошибкой

Функция:

0x00.

Ответ:

ПолеCODE
ФорматUINT8
Размер1

Описание полей:

  • CODE – код ошибки

Стандартные коды ошибок:

  • 0x01 – Указан недопустимый код функции.
  • 0x02 – Ошибка в битовой маске запроса.
  • 0x03 – Длина запроса не соответствует указанной.
  • 0x04 – Указан недопустимый индекс (адрес) параметра.
  • 0x05 – Отказ в доступе. Требуется авторизация.
  • 0x06 – Записываемое значение параметра находится вне допустимого диапазона.
  • 0x07 – Указан неверный тип архива или он не поддерживается конечным устройством.
  • 0x08 – Превышено максимальное количество архивных значений за один пакет.

На любой из запросов может быть получен ответ с ошибкой. Таким образом, при получении ответа от конечного устройства всегда необходимо проверять функцию в ответе. 


  • No labels