wiki:AdcProtocol

Version 18 (modified by san, 5 years ago) ( diff )

--

Протокол обмена данными c UPS-1200

1. Формат пакета

|FLAG | ADDR | CMND | DATA | CSUM | FLAG |

  • Поле FLAG имеет размер 1 байт, предназначено для определения приемником границ пакета, значение поля фиксированное 0x7E. Флаги могут постоянно передаваться в сети между пакетами. Если сетевой элемент обнаруживает байт, не являющийся флагом, он тем самым уведомляется о начале пакета. При обнаружении следующего флага, элемент будет знать, что поступил полный пакет.
  • Поле ADDR имеет размер 1 байт, предназначено для передачи адресной информации и трактуется по-разному в зависимости от направления движения пакета. Для пакета исходящего от сетевого модуля ADDR=0. Для пакета исходящего из UPS-1200 ADDR=0x7F.
  • Поле CMND имеет размер 1 байт, предназначено для кодирования команд или ответов. Значения 0x00-0x7F кодируют команды, значения 0x80-0xFF - ответы. Кодировка поддерживаемых команд и ответов приведена ниже.
  • Поле DATA может быть размером 0-74 байт, содержимое зависит от значения поля CMND
  • Поле CSUM имеет размер 1 байт, предназначено для контроля полей ADDR, CMND и DATA. Вычисляется как ИСКЛЮЧАЮЩЕЕ ИЛИ всех байтов в контролируемых полях.

2. Кодирование

Для предотвращения ложного распознавания границ пакета, все передаваемые данные, кроме полей FLAG, должны подвергаться следующей процедуре:

  • если значение байта данных есть 0x7E, то он заменяется двумя байтами 0x7D и 0x5E;
  • если значение байта данных есть 0x7D, то он заменяется двумя байтами 0x7D и 0x5D.

Все размеры полей приведены без учета описанных выше замен. После распознавания пакета производится:

  1. обратная замена байтов. Если длина пакета после замены больше 77 байт, пакет не обрабатывается;
  2. проверка контрольной суммы пакета. Если контрольная сумма не совпадает, то пакет не обрабатывается;
  3. проверка поля адреса
  4. обработка команды, если адрес совпадает. Если код команды не известен UPS-1200, пакет не обрабатывается;
  5. посылается ответ.

Команды запроса состояния UPS-1200 посылаются периодически, поэтому единичная потеря ответа на эти команды допустима (произойдет задержка отображения состояния).

3. Команды

UPS-1200 поддерживает следующие команды:

Команды мониторинга(запрос на чтение данных)

  • CMND = 0x00 (ответ 0x80) - основная команда, в ответе передаются основные параметры ИБЭП. Формат команды: "7E 00 00 00 7E".
  • CMND = 0x01 (ответ 0x81) - опрос составных устройств ИБЭП. Формат команды: "7E 00 01 DATA CSUM 7E". В поле DATA команды передаётся 1 байт, в зависимости от значения которого команда имеет разное назначение и ответ:
    • DATA = 0 - Опрос параметров центральной платы RC-01
    • DATA = 1 - Опрос параметров АКБ (имеет смысл отправлять если к ИБЭП подключена АКБ, признак подключения передается в ответе на CMND=0)
    • DATA = 2,3,4,5 - Опрос параметров выпрямителя RC-48 установленного в слот 2,3,4 или 5 (имеет смысл отправлять только для тех слотов в которые установлены выпрямители, признак наличия выпрямителя в слоте передается в ответе на CMND=0)

4. Расшифровка ответов на команды

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

  • Значения, занимающие более одного байта передаются в ответе младшим байтом вперёд.

Ответ на команду CMND=0

№ байта OID Тип
0 0x7e (FlAG)
1 0x7F (ADDR)
2 0x80 (CMND)
3 0x7e Аппаратная версия устройства = расширенная
4 0x04 Аппаратная версия устройства = UPS-1200
5 бит 7 – Общая авария adc.10001.1.0int, ro
5 биты 6..0- Программная версия adc.10001.2.0int, ro
6 ...редактируется...
7 ...редактируется...
8 Расширенная программная версия(подверсия) adc.10001.3.0int, ro
9, 10 Uнагрузки adc.10001.4.1.0int, ro
11, 12 UАКБ adc.10001.4.2.0int, ro
13, 14 U220 adc.10001.4.3.0int, ro
15, 16 Iнагрузки adc.10001.4.4.0int, ro
17, 18 IАКБ adc.10001.4.5.0int, ro
19, 20 Pвыпрямителей adc.10001.4.6.0int, ro
21, 22 TАКБ adc.10001.4.7.0int, ro
... ...редактируется...
N-1 CSUM
N 0x7e (FlAG)
Note: See TracWiki for help on using the wiki.