УСПД Ресурс:Протокол УСПД Ресурс

Материал из Линэрго
Перейти к: навигация, поиск

Содержание

Формат сообщений

Запросы внешнего устройства и ответы от УСПД представляют собой последовательность байт переменной длины от 12 до 1024. Все сообщения имеют общую структуру, представленную в таблице 1.

Байты
0
1
2
3
4
5
6
7
N-2
N-1
Данные
SERIAL
SEQ
LEN
SECTIONS
CRC
SEC0
SEC1
SEC№M

Таблица 1. Структура сообщений.

SERIAL (4 байта)- серийный номер УСПД

SEQ (2 байта) - идентификатор запросов и ответов в последовательности запросов и ответов в рамках одной сессии. У связного запроса и ответа идентификатор одинаковый.

LEN (2 байта) – длина всего сообщения включая CRC.

SECTIONS – секции данных, содержат в себе всю смысловую нагрузку сообщения – это инструкции и параметры запросов, а так же данные содержащиеся в ответах на эти запросы. В сообщении может быть от одной до нескольких секций. Количество секций в ответе такое же, как в запросе. Формат секции описан ниже.

CRC (2 байта) – контрольная сумма от всего сообщения (SERIAL, SEQ, LEN, SECTIONS) рассчитанная по алгоритму Modbus CRC-16.

Формат секций

Общий формат секции представлен в таблице 2.

Байты
0
1
2
3
Данные
TYPE
LEN
DATA

Таблица 2. Структура секций

TYPE (2 байта) – тип секции.

LEN(2 байта) – длина всей секции (вместе с типом и самой длиной).

DATA (LEN-4 байт) – Данные секции

Типы данных

Целое

Возможные размеры 1,2 и 4 байта. Порядок байт Big Endian.

Строка

В начале строки в двух байтах записывается ее длина, далее идет непосредственно строка. Например, строка “Test” будет представлена следующей последовательностью: 0x00,0x04,0x54,0x65,0x73,0x74

Номер байта

Описание

Возможные значения

0, 1

Длина строки(Len)

0…FFFF

2 … Len+1

Строка



Дата и время

Последовательность из 6 байт

Номер байта

Описание

Возможные значения

0

Год

0 = 2000г … FF = 2255

1

Месяц

0x01 - январь.. 0x0C - декабрь

2

День

0x01..0x1F

3

Час

0x00..0x17

4

Минуты

0x00..0x3B

5

Секунды

0x00..0x3B


Интервал времени

В сообщениях используется два типа временных интервалов. Значения в миллисекундах – целое в 4 байта, минутах – целое в 2 байта.

Секции

Секции

В запросе может быть любое количество секций, при условии соблюдения общей длины сообщения. Секции обрабатываются последовательно, следующая секция начинает обрабатываться только после завершения предыдущей. Допускаются любые комбинации секций.

Рассмотрим пример, пусть требуется отправить две команды, одну в RS232, другую в RS485.

Uspd resource sections.PNG
Таблица 3. Запрос, стрелкой указан порядок выполнения секций на УСПД

Это можно сделать, выполнив запрос, как на рисунке выше. Секции в запросе применяются по очереди: первой идёт секция с настройками UART для RS 232, затем секция с командой, отправляемыми в RS 232, затем секция с настройками UART для RS 485 и завершает секция с командами для RS 485. Таким образом, в рамках одного запроса ведётся опрос приборов коммутированных на различные выходы.


Соответствие между секциями запросов и секциями ответов

В ответе всегда содержится такое же количество секций как в запросе. Результат обработки N-ой секции в запросе, содержится в N-ой секции ответа. В случае, если выполнение секции завершается ошибкой, в ответе будет содержаться специальная секция с кодом ошибки.

Uspd resource sections2.PNG
Таблица 4. Соответствие между запросом и ответом на запрос

Типы секций

Типы секций делятся на запросы к УСПД и ответы на эти запросы. Ниже в таблице приведены типы запросов и ответов.

Описание секции

Запрос – тип секции

Есть данные в секции запроса

Ответ – тип секции

Есть данные в секции ответа

Возможны коды ошибок

Приветствие серверу (0x7700)

0x7700
Да


Чтение основных параметров

0xAA00
Нет
0xBB00
Да


Проверка GSM связи

0xAA01
Нет
0xBB01
Да


Запрос iccid сим-карты

0xAA02
Нет
0xBB02
Да


Команда отправки смс IDENT

0xAA03
Да
0xBB03
Нет

0x01, 0x02

Чтение параметров UART

0xAA10
Нет
0xBB10
Да


Запись параметров UART

0xAA11
Да
0xBB11
Нет

0x01, 0x02

Чтение параметров питания

0xAA20
Нет
0xBB20
Да


Запись параметров питания

0xAA21
Да
0xBB21
Нет

0x01, 0x02

Чтение состояния импульсных входов

0xAA22
Да
0xBB22
Нет

0x01, 0x02

Команда в UART

0xAA30
Да
0xBB30
Да

0x03

Пауза

0xAA40
Да
0xBB40
Нет

0x01,0x02

Чтение интервала выхода на связь

0xAA50
Нет
0xBB50
Да


Запись интервала выхода на связь

0xAA51
Да
0xBB51
Нет

0x01, 0x02

Чтение настроек сервера

0xAA52
Нет
0xBB52
Да


Запись настроек сервера

0xAA53
Да
0xBB53
Нет

0x01, 0x02

Чтение текущей даты

0xAA54
Нет
0xBB54
Да


Запись текущей даты

0xAA55
Да
0xBB55
Нет

0x01, 0x02

Чтение настроек apn

0xAA56
Нет
0xBB56
Да


Запись настроек apn

0xAA57
Да
0xBB57
Нет

0x01, 0x02,

Чтение версии прошивки

0xAA80
Нет
0xBB80
Да


Загрузка новой прошивки

0xAA81
Да
0xBB81
Нет

0x01, 0x02

Запуск новой прошивки

0xAA82
Да
0xBB82
Нет

0x01, 0x05

Чтение текущих значений по импульсным входам

0xCC81
Да
0xDD81
Да

0x01, 0x02

Запись текущих значений по импульсным входам

0xСС82
Да
0xDD82
Нет

0x01, 0x02

Чтение архивов значений по импульсным входам

0xСС85
Да
0xDD85
Да

0x01, 0x02

Очистка архива значений по импульсным входам

0xCC8A
Да
0xDD8A
Нет

0x01, 0x02

Завершение сеанса

0xDEAD
Нет
0x10FF
Нет


Ошибка на запрос

0x9900
Да


Приветствие серверу (0x7700)

Секция «Приветствие»(0x7700) отправляется на сервер сразу после подключения, в дальнейшем обмен идет в обычном режиме, когда сервер отправляет запрос, а УСПД возвращает на него ответ.

Байты
0
1
2
3
4
5
6
7
8
9
10
11
TYPE
LEN
CURRENT DATE
VERSION
YEAR
MONTH
DAY
HOUR
MIN
SEC



0x77
0x00
0x00
0x0C
0x0F
0x06
0x01
0x09
0x00
0x01
0x00
0x01

Пример секции «Приветствия», Текущая дата 6 июня 2015 года, 9 часов 0 минут 1 секунда, Версия 1


Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

0

Current Date

6
Дата и время
1

Version

2
Версия прошивки

Чтение основных параметров (0xAA00)

Запрос (0xAA00)

Байты
0
1
2
3
TYPE
LEN


0xAA
0x00
0x00
0x04

Ответ (0xBB00)

Байты
0
1
2
3
4
5
6
7
8
9
10
11
TYPE
LEN
CURRENT DATE
VERSION
YEAR
MONTH
DAY
HOUR
MIN
SEC


0xBB
0x00
0x00
0x0C
0x0F
0x06
0x01
0x09
0x00
0x01
0x00
0x01

Пример секции «Основных параметров», Текущая дата 6 июня 2005 года, 9 часов 0 минут 1 секунда, Версия 1

Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

0

Current Date

6
Дата и время
1

Version

2
Версия прошивки

Подробно о формате типа данных «Дата и время» смотрите в разделе «Типы данных».

Проверка GSM связи (0xAA01)

Запрос (0xAA01)

Запрос
0
1
2
3
TYPE
LEN
0xAA
0x01
0x00
0x04


Ответ (0xBB01)

Байты
0
1
2
3
4
5
TYPE
LEN
LEVEL SIGNAL
MOBILE NETWORK NAME
BB
01
00
0F
00
57
00
07
4d
54
53
2d
52
55
53

Ответ «Проверка GSM связи»: уровень сигнала = 87%, имя мобильной сети = «MTS-RUS»


Порядок в секции
Параметры настроек сервера
Длина в байтах
Возможные значения
0

Level signal

2
Целое,уровень сигнала в процентах
1

Mobile network

var
Строка, название мобильной сети

Подробно о формате типа данных «Дата и время» смотрите в разделе «Типы данных».

Запрос ICCID сим-карты (0xAA02)

Запрос (0xAA02)

Запрос
0
1
2
3
TYPE
LEN
0xAA
0x02
0x00
0x04

Ответ (0xBB02)

Байты
0
1
2
3
TYPE
LEN
ICCID
BB
02
00
0F
00,13,38,39,37,30,31,39,39,31,31,31,31,31,31,31,31,31,31,31,35


Порядок в секции
Параметры настроек сервера
Длина в байтах
Возможные значения
0

ICCID

var
Строка, номер ICCID

Команда отправки смс IDENT (0xAA03)

Запрос (0xAA03)

Байты
0
1
2
3
TYPE
LEN
TEL
PREFIX
AA
03
00
0F
00,1C,2B,37,31,32,33,34,35,36,37,38,39,30
00,05,54,45,53,54,3a


Ответ (0xAA03)

Байты
0
1
2
3
TYPE
LEN
0xBB
0x03
0x00
0x04


Порядок в секции
Параметры настроек сервера
Длина в байтах
Возможные значения
0

TEL

var
Строка, сотовый номер для отправки смс
1

PREFIX

var
Строка, префикс сообщения


В результате выполнения данной команды УСПД отправит специальное смс на номер указанный в запросе, добавив в начало строку, указанную в PREFIX.

Сообщение имеет следующий формат: <PREFIX>IDENT;<SERIAL>;<ICCID>;<NET>

Порядок в секции
Параметры настроек сервера
Длина в байтах
Возможные значения
0

SERIAL

var
Серийный номер
1

ICCID

var
Iccid сим-карты
2

NET

var
Название сети

Чтение параметров UART (0xAA10)

Запрос (0xAA10)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x10
0x00
0x04

Ответ «Чтение параметров UART» (0xBB10)

Байты
0
1
2
3
4
5-8
9
10
11
12
13-16
17-20
TYPE
LEN
DATA
Type
Speed
Data bits
Stop bits
Parity
Flag Delay
Read Delay
Read Timeout
BB
10
00
10
00
00002580
08
00
00
01
000003E8
000007D0

Структура секции ответа параметров UART, (RS485/9600/8N1/1000мс/2000мс)


Порядок в секции


Параметр UART

Длина в байтах

Возможные значения

0

Type

Тип UART

1

0x00 – RS485, 0x01 – RS232

1

Speed

Скорость передачи

4

Целое, кол-во бод

2

Data bits

Кол-во бит данных

1

Целое, кол-во бит

3

Stop bits

Кол-во стоповых бит

1

0x00 – 1бит, 0x01 – 1.5 бит, 0x02 – 2бита

4

Parity

Чётность

1

0x00 – No, 0x01 – even,

0x02 – odd, 0x03 – mark, 0x04 - space

5

Flag Delay

Тип чтения данных из UART

1

0x00 - по концу посылки,

0x01 – по задержке

6

Read Delay

Время чтения ответа из UART. Применяется при Flag Delay = 1.

4
Целое, кол-во миллисекунд
7

Read Timeout

Время ожидания ответа из UART. Применяется при Flag Delay = 0.

4
Целое, кол-во миллисекунд

Flag Delay равен 0, чтение данных из UART будет произведено сразу после получения конца посылки в UART. Если данные не будут получены в течении Read Timeout, будет возвращена ошибка.

Flag Delay равен 1, в ответе будет возвращено всё, что будет получено в течении Read Delay. Если данных не будет, будет возвращён пустой ответ.

Data bits – количество бит данных без учёта бита чётности (начиная с прошивки v.204). Например для 7E1: Data bits – 7, Parity – 1; 8M1: Data bits – 8, Parity – 3.

Запись параметров UART (0xAA11)

Запрос (0xBB11)

Байты
0
1
2
3
4
5-8
9
10
11
12
13-16
17-20
TYPE
LEN
DATA
Type
Speed
Data bits
Stop bits
Parity
Flag Delay
Read Delay
Read Timeout
AA
11
00
10
00
00002580
08
00
00
01
000003E8
000007D0

Структура секции настроек UART, на примере (RS485/9600/8N1/2000мс/10000мс)

Ответ (0xBB11)

Байты
0
1
2
3
TYPE
LEN
0xBB
0x11
0x00
0x04

Настройки из секции записи настроек UART 0xAA11 применяется на все последующие секции, а так же на секции последующих запросов, и действуют до тех пор, пока при разборе очередного запроса не будет обработана новая секция записи настроек UART.

Чтение параметров выходов питания (0xAA20)

Запрос (0xAA20)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x20
0x00
0x04

Ответ (0xBB20)

Байты
0
1
2
3
4
5
6
7
TYPE
LEN
DATA
№1
№2
№3
№4
0xBB
0x20
0x00
0x08
0x01
0x01
0x00
0x01

Структура ответа, (1,2,4 – выходы питания включены, 3 - отключен)

Порядок в секции

Параметр Питания

Длина в байтах

Возможные значения

0

Питание выход №1

1

0x00 – выключен, 0x01 – включен

1

Питание выход №2

1

0x00 – выключен, 0x01 – включен

2

Питание выход №3

1

0x00 – выключен, 0x01 – включен

3

Питание выход №4

1

0x00 – выключен, 0x01 – включен

Запись параметров Питания ( 0xAA21)

Запрос ( 0xAA21)

Байты
0
1
2
3
4
5
6
7
TYPE
LEN
DATA
№1
№2
№3
№4
0xAA
0x21
0x00
0x08
0x01
0x01
0x00
0x01

Структура секции запроса, (1,2,4 – выходы питания включены, 3 - отключен)

Ответ (0xBB21)

Байты
0
1
2
3
TYPE
LEN
0xBB
0x21
0x00
0x04

Чтение состояния импульсных входов (0xAA22)

Запрос (0xAA20)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x22
0x00
0x04

Ответ (0xBB20)

Байты
0
1
2
3
4
5
6
7
TYPE
LEN
DATA
№1
№2
№3
№4
0xBB
0x22
0x00
0x08
0x00
0x01
0x01
0x01

Структура ответа, (1 вход низкий уровень, 2,3,4 входы - высокий)

Порядок в секции

Параметр

Длина в байтах

Возможные значения

0

Состояние входа №1

1

0x00 – низкий уровень(замкнут), 0x01 – высокий уровень(разомкнут)

1

Состояние входа №2

1

0x00 – низкий уровень(замкнут), 0x01 – высокий уровень(разомкнут)

2

Состояние входа №3

1

0x00 – низкий уровень(замкнут), 0x01 – высокий уровень(разомкнут)

3

Состояние входа №4

1

0x00 – низкий уровень(замкнут), 0x01 – высокий уровень(разомкнут)

Команда в UART (0xAA30)

Запрос ( 0xAA30)

Байты
0
1
2
3
4
5
6
7
8
9
10
11
12
TYPE
LEN
COMMAND_DATA
0xAA
0x30
0x00
0x0D
0x10
0xFF
0x3F
0x00
0x00
0x00
0x00
0xC1
0x16

Пример секции команды в UART, содержащий команду чтения параметров из флэш памяти теплосчётчика СПТ 941

Ответ (0xBB30)

Байты
0
1
2
3
4
5
6
7
8
9
10
11
TYPE
LEN
ANSWER_DATA
0xBB
0x30
0x00
0x0C
0x10
0xFF
0x3F
0x92
0x29
0x01
0x05
0x16

Пример секции ответа СПТ 941 в UART на команду выше

Порядок в секции

Параметры команды в UART/ ответа из UART

Длина в байтах

Возможные значения

0

Данные

0… 65522


Данные из поля COMMAND_DATA будут переданы в UART, в соответствии с текущими настройками UART, все что будет получено из UART будет отправлено в ответе. Окончание приема ответа определяется в зависимости от состояния настройки Flag Delay либо при детектировании состояния idle(конец посылки), либо по истечению интервала времени Read Delay.

В настройках UART есть таймаут на чтение из UART. Если во время чтения ответа из UART этот таймаут истёк, и ответные данные пусты, то ответная секция на секцию команды в UART будет секция ошибки «Истечение таймаута на чтение из UART» (код 0x03).

Пауза (0xAA40)

Запрос (0xAA40)

Байты
0
1
2
3
4
5
6
7
TYPE
LEN
DELAY
0xAA
0x40
0x00
0x08
0x00
0x00
0x05
0xDC

Запрос.Пауза 1500 миллисекунд

Ответ (0xBB40)

Байты
0
1
2
3
TYPE
LEN
0xBB
0x40
0x00
0x04


Порядок в секции

Параметры паузы

Длина в байтах

Возможные значения

0

Delay

4
Целое, кол-во миллисекунд

Задаёт паузу, которую выдерживает УСПД перед выполнением следующей секции.

Чтение интервала выхода на связь(0xAA50)

Запрос (0xAA50)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x50
0x00
0x04


Ответ (0xBB50)

Байты
0
1
2
3
4
5
TYPE
LEN
CONNECTION_INTERVAL
0xBB
0x50
0x00
0x06
0x00
0x1E

Выход на связь каждые 30 минут.

Порядок в секции

Параметры настроек опроса

Длина в байтах

Возможные значения

0

Connection interval

2
Целое, кол-во минут.

Connection interval - настраивает периодичность выхода УСПД на связь с сервером.

Запись интервала выхода на связь(0xAA51)

Запрос (0xAA51)

Байты
0
1
2
3
4
5
TYPE
LEN
CONNECTION_INTERVAL
0xAA
0x51
0x00
0x06
0x00
0x1E

Выход на связь каждые 30 минут.

Ответ (0xBB51)

Байты
0
1
2
3
TYPE
LEN
0xBB
0x51
0x00
0x04

Чтение настроек сервера (0xBB52)

Запрос (0xAA52)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x52
0x00
0x04


Ответ (0xBB52)

Байты
0
1
2
3
4
5


TYPE
LEN
PORT
HOST
0xBB
0x50
0x00
0x06
0x00
0x1E

00,0B,31,39,32,2E,31,36,38,2E,30,2E,31

Пример секции «Чтение настроек сервера» Настройки: порт = 7777, сервер = 192.168.0.1

Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

0

Port

2
Целое, номер порта для открытия TCP/IP сокета
1

Host

var
Строка, IP адрес или URL сервера

Запись настроек сервера (0xAA53)

Запрос (0xAA52)

Байты
0
1
2
3
4
5


TYPE
LEN
PORT
HOST
0xBB
0x50
0x00
0x06
0x00
0x1E

00,0B,31,39,32,2E,31,36,38,2E,30,2E,31

Пример секции «Записи настроек сервера» Настройки: порт = 7777, сервер = 192.168.0.1


Ответ (0xBB52)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x52
0x00
0x04

Чтение текущей даты (0xBB54)

Запрос (0xAA54)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x54
0x00
0x04


Ответ (0xBB54)

Байты
0
1
2
3
4
5
6
7
8
9
TYPE
LEN
DATE
YEAR
MONTH
DAY
HOUR
MIN
SEC
0xBB
0x54
0x00
0x0A
0x0F
0x05
0x29
0x0D
0x08
0x01

Пример секции «Записи текущей даты» 29 мая 2015 года 13 часов 8 мин 1 сек

Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

0

DATE

6
Дата

Запись текущей даты (0xAA55)

Запрос (0xAA55)

Байты
0
1
2
3
4
5
6
7
8
9
TYPE
LEN
DATE
YEAR
MONTH
DAY
HOUR
MIN
SEC
0xAA
0x55
0x00
0x0A
0x0F
0x05
0x29
0x0D
0x08
0x01

Пример секции «Записи текущей даты» 29 мая 2015 года 13 часов 8 мин 1 сек


Ответ (0xBB55)

Байты
0
1
2
3
TYPE
LEN
0xBB
0x55
0x00
0x04

Чтение настроек APN (0xBB56)

Запрос (0xAA56)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x56
0x00
0x04


Ответ (0xBB56)

Байты
0
1
2
3
TYPE
LEN
APN
USERNAME
PASSWORD
BB
56
00
1F
00,08,69,6E,74,65,72,6E,65,74
00,03,70,61,73
00,03,70,61,73

Пример секции «запрос настроек APN» для МТС. APN = internet, username = pas, password = pas

Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

0

APN

var
Строка, APN – имя точки доступа
1

Username

var
Строка, имя пользователя
2

Password

var
Строка, пароль

Запись настроек APN (0xAA57)

Запрос (0xAA57)


Байты
0
1
2
3
TYPE
LEN
APN
USERNAME
PASSWORD
AA
57
00
1F
00,08,69,6E,74,65,72,6E,65,74
00,03,70,61,73
00,03,70,61,73

Пример секции «Запись настроек APN» для МТС. APN = internet, username = pas, password = pas


Ответ (0xBB57)

Байты
0
1
2
3
TYPE
LEN
0xBB
0x57
0x00
0x04


Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

0

APN

var
Строка, APN – имя точки доступа
1

Username

var
Строка, имя пользователя
2

Password

var
Строка, пароль

Чтение версии прошивки (0xBB80)

Запрос (0xAA80)

Байты
0
1
2
3
TYPE
LEN
0xAA
0x80
0x00
0x04


Ответ (0xBB80)

Байты
0
1
2
3
4
5
TYPE
LEN
VERSION
0xBB
0x80
0x00
0x06
0x00
0x65

Пример секции ответа «Чтение версии прошивки», версия № 101

Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

Мин. версия протокола

0

Version

2
Целое, номер версии
1.0

Чтение текущих значений по импульсным каналам (0xCC81)

Запрос (0xСС81)

Байты
0
1
2
3
4
TYPE
LEN
CHANNEL
0xСС
0x81
0x00
0x05
0x01

Запрос текущего значения по каналу №1

Ответ (0xDD81)

Байты
0
1
2
3
4 - 7
TYPE
LEN
CHANNEL_VALUE
0xDD
0x81
0x00
0x08
0x00,0x00,0x3D,0xFB

По импульсному входу №1 насчитано 15867 импульсов

Порядок в секции

Параметры настроек опроса

Длина в байтах

Возможные значения

0

CHANNEL

1
Целое, номер канала
1

CHANNEL_VALUE

4
Целое, кол-во накопленных импульсов в канале



*При запросе текущих значений по нулевому каналу возвращается массив значений по всем каналам.

Запрос (0xСС81)

Байты
0
1
2
3
4
TYPE
LEN
CHANNEL
0xСС
0x81
0x00
0x05
0x00

Запрос текущих значений по всем каналам

Ответ (0xDD81)

Байты
0
1
2
3
4 - 7
8 - 11
12 - 15
16 -19
TYPE
LEN
CHANNEL 1
CHANNEL 2
CHANNEL 3
CHANNEL 4
0xDD
0x81
0x00
0x08
0x00003DFB
0x000001A3
0x00000001
0x00000000

Ответ на запрос по всем каналам в ответе 4 значения текущих по всем каналам по порядку.

Запись текущих значений по импульсным каналам (0xCC82)

Запрос (0xCC82)

Байты
0
1
2
3
4
5 - 8
TYPE
LEN
CHANNEL
CHANNEL_VALUE
0xCC
0x82
0x00
0x09
0x02
0x00,0x00,0x00,0x00

Запись в импульсный вход №2 значения 0


Ответ (0xDD82)

Байты
0
1
2
3
TYPE
LEN
0xDD
0x82
0x00
0x04

Чтение архивов значений по каналам (0xСС85)

Запрос (0xCC85)

Байты
0
1
2
3
4
5
6
7 - 12
TYPE
LEN
CHANNEL
TYPE_ARH
LEN_ARH
DATE_START
0xCC
0x85
0x00
0x0D
0x04
0x01
0x32
0x0F,0x05,0x12,0x0D,0x08,0x01

Запрос 50 архивных часовых значений по каналу №4

Ответ (0xDD85)

Байты
0
1
2
3
4-203
TYPE
LEN
CH_ARH [LEN_ARH]
0xDD
0x85
0x00
0xСС


Порядок в секции

Параметры паузы

Длина в байтах

Возможные значения

0

CHANNEL

1
Целое, номер канала
1

TYPE_ARH

1
Целое, тип архива: 0x01 – часовой,
0x02 – суточный, 0x03 - месячный
2

LEN_ARH

1
Количество архивных записей, максимум 50 записей
3

DATE_START

6
Время первой записи
4

CH_ARH[ LEN_ARH ]

4 * LEN_ARH
Массив архивных значений канала за запрашиваемый интервал.

CH_ARH[ LEN_ARH ] - Первое значение соответствует начальной дате запрашиваемого интервала. Например, при запросе суточного архива от 3-го февраля, первая запись будет соответствовать значению на начало суток. В случае отсутствия архивной записи возвращаемое значение будет равно 0xFFFFFFFF.


*При запросе архивных значений по нулевому каналу возвращается массив значений по всем каналам. Значения в массиве располагаются по порядку, сначала все значения по первому каналу, потом по второму и т.д. Количество значений по каждому каналу передаётся в запросе в параметре LEN_ARH, максимальное количество 5.

Запрос (0xCC85)

Байты
0
1
2
3
4
5
6
7 - 12
TYPE
LEN
CHANNEL
TYPE_ARH
LEN_ARH
DATE_START
0xCC
0x85
0x00
0x0D
0x00
0x01
0x04
0x0F,0x05,0x12,0x0D,0x08,0x01

Ответ (0xDD85)

Байты
0
1
2
3
4-19
20-35
36-51
52-67
TYPE
LEN
CH 1 ARH [LEN_ARH]
CH 2 ARH [LEN_ARH]
CH 3 ARH [LEN_ARH]
CH 4 ARH [LEN_ARH]
0xDD
0x85
0x00
0xСС

Ответ на запрос 4 архивных значений по каждому каналу.

Очистка архива (0xCC8A)

Запрос (0xCC8A)

Байты
0
1
2
3
4
TYPE
LEN
TYPE_ARH
0xCC
0x8A
0x00
0x05
0x02

Ответ (0xDD8A)

Байты
0
1
2
3
TYPE
LEN
0xDD
0x8A
0x00
0x04


Порядок в секции

Параметры паузы

Длина в байтах

Возможные значения

1
TYPE_ARH
1
Целое, тип архива: 0x01 – часовой,
0x02 – суточный, 0x03 - месячный

Описание ошибок - секция ошибки(0x9900)

В следующих ситуациях ошибки не создаются:

  1. Пустые секции(0xAA10, 0xAA20 и т.д.) не проверяются на наличие данных, и если даже содержат данные - ошибка не создаётся.
  2. Если УСПД принял секцию длиннее, чем все известные ему параметры по протоколу, ошибка не создаётся (возможно, версия протокола УСПД отстаёт от серверной).

Ошибки создаются:

  1. Если тип секции неизвестен (код ошибки 0x06).
  2. Если длина секции меньше, то есть не хватает параметров (неверный формат - код ошибки 0x01).
  3. Если используется недопустимое значение параметра (код ошибки 0x02).


Если при выполнении секции запроса, возникла ошибка, то ответная секция будет секцией ошибки с типом 0x9900.

Байты
0
1
2
3
4
5
6
7
TYPE
LEN
CODE
PARAM
0x99
0x00
0x00
0x08
0x00
0x02
0x00
0x07

Пример секции ошибки, с кодом 0x02, неверное значение параметра, расположение параметра в секции запроса = 7


Параметры в секции ошибок

Порядок в секции

Параметры настроек сервера

Длина в байтах

Возможные значения

0

Code

2
Целое, код ошибки
1

Param

2
Целое, параметр


Коды ошибок и информация в параметрах

Код ошибки

Название ошибки

Суть параметра

0x01

Неверный формат секции

Нет

0x02

Неверное значение параметра

Индекс расположения параметра в секции

0x03

Истечение таймаута на чтение из UART

Нет

0x04

Отсутствует GSM модуль

Нет

0x05

CRC новой прошивки не совпадает

Нет

0x06

Неизвестный тип секций

Нет