ЭСКО: чтение данных

ЭСКО МТР-06

Содержание · Обмен

Три независимых контура, по две магистрали. Стандартная архивная запись — 256 байт.

Идентификация: R

EEPROM Байт Поле
0x0000 8 Номер, ASCII-цифры
0x0010 1 Тип: 0x60
0x0011 1 Сетевой адрес
0x0012 1 Версия статистики
0x0050–0x0052 По 1 Типы контуров: 0 — закрытый, 1 — открытый, 2 — расходомер
0x0053–0x0055 По 1 Коды модификаций контуров
0x0056 1 Маска включения: биты 0/1/2 — контуры 1/2/3
0x00D8 4 Версия ПО, ASCII

Версия статистики и версия ПО — разные поля. Маска включения — value & 7; нулевая маска недопустима. Читаются выбранные контуры 1–3, запрос отключённого контура отклоняется. Число используемых магистралей — 1 или 2.

Архивы

Основной запрос — A/4, ответ 261 байт, payload packet[4:260].

Архив AT Число записей Страницы для A/1
Месячный 2 30 2–31
Суточный 1 512 32–543
Часовой 0 1504 544–2047

Чтение физической страницы:

Запрос: 00 BA 41 01 PH PL 00 00 00 00 00 00 00 KS
Ответ:  00 BA C1 01 [256 байт] KS
page = (PH << 8) | PL

После исчерпания попыток A/4 выбранное кольцо однократно просматривается через A/1, записи индексируются по фактической дате. Корректный ответ A/4 с другой датой означает отсутствие записи и сам по себе не включает резервный просмотр. Физический порядок страниц может быть не календарным. Полностью нулевые/FF страницы пустые; для непустых проверяются дата и KSI.

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

Карта архивной записи

Смещения от начала payload.

Общие поля

Смещение Байт Поле Формат
0 5 Дата BCD YY MM DD hh mm
10 2 t холодной воды UInt16 /256, °C
12 1 P холодной воды /100, МПа
13 2 t наружная UInt16 /256, °C
15 4 Накопленное время включения BCD /100, ч

Контур n = 1..3

B = 27 + 76*(n-1)
Смещение от B Байт Поле Формат
0 7 Q BCD /1e9, Гкал
7 7 M1 BCD /1e6, т
14 7 M2 BCD /1e6, т
21 7 M3, отрицательный дисбаланс BCD /1e6, т
28 7 V1 BCD /1e6, м³
35 7 V2 BCD /1e6, м³
49 2 t1 UInt16 /256, °C
51 2 t2 UInt16 /256, °C
53 1 P1 /100, МПа
54 1 P2 /100, МПа
55 4 Время нормальной работы BCD /100, ч
59 4 Время G < Gmin BCD /100, ч
63 4 Время G > Gmax BCD /100, ч
67 4 Время dT < dTmin BCD /100, ч
71 4 Время технической неисправности BCD /100, ч
75 1 Ошибки Биты

KSI — байт 255, инверсия суммы байтов 0–254. Неиспользуемые блоки контуров могут содержать стёртые BCD; декодируются только нужные контуры. KSI проверяется для всей записи. После проверки KSI дата, состоящая только из байтов 00/FF, означает пустую запись.

M3 не является третьим трубопроводом. V1/V2 — накопленные м³, не расходы.

Ошибки контура

Бит Значение
0 / 1 G1 / G2 < Gmin
2 / 3 G1 / G2 > Gmax
4 dT1−2 вне допуска
5 dT2−3 вне допуска
7 Техническая неисправность

Бит 6 не используется. Точные моменты начала/окончания из маски не определяются.

Текущие значения: G

O = 0x58*(n-1)    # n = 1..3
Поле Адрес относительно O Формат
Ошибки 0x00 UInt8
P1 / P2 0x08 / 0x0C FLOAT4, МПа
t1 / t2 0x14 / 0x18 FLOAT4, °C
t холодной воды 0x1C FLOAT4, °C
Gv1 / Gv2 0x30 / 0x34 FLOAT4, м³/ч
Gm1 / Gm2 0x38 / 0x3C FLOAT4, т/ч

FLOAT4 — IEEE-754 binary32, big-endian, первые 4 байта данных ответа. NaN/Infinity отклоняются. FP3 ЭСКО-Т здесь неприменим. Текущая неисправность: (errors & 0xBF) != 0.

Текущие интеграторы: R 0x0100

Прочитать 32 блока по 8 байт:

address = 0x0100 + 8*i                 # i = 0..31
payload[8*i : 8*i+8] = read_R(address)

Полученные 256 байт содержат Q/M/V и пять счётчиков времени по тем же смещениям контуров, что архив.

Для этого блока:

Применимость карты

Тип 0x60 не гарантирует одинаковую карту всех схем и версий статистики. Здесь описаны стандартные общие поля холодной воды и три блока контуров. Специальные схемы с иным размещением полей требуют отдельной карты.

Порядок чтения текущих

T/G → для каждого выбранного контура G ошибок и t холодной воды → для каждой выбранной магистрали G t/P/Gv/Gm → 32 чтения R 0x0100..0x01F8.

Сбой чтения EEPROM или неверный BCD исключает весь снимок текущих интеграторов, но не отменяет уже прочитанные мгновенные значения. Отмена опроса не подавляется. Дополнительное чтение версии ПО не является обязательным для получения показаний.